labfy-investigation/include/core/local_capability_registry.h
fy59 d65f9559e6 chore(checkpoint): preserve local investigation workbench
Preserve the local graph-first investigation stack through macro V1.

Include reviewed source, tests, contracts, documentation and synthetic assets.

Retain the standalone financial V21 test foundation without runtime migration.

Runtime remains V20; operational JobStore remains V3.

Local experimental checkpoint, not a stable release.
2026-09-27 08:34:46 +02:00

69 lines
2.3 KiB
C

/******************************************************************************
* @file local_capability_registry.h
* @brief Registre statique tools/adapters/capabilities du lot J4.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_LOCAL_CAPABILITY_REGISTRY_H
#define LABFY_INVESTIGATION_LOCAL_CAPABILITY_REGISTRY_H
#include "core/local_tool_runner.h"
G_BEGIN_DECLS
#define LOCAL_CAPABILITY_EML_HEADERS "labfy.capability.eml_headers.v1"
#define LOCAL_CAPABILITY_EXIF_METADATA "labfy.capability.exif_metadata.v1"
typedef enum { LOCAL_ADAPTER_NATIVE, LOCAL_ADAPTER_SUBPROCESS } LocalAdapterKind;
typedef enum {
LOCAL_CAPABILITY_READY,
LOCAL_CAPABILITY_MISSING,
LOCAL_CAPABILITY_INCOMPATIBLE,
LOCAL_CAPABILITY_UNVERIFIED,
LOCAL_CAPABILITY_DETECTION_ERROR
} LocalCapabilityAvailability;
typedef struct {
const char *capability_id;
const char *capability_version;
const char *adapter_id;
const char *adapter_version;
const char *tool_id;
const char *intent_fr;
const char *accepted_mime_prefix;
const char *accepted_extension;
const char *produced_type;
const char *output_contract;
LocalAdapterKind adapter_kind;
const char *action_class;
const char *network_contact;
LocalToolRunnerProfile limits;
} LocalCapabilityDescriptor;
typedef struct {
const LocalCapabilityDescriptor *descriptor;
LocalCapabilityAvailability availability;
char *reason;
char *executable;
char *tool_version;
} LocalCapabilityStatus;
typedef struct LocalCapabilityRegistry LocalCapabilityRegistry;
LocalCapabilityRegistry *local_capability_registry_new(GError **error);
void local_capability_registry_free(LocalCapabilityRegistry *registry);
const LocalCapabilityStatus *local_capability_registry_lookup(
const LocalCapabilityRegistry *registry,
const char *capability_id);
const GPtrArray *local_capability_registry_get_statuses(
const LocalCapabilityRegistry *registry);
/** Les métadonnées MIME/extension sont contrôlées par l'EvidenceRecord. */
gboolean local_capability_status_applies(
const LocalCapabilityStatus *status,
const char *mime_type,
const char *relative_path,
char **out_reason);
const char *local_capability_availability_code(
LocalCapabilityAvailability availability);
G_END_DECLS
#endif