@principles/core 1.294.2 → 1.295.1

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.
Files changed (34) hide show
  1. package/dist/host/host-adapter.d.ts +27 -0
  2. package/dist/host/host-adapter.d.ts.map +1 -1
  3. package/dist/host/host-adapter.js.map +1 -1
  4. package/dist/host/index.d.ts +1 -1
  5. package/dist/host/index.d.ts.map +1 -1
  6. package/dist/host/index.js.map +1 -1
  7. package/dist/runtime-v2/activation/index.d.ts +2 -0
  8. package/dist/runtime-v2/activation/index.d.ts.map +1 -1
  9. package/dist/runtime-v2/activation/index.js +2 -0
  10. package/dist/runtime-v2/activation/index.js.map +1 -1
  11. package/dist/runtime-v2/activation/prompt-budget-policy.d.ts +106 -0
  12. package/dist/runtime-v2/activation/prompt-budget-policy.d.ts.map +1 -0
  13. package/dist/runtime-v2/activation/prompt-budget-policy.js +229 -0
  14. package/dist/runtime-v2/activation/prompt-budget-policy.js.map +1 -0
  15. package/dist/runtime-v2/adapter/pi-ai-catalog.d.ts +2 -0
  16. package/dist/runtime-v2/adapter/pi-ai-catalog.d.ts.map +1 -1
  17. package/dist/runtime-v2/adapter/pi-ai-catalog.js +50 -1
  18. package/dist/runtime-v2/adapter/pi-ai-catalog.js.map +1 -1
  19. package/dist/runtime-v2/index.d.ts +3 -3
  20. package/dist/runtime-v2/index.d.ts.map +1 -1
  21. package/dist/runtime-v2/index.js +2 -2
  22. package/dist/runtime-v2/index.js.map +1 -1
  23. package/dist/runtime-v2/internalization/artificer-intent-preflight.d.ts +16 -2
  24. package/dist/runtime-v2/internalization/artificer-intent-preflight.d.ts.map +1 -1
  25. package/dist/runtime-v2/internalization/artificer-intent-preflight.js +88 -4
  26. package/dist/runtime-v2/internalization/artificer-intent-preflight.js.map +1 -1
  27. package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  28. package/dist/runtime-v2/internalization/artificer-runner.js +21 -2
  29. package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  30. package/dist/runtime-v2/types/event-types.d.ts +24 -0
  31. package/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  32. package/dist/runtime-v2/types/event-types.js +22 -0
  33. package/dist/runtime-v2/types/event-types.js.map +1 -1
  34. package/package.json +1 -1
@@ -31,6 +31,26 @@ import type { RuntimeV2PromptActivationsInjectedEventData, ToolCallEventData } f
31
31
  */
32
32
  export type HostEventKind = 'before_tool_call' | 'after_tool_call' | 'before_prompt_build' | 'session_start' | 'turn_complete' | 'session_end';
33
33
  export declare const HOST_EVENT_KINDS: readonly HostEventKind[];
34
+ /**
35
+ * Model identity/capacity facts a host can attach to an event for the
36
+ * model-aware prompt budget (SPEC-PD-MODEL-AWARE-PROMPT-BUDGET-001).
37
+ *
38
+ * All fields are UNTRUSTED runtime values (rc-1): decoders only forward what
39
+ * the raw payload carried; every consumer must validate through
40
+ * `resolvePromptBudget` (runtime-v2/activation/prompt-budget-policy.ts),
41
+ * which is the single authority that decides trust and clamping. A missing
42
+ * modelContext is valid — the budget resolves to the legacy fixed fallback.
43
+ */
44
+ export interface HostModelContext {
45
+ /** Host-declared model provider id (OpenClaw `modelProviderId`). */
46
+ readonly modelProviderId?: string;
47
+ /** Host-declared model id (OpenClaw/Codex/WorkBuddy `model`). */
48
+ readonly modelId?: string;
49
+ /** Host-resolved effective context-token budget (OpenClaw `contextTokenBudget`). Untrusted number. */
50
+ readonly contextTokenBudget?: unknown;
51
+ /** Provenance of `contextTokenBudget` (OpenClaw `contextWindowSource`). Untrusted string. */
52
+ readonly contextWindowSource?: unknown;
53
+ }
34
54
  /**
35
55
  * Normalized context extracted from a host's raw hook payload.
36
56
  *
@@ -67,6 +87,13 @@ export interface HostEventContext {
67
87
  readonly promptContent?: string;
68
88
  /** Session start source (e.g. Codex SessionStart.source). */
69
89
  readonly source?: string;
90
+ /**
91
+ * SPEC-PD-MODEL-AWARE-PROMPT-BUDGET-001: optional model facts carried from
92
+ * the host hook payload. Absent on hosts/payloads without model identity —
93
+ * consumers fall back to the fixed budget policy. Untrusted (see
94
+ * HostModelContext).
95
+ */
96
+ readonly modelContext?: HostModelContext;
70
97
  }
71
98
  /**
72
99
  * A normalized hook event produced by a HostAdapter.decodeEvent().
@@ -1 +1 @@
1
- {"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/host/host-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/host/host-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/host/host-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAuBH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,kBAAkB;IAClB,iBAAiB;IACjB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,aAAa;CACL,CAAC;AA0KX,gFAAgF;AAChF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAClH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACjI,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/host/host-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAuBH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,kBAAkB;IAClB,iBAAiB;IACjB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,aAAa;CACL,CAAC;AAsMX,gFAAgF;AAChF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAClH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACjI,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * - HostAdapter: runtime hook event decode/encode (in-process vs subprocess).
8
8
  * - HostInstaller: install/uninstall/detect lifecycle for host-side wiring.
9
9
  */
