@mindpal/protocol 0.0.2-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * @mindpal/protocol — MindPal Agent OS 协议层标准定义
4
+ *
5
+ * 统一 re-export 所有协议模块,提供单一入口点。
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BUILTIN_ERROR_CATEGORY_ALIASES = exports.withPolicySnapshotRef = exports.generateHumanSummary = exports.isHighRiskAuditAction = exports.normalizeAuditErrorCategory = exports.AuditContractError = exports.HIGH_RISK_AUDIT_ACTIONS = exports.AUDIT_ERROR_CATEGORIES = exports.securityProfileRegistry = exports.BUILTIN_SECURITY_PROFILES = exports.authLevelRegistry = exports.BUILTIN_AUTH_LEVELS = exports.DEFAULT_SECURITY_POLICY = exports.isToolAllowedForPolicy = exports.toolNameFromRef = exports.skillLayerRegistry = exports.BUILTIN_SKILL_LAYERS = exports.validateManifest = exports.getRpcParseFailures = exports.isRpcError = exports.isRpcResponse = exports.isRpcNotification = exports.isRpcRequest = exports.parseRpcMessage = exports.serializeRpcMessage = exports.createRpcNotification = exports.createRpcError = exports.createRpcSuccess = exports.createRpcRequest = exports.negotiateVersion = exports.isVersionCompatible = exports.sensitivityProfileRegistry = exports.BUILTIN_SENSITIVITY_PROFILES = exports.runtimeRegistry = exports.BUILTIN_SKILL_RUNTIMES = exports.modalityRegistry = exports.BUILTIN_DEVICE_MODALITIES = exports.SKILL_RPC_METHODS = exports.SKILL_RPC_ERRORS = exports.skillErrorCodeRegistry = exports.BUILTIN_CUSTOM_ERRORS = exports.JSONRPC_STANDARD_ERRORS = exports.PROTOCOL_VERSIONS = exports.MIN_SUPPORTED_PROTOCOL_VERSION = exports.DEVICE_PROTOCOL_VERSION = exports.SKILL_RPC_JSONRPC = exports.SKILL_RPC_VERSION = exports.registryIds = exports.builtInEntry = exports.createRegistry = void 0;
9
+ exports.getServiceCodeForError = exports.getHttpStatusForError = exports.ERROR_LAYER_MAP = exports.JSONRPC_ERROR_RANGE = exports.PROTOCOL_ERRORS = exports.mapAgentToOrchestration = exports.mapOrchestrationToAgent = exports.checkStateInvariant = exports.normalizeCollabPhase = exports.normalizeRunStatus = exports.normalizeStepStatus = exports.isAgentTerminal = exports.tryTransitionAgent = exports.tryTransitionCollab = exports.tryTransitionRun = exports.tryTransitionStep = exports.transitionAgent = exports.transitionCollab = exports.transitionRun = exports.transitionStep = exports.AGENT_TERMINAL = exports.AGENT_TRANSITIONS = exports.AGENT_PHASES = exports.COLLAB_TRANSITIONS = exports.COLLAB_TERMINAL = exports.COLLAB_PHASES = exports.RUN_TRANSITIONS = exports.RUN_TERMINAL = exports.RUN_STATUSES = exports.STEP_TRANSITIONS = exports.STEP_STREAMING = exports.STEP_BLOCKING = exports.STEP_TERMINAL = exports.STEP_STATUSES = exports.highRiskActionRegistry = exports.BUILTIN_HIGH_RISK_ACTIONS = exports.errorCategoryAliasRegistry = void 0;
10
+ // ── Registry Infrastructure ──
11
+ var registry_1 = require("./registry");
12
+ Object.defineProperty(exports, "createRegistry", { enumerable: true, get: function () { return registry_1.createRegistry; } });
13
+ Object.defineProperty(exports, "builtInEntry", { enumerable: true, get: function () { return registry_1.builtInEntry; } });
14
+ Object.defineProperty(exports, "registryIds", { enumerable: true, get: function () { return registry_1.registryIds; } });
15
+ // ── Skill RPC Protocol ──
16
+ var skill_rpc_1 = require("./skill-rpc");
17
+ Object.defineProperty(exports, "SKILL_RPC_VERSION", { enumerable: true, get: function () { return skill_rpc_1.SKILL_RPC_VERSION; } });
18
+ Object.defineProperty(exports, "SKILL_RPC_JSONRPC", { enumerable: true, get: function () { return skill_rpc_1.SKILL_RPC_JSONRPC; } });
19
+ Object.defineProperty(exports, "DEVICE_PROTOCOL_VERSION", { enumerable: true, get: function () { return skill_rpc_1.DEVICE_PROTOCOL_VERSION; } });
20
+ Object.defineProperty(exports, "MIN_SUPPORTED_PROTOCOL_VERSION", { enumerable: true, get: function () { return skill_rpc_1.MIN_SUPPORTED_PROTOCOL_VERSION; } });
21
+ Object.defineProperty(exports, "PROTOCOL_VERSIONS", { enumerable: true, get: function () { return skill_rpc_1.PROTOCOL_VERSIONS; } });
22
+ Object.defineProperty(exports, "JSONRPC_STANDARD_ERRORS", { enumerable: true, get: function () { return skill_rpc_1.JSONRPC_STANDARD_ERRORS; } });
23
+ Object.defineProperty(exports, "BUILTIN_CUSTOM_ERRORS", { enumerable: true, get: function () { return skill_rpc_1.BUILTIN_CUSTOM_ERRORS; } });
24
+ Object.defineProperty(exports, "skillErrorCodeRegistry", { enumerable: true, get: function () { return skill_rpc_1.skillErrorCodeRegistry; } });
25
+ Object.defineProperty(exports, "SKILL_RPC_ERRORS", { enumerable: true, get: function () { return skill_rpc_1.SKILL_RPC_ERRORS; } });
26
+ Object.defineProperty(exports, "SKILL_RPC_METHODS", { enumerable: true, get: function () { return skill_rpc_1.SKILL_RPC_METHODS; } });
27
+ Object.defineProperty(exports, "BUILTIN_DEVICE_MODALITIES", { enumerable: true, get: function () { return skill_rpc_1.BUILTIN_DEVICE_MODALITIES; } });
28
+ Object.defineProperty(exports, "modalityRegistry", { enumerable: true, get: function () { return skill_rpc_1.modalityRegistry; } });
29
+ Object.defineProperty(exports, "BUILTIN_SKILL_RUNTIMES", { enumerable: true, get: function () { return skill_rpc_1.BUILTIN_SKILL_RUNTIMES; } });
30
+ Object.defineProperty(exports, "runtimeRegistry", { enumerable: true, get: function () { return skill_rpc_1.runtimeRegistry; } });
31
+ Object.defineProperty(exports, "BUILTIN_SENSITIVITY_PROFILES", { enumerable: true, get: function () { return skill_rpc_1.BUILTIN_SENSITIVITY_PROFILES; } });
32
+ Object.defineProperty(exports, "sensitivityProfileRegistry", { enumerable: true, get: function () { return skill_rpc_1.sensitivityProfileRegistry; } });
33
+ Object.defineProperty(exports, "isVersionCompatible", { enumerable: true, get: function () { return skill_rpc_1.isVersionCompatible; } });
34
+ Object.defineProperty(exports, "negotiateVersion", { enumerable: true, get: function () { return skill_rpc_1.negotiateVersion; } });
35
+ Object.defineProperty(exports, "createRpcRequest", { enumerable: true, get: function () { return skill_rpc_1.createRpcRequest; } });
36
+ Object.defineProperty(exports, "createRpcSuccess", { enumerable: true, get: function () { return skill_rpc_1.createRpcSuccess; } });
37
+ Object.defineProperty(exports, "createRpcError", { enumerable: true, get: function () { return skill_rpc_1.createRpcError; } });
38
+ Object.defineProperty(exports, "createRpcNotification", { enumerable: true, get: function () { return skill_rpc_1.createRpcNotification; } });
39
+ Object.defineProperty(exports, "serializeRpcMessage", { enumerable: true, get: function () { return skill_rpc_1.serializeRpcMessage; } });
40
+ Object.defineProperty(exports, "parseRpcMessage", { enumerable: true, get: function () { return skill_rpc_1.parseRpcMessage; } });
41
+ Object.defineProperty(exports, "isRpcRequest", { enumerable: true, get: function () { return skill_rpc_1.isRpcRequest; } });
42
+ Object.defineProperty(exports, "isRpcNotification", { enumerable: true, get: function () { return skill_rpc_1.isRpcNotification; } });
43
+ Object.defineProperty(exports, "isRpcResponse", { enumerable: true, get: function () { return skill_rpc_1.isRpcResponse; } });
44
+ Object.defineProperty(exports, "isRpcError", { enumerable: true, get: function () { return skill_rpc_1.isRpcError; } });
45
+ Object.defineProperty(exports, "getRpcParseFailures", { enumerable: true, get: function () { return skill_rpc_1.getRpcParseFailures; } });
46
+ // ── Skill Manifest ──
47
+ var skill_manifest_1 = require("./skill-manifest");
48
+ Object.defineProperty(exports, "validateManifest", { enumerable: true, get: function () { return skill_manifest_1.validateManifest; } });
49
+ Object.defineProperty(exports, "BUILTIN_SKILL_LAYERS", { enumerable: true, get: function () { return skill_manifest_1.BUILTIN_SKILL_LAYERS; } });
50
+ Object.defineProperty(exports, "skillLayerRegistry", { enumerable: true, get: function () { return skill_manifest_1.skillLayerRegistry; } });
51
+ // ── Tool Policy Utilities ──
52
+ var toolPolicy_1 = require("./toolPolicy");
53
+ Object.defineProperty(exports, "toolNameFromRef", { enumerable: true, get: function () { return toolPolicy_1.toolNameFromRef; } });
54
+ Object.defineProperty(exports, "isToolAllowedForPolicy", { enumerable: true, get: function () { return toolPolicy_1.isToolAllowedForPolicy; } });
55
+ // ── Device Handshake Security ──
56
+ var device_handshake_1 = require("./device-handshake");
57
+ Object.defineProperty(exports, "DEFAULT_SECURITY_POLICY", { enumerable: true, get: function () { return device_handshake_1.DEFAULT_SECURITY_POLICY; } });
58
+ Object.defineProperty(exports, "BUILTIN_AUTH_LEVELS", { enumerable: true, get: function () { return device_handshake_1.BUILTIN_AUTH_LEVELS; } });
59
+ Object.defineProperty(exports, "authLevelRegistry", { enumerable: true, get: function () { return device_handshake_1.authLevelRegistry; } });
60
+ Object.defineProperty(exports, "BUILTIN_SECURITY_PROFILES", { enumerable: true, get: function () { return device_handshake_1.BUILTIN_SECURITY_PROFILES; } });
61
+ Object.defineProperty(exports, "securityProfileRegistry", { enumerable: true, get: function () { return device_handshake_1.securityProfileRegistry; } });
62
+ // ── Audit Event ──
63
+ var audit_event_1 = require("./audit-event");
64
+ Object.defineProperty(exports, "AUDIT_ERROR_CATEGORIES", { enumerable: true, get: function () { return audit_event_1.AUDIT_ERROR_CATEGORIES; } });
65
+ Object.defineProperty(exports, "HIGH_RISK_AUDIT_ACTIONS", { enumerable: true, get: function () { return audit_event_1.HIGH_RISK_AUDIT_ACTIONS; } });
66
+ Object.defineProperty(exports, "AuditContractError", { enumerable: true, get: function () { return audit_event_1.AuditContractError; } });
67
+ Object.defineProperty(exports, "normalizeAuditErrorCategory", { enumerable: true, get: function () { return audit_event_1.normalizeAuditErrorCategory; } });
68
+ Object.defineProperty(exports, "isHighRiskAuditAction", { enumerable: true, get: function () { return audit_event_1.isHighRiskAuditAction; } });
69
+ Object.defineProperty(exports, "generateHumanSummary", { enumerable: true, get: function () { return audit_event_1.generateHumanSummary; } });
70
+ Object.defineProperty(exports, "withPolicySnapshotRef", { enumerable: true, get: function () { return audit_event_1.withPolicySnapshotRef; } });
71
+ Object.defineProperty(exports, "BUILTIN_ERROR_CATEGORY_ALIASES", { enumerable: true, get: function () { return audit_event_1.BUILTIN_ERROR_CATEGORY_ALIASES; } });
72
+ Object.defineProperty(exports, "errorCategoryAliasRegistry", { enumerable: true, get: function () { return audit_event_1.errorCategoryAliasRegistry; } });
73
+ Object.defineProperty(exports, "BUILTIN_HIGH_RISK_ACTIONS", { enumerable: true, get: function () { return audit_event_1.BUILTIN_HIGH_RISK_ACTIONS; } });
74
+ Object.defineProperty(exports, "highRiskActionRegistry", { enumerable: true, get: function () { return audit_event_1.highRiskActionRegistry; } });
75
+ // ── State Machine ──
76
+ var state_machine_1 = require("./state-machine");
77
+ Object.defineProperty(exports, "STEP_STATUSES", { enumerable: true, get: function () { return state_machine_1.STEP_STATUSES; } });
78
+ Object.defineProperty(exports, "STEP_TERMINAL", { enumerable: true, get: function () { return state_machine_1.STEP_TERMINAL; } });
79
+ Object.defineProperty(exports, "STEP_BLOCKING", { enumerable: true, get: function () { return state_machine_1.STEP_BLOCKING; } });
80
+ Object.defineProperty(exports, "STEP_STREAMING", { enumerable: true, get: function () { return state_machine_1.STEP_STREAMING; } });
81
+ Object.defineProperty(exports, "STEP_TRANSITIONS", { enumerable: true, get: function () { return state_machine_1.STEP_TRANSITIONS; } });
82
+ Object.defineProperty(exports, "RUN_STATUSES", { enumerable: true, get: function () { return state_machine_1.RUN_STATUSES; } });
83
+ Object.defineProperty(exports, "RUN_TERMINAL", { enumerable: true, get: function () { return state_machine_1.RUN_TERMINAL; } });
84
+ Object.defineProperty(exports, "RUN_TRANSITIONS", { enumerable: true, get: function () { return state_machine_1.RUN_TRANSITIONS; } });
85
+ Object.defineProperty(exports, "COLLAB_PHASES", { enumerable: true, get: function () { return state_machine_1.COLLAB_PHASES; } });
86
+ Object.defineProperty(exports, "COLLAB_TERMINAL", { enumerable: true, get: function () { return state_machine_1.COLLAB_TERMINAL; } });
87
+ Object.defineProperty(exports, "COLLAB_TRANSITIONS", { enumerable: true, get: function () { return state_machine_1.COLLAB_TRANSITIONS; } });
88
+ Object.defineProperty(exports, "AGENT_PHASES", { enumerable: true, get: function () { return state_machine_1.AGENT_PHASES; } });
89
+ Object.defineProperty(exports, "AGENT_TRANSITIONS", { enumerable: true, get: function () { return state_machine_1.AGENT_TRANSITIONS; } });
90
+ Object.defineProperty(exports, "AGENT_TERMINAL", { enumerable: true, get: function () { return state_machine_1.AGENT_TERMINAL; } });
91
+ Object.defineProperty(exports, "transitionStep", { enumerable: true, get: function () { return state_machine_1.transitionStep; } });
92
+ Object.defineProperty(exports, "transitionRun", { enumerable: true, get: function () { return state_machine_1.transitionRun; } });
93
+ Object.defineProperty(exports, "transitionCollab", { enumerable: true, get: function () { return state_machine_1.transitionCollab; } });
94
+ Object.defineProperty(exports, "transitionAgent", { enumerable: true, get: function () { return state_machine_1.transitionAgent; } });
95
+ Object.defineProperty(exports, "tryTransitionStep", { enumerable: true, get: function () { return state_machine_1.tryTransitionStep; } });
96
+ Object.defineProperty(exports, "tryTransitionRun", { enumerable: true, get: function () { return state_machine_1.tryTransitionRun; } });
97
+ Object.defineProperty(exports, "tryTransitionCollab", { enumerable: true, get: function () { return state_machine_1.tryTransitionCollab; } });
98
+ Object.defineProperty(exports, "tryTransitionAgent", { enumerable: true, get: function () { return state_machine_1.tryTransitionAgent; } });
99
+ Object.defineProperty(exports, "isAgentTerminal", { enumerable: true, get: function () { return state_machine_1.isAgentTerminal; } });
100
+ Object.defineProperty(exports, "normalizeStepStatus", { enumerable: true, get: function () { return state_machine_1.normalizeStepStatus; } });
101
+ Object.defineProperty(exports, "normalizeRunStatus", { enumerable: true, get: function () { return state_machine_1.normalizeRunStatus; } });
102
+ Object.defineProperty(exports, "normalizeCollabPhase", { enumerable: true, get: function () { return state_machine_1.normalizeCollabPhase; } });
103
+ Object.defineProperty(exports, "checkStateInvariant", { enumerable: true, get: function () { return state_machine_1.checkStateInvariant; } });
104
+ Object.defineProperty(exports, "mapOrchestrationToAgent", { enumerable: true, get: function () { return state_machine_1.mapOrchestrationToAgent; } });
105
+ Object.defineProperty(exports, "mapAgentToOrchestration", { enumerable: true, get: function () { return state_machine_1.mapAgentToOrchestration; } });
106
+ // ── Errors ──
107
+ var errors_1 = require("./errors");
108
+ Object.defineProperty(exports, "PROTOCOL_ERRORS", { enumerable: true, get: function () { return errors_1.PROTOCOL_ERRORS; } });
109
+ Object.defineProperty(exports, "JSONRPC_ERROR_RANGE", { enumerable: true, get: function () { return errors_1.JSONRPC_ERROR_RANGE; } });
110
+ Object.defineProperty(exports, "ERROR_LAYER_MAP", { enumerable: true, get: function () { return errors_1.ERROR_LAYER_MAP; } });
111
+ Object.defineProperty(exports, "getHttpStatusForError", { enumerable: true, get: function () { return errors_1.getHttpStatusForError; } });
112
+ Object.defineProperty(exports, "getServiceCodeForError", { enumerable: true, get: function () { return errors_1.getServiceCodeForError; } });
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * MindPal Protocol Registry Infrastructure
3
+ *
4
+ * 提供元协议架构的核心注册表机制。
5
+ * 所有可扩展的协议元素(消息类型、错误码、模态、运行时等)
6
+ * 通过注册表动态声明,而非硬编码枚举。
7
+ *
8
+ * 设计原则:
9
+ * 1. 同步内存结构,零外部依赖
10
+ * 2. builtIn 条目不可删除(保证核心功能永远可用)
11
+ * 3. 支持按 category 分组查询
12
+ * 4. 类型安全的泛型设计
13
+ */
14
+ /** 注册表条目 */
15
+ export interface RegistryEntry<T = unknown> {
16
+ /** 唯一标识(如 "task.assign", "image", "node") */
17
+ id: string;
18
+ /** 分类标签(如 "collab.task", "modality", "runtime") */
19
+ category: string;
20
+ /** 人类可读描述 */
21
+ description?: string;
22
+ /** payload 的 JSON Schema(可选,用于验证) */
23
+ schema?: Record<string, unknown>;
24
+ /** 扩展元数据 */
25
+ metadata?: Record<string, unknown>;
26
+ /** 是否为内置条目(不可删除) */
27
+ builtIn?: boolean;
28
+ /** 关联值(泛型,如错误码的数字值) */
29
+ value?: T;
30
+ }
31
+ /** 条目校验结果 */
32
+ export interface ValidationResult {
33
+ valid: boolean;
34
+ errors?: string[];
35
+ }
36
+ /** 类型化注册表接口 */
37
+ export interface TypeRegistry<T = unknown> {
38
+ /** 注册新条目。内部调用 validate 做前置校验,校验失败抛出错误。 */
39
+ register(entry: RegistryEntry<T>): void;
40
+ /** 批量注册 */
41
+ registerAll(entries: RegistryEntry<T>[]): void;
42
+ /** 注销条目。builtIn 条目不可注销,返回 false。 */
43
+ unregister(id: string): boolean;
44
+ /** 获取条目 */
45
+ get(id: string): RegistryEntry<T> | undefined;
46
+ /** 检查 id 是否已注册 */
47
+ has(id: string): boolean;
48
+ /** 列出所有条目,可按 category 过滤 */
49
+ list(category?: string): RegistryEntry<T>[];
50
+ /** 校验条目是否满足注册要求(id 非空、不重复、category 非空) */
51
+ validate(entry: RegistryEntry<T>): ValidationResult;
52
+ /** 获取所有已注册的 id 列表 */
53
+ ids(): string[];
54
+ /** 获取注册表大小 */
55
+ size(): number;
56
+ /** 重置为初始状态(仅保留 builtIn 条目) */
57
+ reset(): void;
58
+ }
59
+ /** 创建注册表实例 */
60
+ export declare function createRegistry<T = unknown>(defaults?: RegistryEntry<T>[]): TypeRegistry<T>;
61
+ /** 快捷创建内置条目 */
62
+ export declare function builtInEntry<T>(id: string, category: string, value?: T, metadata?: Record<string, unknown>): RegistryEntry<T>;
63
+ /** 从注册表提取所有 id 作为常量数组(给 TS 消费者用于类型推断) */
64
+ export declare function registryIds<T>(registry: TypeRegistry<T>): string[];
65
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY;AACZ,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,CAAC,CAAC;CACX;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAe;AACf,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,WAAW;IACX,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC/C,oCAAoC;IACpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,WAAW;IACX,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,kBAAkB;IAClB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,4BAA4B;IAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;IACpD,qBAAqB;IACrB,GAAG,IAAI,MAAM,EAAE,CAAC;IAChB,cAAc;IACd,IAAI,IAAI,MAAM,CAAC;IACf,8BAA8B;IAC9B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,cAAc;AACd,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,EACxC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC5B,YAAY,CAAC,CAAC,CAAC,CAiFjB;AAED,eAAe;AACf,wBAAgB,YAAY,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,CAAC,EACT,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,aAAa,CAAC,CAAC,CAAC,CAElB;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAElE"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * MindPal Protocol Registry Infrastructure
4
+ *
5
+ * 提供元协议架构的核心注册表机制。
6
+ * 所有可扩展的协议元素(消息类型、错误码、模态、运行时等)
7
+ * 通过注册表动态声明,而非硬编码枚举。
8
+ *
9
+ * 设计原则:
10
+ * 1. 同步内存结构,零外部依赖
11
+ * 2. builtIn 条目不可删除(保证核心功能永远可用)
12
+ * 3. 支持按 category 分组查询
13
+ * 4. 类型安全的泛型设计
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.createRegistry = createRegistry;
17
+ exports.builtInEntry = builtInEntry;
18
+ exports.registryIds = registryIds;
19
+ /** 创建注册表实例 */
20
+ function createRegistry(defaults) {
21
+ const store = new Map();
22
+ // 初始化 defaults,未显式设置 builtIn 的条目默认为 true
23
+ if (defaults) {
24
+ for (const entry of defaults) {
25
+ const normalized = {
26
+ ...entry,
27
+ builtIn: entry.builtIn !== undefined ? entry.builtIn : true,
28
+ };
29
+ store.set(normalized.id, normalized);
30
+ }
31
+ }
32
+ return {
33
+ validate(entry) {
34
+ const errors = [];
35
+ if (!entry.id || typeof entry.id !== 'string' || entry.id.trim() === '') {
36
+ errors.push('entry.id must be a non-empty string');
37
+ }
38
+ if (!entry.category || typeof entry.category !== 'string' || entry.category.trim() === '') {
39
+ errors.push('entry.category must be a non-empty string');
40
+ }
41
+ if (entry.id && store.has(entry.id)) {
42
+ errors.push(`entry.id "${entry.id}" is already registered`);
43
+ }
44
+ return errors.length === 0 ? { valid: true } : { valid: false, errors };
45
+ },
46
+ register(entry) {
47
+ const result = this.validate(entry);
48
+ if (!result.valid) {
49
+ throw new Error(`Registry: validation failed — ${result.errors.join('; ')}`);
50
+ }
51
+ store.set(entry.id, { ...entry });
52
+ },
53
+ registerAll(entries) {
54
+ for (const entry of entries) {
55
+ this.register(entry);
56
+ }
57
+ },
58
+ unregister(id) {
59
+ const entry = store.get(id);
60
+ if (!entry)
61
+ return false;
62
+ if (entry.builtIn === true)
63
+ return false;
64
+ store.delete(id);
65
+ return true;
66
+ },
67
+ get(id) {
68
+ return store.get(id);
69
+ },
70
+ has(id) {
71
+ return store.has(id);
72
+ },
73
+ list(category) {
74
+ const entries = Array.from(store.values());
75
+ if (category === undefined)
76
+ return entries;
77
+ return entries.filter((e) => e.category === category);
78
+ },
79
+ ids() {
80
+ return Array.from(store.keys());
81
+ },
82
+ size() {
83
+ return store.size;
84
+ },
85
+ reset() {
86
+ for (const [id, entry] of store) {
87
+ if (entry.builtIn !== true) {
88
+ store.delete(id);
89
+ }
90
+ }
91
+ },
92
+ };
93
+ }
94
+ /** 快捷创建内置条目 */
95
+ function builtInEntry(id, category, value, metadata) {
96
+ return { id, category, builtIn: true, value, metadata };
97
+ }
98
+ /** 从注册表提取所有 id 作为常量数组(给 TS 消费者用于类型推断) */
99
+ function registryIds(registry) {
100
+ return registry.ids();
101
+ }
102
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Skill Manifest — shared type definitions and runtime validation.
3
+ *
4
+ * Two manifest variants:
5
+ * - BuiltinSkillManifest : built-in skill plugins registered inside the API process.
6
+ * - ExternalSkillManifest : standalone skills under skills/ with manifest.json.
7
+ */
8
+ import { type RegistryEntry } from './registry.js';
9
+ export type SkillLayer = string;
10
+ export declare const BUILTIN_SKILL_LAYERS: RegistryEntry[];
11
+ export declare const skillLayerRegistry: import("./registry.js").TypeRegistry<unknown>;
12
+ export interface ExtractionHint {
13
+ field: string;
14
+ patterns?: string[];
15
+ position?: "remainder" | "quoted" | "after_verb";
16
+ defaultValue?: unknown;
17
+ required: boolean;
18
+ }
19
+ export interface SkillToolDeclaration {
20
+ name: string;
21
+ displayName?: Record<string, string>;
22
+ description?: Record<string, string>;
23
+ scope: "read" | "write";
24
+ resourceType: string;
25
+ action: string;
26
+ idempotencyRequired?: boolean;
27
+ riskLevel?: "low" | "medium" | "high";
28
+ approvalRequired?: boolean;
29
+ category?: string;
30
+ priority?: number;
31
+ tags?: string[];
32
+ inputSchema?: any;
33
+ outputSchema?: any;
34
+ requiredSecretScopes?: string[];
35
+ extraPermissions?: Array<{
36
+ resourceType: string;
37
+ action: string;
38
+ }>;
39
+ extractionHints?: ExtractionHint[];
40
+ }
41
+ export interface BuiltinSkillManifest {
42
+ identity: {
43
+ name: string;
44
+ version: string;
45
+ };
46
+ displayName?: Record<string, string>;
47
+ description?: Record<string, string>;
48
+ layer?: SkillLayer;
49
+ routes?: string[];
50
+ frontend?: string[];
51
+ dependencies?: string[];
52
+ skillDependencies?: string[];
53
+ tools?: SkillToolDeclaration[];
54
+ }
55
+ /** 推理模式 */
56
+ export type InferenceMode = "fast" | "reasoning" | "disabled";
57
+ /** 模型能力等级 */
58
+ export type ModelCapabilityTier = "basic" | "standard" | "advanced" | "frontier";
59
+ /** Skill 模型需求声明 */
60
+ export interface SkillModelRequirements {
61
+ /** 最低模型能力等级(basic=轻量任务, standard=通用, advanced=复杂推理, frontier=前沿研究) */
62
+ minCapabilityTier: ModelCapabilityTier;
63
+ /** 推理模式:fast=禁用thinking快速响应, reasoning=启用深度推理, disabled=不调用模型 */
64
+ inferenceMode: InferenceMode;
65
+ /** 是否需要多模态能力(视觉/音频理解) */
66
+ multimodal?: boolean;
67
+ /** 偏好模型标识(非强制绑定,调度器可降级) */
68
+ preferredModel?: string;
69
+ /** 最大输出 token 数(约束模型生成长度) */
70
+ maxOutputTokens?: number;
71
+ }
72
+ /** 吞吐模式 */
73
+ export type ThroughputMode = "realtime" | "streaming" | "batch";
74
+ /** Skill 性能 SLA 声明 */
75
+ export interface SkillPerformanceSLA {
76
+ /** 最大可接受延迟(ms),超过此值视为超时 */
77
+ maxLatencyMs: number;
78
+ /** P99 延迟目标(ms),用于调度优化 */
79
+ p99LatencyMs?: number;
80
+ /** 吞吐模式:realtime=毫秒级响应, streaming=流式持续输出, batch=批量离线 */
81
+ throughputMode: ThroughputMode;
82
+ }
83
+ /** 加速器类型 */
84
+ export type AcceleratorType = "none" | "cuda" | "tensorrt" | "npu" | "mps";
85
+ /** Skill 算力需求声明 */
86
+ export interface SkillComputeRequirements {
87
+ /** 是否需要 GPU */
88
+ gpu: boolean;
89
+ /** 最小内存需求(MB) */
90
+ minMemoryMb?: number;
91
+ /** 加速器类型 */
92
+ accelerator?: AcceleratorType;
93
+ /** 是否需要本地推理(端侧部署) */
94
+ localInference?: boolean;
95
+ }
96
+ export interface ExternalSkillManifest {
97
+ identity: {
98
+ name: string;
99
+ version: string;
100
+ };
101
+ displayName?: Record<string, string>;
102
+ description?: Record<string, string>;
103
+ category?: string;
104
+ priority?: number;
105
+ tags?: string[];
106
+ dependencies?: string[];
107
+ contract?: {
108
+ scope?: string;
109
+ resourceType?: string;
110
+ action?: string;
111
+ idempotencyRequired?: boolean;
112
+ riskLevel?: string;
113
+ approvalRequired?: boolean;
114
+ };
115
+ io?: {
116
+ input?: any;
117
+ output?: any;
118
+ inputSchema?: any;
119
+ outputSchema?: any;
120
+ };
121
+ entry: string;
122
+ engines?: {
123
+ node?: string;
124
+ runtime?: string;
125
+ };
126
+ executionTimeoutMs?: number;
127
+ /** Skill 模型能力需求声明(Skill 声明自己需要什么级别的 AI 模型) */
128
+ modelRequirements?: SkillModelRequirements;
129
+ /** Skill 性能 SLA 声明(Skill 声明自己的延迟/吞吐承诺) */
130
+ performanceSLA?: SkillPerformanceSLA;
131
+ /** Skill 算力需求声明(Skill 声明自己需要什么硬件资源) */
132
+ computeRequirements?: SkillComputeRequirements;
133
+ }
134
+ export interface ManifestValidationResult {
135
+ valid: boolean;
136
+ errors: string[];
137
+ }
138
+ /**
139
+ * Validate a raw parsed manifest object (typically from manifest.json).
140
+ * Returns structured error list. An empty errors array means the manifest is valid.
141
+ */
142
+ export declare function validateManifest(raw: unknown): ManifestValidationResult;
143
+ //# sourceMappingURL=skill-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-manifest.d.ts","sourceRoot":"","sources":["../src/skill-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Skill Manifest — shared type definitions and runtime validation.
4
+ *
5
+ * Two manifest variants:
6
+ * - BuiltinSkillManifest : built-in skill plugins registered inside the API process.
7
+ * - ExternalSkillManifest : standalone skills under skills/ with manifest.json.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.skillLayerRegistry = exports.BUILTIN_SKILL_LAYERS = void 0;
11
+ exports.validateManifest = validateManifest;
12
+ const registry_js_1 = require("./registry.js");
13
+ exports.BUILTIN_SKILL_LAYERS = [
14
+ (0, registry_js_1.builtInEntry)('kernel', 'skill.layer', undefined, { priority: 0, description: '运行时内核层' }),
15
+ (0, registry_js_1.builtInEntry)('core', 'skill.layer', undefined, { priority: 1, description: '核心能力层' }),
16
+ (0, registry_js_1.builtInEntry)('optional', 'skill.layer', undefined, { priority: 2, description: '可选能力层' }),
17
+ (0, registry_js_1.builtInEntry)('extension', 'skill.layer', undefined, { priority: 3, description: '扩展能力层/沙箱Skill层' }),
18
+ ];
19
+ exports.skillLayerRegistry = (0, registry_js_1.createRegistry)(exports.BUILTIN_SKILL_LAYERS);
20
+ /* ------------------------------------------------------------------ */
21
+ /* Runtime validation for ExternalSkillManifest */
22
+ /* ------------------------------------------------------------------ */
23
+ /** Regex: at least two dot-separated segments, each starting with a lowercase letter. */
24
+ const NAME_PATTERN = /^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)+$/;
25
+ /** Loose semver check: major.minor.patch with optional pre-release / build metadata. */
26
+ const SEMVER_PATTERN = /^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$/;
27
+ /**
28
+ * Validate a raw parsed manifest object (typically from manifest.json).
29
+ * Returns structured error list. An empty errors array means the manifest is valid.
30
+ */
31
+ function validateManifest(raw) {
32
+ const errors = [];
33
+ if (raw === null || raw === undefined || typeof raw !== "object" || Array.isArray(raw)) {
34
+ return { valid: false, errors: ["manifest must be a non-null object"] };
35
+ }
36
+ const obj = raw;
37
+ // ── identity ──────────────────────────────────────────────────────
38
+ if (!obj.identity || typeof obj.identity !== "object" || Array.isArray(obj.identity)) {
39
+ errors.push("missing or invalid required field: identity");
40
+ }
41
+ else {
42
+ const id = obj.identity;
43
+ if (typeof id.name !== "string" || !id.name) {
44
+ errors.push("missing required field: identity.name");
45
+ }
46
+ else if (!NAME_PATTERN.test(id.name)) {
47
+ errors.push(`identity.name "${id.name}" does not match required pattern (at least two dot-separated lowercase segments)`);
48
+ }
49
+ if (typeof id.version !== "string" || !id.version) {
50
+ errors.push("missing required field: identity.version");
51
+ }
52
+ else if (!SEMVER_PATTERN.test(id.version)) {
53
+ errors.push(`identity.version "${id.version}" does not look like a valid semver string`);
54
+ }
55
+ }
56
+ // ── entry ─────────────────────────────────────────────────────────
57
+ if (typeof obj.entry !== "string" || !obj.entry) {
58
+ errors.push("missing required field: entry");
59
+ }
60
+ return { valid: errors.length === 0, errors };
61
+ }
62
+ //# sourceMappingURL=skill-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-manifest.js","sourceRoot":"","sources":["../src/skill-manifest.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAqMH,4CAoCC;AAvOD,+CAAiF;AAQpE,QAAA,oBAAoB,GAAoB;IACnD,IAAA,0BAAY,EAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAA,0BAAY,EAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACrF,IAAA,0BAAY,EAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACzF,IAAA,0BAAY,EAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACpG,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAA,4BAAc,EAAC,4BAAoB,CAAC,CAAC;AAiKvE,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,yFAAyF;AACzF,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAE3D,wFAAwF;AACxF,MAAM,cAAc,GAAG,sDAAsD,CAAC;AAO9E;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,oCAAoC,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,qEAAqE;IACrE,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,GAAG,CAAC,QAAmC,CAAC;QAEnD,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAAE,CAAC,IAAI,mFAAmF,CAC7G,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,4CAA4C,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC"}