@openrig/cli 0.4.8 → 0.5.0
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/daemon/assets/claude-statusline-context.cjs +40 -8
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +0 -0
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +7 -4
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +68 -17
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +2 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +2 -1
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +1 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts +36 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +203 -3
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +12 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +24 -2
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/agent-activity-store.d.ts +1 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +2 -2
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +33 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -0
- package/daemon/dist/domain/claude-activity-hooks.js +60 -0
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +30 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/bundle-assembler.js +31 -1
- package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +69 -14
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-library-service.js +263 -48
- package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +2 -2
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +11 -0
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/ref-safety.d.ts +11 -0
- package/daemon/dist/domain/context-packs/ref-safety.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/ref-safety.js +46 -0
- package/daemon/dist/domain/context-packs/ref-safety.js.map +1 -0
- package/daemon/dist/domain/context-packs/token-estimate.d.ts +3 -0
- package/daemon/dist/domain/context-packs/token-estimate.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/token-estimate.js +5 -0
- package/daemon/dist/domain/context-packs/token-estimate.js.map +1 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts +14 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +26 -2
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-reader.d.ts +44 -0
- package/daemon/dist/domain/provider/claude-usage-reader.d.ts.map +1 -0
- package/daemon/dist/domain/provider/claude-usage-reader.js +112 -0
- package/daemon/dist/domain/provider/claude-usage-reader.js.map +1 -0
- package/daemon/dist/domain/provider/codex-auth-reader.d.ts +18 -0
- package/daemon/dist/domain/provider/codex-auth-reader.d.ts.map +1 -0
- package/daemon/dist/domain/provider/codex-auth-reader.js +64 -0
- package/daemon/dist/domain/provider/codex-auth-reader.js.map +1 -0
- package/daemon/dist/domain/provider/host-usage-rollup.d.ts +51 -0
- package/daemon/dist/domain/provider/host-usage-rollup.d.ts.map +1 -0
- package/daemon/dist/domain/provider/host-usage-rollup.js +162 -0
- package/daemon/dist/domain/provider/host-usage-rollup.js.map +1 -0
- package/daemon/dist/domain/provider/provider-collect.d.ts +22 -0
- package/daemon/dist/domain/provider/provider-collect.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-collect.js +74 -0
- package/daemon/dist/domain/provider/provider-collect.js.map +1 -0
- package/daemon/dist/domain/provider/provider-policy.d.ts +38 -0
- package/daemon/dist/domain/provider/provider-policy.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-policy.js +76 -0
- package/daemon/dist/domain/provider/provider-policy.js.map +1 -0
- package/daemon/dist/domain/provider/provider-read-model.d.ts +28 -0
- package/daemon/dist/domain/provider/provider-read-model.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-read-model.js +68 -0
- package/daemon/dist/domain/provider/provider-read-model.js.map +1 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts +26 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-service-impl.js +83 -0
- package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -0
- package/daemon/dist/domain/provider/provider-service.d.ts +33 -0
- package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-service.js +6 -0
- package/daemon/dist/domain/provider/provider-service.js.map +1 -0
- package/daemon/dist/domain/provider/provider-signals.d.ts +76 -0
- package/daemon/dist/domain/provider/provider-signals.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-signals.js +144 -0
- package/daemon/dist/domain/provider/provider-signals.js.map +1 -0
- package/daemon/dist/domain/provider/provider-types.d.ts +101 -0
- package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-types.js +7 -0
- package/daemon/dist/domain/provider/provider-types.js.map +1 -0
- package/daemon/dist/domain/provider/reactive-tap.d.ts +29 -0
- package/daemon/dist/domain/provider/reactive-tap.d.ts.map +1 -0
- package/daemon/dist/domain/provider/reactive-tap.js +80 -0
- package/daemon/dist/domain/provider/reactive-tap.js.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts +7 -23
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +3 -61
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +11 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +43 -1
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +2 -11
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts +14 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts.map +1 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.js +26 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts +13 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +50 -10
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
- package/daemon/dist/domain/startup-validation.js +18 -54
- package/daemon/dist/domain/startup-validation.js.map +1 -1
- package/daemon/dist/domain/stream-store.d.ts +4 -0
- package/daemon/dist/domain/stream-store.d.ts.map +1 -1
- package/daemon/dist/domain/stream-store.js +15 -2
- package/daemon/dist/domain/stream-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +2 -9
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +157 -75
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/provider.d.ts +3 -0
- package/daemon/dist/routes/provider.d.ts.map +1 -0
- package/daemon/dist/routes/provider.js +124 -0
- package/daemon/dist/routes/provider.js.map +1 -0
- package/daemon/dist/routes/scope-approve.d.ts.map +1 -1
- package/daemon/dist/routes/scope-approve.js +6 -3
- package/daemon/dist/routes/scope-approve.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +4 -1
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/stream.d.ts.map +1 -1
- package/daemon/dist/routes/stream.js +71 -1
- package/daemon/dist/routes/stream.js.map +1 -1
- package/daemon/dist/server.d.ts +3 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +5 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +21 -11
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/developing.md +39 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -1
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
- package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/shared/agent.yaml +6 -0
- package/daemon/specs/agents/shared/runtime/claude-activity-hooks.json +4 -0
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +1 -0
- package/dist/bin-wrapper.d.ts.map +1 -1
- package/dist/bin-wrapper.js +7 -0
- package/dist/bin-wrapper.js.map +1 -1
- package/dist/build-info.js +3 -3
- package/dist/commands/agent-image.d.ts.map +1 -1
- package/dist/commands/agent-image.js +2 -1
- package/dist/commands/agent-image.js.map +1 -1
- package/dist/commands/broadcast.d.ts.map +1 -1
- package/dist/commands/broadcast.js +37 -2
- package/dist/commands/broadcast.js.map +1 -1
- package/dist/commands/context.d.ts +2 -7
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +391 -213
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/provider.d.ts +4 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +218 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/ps.d.ts +7 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +34 -4
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +38 -8
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +48 -4
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +70 -11
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/stream.d.ts +1 -0
- package/dist/commands/stream.d.ts.map +1 -1
- package/dist/commands/stream.js +93 -0
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/tui.d.ts +4 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +29 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/walk.d.ts +19 -0
- package/dist/commands/walk.d.ts.map +1 -0
- package/dist/commands/walk.js +139 -0
- package/dist/commands/walk.js.map +1 -0
- package/dist/context-resolve.d.ts +14 -0
- package/dist/context-resolve.d.ts.map +1 -0
- package/dist/context-resolve.js +40 -0
- package/dist/context-resolve.js.map +1 -0
- package/dist/front-door.d.ts +31 -0
- package/dist/front-door.d.ts.map +1 -0
- package/dist/front-door.js +114 -0
- package/dist/front-door.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/attestation-lineage.d.ts +14 -0
- package/dist/lib/scope/attestation-lineage.d.ts.map +1 -0
- package/dist/lib/scope/attestation-lineage.js +34 -0
- package/dist/lib/scope/attestation-lineage.js.map +1 -0
- package/package.json +4 -2
- package/tui/dist/daemon-client.d.ts +56 -0
- package/tui/dist/daemon-client.d.ts.map +1 -0
- package/tui/dist/daemon-client.js +99 -0
- package/tui/dist/daemon-client.js.map +1 -0
- package/tui/dist/demo-data.d.ts +3 -0
- package/tui/dist/demo-data.d.ts.map +1 -0
- package/tui/dist/demo-data.js +52 -0
- package/tui/dist/demo-data.js.map +1 -0
- package/tui/dist/detail.d.ts +34 -0
- package/tui/dist/detail.d.ts.map +1 -0
- package/tui/dist/detail.js +47 -0
- package/tui/dist/detail.js.map +1 -0
- package/tui/dist/grammar.d.ts +3 -0
- package/tui/dist/grammar.d.ts.map +1 -0
- package/tui/dist/grammar.js +66 -0
- package/tui/dist/grammar.js.map +1 -0
- package/tui/dist/hydrate.d.ts +78 -0
- package/tui/dist/hydrate.d.ts.map +1 -0
- package/tui/dist/hydrate.js +294 -0
- package/tui/dist/hydrate.js.map +1 -0
- package/tui/dist/index.d.ts +12 -0
- package/tui/dist/index.d.ts.map +1 -0
- package/tui/dist/index.js +12 -0
- package/tui/dist/index.js.map +1 -0
- package/tui/dist/input.d.ts +21 -0
- package/tui/dist/input.d.ts.map +1 -0
- package/tui/dist/input.js +128 -0
- package/tui/dist/input.js.map +1 -0
- package/tui/dist/live.d.ts +20 -0
- package/tui/dist/live.d.ts.map +1 -0
- package/tui/dist/live.js +67 -0
- package/tui/dist/live.js.map +1 -0
- package/tui/dist/main.d.ts +3 -0
- package/tui/dist/main.d.ts.map +1 -0
- package/tui/dist/main.js +184 -0
- package/tui/dist/main.js.map +1 -0
- package/tui/dist/motion.d.ts +13 -0
- package/tui/dist/motion.d.ts.map +1 -0
- package/tui/dist/motion.js +31 -0
- package/tui/dist/motion.js.map +1 -0
- package/tui/dist/navigator.d.ts +21 -0
- package/tui/dist/navigator.d.ts.map +1 -0
- package/tui/dist/navigator.js +168 -0
- package/tui/dist/navigator.js.map +1 -0
- package/tui/dist/refresh.d.ts +3 -0
- package/tui/dist/refresh.d.ts.map +1 -0
- package/tui/dist/refresh.js +9 -0
- package/tui/dist/refresh.js.map +1 -0
- package/tui/dist/render.d.ts +21 -0
- package/tui/dist/render.d.ts.map +1 -0
- package/tui/dist/render.js +807 -0
- package/tui/dist/render.js.map +1 -0
- package/tui/dist/sections.d.ts +4 -0
- package/tui/dist/sections.d.ts.map +1 -0
- package/tui/dist/sections.js +19 -0
- package/tui/dist/sections.js.map +1 -0
- package/tui/dist/socket-server.d.ts +24 -0
- package/tui/dist/socket-server.d.ts.map +1 -0
- package/tui/dist/socket-server.js +85 -0
- package/tui/dist/socket-server.js.map +1 -0
- package/tui/dist/state.d.ts +51 -0
- package/tui/dist/state.d.ts.map +1 -0
- package/tui/dist/state.js +480 -0
- package/tui/dist/state.js.map +1 -0
- package/tui/dist/stylize.d.ts +4 -0
- package/tui/dist/stylize.d.ts.map +1 -0
- package/tui/dist/stylize.js +248 -0
- package/tui/dist/stylize.js.map +1 -0
- package/tui/dist/theme.d.ts +19 -0
- package/tui/dist/theme.d.ts.map +1 -0
- package/tui/dist/theme.js +86 -0
- package/tui/dist/theme.js.map +1 -0
- package/tui/dist/topology/canvas.d.ts +43 -0
- package/tui/dist/topology/canvas.d.ts.map +1 -0
- package/tui/dist/topology/canvas.js +131 -0
- package/tui/dist/topology/canvas.js.map +1 -0
- package/tui/dist/topology/fixture.d.ts +4 -0
- package/tui/dist/topology/fixture.d.ts.map +1 -0
- package/tui/dist/topology/fixture.js +71 -0
- package/tui/dist/topology/fixture.js.map +1 -0
- package/tui/dist/topology/glyphs.d.ts +21 -0
- package/tui/dist/topology/glyphs.d.ts.map +1 -0
- package/tui/dist/topology/glyphs.js +49 -0
- package/tui/dist/topology/glyphs.js.map +1 -0
- package/tui/dist/topology/graph-types.d.ts +39 -0
- package/tui/dist/topology/graph-types.d.ts.map +1 -0
- package/tui/dist/topology/graph-types.js +2 -0
- package/tui/dist/topology/graph-types.js.map +1 -0
- package/tui/dist/topology/layout.d.ts +52 -0
- package/tui/dist/topology/layout.d.ts.map +1 -0
- package/tui/dist/topology/layout.js +118 -0
- package/tui/dist/topology/layout.js.map +1 -0
- package/tui/dist/topology/render-graph.d.ts +8 -0
- package/tui/dist/topology/render-graph.d.ts.map +1 -0
- package/tui/dist/topology/render-graph.js +20 -0
- package/tui/dist/topology/render-graph.js.map +1 -0
- package/tui/dist/topology/runtime-marks.d.ts +53 -0
- package/tui/dist/topology/runtime-marks.d.ts.map +1 -0
- package/tui/dist/topology/runtime-marks.js +185 -0
- package/tui/dist/topology/runtime-marks.js.map +1 -0
- package/tui/dist/topology/styles/braille.d.ts +5 -0
- package/tui/dist/topology/styles/braille.d.ts.map +1 -0
- package/tui/dist/topology/styles/braille.js +84 -0
- package/tui/dist/topology/styles/braille.js.map +1 -0
- package/tui/dist/topology/styles/hatchet.d.ts +41 -0
- package/tui/dist/topology/styles/hatchet.d.ts.map +1 -0
- package/tui/dist/topology/styles/hatchet.js +146 -0
- package/tui/dist/topology/styles/hatchet.js.map +1 -0
- package/tui/dist/types.d.ts +362 -0
- package/tui/dist/types.d.ts.map +1 -0
- package/tui/dist/types.js +6 -0
- package/tui/dist/types.js.map +1 -0
- package/ui/dist/assets/{index-DkNi0RT8.js → index-Dv5VaLCN.js} +135 -135
- package/ui/dist/index.html +1 -1
- package/dist/commands/context-pack.d.ts +0 -4
- package/dist/commands/context-pack.d.ts.map +0 -1
- package/dist/commands/context-pack.js +0 -357
- package/dist/commands/context-pack.js.map +0 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// Slice-04 (OPR.0.5.0.4) — signals[] normalization (the §2 detection design, encoded).
|
|
2
|
+
// Authority: locked packet 3ffa3c22 IMPLEMENTATION-PRD §2 + the 2026-07-31 RESEARCH verdict.
|
|
3
|
+
// Honesty rules enforced here: feature-probe-negative and empty reads become EXPLICIT
|
|
4
|
+
// `unknown` rows (never silent zeros, never missing rows); only a real structured read is
|
|
5
|
+
// `allow_switch_decision` (BR-2).
|
|
6
|
+
export const CODEX_UNKNOWN_REASON = {
|
|
7
|
+
probe_unsupported: "codex_app_server_unavailable",
|
|
8
|
+
empty_reading: "codex_read_returned_no_windows",
|
|
9
|
+
};
|
|
10
|
+
function codexUnknownSignal(accountRef, asOf, unknownReason, supportsNotification, staleAfter) {
|
|
11
|
+
return {
|
|
12
|
+
provider: "codex",
|
|
13
|
+
accountRef,
|
|
14
|
+
sourceClass: "unknown",
|
|
15
|
+
authority: "unknown",
|
|
16
|
+
asOf,
|
|
17
|
+
staleAfter,
|
|
18
|
+
unknownReason,
|
|
19
|
+
// Unknown DATA must not erase KNOWN transport capability: when the app-server is present
|
|
20
|
+
// (supported-but-empty) `account/rateLimits/updated` still exists, so the notification
|
|
21
|
+
// capability is true; only an absent app-server (probe unsupported) is false.
|
|
22
|
+
supportsNotification,
|
|
23
|
+
automationUse: "do_not_automate",
|
|
24
|
+
// usedPercent / resetsAt / window deliberately OMITTED — an unknown row never carries a
|
|
25
|
+
// fabricated zero (the BR-2 silent-zero trap). A genuine 0 only ever comes from a real read.
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalize a Codex app-server rate-limit read into `signals[]` rows.
|
|
30
|
+
* - probe unsupported → one explicit `unknown` row.
|
|
31
|
+
* - supported but no windows → one explicit `unknown` row (never fabricated zeros).
|
|
32
|
+
* - supported with windows → one `provider_structured_read` row per provider-native window,
|
|
33
|
+
* preserving the native primary/secondary distinction.
|
|
34
|
+
*/
|
|
35
|
+
export function codexRateLimitSignals(input) {
|
|
36
|
+
const { accountRef, probe, reading, asOf, staleAfter } = input;
|
|
37
|
+
if (!probe.supported) {
|
|
38
|
+
// App-server absent → no notification transport.
|
|
39
|
+
return [codexUnknownSignal(accountRef, asOf, CODEX_UNKNOWN_REASON.probe_unsupported, false, staleAfter)];
|
|
40
|
+
}
|
|
41
|
+
const windows = [
|
|
42
|
+
["primary", reading?.primary],
|
|
43
|
+
["secondary", reading?.secondary],
|
|
44
|
+
];
|
|
45
|
+
const rows = [];
|
|
46
|
+
for (const [window, w] of windows) {
|
|
47
|
+
if (!w)
|
|
48
|
+
continue;
|
|
49
|
+
rows.push({
|
|
50
|
+
provider: "codex",
|
|
51
|
+
accountRef,
|
|
52
|
+
sourceClass: "provider_structured_read",
|
|
53
|
+
authority: "account_cross_device",
|
|
54
|
+
window,
|
|
55
|
+
usedPercent: w.usedPercent,
|
|
56
|
+
resetsAt: w.resetsAt,
|
|
57
|
+
windowDurationMins: w.windowDurationMins,
|
|
58
|
+
asOf,
|
|
59
|
+
staleAfter,
|
|
60
|
+
supportsNotification: true, // Codex app-server carries account/rateLimits/updated
|
|
61
|
+
automationUse: "allow_switch_decision",
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (rows.length === 0) {
|
|
65
|
+
// App-server present but returned no windows → unknown DATA, but the transport capability
|
|
66
|
+
// (account/rateLimits/updated) is still KNOWN present → supportsNotification stays true.
|
|
67
|
+
return [codexUnknownSignal(accountRef, asOf, CODEX_UNKNOWN_REASON.empty_reading, true, staleAfter)];
|
|
68
|
+
}
|
|
69
|
+
return rows;
|
|
70
|
+
}
|
|
71
|
+
export const CLAUDE_UNKNOWN_REASON = {
|
|
72
|
+
no_statusline_cache_yet: "claude_no_statusline_cache_yet",
|
|
73
|
+
empty_reading: "claude_statusline_cache_had_no_windows",
|
|
74
|
+
};
|
|
75
|
+
function claudeUnknownSignal(seatSession, asOf, unknownReason, staleAfter) {
|
|
76
|
+
return {
|
|
77
|
+
provider: "claude",
|
|
78
|
+
seatSession,
|
|
79
|
+
sourceClass: "unknown",
|
|
80
|
+
authority: "unknown",
|
|
81
|
+
asOf,
|
|
82
|
+
staleAfter,
|
|
83
|
+
unknownReason,
|
|
84
|
+
supportsNotification: false, // Claude statusline has no push transport
|
|
85
|
+
automationUse: "do_not_automate",
|
|
86
|
+
// usedPercent / resetsAt / window OMITTED — never a fabricated zero.
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Normalize a Claude statusline `rate_limits` reading into `signals[]` rows.
|
|
91
|
+
* - seat before first response (no cache) → explicit unknown row.
|
|
92
|
+
* - seat with subscription windows → one `provider_statusline` row per window (five_hour, and
|
|
93
|
+
* seven_day normalized to "weekly"); a genuine 0 survives as 0.
|
|
94
|
+
* - subscription with cache but no windows → explicit unknown row (never fabricated zeros).
|
|
95
|
+
*/
|
|
96
|
+
export function claudeStatuslineSignals(input) {
|
|
97
|
+
const { seatSession, cachePresent, reading, asOf, staleAfter } = input;
|
|
98
|
+
if (!cachePresent) {
|
|
99
|
+
return [claudeUnknownSignal(seatSession, asOf, CLAUDE_UNKNOWN_REASON.no_statusline_cache_yet, staleAfter)];
|
|
100
|
+
}
|
|
101
|
+
const windows = [
|
|
102
|
+
["five_hour", reading?.five_hour],
|
|
103
|
+
["weekly", reading?.seven_day],
|
|
104
|
+
];
|
|
105
|
+
const rows = [];
|
|
106
|
+
for (const [window, w] of windows) {
|
|
107
|
+
if (!w)
|
|
108
|
+
continue;
|
|
109
|
+
rows.push({
|
|
110
|
+
provider: "claude",
|
|
111
|
+
seatSession,
|
|
112
|
+
sourceClass: "provider_statusline",
|
|
113
|
+
authority: "account_cross_device", // Claude.ai Pro/Max subscription windows are account-level
|
|
114
|
+
window,
|
|
115
|
+
usedPercent: w.usedPercent,
|
|
116
|
+
resetsAt: w.resetsAt,
|
|
117
|
+
asOf,
|
|
118
|
+
staleAfter,
|
|
119
|
+
supportsNotification: false, // no push unless OpenRig later supplies a cache-update event
|
|
120
|
+
automationUse: "allow_switch_decision",
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (rows.length === 0) {
|
|
124
|
+
return [claudeUnknownSignal(seatSession, asOf, CLAUDE_UNKNOWN_REASON.empty_reading, staleAfter)];
|
|
125
|
+
}
|
|
126
|
+
return rows;
|
|
127
|
+
}
|
|
128
|
+
export function reactiveEventSignal(input) {
|
|
129
|
+
return {
|
|
130
|
+
provider: input.provider,
|
|
131
|
+
accountRef: input.accountRef,
|
|
132
|
+
sourceClass: "provider_event",
|
|
133
|
+
authority: "reactive_error",
|
|
134
|
+
asOf: input.asOf,
|
|
135
|
+
staleAfter: input.staleAfter,
|
|
136
|
+
// supportsNotification is OMITTED: it describes a per-account transport capability (true for
|
|
137
|
+
// Codex account/rateLimits/updated, false/unknown for Claude statusline). A generic reactive
|
|
138
|
+
// event does not establish that capability — hard-coding false would fabricate it.
|
|
139
|
+
// At-limit exhaustion is an actionable switch trigger; stream/stop errors are advisory.
|
|
140
|
+
automationUse: input.kind === "at_limit" ? "allow_switch_decision" : "advisory_only",
|
|
141
|
+
// No usedPercent — a reactive event is exhaustion evidence, not a remaining meter.
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=provider-signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-signals.js","sourceRoot":"","sources":["../../../src/domain/provider/provider-signals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export type ProviderKind = "codex" | "claude";
|
|
2
|
+
export type AccountAuthState = "active" | "needs_reauth" | "unknown";
|
|
3
|
+
/** accounts[] — one row per known provider account. */
|
|
4
|
+
export interface ProviderAccount {
|
|
5
|
+
accountId: string;
|
|
6
|
+
label: string;
|
|
7
|
+
provider: ProviderKind;
|
|
8
|
+
authState: AccountAuthState;
|
|
9
|
+
profileRef: string | null;
|
|
10
|
+
asOf: string;
|
|
11
|
+
}
|
|
12
|
+
import type { HostUsageRow } from "./host-usage-rollup.js";
|
|
13
|
+
export type BindingAnomalyKind = "same_account_on_n_seats" | "seat_with_no_account";
|
|
14
|
+
/**
|
|
15
|
+
* First-class binding anomalies — server-computed, not derived client-side. A discriminated
|
|
16
|
+
* union carrying EXACTLY the locked §1 fields for each variant (nothing added).
|
|
17
|
+
*/
|
|
18
|
+
export type SameAccountOnNSeatsAnomaly = {
|
|
19
|
+
kind: "same_account_on_n_seats";
|
|
20
|
+
count: number;
|
|
21
|
+
seats: string[];
|
|
22
|
+
evidence: string;
|
|
23
|
+
asOf: string;
|
|
24
|
+
};
|
|
25
|
+
export type SeatWithNoAccountAnomaly = {
|
|
26
|
+
kind: "seat_with_no_account";
|
|
27
|
+
seat: string;
|
|
28
|
+
evidence: string;
|
|
29
|
+
asOf: string;
|
|
30
|
+
};
|
|
31
|
+
export type BindingAnomaly = SameAccountOnNSeatsAnomaly | SeatWithNoAccountAnomaly;
|
|
32
|
+
/**
|
|
33
|
+
* A `bindings[]` row — a discriminated bound/unbound union over the SAME locked §1 field names
|
|
34
|
+
* (`accountId`, `seatSession`, `rigName`, `boundAt`, `bindingSource`, `anomalies`). A bound row
|
|
35
|
+
* has a non-null `accountId` (+ `boundAt`/`bindingSource`); an unbound seat keeps the same field
|
|
36
|
+
* names but `null` for the absent BINDING data and MUST carry a `seat_with_no_account` anomaly —
|
|
37
|
+
* never a fabricated/sentinel account. Discriminant: `accountId` (string vs null).
|
|
38
|
+
*/
|
|
39
|
+
export type ProviderBinding = {
|
|
40
|
+
accountId: string;
|
|
41
|
+
seatSession: string;
|
|
42
|
+
rigName: string;
|
|
43
|
+
boundAt: string;
|
|
44
|
+
bindingSource: string;
|
|
45
|
+
anomalies: BindingAnomaly[];
|
|
46
|
+
} | {
|
|
47
|
+
accountId: null;
|
|
48
|
+
seatSession: string;
|
|
49
|
+
rigName: string;
|
|
50
|
+
boundAt: null;
|
|
51
|
+
bindingSource: null;
|
|
52
|
+
anomalies: [SeatWithNoAccountAnomaly, ...BindingAnomaly[]];
|
|
53
|
+
};
|
|
54
|
+
export type SignalSourceClass = "provider_structured_read" | "provider_statusline" | "provider_event" | "local_usage_attribution" | "community_probe" | "capture_fallback" | "unknown";
|
|
55
|
+
export type SignalAuthority = "account_cross_device" | "device_local" | "api_workspace" | "reactive_error" | "unknown";
|
|
56
|
+
export type SignalWindow = "five_hour" | "weekly" | "primary" | "secondary" | "monthly_credit" | (string & {});
|
|
57
|
+
export type AutomationUse = "allow_switch_decision" | "advisory_only" | "do_not_automate";
|
|
58
|
+
/**
|
|
59
|
+
* signals[] — the research verdict's normalization. An absent/unknown reading is an EXPLICIT
|
|
60
|
+
* row (`sourceClass`/`authority` = "unknown", `unknownReason` set), never a missing row and
|
|
61
|
+
* never a fabricated zero (`usedPercent` is OMITTED when unknown).
|
|
62
|
+
*/
|
|
63
|
+
export interface ProviderSignal {
|
|
64
|
+
provider: ProviderKind;
|
|
65
|
+
/** Opaque account ref (BR-6). Claude statusline rows omit it: that surface exposes no account identity. */
|
|
66
|
+
accountRef?: string;
|
|
67
|
+
/** Runtime seat identity for seat-keyed lanes such as Claude statusline provider_usage. */
|
|
68
|
+
seatSession?: string;
|
|
69
|
+
sourceClass: SignalSourceClass;
|
|
70
|
+
authority: SignalAuthority;
|
|
71
|
+
window?: SignalWindow;
|
|
72
|
+
usedPercent?: number;
|
|
73
|
+
remaining?: number;
|
|
74
|
+
resetsAt?: string;
|
|
75
|
+
windowDurationMins?: number;
|
|
76
|
+
asOf: string;
|
|
77
|
+
staleAfter?: string;
|
|
78
|
+
unknownReason?: string;
|
|
79
|
+
supportsNotification?: boolean;
|
|
80
|
+
automationUse: AutomationUse;
|
|
81
|
+
}
|
|
82
|
+
export type PrecheckReason = "would_strand_live_conversation" | "target_needs_reauth" | "target_auth_unknown" | "signal_unknown_or_stale" | "rebind_unsupported_for_runtime";
|
|
83
|
+
export type PrecheckResult = {
|
|
84
|
+
safe: true;
|
|
85
|
+
} | {
|
|
86
|
+
safe: false;
|
|
87
|
+
reasons: PrecheckReason[];
|
|
88
|
+
};
|
|
89
|
+
export type SwitchOutcome = "succeeded" | "rebind_in_progress" | "failed_safely";
|
|
90
|
+
/** The whole four-block read model, emitted by `rig provider status --json`. */
|
|
91
|
+
export interface FourBlockReadModel {
|
|
92
|
+
accounts: ProviderAccount[];
|
|
93
|
+
bindings: ProviderBinding[];
|
|
94
|
+
signals: ProviderSignal[];
|
|
95
|
+
asOf: string;
|
|
96
|
+
/** Slice-04 S-A (A2 amendment) — the host-level usage rollup, ADDITIVE: one honest state
|
|
97
|
+
* row per (host, provider) aggregated from the seat-sourced signal rows. Optional so the
|
|
98
|
+
* sealed assembler stays untouched; the collect layer always populates it. */
|
|
99
|
+
hostUsage?: HostUsageRow[];
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=provider-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-types.d.ts","sourceRoot":"","sources":["../../../src/domain/provider/provider-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Slice-04 (OPR.0.5.0.4) provider-interruption-automation — the §1 four-block read model.
|
|
2
|
+
// Schema authority: locked packet 3ffa3c22 IMPLEMENTATION-PRD §1 + the 2026-07-31 RESEARCH
|
|
3
|
+
// verdict's signals[] normalization (adopted verbatim). Field names ARE the contract —
|
|
4
|
+
// additive evolution only after schema lock. BR-6: accountId/profileRef are opaque refs,
|
|
5
|
+
// NEVER a token/header/auth-file content.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=provider-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-types.js","sourceRoot":"","sources":["../../../src/domain/provider/provider-types.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,2FAA2F;AAC3F,uFAAuF;AACvF,yFAAyF;AACzF,0CAA0C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AgentActivity } from "../types.js";
|
|
2
|
+
import type { CodexAuthMetadata } from "./codex-auth-reader.js";
|
|
3
|
+
import type { ProviderSignal } from "./provider-types.js";
|
|
4
|
+
interface ReactiveSeat {
|
|
5
|
+
seatSession: string;
|
|
6
|
+
runtime: string;
|
|
7
|
+
}
|
|
8
|
+
interface ReactiveActivityReader {
|
|
9
|
+
getLatestForNode(input: {
|
|
10
|
+
sessionName: string;
|
|
11
|
+
now: Date;
|
|
12
|
+
}): AgentActivity | null;
|
|
13
|
+
}
|
|
14
|
+
export interface ReactiveTapDeps {
|
|
15
|
+
seats: readonly ReactiveSeat[];
|
|
16
|
+
auth: CodexAuthMetadata;
|
|
17
|
+
activity: ReactiveActivityReader;
|
|
18
|
+
now: string;
|
|
19
|
+
freshnessMs: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Map the current structured activity for each honestly identified Codex seat into reactive
|
|
23
|
+
* provider rows. Generic needs-input activity is deliberately insufficient: permission prompts
|
|
24
|
+
* are blocked seats too, but are not provider interruptions. Only the exact typed vocabulary above
|
|
25
|
+
* is accepted, with raw subtype taking precedence over raw event and normalized reason.
|
|
26
|
+
*/
|
|
27
|
+
export declare function collectReactiveEventSignals(deps: ReactiveTapDeps): ProviderSignal[];
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=reactive-tap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-tap.d.ts","sourceRoot":"","sources":["../../../src/domain/provider/reactive-tap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,sBAAsB;IAC9B,gBAAgB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GAAG,aAAa,GAAG,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAWD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,EAAE,CAkDnF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { reactiveEventSignal } from "./provider-signals.js";
|
|
2
|
+
const EVENT_KINDS = {
|
|
3
|
+
at_limit: "at_limit",
|
|
4
|
+
rate_limit: "at_limit",
|
|
5
|
+
rate_limited: "at_limit",
|
|
6
|
+
stream_failure: "stream_failure",
|
|
7
|
+
stream_fail: "stream_failure",
|
|
8
|
+
stop_error: "stop_error",
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Map the current structured activity for each honestly identified Codex seat into reactive
|
|
12
|
+
* provider rows. Generic needs-input activity is deliberately insufficient: permission prompts
|
|
13
|
+
* are blocked seats too, but are not provider interruptions. Only the exact typed vocabulary above
|
|
14
|
+
* is accepted, with raw subtype taking precedence over raw event and normalized reason.
|
|
15
|
+
*/
|
|
16
|
+
export function collectReactiveEventSignals(deps) {
|
|
17
|
+
const nowMs = Date.parse(deps.now);
|
|
18
|
+
if (!Number.isFinite(nowMs) || !Number.isFinite(deps.freshnessMs) || deps.freshnessMs <= 0)
|
|
19
|
+
return [];
|
|
20
|
+
// Honest reactive eligibility, centralized. The account ref must name a KNOWN auth
|
|
21
|
+
// profile (a file in auth-profiles/), not merely a nonempty registry token: a registry
|
|
22
|
+
// row that points at an absent profile has no account identity and must produce NO
|
|
23
|
+
// actionable row (explicit-unknown honesty, never a fabricated account).
|
|
24
|
+
const knownProfiles = new Set(deps.auth.profiles);
|
|
25
|
+
const accountBySeat = new Map(deps.auth.seats
|
|
26
|
+
.filter((seat) => seat.runtime === "codex" && knownProfiles.has(seat.authProfile.trim()))
|
|
27
|
+
.map((seat) => [seat.seat, seat.authProfile]));
|
|
28
|
+
const signals = [];
|
|
29
|
+
for (const seat of deps.seats) {
|
|
30
|
+
if (seat.runtime !== "codex")
|
|
31
|
+
continue;
|
|
32
|
+
const accountRef = accountBySeat.get(seat.seatSession);
|
|
33
|
+
if (!accountRef)
|
|
34
|
+
continue;
|
|
35
|
+
const event = deps.activity.getLatestForNode({
|
|
36
|
+
sessionName: seat.seatSession,
|
|
37
|
+
now: new Date(nowMs),
|
|
38
|
+
});
|
|
39
|
+
if (!event || event.stale)
|
|
40
|
+
continue;
|
|
41
|
+
// The PERSISTED activity runtime must itself be Codex. A claude-code activity attached
|
|
42
|
+
// to a Codex inventory/registry seat is NOT Codex provider evidence and must never be
|
|
43
|
+
// relabeled as one — eligibility follows the event, not just the seat.
|
|
44
|
+
if (event.runtime !== "codex")
|
|
45
|
+
continue;
|
|
46
|
+
const kind = eventKind(event);
|
|
47
|
+
const eventAt = event.eventAt;
|
|
48
|
+
if (!kind || typeof eventAt !== "string")
|
|
49
|
+
continue;
|
|
50
|
+
const eventAtMs = Date.parse(eventAt);
|
|
51
|
+
if (!Number.isFinite(eventAtMs))
|
|
52
|
+
continue;
|
|
53
|
+
const staleAfterMs = eventAtMs + deps.freshnessMs;
|
|
54
|
+
// BR-2 expiry is inclusive: at the bound, the event is already stale.
|
|
55
|
+
if (nowMs >= staleAfterMs)
|
|
56
|
+
continue;
|
|
57
|
+
signals.push(reactiveEventSignal({
|
|
58
|
+
provider: "codex",
|
|
59
|
+
accountRef,
|
|
60
|
+
kind,
|
|
61
|
+
asOf: eventAt,
|
|
62
|
+
staleAfter: new Date(staleAfterMs).toISOString(),
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
return signals;
|
|
66
|
+
}
|
|
67
|
+
// Classification binds to the structured provider-interruption PRODUCER CLASS — the
|
|
68
|
+
// event class itself (`rawEvent`), matched exactly against the declared interruption
|
|
69
|
+
// vocabulary. The managed hook relay maps a tool_name into `rawSubtype`, so a generic
|
|
70
|
+
// lifecycle event (e.g. a `PermissionRequest` with a `rate_limit` tool-name subtype) is a
|
|
71
|
+
// permission block, never exhaustion; and a normalized `reason` is a derived field, not a
|
|
72
|
+
// producer. Only an event whose class is an explicit interruption producer is actionable —
|
|
73
|
+
// an unproven producer yields no row (fail-visible, never fabricated).
|
|
74
|
+
function eventKind(activity) {
|
|
75
|
+
const eventClass = activity.rawEvent;
|
|
76
|
+
if (typeof eventClass !== "string")
|
|
77
|
+
return null;
|
|
78
|
+
return EVENT_KINDS[eventClass] ?? null;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=reactive-tap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-tap.js","sourceRoot":"","sources":["../../../src/domain/provider/reactive-tap.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,13 +41,15 @@ interface PodInstantiatorDeps {
|
|
|
41
41
|
nodeLauncher: NodeLauncher;
|
|
42
42
|
startupOrchestrator: StartupOrchestrator;
|
|
43
43
|
fsOps: AgentResolverFsOps;
|
|
44
|
+
/** §6 reconciliation: main's managed Claude activity-hook delivery asset paths, forwarded to
|
|
45
|
+
* preflight (defaults to daemon-shipped assets; tests inject fixtures). Restores main's proven
|
|
46
|
+
* threading, dropped when the restacked 4.8 instantiator won the warnings-site conflicts. */
|
|
47
|
+
claudeActivityAssets?: {
|
|
48
|
+
relayPath?: string;
|
|
49
|
+
manifestPath?: string;
|
|
50
|
+
};
|
|
44
51
|
adapters: Record<string, RuntimeAdapter>;
|
|
45
52
|
tmuxAdapter?: TmuxAdapter;
|
|
46
|
-
/** PL-014 Item 6: optional context-pack library so AgentSpec
|
|
47
|
-
* startup_files entries with `kind: context_pack` can resolve to
|
|
48
|
-
* the pack's assembled bundle. Optional — when absent, context_pack
|
|
49
|
-
* startup files surface a structured error at instantiation time. */
|
|
50
|
-
contextPackLibrary?: import("./context-packs/context-pack-library-service.js").ContextPackLibraryService;
|
|
51
53
|
/** PL-016 Item 4: optional agent-image library so AgentSpec
|
|
52
54
|
* session_source: mode: agent_image entries can resolve to the
|
|
53
55
|
* image's resume token. Optional — when absent, agent_image session
|
|
@@ -335,24 +337,6 @@ export declare class PodRigInstantiator {
|
|
|
335
337
|
private updateNodeResolvedConfig;
|
|
336
338
|
private buildTerminalResolvedStartupFiles;
|
|
337
339
|
private buildResolvedStartupFiles;
|
|
338
|
-
/**
|
|
339
|
-
* PL-014 Item 6: expand any startup_files entries with `kind:
|
|
340
|
-
* "context_pack"` into a real file on disk + adjust the
|
|
341
|
-
* ResolvedStartupFile entry to point to it. Operates in place.
|
|
342
|
-
*
|
|
343
|
-
* Strategy:
|
|
344
|
-
* 1. Look up the pack via the daemon-side ContextPackLibraryService.
|
|
345
|
-
* 2. Assemble the pack into a single coherent paste-ready string.
|
|
346
|
-
* 3. Write the bundle to <rigRoot>/.openrig/resolved-context-packs/
|
|
347
|
-
* <name>-<version>.md.
|
|
348
|
-
* 4. Replace the entry's path/absolutePath/ownerRoot with that
|
|
349
|
-
* written path so the rest of the pipeline (resolveAutoHints +
|
|
350
|
-
* adapter.deliverStartup) treats it as a normal file.
|
|
351
|
-
*
|
|
352
|
-
* Throws on missing pack or absent library service so the
|
|
353
|
-
* materialize path surfaces the failure honestly.
|
|
354
|
-
*/
|
|
355
|
-
private expandContextPacks;
|
|
356
340
|
private dedupeProjectedManagedStartupFiles;
|
|
357
341
|
private buildSessionIdentityAction;
|
|
358
342
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rigspec-instantiator.d.ts","sourceRoot":"","sources":["../../src/domain/rigspec-instantiator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rigspec-instantiator.d.ts","sourceRoot":"","sources":["../../src/domain/rigspec-instantiator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIrF,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAoC,kBAAkB,EAAqB,MAAM,YAAY,CAAC;AAMpI,UAAU,mBAAmB;IAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,qBAAqB,EAAE,WAAW,CAAC;CACzD;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAAC,CAA4C;gBAEpD,IAAI,EAAE,mBAAmB;IA0B/B,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiJ7D,OAAO,CAAC,kBAAkB;CAqE3B;AAOD,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAA8B,MAAM,YAAY,CAAC;AAClH,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,sBAAsB,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAcvD,UAAU,mBAAmB;IAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC;IAC1B;;kGAE8F;IAC9F,oBAAoB,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;oEAGgE;IAChE,iBAAiB,CAAC,EAAE,OAAO,+CAA+C,EAAE,wBAAwB,CAAC;IACrG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACvC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,oBAAoB,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE;QAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE;6EAC6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,oBAAoB,CAAC;QACrD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF;;uEAEmE;IACnE,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAElF;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAsB;gBAEtB,IAAI,EAAE,mBAAmB;IASrC,OAAO,CAAC,yBAAyB;IAa3B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,kBAAkB,CAAC;IA2C9B;;;;;;;;;;OAUG;IACG,qBAAqB,CACzB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,kBAAkB,CAAC;IA8B9B;;;;;;;;;OASG;IACG,wBAAwB,CAC5B,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAAE,EAC3B,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,kBAAkB,CAAC;IAmKxB,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC;IAwBrC;;;;;;;OAOG;IACG,mBAAmB,CACvB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC;IA4DrC;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GACzF,OAAO,CAAC,gBAAgB,CAAC;IAmMtB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,IAAI,CAAA;SAAE,GAAG;YAAE,EAAE,EAAE,KAAK,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4U9N,OAAO,CAAC,qBAAqB;YA8Df,qBAAqB;IAwDnC,OAAO,CAAC,iBAAiB;IAWzB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAK,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,gBAAgB,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;;;;IA0BD;;;;;;;;OAQG;IACG,aAAa,CAAC,KAAK,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,UAAU,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,UAAU,CAAC;QAChB,MAAM,EAAE,gBAAgB,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,oBAAoB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAMnJ;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAYrC;;;0FAGsF;IACtF,OAAO,CAAC,iCAAiC;IASzC;2EACuE;IACvE,OAAO,CAAC,2BAA2B;YAMrB,yBAAyB;YAuRzB,4BAA4B;IAgG1C,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,iCAAiC;IA2CzC,OAAO,CAAC,yBAAyB;IAmEjC,OAAO,CAAC,kCAAkC;IAiB1C,OAAO,CAAC,0BAA0B;IAmClC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAYzB"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import nodePath from "node:path";
|
|
2
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { assembleBundle } from "./context-packs/bundle-assembler.js";
|
|
4
2
|
import { resolvePermissionPolicyAttachment, resolvePermissionPolicyRefValue, } from "./permission-policy/policy-ref.js";
|
|
5
3
|
import { deriveCanonicalSessionName, validateSessionComponents } from "./session-name.js";
|
|
6
4
|
import { LegacyRigSpecSchema as RigSpecSchema } from "./rigspec-schema.js"; // TODO: AS-T08b — migrate to pod-aware RigSpec
|
|
@@ -320,6 +318,7 @@ export class PodRigInstantiator {
|
|
|
320
318
|
externalQualifiedIds: targetRig?.nodes.map((node) => node.logicalId),
|
|
321
319
|
inheritedPermissionPolicy: this.inheritedPermissionPolicy(opts?.targetRigId),
|
|
322
320
|
exec: this.deps.exec,
|
|
321
|
+
claudeActivityAssets: this.deps.claudeActivityAssets, // §6: restore main's activity-hook asset threading
|
|
323
322
|
});
|
|
324
323
|
if (!preflight.ready) {
|
|
325
324
|
return { ok: false, code: "preflight_failed", errors: preflight.errors, warnings: preflight.warnings };
|
|
@@ -360,6 +359,7 @@ export class PodRigInstantiator {
|
|
|
360
359
|
rigNameOverride: targetRig?.rig.name,
|
|
361
360
|
inheritedPermissionPolicy: this.inheritedPermissionPolicy(opts?.targetRigId),
|
|
362
361
|
exec: this.deps.exec,
|
|
362
|
+
claudeActivityAssets: this.deps.claudeActivityAssets, // §6: restore main's activity-hook asset threading
|
|
363
363
|
});
|
|
364
364
|
if (!preflight.ready) {
|
|
365
365
|
return { ok: false, code: "preflight_failed", errors: preflight.errors, warnings: preflight.warnings };
|
|
@@ -828,7 +828,7 @@ export class PodRigInstantiator {
|
|
|
828
828
|
return { ok: false, code: "validation_failed", errors: [err.message] };
|
|
829
829
|
}
|
|
830
830
|
// 2. Preflight
|
|
831
|
-
const preflight = await rigPreflight({ rigSpecYaml, rigRoot, cwdOverride: opts?.cwdOverride, fsOps: this.deps.fsOps, exec: this.deps.exec });
|
|
831
|
+
const preflight = await rigPreflight({ rigSpecYaml, rigRoot, cwdOverride: opts?.cwdOverride, fsOps: this.deps.fsOps, exec: this.deps.exec, claudeActivityAssets: this.deps.claudeActivityAssets });
|
|
832
832
|
if (!preflight.ready) {
|
|
833
833
|
return { ok: false, code: "preflight_failed", errors: preflight.errors, warnings: preflight.warnings };
|
|
834
834
|
}
|
|
@@ -1713,7 +1713,6 @@ export class PodRigInstantiator {
|
|
|
1713
1713
|
files.push({ ...f, absolutePath: nodePath.resolve(rigRoot, f.path), ownerRoot: rigRoot });
|
|
1714
1714
|
}
|
|
1715
1715
|
}
|
|
1716
|
-
this.expandContextPacks(files, rigRoot);
|
|
1717
1716
|
return this.resolveAutoHints(files);
|
|
1718
1717
|
}
|
|
1719
1718
|
buildResolvedStartupFiles(agentSpec, agentSourcePath, profile, rigSpec, rigRoot, pod, member) {
|
|
@@ -1769,65 +1768,8 @@ export class PodRigInstantiator {
|
|
|
1769
1768
|
required: false,
|
|
1770
1769
|
appliesOn: ["fresh_start", "restore"],
|
|
1771
1770
|
});
|
|
1772
|
-
this.expandContextPacks(files, rigRoot);
|
|
1773
1771
|
return this.resolveAutoHints(files);
|
|
1774
1772
|
}
|
|
1775
|
-
/**
|
|
1776
|
-
* PL-014 Item 6: expand any startup_files entries with `kind:
|
|
1777
|
-
* "context_pack"` into a real file on disk + adjust the
|
|
1778
|
-
* ResolvedStartupFile entry to point to it. Operates in place.
|
|
1779
|
-
*
|
|
1780
|
-
* Strategy:
|
|
1781
|
-
* 1. Look up the pack via the daemon-side ContextPackLibraryService.
|
|
1782
|
-
* 2. Assemble the pack into a single coherent paste-ready string.
|
|
1783
|
-
* 3. Write the bundle to <rigRoot>/.openrig/resolved-context-packs/
|
|
1784
|
-
* <name>-<version>.md.
|
|
1785
|
-
* 4. Replace the entry's path/absolutePath/ownerRoot with that
|
|
1786
|
-
* written path so the rest of the pipeline (resolveAutoHints +
|
|
1787
|
-
* adapter.deliverStartup) treats it as a normal file.
|
|
1788
|
-
*
|
|
1789
|
-
* Throws on missing pack or absent library service so the
|
|
1790
|
-
* materialize path surfaces the failure honestly.
|
|
1791
|
-
*/
|
|
1792
|
-
expandContextPacks(files, rigRoot) {
|
|
1793
|
-
const library = this.deps.contextPackLibrary;
|
|
1794
|
-
const targetDir = nodePath.join(rigRoot, ".openrig", "resolved-context-packs");
|
|
1795
|
-
let madeDir = false;
|
|
1796
|
-
for (let i = 0; i < files.length; i++) {
|
|
1797
|
-
const f = files[i];
|
|
1798
|
-
if (f.kind !== "context_pack")
|
|
1799
|
-
continue;
|
|
1800
|
-
if (!library) {
|
|
1801
|
-
throw new Error(`startup_files entry references kind: context_pack '${f.contextPackName ?? "(missing-name)"}' v${f.contextPackVersion ?? "1"}, but the daemon ContextPackLibraryService is not wired.`);
|
|
1802
|
-
}
|
|
1803
|
-
const name = f.contextPackName;
|
|
1804
|
-
const version = f.contextPackVersion ?? "1";
|
|
1805
|
-
if (!name) {
|
|
1806
|
-
throw new Error(`startup_files entry kind: context_pack is missing 'name'`);
|
|
1807
|
-
}
|
|
1808
|
-
const pack = library.getByNameVersion(name, version);
|
|
1809
|
-
if (!pack) {
|
|
1810
|
-
throw new Error(`Context pack '${name}' v${version} not found in library. Run 'rig context-pack list' to see what's installed.`);
|
|
1811
|
-
}
|
|
1812
|
-
const bundle = assembleBundle({ packEntry: pack });
|
|
1813
|
-
if (!madeDir) {
|
|
1814
|
-
mkdirSync(targetDir, { recursive: true });
|
|
1815
|
-
madeDir = true;
|
|
1816
|
-
}
|
|
1817
|
-
const targetPath = nodePath.join(targetDir, `${name}-${version}.md`);
|
|
1818
|
-
writeFileSync(targetPath, bundle.text, "utf-8");
|
|
1819
|
-
files[i] = {
|
|
1820
|
-
...f,
|
|
1821
|
-
kind: "file",
|
|
1822
|
-
path: nodePath.relative(rigRoot, targetPath),
|
|
1823
|
-
absolutePath: targetPath,
|
|
1824
|
-
ownerRoot: rigRoot,
|
|
1825
|
-
deliveryHint: f.deliveryHint === "auto" ? "send_text" : f.deliveryHint,
|
|
1826
|
-
contextPackName: undefined,
|
|
1827
|
-
contextPackVersion: undefined,
|
|
1828
|
-
};
|
|
1829
|
-
}
|
|
1830
|
-
}
|
|
1831
1773
|
dedupeProjectedManagedStartupFiles(plan, files) {
|
|
1832
1774
|
const projectedManagedGuidancePaths = new Set(plan.entries
|
|
1833
1775
|
.filter((entry) => entry.category === "guidance" && entry.mergeStrategy === "managed_block")
|