10
- export type { HostEventKind, HostEventContext, HostEvent, HostDecision, HostEventResult, HostAdapter, HostEventEmitter, } from './host-adapter.js';
10
+ export type { HostEventKind, HostEventContext, HostModelContext, HostEvent, HostDecision, HostEventResult, HostAdapter, HostEventEmitter, } from './host-adapter.js';
11
11
  export { HOST_EVENT_KINDS, isHostEventKind, isHostDecision, isHostEventContext, isHostEvent, isHostEventResult, } from './host-adapter.js';
12
12
  export type { HostInstallContext, HostRuntimeProfileInput, HostUninstallContext, HostConfigAction, HostInstallResult, HostUninstallResult, HostDetectResult, HostDetectPath, HostInstaller, } from './host-installer.js';
13
13
  export { isHostConfigAction, isHostInstallResult, isHostUninstallResult, } from './host-installer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,iCAAiC,EACjC,eAAe,EACf,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,iCAAiC,EACjC,eAAe,EACf,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAe3B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,6DAA6D;AAC7D,OAAO,EACL,iCAAiC,EACjC,eAAe,EACf,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAe3B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,6DAA6D;AAC7D,OAAO,EACL,iCAAiC,EACjC,eAAe,EACf,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
@@ -35,4 +35,6 @@ export { detectPromptReplacementTarget, buildOwnerRevisionArtifact, revisionDige
35
35
  export type { PromptReplacementTarget, PromptReplacementDetection, OwnerRevisionArtifactDraft, OwnerRevisionBuildResult, } from './prompt-replacement.js';
36
36
  export { RUNTIME_V2_PRINCIPLE_BUDGET, isRecord as isArtifactRecord, filterPromptActivations, resolvePrincipleFromArtifact, trimToBudget, listEntryLine, renderPrinciplesToDirectives, } from './prompt-activation-reader-contract.js';
37
37
  export type { ActivatedPrinciple, PromptActivationReaderResult, PromptSelectionPolicy, TrimToBudgetResult, } from './prompt-activation-reader-contract.js';
38
+ export { PROMPT_BUDGET_POLICY_VERSION, PROMPT_BUDGET_BASE_CHARS, PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS, PROMPT_BUDGET_MIN_CHARS, PROMPT_BUDGET_MAX_CHARS, PROMPT_BUDGET_FALLBACK_CHARS, MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, TRUSTED_HOST_CONTEXT_WINDOW_SOURCES, isValidContextWindowTokens, promptBudgetCharsForContextWindow, classifySingleItemBudgetTier, resolvePromptBudget, } from './prompt-budget-policy.js';
39
+ export type { PromptBudgetCapacitySource, PromptBudgetCapacityStatus, PromptBudgetFallbackReason, PromptBudgetResolution, PromptBudgetTierFit, PromptModelCatalog, PromptModelCatalogEntry, PromptBudgetHostCapacityFact, ResolvePromptBudgetInput, } from './prompt-budget-policy.js';
38
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"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"}
@@ -28,4 +28,6 @@ export { ApprovalCompletionService } from './approval-completion-service.js';
28
28
  // owner-revision artifact assembly, and the atomic commit types.
29
29
  export { detectPromptReplacementTarget, buildOwnerRevisionArtifact, revisionDigest, } from './prompt-replacement.js';
30
30
  export { RUNTIME_V2_PRINCIPLE_BUDGET, isRecord as isArtifactRecord, filterPromptActivations, resolvePrincipleFromArtifact, trimToBudget, listEntryLine, renderPrinciplesToDirectives, } from './prompt-activation-reader-contract.js';
