@principles/core 1.277.0 → 1.277.2
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/runtime-v2/__tests__/replay-production-parity.test.d.ts +13 -0
- package/dist/runtime-v2/__tests__/replay-production-parity.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/replay-production-parity.test.js +133 -0
- package/dist/runtime-v2/__tests__/replay-production-parity.test.js.map +1 -0
- package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +36 -0
- package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
- package/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
- package/dist/runtime-v2/activation/activation-dispatcher.js +4 -0
- package/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
- package/dist/runtime-v2/activation/activation-types.d.ts +11 -1
- package/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
- package/dist/runtime-v2/activation/activation-types.js.map +1 -1
- package/dist/runtime-v2/activation/production-gate-deps.d.ts +18 -1
- package/dist/runtime-v2/activation/production-gate-deps.d.ts.map +1 -1
- package/dist/runtime-v2/activation/production-gate-deps.js +5 -1
- package/dist/runtime-v2/activation/production-gate-deps.js.map +1 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +18 -0
- package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.js +36 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/dist/runtime-v2/golden-trace-replay-validator.d.ts +8 -0
- package/dist/runtime-v2/golden-trace-replay-validator.d.ts.map +1 -1
- package/dist/runtime-v2/golden-trace-replay-validator.js +9 -3
- package/dist/runtime-v2/golden-trace-replay-validator.js.map +1 -1
- package/dist/runtime-v2/golden-trace.d.ts +9 -0
- package/dist/runtime-v2/golden-trace.d.ts.map +1 -1
- package/dist/runtime-v2/golden-trace.js +7 -1
- package/dist/runtime-v2/golden-trace.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +5 -1
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +3 -1
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +43 -0
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js +55 -0
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js +30 -9
- package/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/rule-reliability-validation.test.d.ts +12 -0
- package/dist/runtime-v2/internalization/__tests__/rule-reliability-validation.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/rule-reliability-validation.test.js +256 -0
- package/dist/runtime-v2/internalization/__tests__/rule-reliability-validation.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js +131 -0
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/tool-semantic-registry.test.d.ts +11 -0
- package/dist/runtime-v2/internalization/__tests__/tool-semantic-registry.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/tool-semantic-registry.test.js +133 -0
- package/dist/runtime-v2/internalization/__tests__/tool-semantic-registry.test.js.map +1 -0
- package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/diag-router-runner.js +35 -0
- package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-output.d.ts +10 -0
- package/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.js +4 -0
- package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/index.d.ts +5 -1
- package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/index.js +3 -1
- package/dist/runtime-v2/internalization/index.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.js +23 -0
- package/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
- package/dist/runtime-v2/internalization/legacy-rule-contract-scanner.d.ts +11 -0
- package/dist/runtime-v2/internalization/legacy-rule-contract-scanner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/legacy-rule-contract-scanner.js +11 -1
- package/dist/runtime-v2/internalization/legacy-rule-contract-scanner.js.map +1 -1
- package/dist/runtime-v2/internalization/refiner-rulehost-gate.d.ts +21 -0
- package/dist/runtime-v2/internalization/refiner-rulehost-gate.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/refiner-rulehost-gate.js +30 -9
- package/dist/runtime-v2/internalization/refiner-rulehost-gate.js.map +1 -1
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts +18 -0
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +11 -3
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js.map +1 -1
- package/dist/runtime-v2/internalization/rule-code-validator.d.ts +7 -4
- package/dist/runtime-v2/internalization/rule-code-validator.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rule-code-validator.js +25 -2
- package/dist/runtime-v2/internalization/rule-code-validator.js.map +1 -1
- package/dist/runtime-v2/internalization/rule-context-v2.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rule-context-v2.js +6 -26
- package/dist/runtime-v2/internalization/rule-context-v2.js.map +1 -1
- package/dist/runtime-v2/internalization/rule-host-contracts.d.ts +10 -1
- package/dist/runtime-v2/internalization/rule-host-contracts.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rule-host-input-builder.d.ts +21 -0
- package/dist/runtime-v2/internalization/rule-host-input-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rule-host-input-builder.js +28 -1
- package/dist/runtime-v2/internalization/rule-host-input-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/rule-reliability-validation.d.ts +67 -0
- package/dist/runtime-v2/internalization/rule-reliability-validation.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/rule-reliability-validation.js +178 -0
- package/dist/runtime-v2/internalization/rule-reliability-validation.js.map +1 -0
- package/dist/runtime-v2/internalization/tool-semantic-baseline.d.ts +26 -0
- package/dist/runtime-v2/internalization/tool-semantic-baseline.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/tool-semantic-baseline.js +57 -0
- package/dist/runtime-v2/internalization/tool-semantic-baseline.js.map +1 -0
- package/dist/runtime-v2/internalization/tool-semantic-registry.d.ts +76 -0
- package/dist/runtime-v2/internalization/tool-semantic-registry.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/tool-semantic-registry.js +113 -0
- package/dist/runtime-v2/internalization/tool-semantic-registry.js.map +1 -0
- package/package.json +1 -1
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* 6. Empty/null (null / '' / undefined, /project)
|
|
20
20
|
*/
|
|
21
21
|
import type { RuleHostInput } from './rule-host-contracts.js';
|
|
22
|
+
import type { CanonicalKind } from './rule-context-v2.js';
|
|
22
23
|
/**
|
|
23
24
|
* Normalize a file path to a project-relative POSIX-style path.
|
|
24
25
|
*
|
|
@@ -37,6 +38,15 @@ export interface ExtractFilePathOptions {
|
|
|
37
38
|
isBashTool?: boolean;
|
|
38
39
|
/** The tool name (used for synthetic path generation). */
|
|
39
40
|
toolName?: string;
|
|
41
|
+
/**
|
|
42
|
+
* PRI-634-F: canonical kind from the ToolSemanticRegistry. When provided,
|
|
43
|
+
* unspecified isBashTool/isWriteTool hints are DERIVED from it
|
|
44
|
+
* (execute→isBashTool, write→isWriteTool) so extraction behavior is a pure
|
|
45
|
+
* function of (toolName, params, projectDir, registry) — identical in
|
|
46
|
+
* replay and production. Explicit hints keep precedence for callers that
|
|
47
|
+
* classify with their own host dispatch surface.
|
|
48
|
+
*/
|
|
49
|
+
canonicalKind?: CanonicalKind;
|
|
40
50
|
}
|
|
41
51
|
/**
|
|
42
52
|
* Extract the file path from tool call params, using the same heuristic
|
|
@@ -51,12 +61,23 @@ export interface ExtractFilePathOptions {
|
|
|
51
61
|
*/
|
|
52
62
|
export declare function extractFilePathFromParams(params: Record<string, unknown>, options?: ExtractFilePathOptions): string | null;
|
|
53
63
|
export type BuildRuleHostActionOptions = ExtractFilePathOptions;
|
|
64
|
+
/**
|
|
65
|
+
* PRI-634-F Phase 2: derive extraction hints from a canonical kind.
|
|
66
|
+
* execute → bash-tool extraction; write → write-tool synthetic path; all
|
|
67
|
+
* other kinds → no tool-specific extraction. Pure, total.
|
|
68
|
+
*/
|
|
69
|
+
export declare function deriveToolHintsFromCanonicalKind(canonicalKind: CanonicalKind): {
|
|
70
|
+
isBashTool: boolean;
|
|
71
|
+
isWriteTool: boolean;
|
|
72
|
+
};
|
|
54
73
|
/**
|
|
55
74
|
* Build the `action` field of RuleHostInput — the unified snapshot used by
|
|
56
75
|
* both Golden Trace replay and the production OpenClaw Gate.
|
|
57
76
|
*
|
|
58
77
|
* This function combines file path extraction + path normalization into a
|
|
59
78
|
* single pure call, ensuring both paths produce the same `normalizedPath`.
|
|
79
|
+
* When `options.canonicalKind` is provided it is echoed onto the action
|
|
80
|
+
* snapshot and drives hint derivation (see ExtractFilePathOptions).
|
|
60
81
|
*/
|
|
61
82
|
export declare function buildRuleHostAction(toolName: string, params: Record<string, unknown>, projectDir: string, options?: BuildRuleHostActionOptions): RuleHostInput['action'];
|
|
62
83
|
//# sourceMappingURL=rule-host-input-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-host-input-builder.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-host-input-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-host-input-builder.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-host-input-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,GACjB,MAAM,CAqDR;AA8DD,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,sBAA2B,GACnC,MAAM,GAAG,IAAI,CA4Bf;AAID,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,aAAa,GAC3B;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAK/C;AAYD;;;;;;;;GAQG;AAEH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,aAAa,CAAC,QAAQ,CAAC,CAYzB"}
|
|
@@ -162,21 +162,48 @@ export function extractFilePathFromParams(params, options = {}) {
|
|
|
162
162
|
}
|
|
163
163
|
return null;
|
|
164
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* PRI-634-F Phase 2: derive extraction hints from a canonical kind.
|
|
167
|
+
* execute → bash-tool extraction; write → write-tool synthetic path; all
|
|
168
|
+
* other kinds → no tool-specific extraction. Pure, total.
|
|
169
|
+
*/
|
|
170
|
+
export function deriveToolHintsFromCanonicalKind(canonicalKind) {
|
|
171
|
+
return {
|
|
172
|
+
isBashTool: canonicalKind === 'execute',
|
|
173
|
+
isWriteTool: canonicalKind === 'write',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function withDerivedHints(options) {
|
|
177
|
+
if (options.canonicalKind === undefined)
|
|
178
|
+
return options;
|
|
179
|
+
const derived = deriveToolHintsFromCanonicalKind(options.canonicalKind);
|
|
180
|
+
return {
|
|
181
|
+
...options,
|
|
182
|
+
isBashTool: options.isBashTool ?? derived.isBashTool,
|
|
183
|
+
isWriteTool: options.isWriteTool ?? derived.isWriteTool,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
165
186
|
/**
|
|
166
187
|
* Build the `action` field of RuleHostInput — the unified snapshot used by
|
|
167
188
|
* both Golden Trace replay and the production OpenClaw Gate.
|
|
168
189
|
*
|
|
169
190
|
* This function combines file path extraction + path normalization into a
|
|
170
191
|
* single pure call, ensuring both paths produce the same `normalizedPath`.
|
|
192
|
+
* When `options.canonicalKind` is provided it is echoed onto the action
|
|
193
|
+
* snapshot and drives hint derivation (see ExtractFilePathOptions).
|
|
171
194
|
*/
|
|
172
195
|
// eslint-disable-next-line @typescript-eslint/max-params
|
|
173
196
|
export function buildRuleHostAction(toolName, params, projectDir, options = {}) {
|
|
174
|
-
const
|
|
197
|
+
const effectiveOptions = withDerivedHints(options);
|
|
198
|
+
const filePath = extractFilePathFromParams(params, { ...effectiveOptions, toolName });
|
|
175
199
|
const normalizedPath = normalizePathPure(filePath, projectDir);
|
|
176
200
|
return {
|
|
177
201
|
toolName,
|
|
178
202
|
normalizedPath,
|
|
179
203
|
paramsSummary: { ...params },
|
|
204
|
+
...(effectiveOptions.canonicalKind !== undefined
|
|
205
|
+
? { canonicalKind: effectiveOptions.canonicalKind }
|
|
206
|
+
: {}),
|
|
180
207
|
};
|
|
181
208
|
}
|
|
182
209
|
//# sourceMappingURL=rule-host-input-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-host-input-builder.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-host-input-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"rule-host-input-builder.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-host-input-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule Reliability Validation & Failure Attribution — PRI-634-F Phase 3
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE: answer "哪里错 / 为什么 / 谁负责" for rule reliability failures
|
|
5
|
+
* (SPEC §8) instead of free-text "replay failed". Two pure capabilities:
|
|
6
|
+
*
|
|
7
|
+
* 1. validateRuleReliability — deterministic pre-gate check (SPEC §7/§9 V1):
|
|
8
|
+
* every declared tool (affectedTools + goldenTraceCases toolName) must be
|
|
9
|
+
* known to the ToolSemanticRegistry, otherwise adapter/tool_alias_unknown.
|
|
10
|
+
*
|
|
11
|
+
* 2. classifyReplayFailure — map a RefinerRuleHostGate outcome to ONE
|
|
12
|
+
* FailureLayer with a stable reasonCode, bounded evidence and a next
|
|
13
|
+
* action. Routing only — no repair (SPEC §10).
|
|
14
|
+
*
|
|
15
|
+
* Layer semantics (SPEC §8):
|
|
16
|
+
* rule — the generated RuleCode itself is defective
|
|
17
|
+
* test — the golden trace material is deficient
|
|
18
|
+
* adapter — the tool mapping/host adapter surface is wrong
|
|
19
|
+
* runtime — the evaluation infrastructure/environment failed
|
|
20
|
+
* unknown — cannot be determined
|
|
21
|
+
*
|
|
22
|
+
* Pure logic — zero I/O. No new subsystem, no repair loop.
|
|
23
|
+
*/
|
|
24
|
+
import type { RefinerRuleHostGateDecision } from './refiner-rulehost-gate.js';
|
|
25
|
+
import type { RefinerSandboxResult } from './refiner-sandbox-wrapper.js';
|
|
26
|
+
import type { ToolSemanticRegistry } from './tool-semantic-registry.js';
|
|
27
|
+
export type FailureLayer = 'rule' | 'test' | 'adapter' | 'runtime' | 'unknown';
|
|
28
|
+
export interface RuleReliabilityFailure {
|
|
29
|
+
readonly layer: FailureLayer;
|
|
30
|
+
readonly reasonCode: string;
|
|
31
|
+
/** Bounded human-readable evidence (rc-8: never assume stringify of arbitrary values). */
|
|
32
|
+
readonly evidence: string;
|
|
33
|
+
readonly nextAction: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RuleReliabilityValidationInput {
|
|
36
|
+
/** ArtificerRuleOutput.affectedTools (declared scope of the rule). */
|
|
37
|
+
readonly affectedTools: readonly string[];
|
|
38
|
+
/** Tool names used by the rule's goldenTraceCases. */
|
|
39
|
+
readonly goldenTraceCaseToolNames: readonly string[];
|
|
40
|
+
/** The registry the production gate resolves tool semantics with. */
|
|
41
|
+
readonly toolSemantics: ToolSemanticRegistry;
|
|
42
|
+
}
|
|
43
|
+
export interface RuleReliabilityValidationResult {
|
|
44
|
+
readonly valid: boolean;
|
|
45
|
+
readonly failure?: RuleReliabilityFailure;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* V1 validation (SPEC §9, revised in R2 per review): every tool name the rule
|
|
49
|
+
* declares or tests against must be HOST-DISPATCHABLE — resolvable is not
|
|
50
|
+
* enough. Three verdicts:
|
|
51
|
+
*
|
|
52
|
+
* tool_alias_unknown — resolves nowhere (not even baseline);
|
|
53
|
+
* tool_not_host_dispatchable — semantically classifiable (baseline generic
|
|
54
|
+
* vocabulary like `execute_command`, or a
|
|
55
|
+
* read/search family the host gate never
|
|
56
|
+
* routes) but NOT declared by the host layer.
|
|
57
|
+
* A rule matching this name passes replay
|
|
58
|
+
* against fictional inputs and never fires
|
|
59
|
+
* in production — reject (SC1).
|
|
60
|
+
* tool_registry_host_layer_missing — the registry carries no host
|
|
61
|
+
* declaration at all; existence cannot be
|
|
62
|
+
* verified. Configuration defect, fail loud
|
|
63
|
+
* rather than silently skipping the check.
|
|
64
|
+
*/
|
|
65
|
+
export declare function validateRuleReliability(input: RuleReliabilityValidationInput): RuleReliabilityValidationResult;
|
|
66
|
+
export declare function classifyReplayFailure(decision: Exclude<RefinerRuleHostGateDecision, 'accepted_shadow'>, sandboxResult: RefinerSandboxResult): RuleReliabilityFailure;
|
|
67
|
+
//# sourceMappingURL=rule-reliability-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-reliability-validation.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-reliability-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAG,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAYD,MAAM,WAAW,8BAA8B;IAC7C,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sDAAsD;IACtD,QAAQ,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrD,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,8BAA8B,GACpC,+BAA+B,CA+DjC;AASD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,EACjE,aAAa,EAAE,oBAAoB,GAClC,sBAAsB,CAmExB"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule Reliability Validation & Failure Attribution — PRI-634-F Phase 3
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE: answer "哪里错 / 为什么 / 谁负责" for rule reliability failures
|
|
5
|
+
* (SPEC §8) instead of free-text "replay failed". Two pure capabilities:
|
|
6
|
+
*
|
|
7
|
+
* 1. validateRuleReliability — deterministic pre-gate check (SPEC §7/§9 V1):
|
|
8
|
+
* every declared tool (affectedTools + goldenTraceCases toolName) must be
|
|
9
|
+
* known to the ToolSemanticRegistry, otherwise adapter/tool_alias_unknown.
|
|
10
|
+
*
|
|
11
|
+
* 2. classifyReplayFailure — map a RefinerRuleHostGate outcome to ONE
|
|
12
|
+
* FailureLayer with a stable reasonCode, bounded evidence and a next
|
|
13
|
+
* action. Routing only — no repair (SPEC §10).
|
|
14
|
+
*
|
|
15
|
+
* Layer semantics (SPEC §8):
|
|
16
|
+
* rule — the generated RuleCode itself is defective
|
|
17
|
+
* test — the golden trace material is deficient
|
|
18
|
+
* adapter — the tool mapping/host adapter surface is wrong
|
|
19
|
+
* runtime — the evaluation infrastructure/environment failed
|
|
20
|
+
* unknown — cannot be determined
|
|
21
|
+
*
|
|
22
|
+
* Pure logic — zero I/O. No new subsystem, no repair loop.
|
|
23
|
+
*/
|
|
24
|
+
const EVIDENCE_MAX_CHARS = 300;
|
|
25
|
+
function boundEvidence(text) {
|
|
26
|
+
return text.length > EVIDENCE_MAX_CHARS ? `${text.slice(0, EVIDENCE_MAX_CHARS)}…` : text;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* V1 validation (SPEC §9, revised in R2 per review): every tool name the rule
|
|
30
|
+
* declares or tests against must be HOST-DISPATCHABLE — resolvable is not
|
|
31
|
+
* enough. Three verdicts:
|
|
32
|
+
*
|
|
33
|
+
* tool_alias_unknown — resolves nowhere (not even baseline);
|
|
34
|
+
* tool_not_host_dispatchable — semantically classifiable (baseline generic
|
|
35
|
+
* vocabulary like `execute_command`, or a
|
|
36
|
+
* read/search family the host gate never
|
|
37
|
+
* routes) but NOT declared by the host layer.
|
|
38
|
+
* A rule matching this name passes replay
|
|
39
|
+
* against fictional inputs and never fires
|
|
40
|
+
* in production — reject (SC1).
|
|
41
|
+
* tool_registry_host_layer_missing — the registry carries no host
|
|
42
|
+
* declaration at all; existence cannot be
|
|
43
|
+
* verified. Configuration defect, fail loud
|
|
44
|
+
* rather than silently skipping the check.
|
|
45
|
+
*/
|
|
46
|
+
export function validateRuleReliability(input) {
|
|
47
|
+
if (!input.toolSemantics.hasHostLayer) {
|
|
48
|
+
return {
|
|
49
|
+
valid: false,
|
|
50
|
+
failure: {
|
|
51
|
+
layer: 'adapter',
|
|
52
|
+
reasonCode: 'tool_registry_host_layer_missing',
|
|
53
|
+
evidence: 'ToolSemanticRegistry has no host-declared layer — tool existence cannot be verified against the production host',
|
|
54
|
+
nextAction: 'supply a host-declared registry (host mappings), or run the host once so its declaration is persisted for the workspace',
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const classify = (tool) => {
|
|
59
|
+
if (input.toolSemantics.hasHostTool(tool))
|
|
60
|
+
return 'ok';
|
|
61
|
+
return input.toolSemantics.lookup(tool) === null ? 'unknown' : 'not_dispatchable';
|
|
62
|
+
};
|
|
63
|
+
const unknownAffected = input.affectedTools.filter((tool) => classify(tool) === 'unknown');
|
|
64
|
+
const notDispatchableAffected = input.affectedTools.filter((tool) => classify(tool) === 'not_dispatchable');
|
|
65
|
+
if (unknownAffected.length > 0) {
|
|
66
|
+
return {
|
|
67
|
+
valid: false,
|
|
68
|
+
failure: {
|
|
69
|
+
layer: 'adapter',
|
|
70
|
+
reasonCode: 'tool_alias_unknown',
|
|
71
|
+
evidence: boundEvidence(`affectedTools unknown to any tool vocabulary: ${unknownAffected.join(', ')}`),
|
|
72
|
+
nextAction: 'regenerate the rule using real host tool names (see the host tool semantic declaration)',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (notDispatchableAffected.length > 0) {
|
|
77
|
+
return {
|
|
78
|
+
valid: false,
|
|
79
|
+
failure: {
|
|
80
|
+
layer: 'adapter',
|
|
81
|
+
reasonCode: 'tool_not_host_dispatchable',
|
|
82
|
+
evidence: boundEvidence(`affectedTools semantically classifiable but NOT dispatched by this host (never reach the RuleHost gate): ${notDispatchableAffected.join(', ')}`),
|
|
83
|
+
nextAction: 'regenerate the rule against host-declared tool names — generic LLM vocabulary and read/search-family names cannot trigger rules in production',
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const unknownCaseTools = input.goldenTraceCaseToolNames.filter((tool) => classify(tool) === 'unknown');
|
|
88
|
+
const notDispatchableCaseTools = input.goldenTraceCaseToolNames.filter((tool) => classify(tool) === 'not_dispatchable');
|
|
89
|
+
if (unknownCaseTools.length > 0 || notDispatchableCaseTools.length > 0) {
|
|
90
|
+
const parts = [];
|
|
91
|
+
if (unknownCaseTools.length > 0)
|
|
92
|
+
parts.push(`unknown: ${unknownCaseTools.join(', ')}`);
|
|
93
|
+
if (notDispatchableCaseTools.length > 0)
|
|
94
|
+
parts.push(`not host-dispatchable: ${notDispatchableCaseTools.join(', ')}`);
|
|
95
|
+
return {
|
|
96
|
+
valid: false,
|
|
97
|
+
failure: {
|
|
98
|
+
layer: 'adapter',
|
|
99
|
+
reasonCode: unknownCaseTools.length > 0 ? 'tool_alias_unknown' : 'tool_not_host_dispatchable',
|
|
100
|
+
evidence: boundEvidence(`goldenTraceCases toolName ${parts.join('; ')}`),
|
|
101
|
+
nextAction: 'regenerate golden trace cases against host-declared tool names so replay exercises inputs production can actually produce',
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return { valid: true };
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// 2. Replay Failure Classification (SPEC §8 / §10 — routing only)
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
/** Sentinel caseIds produced by infrastructure, never by a trace case. */
|
|
111
|
+
const INFRA_CASE_IDS = new Set(['__sandbox__', '__no_evaluator__', '__compile__', '__return_shape__', '__matched_false_decision__']);
|
|
112
|
+
export function classifyReplayFailure(decision, sandboxResult) {
|
|
113
|
+
switch (decision) {
|
|
114
|
+
case 'rejected_no_cases':
|
|
115
|
+
return {
|
|
116
|
+
layer: 'test',
|
|
117
|
+
reasonCode: 'golden_trace_empty',
|
|
118
|
+
evidence: 'goldenTrace.cases is empty — no test material to validate against',
|
|
119
|
+
nextAction: 'regenerate the artifact with at least one positive and one negative golden trace case',
|
|
120
|
+
};
|
|
121
|
+
case 'rejected_forbidden_pattern':
|
|
122
|
+
return {
|
|
123
|
+
layer: 'rule',
|
|
124
|
+
reasonCode: 'forbidden_pattern',
|
|
125
|
+
evidence: boundEvidence(`forbidden patterns: ${sandboxResult.forbiddenPatternViolations.join(', ')}`),
|
|
126
|
+
nextAction: 'regenerate RuleCode without forbidden APIs (no fs/process/require/eval/network)',
|
|
127
|
+
};
|
|
128
|
+
case 'rejected_timeout':
|
|
129
|
+
return {
|
|
130
|
+
layer: 'rule',
|
|
131
|
+
reasonCode: 'evaluation_timeout',
|
|
132
|
+
evidence: boundEvidence(sandboxResult.failedCases.map((c) => `${c.caseId}: ${c.message}`).join('; ')),
|
|
133
|
+
nextAction: 'regenerate RuleCode with bounded logic (no unbounded loops)',
|
|
134
|
+
};
|
|
135
|
+
case 'rejected_validation_failed': {
|
|
136
|
+
// Sentinels here are static-shape defects of the RULE CODE itself
|
|
137
|
+
// (return shape, matched=false pairing) — still rule-layer.
|
|
138
|
+
const detail = sandboxResult.failedCases
|
|
139
|
+
.filter((c) => c.errorType === 'validation_failed')
|
|
140
|
+
.map((c) => `${c.caseId}: ${c.message}`)
|
|
141
|
+
.join('; ');
|
|
142
|
+
return {
|
|
143
|
+
layer: 'rule',
|
|
144
|
+
reasonCode: 'replay_decision_mismatch',
|
|
145
|
+
evidence: boundEvidence(detail || 'validation failed with no case detail'),
|
|
146
|
+
nextAction: 'fix the RuleCode decision logic to satisfy the golden trace expectations',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
case 'rejected_runtime_error': {
|
|
150
|
+
// Distinguish rule-code defects (case-level syntax/runtime errors) from
|
|
151
|
+
// infrastructure failures (sandbox adapter throw, opaque sandbox state).
|
|
152
|
+
const infraCases = sandboxResult.failedCases.filter((c) => INFRA_CASE_IDS.has(c.caseId));
|
|
153
|
+
if (infraCases.length > 0) {
|
|
154
|
+
return {
|
|
155
|
+
layer: 'runtime',
|
|
156
|
+
reasonCode: 'sandbox_infrastructure_failure',
|
|
157
|
+
evidence: boundEvidence(infraCases.map((c) => `${c.caseId}: ${c.message}`).join('; ')),
|
|
158
|
+
nextAction: 'inspect the sandbox/gate adapter wiring, then re-run the gate',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const ruleCases = sandboxResult.failedCases.map((c) => `${c.caseId}: ${c.errorType} — ${c.message}`);
|
|
162
|
+
return {
|
|
163
|
+
layer: 'rule',
|
|
164
|
+
reasonCode: 'rule_code_execution_error',
|
|
165
|
+
evidence: boundEvidence(ruleCases.join('; ')),
|
|
166
|
+
nextAction: 'fix the RuleCode so evaluate() handles every input shape without throwing',
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
default:
|
|
170
|
+
return {
|
|
171
|
+
layer: 'unknown',
|
|
172
|
+
reasonCode: 'unclassified',
|
|
173
|
+
evidence: boundEvidence(`gate decision ${String(decision)}`),
|
|
174
|
+
nextAction: 'inspect the full gate result manually',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=rule-reliability-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-reliability-validation.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/rule-reliability-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Semantic Baseline — host-neutral alias table (PRI-634-F Phase 1)
|
|
3
|
+
*
|
|
4
|
+
* The baseline maps GENERIC, cross-host tool vocabulary names (the names LLMs
|
|
5
|
+
* produce when no host catalog constrains them) to CanonicalKind. Host tool
|
|
6
|
+
* names live in host declarations layered via buildToolSemanticRegistry —
|
|
7
|
+
* never here (SPEC §5: core owns canonicalKind, hosts own rawToolName).
|
|
8
|
+
*
|
|
9
|
+
* Single source of truth for the table: rule-context-v2's canonicalizeToolKind
|
|
10
|
+
* and tool-semantic-registry's baseline layer both read THIS module.
|
|
11
|
+
*
|
|
12
|
+
* Pure logic — zero I/O.
|
|
13
|
+
*/
|
|
14
|
+
import type { CanonicalKind } from './rule-context-v2.js';
|
|
15
|
+
export declare const CANONICAL_KIND_VALUES: ReadonlySet<string>;
|
|
16
|
+
/** Type guard for untrusted canonicalKind values (rc-2: guard, not `as`). */
|
|
17
|
+
export declare function isCanonicalKind(value: unknown): value is CanonicalKind;
|
|
18
|
+
/**
|
|
19
|
+
* Host-neutral baseline alias table. Originally the static TOOL_ALIAS table of
|
|
20
|
+
* rule-context-v2 (spec §4.4); PRI-634-F adds the generic LLM vocabulary names
|
|
21
|
+
* observed in Artificer output (execute_command / run_script / code_interpreter
|
|
22
|
+
* — SPEC §1 Problem A) so the baseline resolves the names rules are actually
|
|
23
|
+
* generated against.
|
|
24
|
+
*/
|
|
25
|
+
export declare const baselineToolAlias: Readonly<Record<string, CanonicalKind>>;
|
|
26
|
+
//# sourceMappingURL=tool-semantic-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-semantic-baseline.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/tool-semantic-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAOpD,CAAC;AAEH,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAuBpE,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Semantic Baseline — host-neutral alias table (PRI-634-F Phase 1)
|
|
3
|
+
*
|
|
4
|
+
* The baseline maps GENERIC, cross-host tool vocabulary names (the names LLMs
|
|
5
|
+
* produce when no host catalog constrains them) to CanonicalKind. Host tool
|
|
6
|
+
* names live in host declarations layered via buildToolSemanticRegistry —
|
|
7
|
+
* never here (SPEC §5: core owns canonicalKind, hosts own rawToolName).
|
|
8
|
+
*
|
|
9
|
+
* Single source of truth for the table: rule-context-v2's canonicalizeToolKind
|
|
10
|
+
* and tool-semantic-registry's baseline layer both read THIS module.
|
|
11
|
+
*
|
|
12
|
+
* Pure logic — zero I/O.
|
|
13
|
+
*/
|
|
14
|
+
export const CANONICAL_KIND_VALUES = new Set([
|
|
15
|
+
'read',
|
|
16
|
+
'search',
|
|
17
|
+
'write',
|
|
18
|
+
'execute',
|
|
19
|
+
'agent',
|
|
20
|
+
'other',
|
|
21
|
+
]);
|
|
22
|
+
/** Type guard for untrusted canonicalKind values (rc-2: guard, not `as`). */
|
|
23
|
+
export function isCanonicalKind(value) {
|
|
24
|
+
return typeof value === 'string' && CANONICAL_KIND_VALUES.has(value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Host-neutral baseline alias table. Originally the static TOOL_ALIAS table of
|
|
28
|
+
* rule-context-v2 (spec §4.4); PRI-634-F adds the generic LLM vocabulary names
|
|
29
|
+
* observed in Artificer output (execute_command / run_script / code_interpreter
|
|
30
|
+
* — SPEC §1 Problem A) so the baseline resolves the names rules are actually
|
|
31
|
+
* generated against.
|
|
32
|
+
*/
|
|
33
|
+
export const baselineToolAlias = Object.freeze({
|
|
34
|
+
read: 'read',
|
|
35
|
+
read_file: 'read',
|
|
36
|
+
read_many_files: 'read',
|
|
37
|
+
grep: 'search',
|
|
38
|
+
grep_search: 'search',
|
|
39
|
+
search_file_content: 'search',
|
|
40
|
+
glob: 'search',
|
|
41
|
+
write: 'write',
|
|
42
|
+
write_file: 'write',
|
|
43
|
+
edit: 'write',
|
|
44
|
+
edit_file: 'write',
|
|
45
|
+
replace: 'write',
|
|
46
|
+
apply_patch: 'write',
|
|
47
|
+
bash: 'execute',
|
|
48
|
+
exec: 'execute',
|
|
49
|
+
execute: 'execute',
|
|
50
|
+
run_shell_command: 'execute',
|
|
51
|
+
// PRI-634-F baseline additions — generic LLM vocabulary, not host tools:
|
|
52
|
+
execute_command: 'execute',
|
|
53
|
+
run_script: 'execute',
|
|
54
|
+
code_interpreter: 'execute',
|
|
55
|
+
sessions_spawn: 'agent',
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=tool-semantic-baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-semantic-baseline.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/tool-semantic-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAS;IACxE,MAAM;IACN,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA4C,MAAM,CAAC,MAAM,CAAC;IACtF,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,MAAM;IACvB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,mBAAmB,EAAE,QAAQ;IAC7B,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,OAAO;IACpB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,SAAS;IAC5B,yEAAyE;IACzE,eAAe,EAAE,SAAS;IAC1B,UAAU,EAAE,SAAS;IACrB,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Semantic Registry — PRI-634-F Phase 1 (Tool Semantic Closure)
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE: One authoritative mapping from raw tool names to the closed
|
|
5
|
+
* CanonicalKind enum, so replay and production resolve identical tool
|
|
6
|
+
* semantics for the same raw name.
|
|
7
|
+
*
|
|
8
|
+
* OWNERSHIP (SPEC §5, mirroring the anti-drift note in rule-context-v2.ts):
|
|
9
|
+
* - core owns the CLOSED CanonicalKind enum + the host-neutral baseline
|
|
10
|
+
* table (generic LLM vocabulary names, no host-specific tools);
|
|
11
|
+
* - each host owns its raw tool name list and declares mappings that are
|
|
12
|
+
* layered on top of the baseline (host wins on conflict);
|
|
13
|
+
* - core never grows the baseline with host tool names.
|
|
14
|
+
*
|
|
15
|
+
* Pure logic — zero I/O. Runtime Contract: mappings arrive as untrusted
|
|
16
|
+
* `unknown` at the public builder boundary and are validated structurally
|
|
17
|
+
* (rc-1, rc-2, rc-4, rc-5) before use.
|
|
18
|
+
*/
|
|
19
|
+
import type { CanonicalKind } from './rule-context-v2.js';
|
|
20
|
+
export type { CanonicalKind } from './rule-context-v2.js';
|
|
21
|
+
export interface ToolSemanticMappingV1 {
|
|
22
|
+
readonly rawToolName: string;
|
|
23
|
+
readonly canonicalKind: CanonicalKind;
|
|
24
|
+
}
|
|
25
|
+
/** Resolved registry: closed lookup surface shared by replay and production. */
|
|
26
|
+
export interface ToolSemanticRegistry {
|
|
27
|
+
readonly version: 1;
|
|
28
|
+
/**
|
|
29
|
+
* Explicit lookup. Returns `null` when the raw name has no mapping in
|
|
30
|
+
* baseline + host layers — classification contexts use this to distinguish
|
|
31
|
+
* "known kind" from "unknown".
|
|
32
|
+
*/
|
|
33
|
+
lookup(rawToolName: string): CanonicalKind | null;
|
|
34
|
+
/**
|
|
35
|
+
* Runtime lookup with graceful fallback: unknown names resolve to 'other'
|
|
36
|
+
* (same semantics as canonicalizeToolKind — production evaluation must
|
|
37
|
+
* never throw on an unmapped tool name).
|
|
38
|
+
*/
|
|
39
|
+
resolve(rawToolName: string): CanonicalKind;
|
|
40
|
+
/**
|
|
41
|
+
* PRI-634-F R2 (review P1): SEMANTIC RESOLVABILITY IS NOT HOST EXISTENCE.
|
|
42
|
+
* True iff the raw name is declared by the HOST layer — i.e. the host
|
|
43
|
+
* actually dispatches this tool name AND routes it to the RuleHost gate.
|
|
44
|
+
* Core-baseline membership (generic LLM vocabulary like `execute_command`,
|
|
45
|
+
* or read/search names the OpenClaw hook never routes) never counts as
|
|
46
|
+
* existence evidence: a rule matching such a name passes replay against
|
|
47
|
+
* fictional inputs while never firing in production — exactly the failure
|
|
48
|
+
* class PRI-634-F exists to eliminate.
|
|
49
|
+
*/
|
|
50
|
+
hasHostTool(rawToolName: string): boolean;
|
|
51
|
+
/** True iff this registry carries a host-declared layer at all. */
|
|
52
|
+
readonly hasHostLayer: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface ToolSemanticMappingValidationResult {
|
|
55
|
+
readonly valid: boolean;
|
|
56
|
+
readonly errors: readonly string[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Validate untrusted host mappings (rc-1: unknown until validated; rc-4: every
|
|
60
|
+
* element checked, not just "is array"; rc-5: Object.hasOwn over `in`).
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateToolSemanticMappings(raw: unknown): ToolSemanticMappingValidationResult;
|
|
63
|
+
/**
|
|
64
|
+
* Build the effective registry: host mappings validated then layered over the
|
|
65
|
+
* host-neutral core baseline (host wins on conflict). Returns a discriminated
|
|
66
|
+
* result so an invalid host declaration fails loud at construction (rc-3)
|
|
67
|
+
* instead of silently degrading to baseline.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildToolSemanticRegistry(hostMappings?: readonly ToolSemanticMappingV1[]): {
|
|
70
|
+
ok: true;
|
|
71
|
+
registry: ToolSemanticRegistry;
|
|
72
|
+
} | {
|
|
73
|
+
ok: false;
|
|
74
|
+
errors: readonly string[];
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=tool-semantic-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-semantic-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/tool-semantic-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAClD;;;;OAIG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC;IAC5C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAQD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,mCAAmC,CAsC9F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,GAC9C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAwCzF"}
|