31
+ // SPEC-PD-MODEL-AWARE-PROMPT-BUDGET-001: model-context-aware budget policy.
32
+ export { PROMPT_BUDGET_POLICY_VERSION, PROMPT_BUDGET_BASE_CHARS, PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS, PROMPT_BUDGET_MIN_CHARS, PROMPT_BUDGET_MAX_CHARS, PROMPT_BUDGET_FALLBACK_CHARS, MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, TRUSTED_HOST_CONTEXT_WINDOW_SOURCES, isValidContextWindowTokens, promptBudgetCharsForContextWindow, classifySingleItemBudgetTier, resolvePromptBudget, } from './prompt-budget-policy.js';
31
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mCAAmC,EACnC,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,2EAA2E;AAC3E,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAG3H,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAMpF,OAAO,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAEtH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AAExH,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAEhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG5J,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,4EAA4E;AAC5E,0EAA0E;AAC1E,2DAA2D;AAC3D,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEnG,oEAAoE;AACpE,4EAA4E;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,cAAc,GACf,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,2BAA2B,EAC3B,QAAQ,IAAI,gBAAgB,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,YAAY,EACZ,aAAa,EACb,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mCAAmC,EACnC,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,2EAA2E;AAC3E,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAG3H,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAMpF,OAAO,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAEtH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AAExH,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAEhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG5J,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,4EAA4E;AAC5E,0EAA0E;AAC1E,2DAA2D;AAC3D,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEnG,oEAAoE;AACpE,4EAA4E;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,cAAc,GACf,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,2BAA2B,EAC3B,QAAQ,IAAI,gBAAgB,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,YAAY,EACZ,aAAa,EACb,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAShD,4EAA4E;AAC5E,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,6CAA6C,EAC7C,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,mCAAmC,EACnC,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,106 @@
1
+ export declare const PROMPT_BUDGET_POLICY_VERSION: 'model_aware_v1';
2
+ /** Baseline budget at the reference context window (SPEC §4.1). */
3
+ export declare const PROMPT_BUDGET_BASE_CHARS = 2000;
4
+ /** Policy anchor: the context window that maps to the baseline budget. */
5
+ export declare const PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS = 128000;
6
+ /**
7
+ * Dynamic budget floor — measured, not assumed: the shared route bills the
8
+ * FULL directive render, whose fixed wrapper + one minimum viable principle
9
+ * costs 849 chars (self-report off) / 1204 chars (self-report on). Anything
10
+ * below 1225 re-creates the audited 32K zero-injection defect.
11
+ */
12
+ export declare const PROMPT_BUDGET_MIN_CHARS = 1250;
13
+ /**
14
+ * Dynamic budget hard ceiling (Owner target): a 1M-token window maps to
15
+ * floor(2000 × 1_000_000 / 128_000) = 15625 — the cap is an upper bound,
16
+ * not a value the formula must reach; windows ≥ 1.024M tokens hit 16000.
17
+ */
18
+ export declare const PROMPT_BUDGET_MAX_CHARS = 16000;
19
+ /** Unknown/untrusted capacity: keep the historical budget (rollback target). */
20
+ export declare const PROMPT_BUDGET_FALLBACK_CHARS = 2000;
21
+ /**
22
+ * Plausibility bounds for a claimed context window (tokens). Values outside
23
+ * this range are rejected as malformed rather than clamped — a corrupted
24
+ * field must degrade to the fallback, never look like a confirmed capacity.
25
+ */
26
+ export declare const MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS = 1024;
27
+ export declare const MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS = 100000000;
28
+ /**
29
+ * Upstream OpenClaw `PluginHookContextWindowSource` values that prove the
30
+ * hook's `contextTokenBudget` reflects this model's real window or a
31
+ * deliberate cap: "model" (model metadata), "modelsConfig" (per-model
32
+ * config), "agentContextTokens" (agent-level cap). "default" means the host
33
+ * had no model-specific fact — SPEC §4.3 keeps looking (catalog) instead of
34
+ * trusting it; unknown future values get the same conservative treatment.
35
+ */
36
+ export declare const TRUSTED_HOST_CONTEXT_WINDOW_SOURCES: ReadonlySet<string>;
37
+ export type PromptBudgetCapacitySource = 'host_effective_window' | 'pi_catalog_exact' | 'legacy_fallback';
38
+ /**
39
+ * Bounded machine-readable reason for the legacy fallback (SPEC §7 v0.2).
40
+ * Closed set — events carry this code verbatim, never free-form detail;
41
+ * `PromptBudgetResolution.fallbackDetail` holds the non-sensitive context
42
+ * (provider/model ids) for logs only.
43
+ */
44
+ export type PromptBudgetFallbackReason = 'host_capacity_absent' | 'host_capacity_source_untrusted' | 'host_capacity_invalid_value' | 'catalog_unavailable' | 'model_identity_absent' | 'catalog_no_exact_match' | 'catalog_no_match_for_model_id' | 'catalog_ambiguous_model_id' | 'catalog_provider_absent' | 'catalog_metadata_invalid';
45
+ export type PromptBudgetCapacityStatus = 'confirmed' | 'unknown';
46
+ export interface PromptBudgetResolution {
47
+ /** Effective injection budget in UTF-16 code units. */
48
+ budgetChars: number;
49
+ capacitySource: PromptBudgetCapacitySource;
50
+ capacityStatus: PromptBudgetCapacityStatus;
51
+ /** The context window the budget was derived from; null when unknown. */
52
+ contextWindowTokens: number | null;
53
+ policyVersion: typeof PROMPT_BUDGET_POLICY_VERSION;
54
+ /** Present only on legacy_fallback — bounded reason code (closed set). */
55
+ fallbackReason?: PromptBudgetFallbackReason;
56
+ /** Non-sensitive context for logs (provider/model ids); never emitted to events. */
57
+ fallbackDetail?: string;
58
+ }
59
+ /** Runtime-validation guard for an untrusted context-window claim (rc-1/rc-2). */
60
+ export declare function isValidContextWindowTokens(value: unknown): value is number;
61
+ /** The dynamic formula (SPEC §4.2): clamp(floor(base * W / ref), min, max). */
62
+ export declare function promptBudgetCharsForContextWindow(windowTokens: number): number;
63
+ /**
64
+ * Tier classification for a single-item serialized cost, independent of any
65
+ * particular resolution (SPEC §6.3): the supported budget range is
66
+ * [MIN, MAX]; a cost within (MIN, MAX] may or may not fit depending on the
67
+ * runtime model — that uncertainty must be reported, not resolved by guess.
68
+ */
69
+ export type PromptBudgetTierFit = 'fits_all_tiers' | 'model_dependent' | 'exceeds_max_tier';
70
+ export declare function classifySingleItemBudgetTier(costChars: number): PromptBudgetTierFit;
71
+ /** Catalog entry shape the policy consumes (provider-qualified model facts). */
72
+ export interface PromptModelCatalogEntry {
73
+ provider: string;
74
+ modelId: string;
75
+ contextWindowTokens: number;
76
+ }
77
+ /**
78
+ * Injectable catalog seam. `exact` is a provider-qualified lookup;
79
+ * `byModelId` returns EVERY exact-id match across providers so the caller
80
+ * can produce a precise diagnostic reason (ambiguous vs provider-absent).
81
+ */
82
+ export interface PromptModelCatalog {
83
+ exact(providerId: string, modelId: string): PromptModelCatalogEntry | undefined;
84
+ byModelId(modelId: string): readonly PromptModelCatalogEntry[];
85
+ }
86
+ /** Host-provided capacity facts — untrusted until validated here (rc-1). */
87
+ export interface PromptBudgetHostCapacityFact {
88
+ contextTokenBudget?: unknown;
89
+ contextWindowSource?: unknown;
90
+ }
91
+ export interface ResolvePromptBudgetInput {
92
+ hostCapacity?: PromptBudgetHostCapacityFact;
93
+ modelIdentity?: {
94
+ providerId?: unknown;
95
+ modelId?: unknown;
96
+ };
97
+ /** Absent catalog ⇒ priorities 1-2 cannot use metadata (pure-fallback callers). */
98
+ catalog?: PromptModelCatalog;
99
+ }
100
+ /**
101
+ * THE single budget resolver (SPEC §4.3). Deterministic pure function:
102
+ * same facts in, same resolution out, one result per request reused by the
103
+ * selector, serializer, projection and precheck (SPEC §6.1).
104
+ */
105
+ export declare function resolvePromptBudget(input?: ResolvePromptBudgetInput): PromptBudgetResolution;
106
+ //# sourceMappingURL=prompt-budget-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-budget-policy.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/prompt-budget-policy.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,4BAA4B,EAAG,gBAAyB,CAAC;AAEtE,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,0EAA0E;AAC1E,eAAO,MAAM,6CAA6C,SAAS,CAAC;AACpE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,OAA8B,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,OAAO,CAAC;AACxD,eAAO,MAAM,mCAAmC,YAAc,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,mCAAmC,EAAE,WAAW,CAAC,MAAM,CAIlE,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAClC,sBAAsB,GACtB,gCAAgC,GAChC,6BAA6B,GAC7B,qBAAqB,GACrB,uBAAuB,GACvB,wBAAwB,GACxB,+BAA+B,GAC/B,4BAA4B,GAC5B,yBAAyB,GACzB,0BAA0B,CAAC;AAE/B,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,0BAA0B,CAAC;IAC3C,cAAc,EAAE,0BAA0B,CAAC;IAC3C,yEAAyE;IACzE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,OAAO,4BAA4B,CAAC;IACnD,0EAA0E;IAC1E,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAO1E;AAED,+EAA+E;AAC/E,wBAAgB,iCAAiC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE5F,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAInF;AAED,gFAAgF;AAChF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAChF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,uBAAuB,EAAE,CAAC;CAChE;AAED,4EAA4E;AAC5E,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,mFAAmF;IACnF,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAiGD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,wBAAwB,GAAG,sBAAsB,CAmC5F"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * SPEC-PD-MODEL-AWARE-PROMPT-BUDGET-001 (v0.2): model-context-aware prompt
3
+ * injection budget policy.
4
+ *
5
+ * Single authority for translating a model's effective context window
6
+ * (tokens) into the Runtime V2 principle injection budget (UTF-16 code
7
+ * units). Pure policy — no I/O, no host facts, no catalog import: the Pi AI
8
+ * catalog arrives as an injectable seam so tests can pin the priority chain
9
+ * without patching module state, and production callers share one catalog
10
+ * binding (`getPromptModelCatalog` in adapter/pi-ai-catalog.ts).
11
+ *
12
+ * Priority chain (SPEC §4.3, v0.2):
13
+ * 1. host_effective_window — the host hook's effective context-token
14
+ * budget when its source is model-specific or an explicit cap
15
+ * (model | modelsConfig | agentContextTokens; `default` and unknown
16
+ * sources are NOT trusted);
17
+ * 2. pi_catalog_exact — the host DECLARED the provider id and the exact
18
+ * provider+modelId pair exists in the installed catalog;
19
+ * 3. legacy_fallback — everything else (no trusted capacity), status
20
+ * unknown, with a bounded machine-readable fallback reason.
21
+ *
22
+ * v0.2 trust amendment: the former `pi_catalog_unambiguous` tier (same
23
+ * modelId unanimous across providers, no provider identity) was REMOVED.
24
+ * A name-only match — however unanimous — cannot prove the deployment is
25
+ * not a custom endpoint/proxy with different limits, so it can never be
26
+ * `confirmed` (SPEC §4.3 rule: only capacity bound to the RUNNING model or
27
+ * its effective cap may be confirmed). Provider-less lookups fall back;
28
+ * the ambiguity probe is kept purely for the diagnostic reason code.
29
+ *
30
+ * Measured floors (real production serializers, see the 2026-10-20 fix
31
+ * round): the shared route's full directive render of one minimum viable
32
+ * principle (86-char statement) costs 849 chars with the self-report flag
33
+ * off and 1204 chars with it on — so a 500 or 1000 floor produces ZERO
34
+ * injection on 32K-window models (the audited defect). 1250 is the first
35
+ * round value above 1204 and is the verified usable floor for BOTH flag
36
+ * states. The list route's single entry costs ~132 chars — far below.
37
+ *
38
+ * This module computes a budget from the model's TOTAL context window — it
39
+ * is not a measurement of the current request's REMAINING context, and it
40
+ * never treats `maxTokens` (an output cap) as a context window.
41
+ */
42
+ import { RUNTIME_V2_PRINCIPLE_BUDGET } from './prompt-activation-reader-contract.js';
43
+ export const PROMPT_BUDGET_POLICY_VERSION = 'model_aware_v1';
44
+ /** Baseline budget at the reference context window (SPEC §4.1). */
45
+ export const PROMPT_BUDGET_BASE_CHARS = 2000;
46
+ /** Policy anchor: the context window that maps to the baseline budget. */
47
+ export const PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS = 128000;
48
+ /**
49
+ * Dynamic budget floor — measured, not assumed: the shared route bills the
50
+ * FULL directive render, whose fixed wrapper + one minimum viable principle
51
+ * costs 849 chars (self-report off) / 1204 chars (self-report on). Anything
52
+ * below 1225 re-creates the audited 32K zero-injection defect.
53
+ */
54
+ export const PROMPT_BUDGET_MIN_CHARS = 1250;
55
+ /**
56
+ * Dynamic budget hard ceiling (Owner target): a 1M-token window maps to
57
+ * floor(2000 × 1_000_000 / 128_000) = 15625 — the cap is an upper bound,
58
+ * not a value the formula must reach; windows ≥ 1.024M tokens hit 16000.
59
+ */
60
+ export const PROMPT_BUDGET_MAX_CHARS = 16000;
61
+ /** Unknown/untrusted capacity: keep the historical budget (rollback target). */
62
+ export const PROMPT_BUDGET_FALLBACK_CHARS = RUNTIME_V2_PRINCIPLE_BUDGET;
63
+ /**
64
+ * Plausibility bounds for a claimed context window (tokens). Values outside
65
+ * this range are rejected as malformed rather than clamped — a corrupted
66
+ * field must degrade to the fallback, never look like a confirmed capacity.
67
+ */
68
+ export const MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS = 1024;
69
+ export const MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS = 100_000_000;
70
+ /**
71
+ * Upstream OpenClaw `PluginHookContextWindowSource` values that prove the
72
+ * hook's `contextTokenBudget` reflects this model's real window or a
73
+ * deliberate cap: "model" (model metadata), "modelsConfig" (per-model
74
+ * config), "agentContextTokens" (agent-level cap). "default" means the host
75
+ * had no model-specific fact — SPEC §4.3 keeps looking (catalog) instead of
76
+ * trusting it; unknown future values get the same conservative treatment.
77
+ */
78
+ export const TRUSTED_HOST_CONTEXT_WINDOW_SOURCES = new Set([
79
+ 'model',
80
+ 'modelsConfig',
81
+ 'agentContextTokens',
82
+ ]);
83
+ /** Runtime-validation guard for an untrusted context-window claim (rc-1/rc-2). */
84
+ export function isValidContextWindowTokens(value) {
85
+ return (typeof value === 'number' &&
86
+ Number.isInteger(value) &&
87
+ value >= MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS &&
88
+ value <= MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS);
89
+ }
90
+ /** The dynamic formula (SPEC §4.2): clamp(floor(base * W / ref), min, max). */
91
+ export function promptBudgetCharsForContextWindow(windowTokens) {
92
+ if (!isValidContextWindowTokens(windowTokens)) {
93
+ return PROMPT_BUDGET_FALLBACK_CHARS;
94
+ }
95
+ const scaled = Math.floor((PROMPT_BUDGET_BASE_CHARS * windowTokens) / PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS);
96
+ return Math.min(PROMPT_BUDGET_MAX_CHARS, Math.max(PROMPT_BUDGET_MIN_CHARS, scaled));
97
+ }
98
+ export function classifySingleItemBudgetTier(costChars) {
99
+ if (costChars <= PROMPT_BUDGET_MIN_CHARS)
100
+ return 'fits_all_tiers';
101
+ if (costChars <= PROMPT_BUDGET_MAX_CHARS)
102
+ return 'model_dependent';
103
+ return 'exceeds_max_tier';
104
+ }
105
+ function fallbackResolution(input) {
106
+ return {
107
+ budgetChars: PROMPT_BUDGET_FALLBACK_CHARS,
108
+ capacitySource: 'legacy_fallback',
109
+ capacityStatus: 'unknown',
110
+ contextWindowTokens: null,
111
+ policyVersion: PROMPT_BUDGET_POLICY_VERSION,
112
+ fallbackReason: input.reason,
113
+ fallbackDetail: input.detail,
114
+ };
115
+ }
116
+ function nonEmptyString(value) {
117
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
118
+ }
119
+ /**
120
+ * Catalog stage of the priority chain. Exact provider+modelId (the host
121
+ * DECLARED the provider) may confirm; a provider-less same-name match may
122
+ * not — see the v0.2 trust amendment in the module header.
123
+ */
124
+ function resolveFromCatalog(input, hostStage) {
125
+ const detailPrefix = hostStage.skipReason === null
126
+ ? 'host_capacity_absent'
127
+ : hostStage.skipReason;
128
+ // Trust precedence: when the host stage already failed for a SPECIFIC
129
+ // reason (untrusted source / invalid value), that reason is the primary
130
+ // one to report — the catalog could not rescue the request.
131
+ const primary = (reason, extra) => fallbackResolution({
132
+ reason: hostStage.skipReason ?? reason,
133
+ detail: `${detailPrefix};${reason}:${extra}`,
134
+ });
135
+ const catalog = input?.catalog;
136
+ const modelId = nonEmptyString(input?.modelIdentity?.modelId);
137
+ const providerId = nonEmptyString(input?.modelIdentity?.providerId);
138
+ if (catalog === undefined) {
139
+ // With NO host facts and NO model identity there is literally nothing to
140
+ // resolve from — the root cause is absence, not the missing catalog.
141
+ if (hostStage.skipReason === null && modelId === undefined) {
142
+ return fallbackResolution({ reason: 'host_capacity_absent', detail: 'host_capacity_absent;no-facts-at-all' });
143
+ }
144
+ return primary('catalog_unavailable', 'no-catalog-binding');
145
+ }
146
+ if (modelId === undefined) {
147
+ // The host made no model claim either — root cause is absence of host
148
+ // facts, not a catalog problem.
149
+ if (hostStage.skipReason === null) {
150
+ return fallbackResolution({ reason: 'host_capacity_absent', detail: 'host_capacity_absent;no-model-context' });
151
+ }
152
+ return primary('model_identity_absent', 'no-model-id');
153
+ }
154
+ if (providerId !== undefined) {
155
+ const exact = catalog.exact(providerId, modelId);
156
+ if (exact === undefined) {
157
+ return primary('catalog_no_exact_match', `${providerId}/${modelId}`);
158
+ }
159
+ if (!isValidContextWindowTokens(exact.contextWindowTokens)) {
160
+ return primary('catalog_metadata_invalid', `${providerId}/${modelId}`);
161
+ }
162
+ return {
163
+ budgetChars: promptBudgetCharsForContextWindow(exact.contextWindowTokens),
164
+ capacitySource: 'pi_catalog_exact',
165
+ capacityStatus: 'confirmed',
166
+ contextWindowTokens: exact.contextWindowTokens,
167
+ policyVersion: PROMPT_BUDGET_POLICY_VERSION,
168
+ };
169
+ }
170
+ // No provider identity: NEVER confirmed (v0.2). Diagnose why the name
171
+ // alone cannot be used, then fall back honestly.
172
+ const matches = catalog.byModelId(modelId);
173
+ if (matches.length === 0) {
174
+ return primary('catalog_no_match_for_model_id', modelId);
175
+ }
176
+ const [first] = matches;
177
+ if (first === undefined || !isValidContextWindowTokens(first.contextWindowTokens)) {
178
+ return primary('catalog_metadata_invalid', modelId);
179
+ }
180
+ const unanimous = matches.every((entry) => entry.contextWindowTokens === first.contextWindowTokens && isValidContextWindowTokens(entry.contextWindowTokens));
181
+ if (!unanimous) {
182
+ return primary('catalog_ambiguous_model_id', modelId);
183
+ }
184
+ // Unanimous on paper, still unproven for THIS deployment (custom
185
+ // endpoint/proxy risk) — the name is not evidence of the running limit.
186
+ return primary('catalog_provider_absent', modelId);
187
+ }
188
+ /**
189
+ * THE single budget resolver (SPEC §4.3). Deterministic pure function:
190
+ * same facts in, same resolution out, one result per request reused by the
191
+ * selector, serializer, projection and precheck (SPEC §6.1).
192
+ */
193
+ export function resolvePromptBudget(input) {
194
+ const hostCapacity = input?.hostCapacity;
195
+ if (hostCapacity !== undefined) {
196
+ const hasBudget = hostCapacity.contextTokenBudget !== undefined;
197
+ const hasSource = hostCapacity.contextWindowSource !== undefined;
198
+ if (!hasBudget && !hasSource) {
199
+ // The host carried model identity but made NO capacity claim at all
200
+ // (e.g. modelContext = { modelId }) — that is absence, not untrust.
201
+ return resolveFromCatalog(input, { skipReason: null, detail: 'host_capacity_absent' });
202
+ }
203
+ const source = nonEmptyString(hostCapacity.contextWindowSource);
204
+ const trustedSource = source !== undefined && TRUSTED_HOST_CONTEXT_WINDOW_SOURCES.has(source);
205
+ if (!trustedSource) {
206
+ // Fall through to catalog lookup below — but remember why.
207
+ return resolveFromCatalog(input, {
208
+ skipReason: 'host_capacity_source_untrusted',
209
+ detail: `host_capacity_source_untrusted:${source ?? 'absent'}`,
210
+ });
211
+ }
212
+ if (!isValidContextWindowTokens(hostCapacity.contextTokenBudget)) {
213
+ return resolveFromCatalog(input, {
214
+ skipReason: 'host_capacity_invalid_value',
215
+ detail: 'host_capacity_invalid_value',
216
+ });
217
+ }
218
+ const windowTokens = hostCapacity.contextTokenBudget;
219
+ return {
220
+ budgetChars: promptBudgetCharsForContextWindow(windowTokens),
221
+ capacitySource: 'host_effective_window',
222
+ capacityStatus: 'confirmed',
223
+ contextWindowTokens: windowTokens,
224
+ policyVersion: PROMPT_BUDGET_POLICY_VERSION,
225
+ };
226
+ }
227
+ return resolveFromCatalog(input, { skipReason: null, detail: 'host_capacity_absent' });
228
+ }
229
+ //# sourceMappingURL=prompt-budget-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-budget-policy.js","sourceRoot":"","sources":["../../../src/runtime-v2/activation/prompt-budget-policy.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import type { PromptModelCatalog } from '../activation/prompt-budget-policy.js';
1
2
  /**
2
3
  * Provider ids in the pi-ai builtin static catalog. 0.84 semantics: dynamic
3
4
  * providers registered at runtime are NOT part of this list.
4
5
  */
5
6
  export declare function builtinPiAiProviderIds(): readonly string[];
6
7
  export declare function isBuiltinPiAiProvider(provider: string): boolean;
8
+ export declare function getPromptModelCatalog(): PromptModelCatalog;
7
9
  //# sourceMappingURL=pi-ai-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi-ai-catalog.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/adapter/pi-ai-catalog.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D"}
1
+ {"version":3,"file":"pi-ai-catalog.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/adapter/pi-ai-catalog.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAA2B,MAAM,uCAAuC,CAAC;AAEzG;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAeD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAiC1D"}
@@ -5,7 +5,7 @@
5
5
  * (EP-06: a package declares the runtime deps it imports; the CLI only
6
6
  * declares @principles/core).
7
7
  */
8
- import { getProviders } from '@earendil-works/pi-ai/compat';
8
+ import { getModels, getProviders } from '@earendil-works/pi-ai/compat';
9
9
  /**
10
10
  * Provider ids in the pi-ai builtin static catalog. 0.84 semantics: dynamic
11
11
  * providers registered at runtime are NOT part of this list.
@@ -16,4 +16,53 @@ export function builtinPiAiProviderIds() {
16
16
  export function isBuiltinPiAiProvider(provider) {
17
17
  return builtinPiAiProviderIds().includes(provider);
18
18
  }
19
+ /**
20
+ * SPEC-PD-MODEL-AWARE-PROMPT-BUDGET-001: the production PromptModelCatalog
21
+ * binding over the installed pi-ai 1.2.0 static catalog (verified in-repo:
22
+ * pure synchronous generated-JSON reads — no network, no refresh).
23
+ *
24
+ * The by-modelId index is built once and memoized: the generated catalog is
25
+ * immutable at runtime, and the prompt hook must stay O(1)-ish per build.
26
+ * Entries are validated through the policy's plausibility guard at the
27
+ * consumer (`resolvePromptBudget`), so a malformed generated entry degrades
28
+ * to the fallback budget instead of poisoning the injection.
29
+ */
30
+ let promptModelCatalogMemo;
31
+ export function getPromptModelCatalog() {
32
+ if (promptModelCatalogMemo !== undefined)
33
+ return promptModelCatalogMemo;
34
+ const byModelIdIndex = new Map();
35
+ for (const provider of getProviders()) {
36
+ // Runtime provider/model strings cannot satisfy the generated literal
37
+ // generics of the catalog getters (same tradeoff as
38
+ // l2-agent-loop-adapter's resolveL2Model); the results are re-validated
39
+ // by the budget policy, never trusted blind (rc-1/rc-2).
40
+ const models = getModels(provider);
41
+ for (const model of models) {
42
+ const entry = {
43
+ provider,
44
+ modelId: model.id,
45
+ contextWindowTokens: model.contextWindow,
46
+ };
47
+ const bucket = byModelIdIndex.get(model.id);
48
+ if (bucket)
49
+ bucket.push(entry);
50
+ else
51
+ byModelIdIndex.set(model.id, [entry]);
52
+ }
53
+ }
54
+ promptModelCatalogMemo = {
55
+ exact(providerId, modelId) {
56
+ // getModel is the same generated-table read as the index; go through
57
+ // the index so `exact` and `byModelId` can never disagree.
58
+ return byModelIdIndex
59
+ .get(modelId)
60
+ ?.find((entry) => entry.provider === providerId);
61
+ },
62
+ byModelId(modelId) {
63
+ return byModelIdIndex.get(modelId) ?? [];
64
+ },
65
+ };
66
+ return promptModelCatalogMemo;
67
+ }
19
68
  //# sourceMappingURL=pi-ai-catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi-ai-catalog.js","sourceRoot":"","sources":["../../../src/runtime-v2/adapter/pi-ai-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,OAAO,sBAAsB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"pi-ai-catalog.js","sourceRoot":"","sources":["../../../src/runtime-v2/adapter/pi-ai-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGvE;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,OAAO,sBAAsB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;GAUG;AACH,IAAI,sBAAsD,CAAC;AAE3D,MAAM,UAAU,qBAAqB;IACnC,IAAI,sBAAsB,KAAK,SAAS;QAAE,OAAO,sBAAsB,CAAC;IACxE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;IACpE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,EAAE,CAAC;QACtC,sEAAsE;QACtE,oDAAoD;QACpD,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAiB,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAA4B;gBACrC,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,mBAAmB,EAAE,KAAK,CAAC,aAAa;aACzC,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAC1B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,sBAAsB,GAAG;QACvB,KAAK,CAAC,UAAU,EAAE,OAAO;YACvB,qEAAqE;YACrE,2DAA2D;YAC3D,OAAO,cAAc;iBAClB,GAAG,CAAC,OAAO,CAAC;gBACb,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,CAAC,OAAO;YACf,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC;IACF,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
@@ -132,7 +132,7 @@ export type { OpenClawCliRuntimeAdapterOptions } from './adapter/openclaw-cli-ru
132
132
  export { PiAiRuntimeAdapter } from './adapter/index.js';
133
133
  export type { PiAiRuntimeAdapterConfig } from './adapter/pi-ai-runtime-adapter.js';
134
134
  export { getPiAiFetchForApi } from './adapter/pi-ai-http-transport.js';
135
- export { builtinPiAiProviderIds, isBuiltinPiAiProvider } from './adapter/pi-ai-catalog.js';
135
+ export { builtinPiAiProviderIds, isBuiltinPiAiProvider, getPromptModelCatalog } from './adapter/pi-ai-catalog.js';
136
136
  export { PrincipleTreeLedgerAdapter } from './adapter/principle-tree-ledger-adapter.js';
137
137
  export { summarizeConversationWindow } from './diagnostician-prompt-builder.js';
138
138
  export type { PromptInput, PromptBuildResult } from './diagnostician-prompt-builder.js';
@@ -363,8 +363,8 @@ export type { ReopenRevisionOptions, RolloutRevisionTarget } from './internaliza
363
363
  export { createRuntimeStateHandle } from './runtime-state-handle.js';
364
364
  export type { RuntimeStateHandle } from './runtime-state-handle.js';
365
365
  export type { ActivationRiskLevel, ActivationActor, RolloutActivationDecision, DispatchInput, ActivationDecision, PIArtifactSnapshot, ActivationArtifactReadModel, ActivationStatusRecord, ActivationStateReadModel, ActivationDecisionRecord, ActivationDecisionSubject, ActivationDecisionKind, ActivationControlState, GlobalRuleCodePause, PromotionEvidenceSnapshot, PromotionFailedCheck, PromotionReadinessResult, OwnerPromotionActor, OwnerPromotionRequest, PromotionCommitInput, OwnerPromotionResult, RuleCodeOwnerDecisionServiceDeps, PromotionCheckId, PromotionReadinessCheck, PromotionReadinessEvaluationInput, PromotionReadinessReaderDeps, RuleCodeSafetySample, RuleCodeSafetyCircuitState, RuleCodeSafetyTripReason, HostLivenessContract, WriterInput, WriterResult, CanActivateResult, ChannelWriter, ApprovalStatus, ApprovalRecord, ApprovalEnqueueInput, ApprovalFilter, ApprovalDecisionResult, ApprovalQueueStore, ApprovalListFilter, ApprovalStats, ApprovalListResult, ArtifactLineageIdentity, ApprovalWithContext, ConfidenceLabel, BuildPromotionEvidenceSnapshotInput, PromotionEvidenceOwnerIdentity, LedgerIdentityChecker, LedgerIdentityLookupDeps, LedgerActivationResolution, } from './activation/index.js';
366
- export { LOW_RISK_CHANNELS, isArtifactRevisionOf, HIGH_RISK_CHANNEL_MAP, makeIdempotencyKey, isLowRiskChannel, getChannelRiskLevel, ActivationDispatcher, resolveLedgerActivationId, candidateIdFromDreamerTaskId, candidateIdFromDreamerSeed, PromptWriter, DeferArchiveWriter, RuleHostWriter, extractEvidenceRefs, extractPrincipleId, MemoryActivationStateStore, MemoryArtifactReadModel, SqliteActivationStateStore, SqliteActivationSafetyStore, RuleCodeOwnerDecisionService, REQUIRED_PROMOTION_CHECK_IDS, evaluateRuleCodePromotionReadiness, PromotionReadinessReader, evaluateRuleCodeSafetyCircuit, initialRuleCodeSafetyCircuitState, collectOpenClawPromotionChecks, summarizeRuleCodeShadowEvents, AUTO_PROMOTION_CONFIDENCE_THRESHOLD, AUTO_PROMOTABLE_CHANNELS, ApprovalQueue, decideAutoPromotion, MemoryApprovalQueueStore, SqliteApprovalQueueStore, mapConfidenceToLabel, RUNTIME_V2_PRINCIPLE_BUDGET, isArtifactRecord, filterPromptActivations, resolvePrincipleFromArtifact, trimToBudget, listEntryLine, renderPrinciplesToDirectives, createProductionGateDeps, compileHardenedRuleEvaluator, ApprovalCompletionService, detectPromptReplacementTarget, buildOwnerRevisionArtifact, revisionDigest, buildPromotionEvidenceSnapshot, computeArtifactDigest, normalizeOwnerIdentity, verifyPiArtifactRowDigest, } from './activation/index.js';
367
- export type { ActivatedPrinciple, PromptActivationReaderResult, PromptSelectionPolicy, TrimToBudgetResult, ApprovalCompletionInput, ApprovalCompletionResult, ArtifactDigestCheck, } from './activation/index.js';
366
+ export { LOW_RISK_CHANNELS, isArtifactRevisionOf, HIGH_RISK_CHANNEL_MAP, makeIdempotencyKey, isLowRiskChannel, getChannelRiskLevel, ActivationDispatcher, resolveLedgerActivationId, candidateIdFromDreamerTaskId, candidateIdFromDreamerSeed, PromptWriter, DeferArchiveWriter, RuleHostWriter, extractEvidenceRefs, extractPrincipleId, MemoryActivationStateStore, MemoryArtifactReadModel, SqliteActivationStateStore, SqliteActivationSafetyStore, RuleCodeOwnerDecisionService, REQUIRED_PROMOTION_CHECK_IDS, evaluateRuleCodePromotionReadiness, PromotionReadinessReader, evaluateRuleCodeSafetyCircuit, initialRuleCodeSafetyCircuitState, collectOpenClawPromotionChecks, summarizeRuleCodeShadowEvents, AUTO_PROMOTION_CONFIDENCE_THRESHOLD, AUTO_PROMOTABLE_CHANNELS, ApprovalQueue, decideAutoPromotion, MemoryApprovalQueueStore, SqliteApprovalQueueStore, mapConfidenceToLabel, RUNTIME_V2_PRINCIPLE_BUDGET, isArtifactRecord, filterPromptActivations, resolvePrincipleFromArtifact, trimToBudget, listEntryLine, renderPrinciplesToDirectives, PROMPT_BUDGET_POLICY_VERSION, PROMPT_BUDGET_BASE_CHARS, PROMPT_BUDGET_REFERENCE_CONTEXT_WINDOW_TOKENS, PROMPT_BUDGET_MIN_CHARS, PROMPT_BUDGET_MAX_CHARS, PROMPT_BUDGET_FALLBACK_CHARS, MIN_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, MAX_PLAUSIBLE_CONTEXT_WINDOW_TOKENS, TRUSTED_HOST_CONTEXT_WINDOW_SOURCES, isValidContextWindowTokens, promptBudgetCharsForContextWindow, classifySingleItemBudgetTier, resolvePromptBudget, createProductionGateDeps, compileHardenedRuleEvaluator, ApprovalCompletionService, detectPromptReplacementTarget, buildOwnerRevisionArtifact, revisionDigest, buildPromotionEvidenceSnapshot, computeArtifactDigest, normalizeOwnerIdentity, verifyPiArtifactRowDigest, } from './activation/index.js';
367
+ export type { ActivatedPrinciple, PromptActivationReaderResult, PromptSelectionPolicy, TrimToBudgetResult, PromptBudgetCapacitySource, PromptBudgetCapacityStatus, PromptBudgetFallbackReason, PromptBudgetResolution, PromptBudgetTierFit, PromptModelCatalog, PromptModelCatalogEntry, PromptBudgetHostCapacityFact, ResolvePromptBudgetInput, ApprovalCompletionInput, ApprovalCompletionResult, ArtifactDigestCheck, } from './activation/index.js';
368
368
  export { DEFAULT_GFI_POLICY, applyFriction, applyDecay, applyRelief, classifyGfiStage, createGfiSnapshot, } from './gfi/index.js';
369
369
  export type { GfiState, GfiEvent, GfiPolicy, GfiStage, GfiSource, GfiSnapshot, } from './gfi/index.js';
370
370
  export { buildGfiWorkspaceSnapshot, classifyGfiWorkspaceHealth } from './gfi/index.js';