@cleocode/core 2026.6.12 → 2026.6.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ops.d.ts +4 -0
- package/dist/admin/ops.d.ts.map +1 -1
- package/dist/check/index.d.ts +12 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +12 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/pr-gate.d.ts +179 -0
- package/dist/check/pr-gate.d.ts.map +1 -0
- package/dist/check/pr-gate.js +366 -0
- package/dist/check/pr-gate.js.map +1 -0
- package/dist/conduit/delivery-router.d.ts +134 -0
- package/dist/conduit/delivery-router.d.ts.map +1 -0
- package/dist/conduit/delivery-router.js +0 -0
- package/dist/conduit/delivery-router.js.map +1 -0
- package/dist/conduit/index.d.ts +5 -2
- package/dist/conduit/index.d.ts.map +1 -1
- package/dist/conduit/index.js +5 -2
- package/dist/conduit/index.js.map +1 -1
- package/dist/conduit/local-transport.d.ts +12 -0
- package/dist/conduit/local-transport.d.ts.map +1 -1
- package/dist/conduit/local-transport.js +53 -23
- package/dist/conduit/local-transport.js.map +1 -1
- package/dist/conduit/local-tui-adapter.d.ts +89 -0
- package/dist/conduit/local-tui-adapter.d.ts.map +1 -0
- package/dist/conduit/local-tui-adapter.js +225 -0
- package/dist/conduit/local-tui-adapter.js.map +1 -0
- package/dist/config/registry.d.ts +54 -0
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +94 -2
- package/dist/config/registry.js.map +1 -1
- package/dist/crypto/credentials.d.ts +37 -0
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +110 -0
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/deriver/queue-manager.d.ts +30 -2
- package/dist/deriver/queue-manager.d.ts.map +1 -1
- package/dist/deriver/queue-manager.js +54 -9
- package/dist/deriver/queue-manager.js.map +1 -1
- package/dist/dispatch/config-domain-handler.d.ts +125 -0
- package/dist/dispatch/config-domain-handler.d.ts.map +1 -0
- package/dist/dispatch/config-domain-handler.js +160 -0
- package/dist/dispatch/config-domain-handler.js.map +1 -0
- package/dist/dispatch/contracts/derive-output-contract.d.ts +86 -0
- package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -0
- package/dist/dispatch/contracts/derive-output-contract.js +347 -0
- package/dist/dispatch/contracts/derive-output-contract.js.map +1 -0
- package/dist/dispatch/contracts/ensures-schema.d.ts +77 -0
- package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -0
- package/dist/dispatch/contracts/ensures-schema.js +91 -0
- package/dist/dispatch/contracts/ensures-schema.js.map +1 -0
- package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
- package/dist/dispatch/contracts/input-contracts.js +19 -1
- package/dist/dispatch/contracts/input-contracts.js.map +1 -1
- package/dist/dispatch/contracts/output-contracts.d.ts +27 -5
- package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
- package/dist/dispatch/contracts/output-contracts.js +29 -6
- package/dist/dispatch/contracts/output-contracts.js.map +1 -1
- package/dist/docs/export-document.js +5413 -1345
- package/dist/docs/export-document.js.map +3 -3
- package/dist/gateway-client/client.d.ts +123 -0
- package/dist/gateway-client/client.d.ts.map +1 -0
- package/dist/gateway-client/client.js +93 -0
- package/dist/gateway-client/client.js.map +1 -0
- package/dist/gateway-client/generated/client/client.gen.d.ts +3 -0
- package/dist/gateway-client/generated/client/client.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/client.gen.js +217 -0
- package/dist/gateway-client/generated/client/client.gen.js.map +1 -0
- package/dist/gateway-client/generated/client/index.d.ts +11 -0
- package/dist/gateway-client/generated/client/index.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/index.js +7 -0
- package/dist/gateway-client/generated/client/index.js.map +1 -0
- package/dist/gateway-client/generated/client/types.gen.d.ts +121 -0
- package/dist/gateway-client/generated/client/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/types.gen.js +3 -0
- package/dist/gateway-client/generated/client/types.gen.js.map +1 -0
- package/dist/gateway-client/generated/client/utils.gen.d.ts +38 -0
- package/dist/gateway-client/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/utils.gen.js +229 -0
- package/dist/gateway-client/generated/client/utils.gen.js.map +1 -0
- package/dist/gateway-client/generated/client.gen.d.ts +13 -0
- package/dist/gateway-client/generated/client.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client.gen.js +4 -0
- package/dist/gateway-client/generated/client.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/auth.gen.d.ts +26 -0
- package/dist/gateway-client/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/auth.gen.js +15 -0
- package/dist/gateway-client/generated/core/auth.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts +26 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.js +58 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/params.gen.d.ts +44 -0
- package/dist/gateway-client/generated/core/params.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/params.gen.js +101 -0
- package/dist/gateway-client/generated/core/params.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.js +107 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.js +93 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.js +133 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/types.gen.d.ts +84 -0
- package/dist/gateway-client/generated/core/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/types.gen.js +3 -0
- package/dist/gateway-client/generated/core/types.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/utils.gen.d.ts +20 -0
- package/dist/gateway-client/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/utils.gen.js +88 -0
- package/dist/gateway-client/generated/core/utils.gen.js.map +1 -0
- package/dist/gateway-client/generated/index.d.ts +3 -0
- package/dist/gateway-client/generated/index.d.ts.map +1 -0
- package/dist/gateway-client/generated/index.js +3 -0
- package/dist/gateway-client/generated/index.js.map +1 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts +512 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/namespaces.gen.js +521 -0
- package/dist/gateway-client/generated/namespaces.gen.js.map +1 -0
- package/dist/gateway-client/generated/sdk.gen.d.ts +1780 -0
- package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/sdk.gen.js +3811 -0
- package/dist/gateway-client/generated/sdk.gen.js.map +1 -0
- package/dist/gateway-client/generated/types.gen.d.ts +14681 -0
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/types.gen.js +3 -0
- package/dist/gateway-client/generated/types.gen.js.map +1 -0
- package/dist/gateway-client/index.d.ts +27 -0
- package/dist/gateway-client/index.d.ts.map +1 -0
- package/dist/gateway-client/index.js +25 -0
- package/dist/gateway-client/index.js.map +1 -0
- package/dist/go/driver.d.ts +132 -7
- package/dist/go/driver.d.ts.map +1 -1
- package/dist/go/driver.js +135 -10
- package/dist/go/driver.js.map +1 -1
- package/dist/go/index.d.ts +1 -1
- package/dist/go/index.d.ts.map +1 -1
- package/dist/go/index.js +1 -1
- package/dist/go/index.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +28 -0
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +23 -11
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +29 -12
- package/dist/internal.js.map +1 -1
- package/dist/lifecycle/engine-ops.d.ts.map +1 -1
- package/dist/lifecycle/engine-ops.js +7 -4
- package/dist/lifecycle/engine-ops.js.map +1 -1
- package/dist/lifecycle/ivtr-loop.d.ts +108 -183
- package/dist/lifecycle/ivtr-loop.d.ts.map +1 -1
- package/dist/lifecycle/ivtr-loop.js +207 -522
- package/dist/lifecycle/ivtr-loop.js.map +1 -1
- package/dist/llm/auxiliary-fallback.js +1 -1
- package/dist/llm/auxiliary-fallback.js.map +1 -1
- package/dist/llm/catalog-model-resolver.d.ts +19 -0
- package/dist/llm/catalog-model-resolver.d.ts.map +1 -1
- package/dist/llm/catalog-model-resolver.js +36 -0
- package/dist/llm/catalog-model-resolver.js.map +1 -1
- package/dist/llm/catalog-resolver.d.ts +112 -0
- package/dist/llm/catalog-resolver.d.ts.map +1 -0
- package/dist/llm/catalog-resolver.js +207 -0
- package/dist/llm/catalog-resolver.js.map +1 -0
- package/dist/llm/catalog-seeder.d.ts +96 -0
- package/dist/llm/catalog-seeder.d.ts.map +1 -0
- package/dist/llm/catalog-seeder.js +189 -0
- package/dist/llm/catalog-seeder.js.map +1 -0
- package/dist/llm/cli-ops.d.ts +14 -1
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +46 -17
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/complexity-classifier.d.ts +208 -0
- package/dist/llm/complexity-classifier.d.ts.map +1 -0
- package/dist/llm/complexity-classifier.js +359 -0
- package/dist/llm/complexity-classifier.js.map +1 -0
- package/dist/llm/concrete-session.d.ts.map +1 -1
- package/dist/llm/concrete-session.js +4 -0
- package/dist/llm/concrete-session.js.map +1 -1
- package/dist/llm/credential-pool.d.ts +2 -0
- package/dist/llm/credential-pool.d.ts.map +1 -1
- package/dist/llm/credential-pool.js +5 -2
- package/dist/llm/credential-pool.js.map +1 -1
- package/dist/llm/credentials-store.d.ts +10 -14
- package/dist/llm/credentials-store.d.ts.map +1 -1
- package/dist/llm/credentials-store.js.map +1 -1
- package/dist/llm/credentials.d.ts +35 -0
- package/dist/llm/credentials.d.ts.map +1 -1
- package/dist/llm/credentials.js +49 -0
- package/dist/llm/credentials.js.map +1 -1
- package/dist/llm/entity-ops.d.ts +299 -0
- package/dist/llm/entity-ops.d.ts.map +1 -0
- package/dist/llm/entity-ops.js +441 -0
- package/dist/llm/entity-ops.js.map +1 -0
- package/dist/llm/index.d.ts +19 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +12 -0
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/llm-queue-admit.d.ts +118 -0
- package/dist/llm/llm-queue-admit.d.ts.map +1 -0
- package/dist/llm/llm-queue-admit.js +275 -0
- package/dist/llm/llm-queue-admit.js.map +1 -0
- package/dist/llm/oauth/device-code.d.ts.map +1 -1
- package/dist/llm/oauth/device-code.js +2 -8
- package/dist/llm/oauth/device-code.js.map +1 -1
- package/dist/llm/oauth/google-pkce.d.ts.map +1 -1
- package/dist/llm/oauth/google-pkce.js +2 -18
- package/dist/llm/oauth/google-pkce.js.map +1 -1
- package/dist/llm/oauth/pkce.d.ts +70 -0
- package/dist/llm/oauth/pkce.d.ts.map +1 -1
- package/dist/llm/oauth/pkce.js +106 -29
- package/dist/llm/oauth/pkce.js.map +1 -1
- package/dist/llm/onboarding/front-door.d.ts +146 -0
- package/dist/llm/onboarding/front-door.d.ts.map +1 -0
- package/dist/llm/onboarding/front-door.js +153 -0
- package/dist/llm/onboarding/front-door.js.map +1 -0
- package/dist/llm/onboarding/login-engine.d.ts +175 -0
- package/dist/llm/onboarding/login-engine.d.ts.map +1 -0
- package/dist/llm/onboarding/login-engine.js +286 -0
- package/dist/llm/onboarding/login-engine.js.map +1 -0
- package/dist/llm/pi/gondolin-loader.d.ts +241 -0
- package/dist/llm/pi/gondolin-loader.d.ts.map +1 -0
- package/dist/llm/pi/gondolin-loader.js +195 -0
- package/dist/llm/pi/gondolin-loader.js.map +1 -0
- package/dist/llm/pi/index.d.ts +28 -0
- package/dist/llm/pi/index.d.ts.map +1 -0
- package/dist/llm/pi/index.js +27 -0
- package/dist/llm/pi/index.js.map +1 -0
- package/dist/llm/pi/pi-agent-adapter.d.ts +135 -0
- package/dist/llm/pi/pi-agent-adapter.d.ts.map +1 -0
- package/dist/llm/pi/pi-agent-adapter.js +329 -0
- package/dist/llm/pi/pi-agent-adapter.js.map +1 -0
- package/dist/llm/pi/pi-errors.d.ts +161 -0
- package/dist/llm/pi/pi-errors.d.ts.map +1 -0
- package/dist/llm/pi/pi-errors.js +296 -0
- package/dist/llm/pi/pi-errors.js.map +1 -0
- package/dist/llm/pi/pi-execution-env.d.ts +286 -0
- package/dist/llm/pi/pi-execution-env.d.ts.map +1 -0
- package/dist/llm/pi/pi-execution-env.js +406 -0
- package/dist/llm/pi/pi-execution-env.js.map +1 -0
- package/dist/llm/pi/pi-gondolin-env.d.ts +250 -0
- package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -0
- package/dist/llm/pi/pi-gondolin-env.js +541 -0
- package/dist/llm/pi/pi-gondolin-env.js.map +1 -0
- package/dist/llm/pi/pi-session-storage.d.ts +154 -0
- package/dist/llm/pi/pi-session-storage.d.ts.map +1 -0
- package/dist/llm/pi/pi-session-storage.js +314 -0
- package/dist/llm/pi/pi-session-storage.js.map +1 -0
- package/dist/llm/pi/pi-stream-fn.d.ts +124 -0
- package/dist/llm/pi/pi-stream-fn.d.ts.map +1 -0
- package/dist/llm/pi/pi-stream-fn.js +504 -0
- package/dist/llm/pi/pi-stream-fn.js.map +1 -0
- package/dist/llm/pi/pi-tool-bridge.d.ts +99 -0
- package/dist/llm/pi/pi-tool-bridge.d.ts.map +1 -0
- package/dist/llm/pi/pi-tool-bridge.js +117 -0
- package/dist/llm/pi/pi-tool-bridge.js.map +1 -0
- package/dist/llm/pi/pi-types.d.ts +56 -0
- package/dist/llm/pi/pi-types.d.ts.map +1 -0
- package/dist/llm/pi/pi-types.js +16 -0
- package/dist/llm/pi/pi-types.js.map +1 -0
- package/dist/llm/pi/resolve-execution-env.d.ts +194 -0
- package/dist/llm/pi/resolve-execution-env.d.ts.map +1 -0
- package/dist/llm/pi/resolve-execution-env.js +132 -0
- package/dist/llm/pi/resolve-execution-env.js.map +1 -0
- package/dist/llm/plugin-facade.js +5472 -1331
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
- package/dist/llm/provider-registry/builtin/anthropic.js +23 -10
- package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
- package/dist/llm/provider-registry/provider-alias.d.ts +62 -0
- package/dist/llm/provider-registry/provider-alias.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-alias.js +85 -0
- package/dist/llm/provider-registry/provider-alias.js.map +1 -0
- package/dist/llm/provider-registry/provider-defs.d.ts +45 -0
- package/dist/llm/provider-registry/provider-defs.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-defs.js +145 -0
- package/dist/llm/provider-registry/provider-defs.js.map +1 -0
- package/dist/llm/provider-registry/provider-seed.d.ts +78 -0
- package/dist/llm/provider-registry/provider-seed.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-seed.js +113 -0
- package/dist/llm/provider-registry/provider-seed.js.map +1 -0
- package/dist/llm/role-executor.d.ts.map +1 -1
- package/dist/llm/role-executor.js +44 -5
- package/dist/llm/role-executor.js.map +1 -1
- package/dist/llm/role-resolver.d.ts +46 -14
- package/dist/llm/role-resolver.d.ts.map +1 -1
- package/dist/llm/role-resolver.js +185 -20
- package/dist/llm/role-resolver.js.map +1 -1
- package/dist/llm/sealed-credential.d.ts +125 -0
- package/dist/llm/sealed-credential.d.ts.map +1 -0
- package/dist/llm/sealed-credential.js +133 -0
- package/dist/llm/sealed-credential.js.map +1 -0
- package/dist/llm/session-factory.d.ts.map +1 -1
- package/dist/llm/session-factory.js +6 -2
- package/dist/llm/session-factory.js.map +1 -1
- package/dist/llm/system-key.d.ts +67 -0
- package/dist/llm/system-key.d.ts.map +1 -0
- package/dist/llm/system-key.js +87 -0
- package/dist/llm/system-key.js.map +1 -0
- package/dist/llm/system-of-use-registry.d.ts +119 -0
- package/dist/llm/system-of-use-registry.d.ts.map +1 -0
- package/dist/llm/system-of-use-registry.js +200 -0
- package/dist/llm/system-of-use-registry.js.map +1 -0
- package/dist/llm/system-resolver.d.ts +32 -10
- package/dist/llm/system-resolver.d.ts.map +1 -1
- package/dist/llm/system-resolver.js +138 -35
- package/dist/llm/system-resolver.js.map +1 -1
- package/dist/memory/brain-writer-thread.d.ts.map +1 -1
- package/dist/memory/brain-writer-thread.js +116 -11
- package/dist/memory/brain-writer-thread.js.map +1 -1
- package/dist/memory/claude-mem-migration.d.ts.map +1 -1
- package/dist/memory/claude-mem-migration.js +21 -0
- package/dist/memory/claude-mem-migration.js.map +1 -1
- package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
- package/dist/memory/graph-memory-bridge.js +32 -25
- package/dist/memory/graph-memory-bridge.js.map +1 -1
- package/dist/memory/learnings.d.ts +4 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/llm-backend-resolver.js +23 -5
- package/dist/memory/llm-backend-resolver.js.map +1 -1
- package/dist/memory/patterns.d.ts +4 -0
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +1 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
- package/dist/nexus/migrations/M-split-graph.js +60 -53
- package/dist/nexus/migrations/M-split-graph.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +20 -2
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestration/spawn.d.ts +89 -0
- package/dist/orchestration/spawn.d.ts.map +1 -1
- package/dist/orchestration/spawn.js +68 -0
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/playbooks/cantbook-profile.d.ts +96 -0
- package/dist/playbooks/cantbook-profile.d.ts.map +1 -0
- package/dist/playbooks/cantbook-profile.js +97 -0
- package/dist/playbooks/cantbook-profile.js.map +1 -0
- package/dist/playbooks/guarded-deterministic-runner.d.ts +153 -0
- package/dist/playbooks/guarded-deterministic-runner.d.ts.map +1 -0
- package/dist/playbooks/guarded-deterministic-runner.js +155 -0
- package/dist/playbooks/guarded-deterministic-runner.js.map +1 -0
- package/dist/playbooks/index.d.ts +2 -0
- package/dist/playbooks/index.d.ts.map +1 -1
- package/dist/playbooks/index.js +10 -0
- package/dist/playbooks/index.js.map +1 -1
- package/dist/playbooks/pi-runner-wiring.d.ts +75 -0
- package/dist/playbooks/pi-runner-wiring.d.ts.map +1 -0
- package/dist/playbooks/pi-runner-wiring.js +82 -0
- package/dist/playbooks/pi-runner-wiring.js.map +1 -0
- package/dist/release/engine-ops.js +2 -2
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/routing/capability-matrix.d.ts.map +1 -1
- package/dist/routing/capability-matrix.js +0 -57
- package/dist/routing/capability-matrix.js.map +1 -1
- package/dist/runtime/openapi/generate-openapi.d.ts +211 -0
- package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -0
- package/dist/runtime/openapi/generate-openapi.js +300 -0
- package/dist/runtime/openapi/generate-openapi.js.map +1 -0
- package/dist/runtime/openapi/index.d.ts +16 -0
- package/dist/runtime/openapi/index.d.ts.map +1 -0
- package/dist/runtime/openapi/index.js +16 -0
- package/dist/runtime/openapi/index.js.map +1 -0
- package/dist/selfimprove/budget.d.ts +206 -0
- package/dist/selfimprove/budget.d.ts.map +1 -0
- package/dist/selfimprove/budget.js +203 -0
- package/dist/selfimprove/budget.js.map +1 -0
- package/dist/selfimprove/dhq-adapter.d.ts +105 -0
- package/dist/selfimprove/dhq-adapter.d.ts.map +1 -0
- package/dist/selfimprove/dhq-adapter.js +95 -0
- package/dist/selfimprove/dhq-adapter.js.map +1 -0
- package/dist/selfimprove/draft-pr.d.ts +129 -0
- package/dist/selfimprove/draft-pr.d.ts.map +1 -0
- package/dist/selfimprove/draft-pr.js +158 -0
- package/dist/selfimprove/draft-pr.js.map +1 -0
- package/dist/selfimprove/envelope-diff.d.ts +162 -0
- package/dist/selfimprove/envelope-diff.d.ts.map +1 -0
- package/dist/selfimprove/envelope-diff.js +321 -0
- package/dist/selfimprove/envelope-diff.js.map +1 -0
- package/dist/selfimprove/replay.d.ts +121 -0
- package/dist/selfimprove/replay.d.ts.map +1 -0
- package/dist/selfimprove/replay.js +109 -0
- package/dist/selfimprove/replay.js.map +1 -0
- package/dist/selfimprove/run-loop.d.ts +148 -0
- package/dist/selfimprove/run-loop.d.ts.map +1 -0
- package/dist/selfimprove/run-loop.js +240 -0
- package/dist/selfimprove/run-loop.js.map +1 -0
- package/dist/selfimprove/scenario.d.ts +145 -0
- package/dist/selfimprove/scenario.d.ts.map +1 -0
- package/dist/selfimprove/scenario.js +243 -0
- package/dist/selfimprove/scenario.js.map +1 -0
- package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +32 -0
- package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +18 -0
- package/dist/sentient/daemon-entry.js +5 -0
- package/dist/sentient/daemon-entry.js.map +1 -1
- package/dist/sentient/daemon.d.ts.map +1 -1
- package/dist/sentient/daemon.js +19 -0
- package/dist/sentient/daemon.js.map +1 -1
- package/dist/sentient/hygiene-scan.d.ts.map +1 -1
- package/dist/sentient/hygiene-scan.js +14 -6
- package/dist/sentient/hygiene-scan.js.map +1 -1
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +13 -9
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/connection-session-handle.d.ts +161 -0
- package/dist/sessions/connection-session-handle.d.ts.map +1 -0
- package/dist/sessions/connection-session-handle.js +168 -0
- package/dist/sessions/connection-session-handle.js.map +1 -0
- package/dist/sessions/handoff.d.ts.map +1 -1
- package/dist/sessions/handoff.js +9 -0
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts +4 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +31 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/session-id.d.ts +34 -0
- package/dist/sessions/session-id.d.ts.map +1 -1
- package/dist/sessions/session-id.js +37 -0
- package/dist/sessions/session-id.js.map +1 -1
- package/dist/sessions/session-manifest-mirror.d.ts +115 -0
- package/dist/sessions/session-manifest-mirror.d.ts.map +1 -0
- package/dist/sessions/session-manifest-mirror.js +250 -0
- package/dist/sessions/session-manifest-mirror.js.map +1 -0
- package/dist/sessions/session-switch.d.ts.map +1 -1
- package/dist/sessions/session-switch.js +5 -2
- package/dist/sessions/session-switch.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +14 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +23 -11
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +25 -12
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/llm.d.ts +28 -1
- package/dist/setup/sections/llm.d.ts.map +1 -1
- package/dist/setup/sections/llm.js +27 -6
- package/dist/setup/sections/llm.js.map +1 -1
- package/dist/setup/sections/models-roles.d.ts +40 -0
- package/dist/setup/sections/models-roles.d.ts.map +1 -0
- package/dist/setup/sections/models-roles.js +219 -0
- package/dist/setup/sections/models-roles.js.map +1 -0
- package/dist/setup/wizard.d.ts +19 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js.map +1 -1
- package/dist/store/converters.d.ts.map +1 -1
- package/dist/store/converters.js +2 -0
- package/dist/store/converters.js.map +1 -1
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +2 -0
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +87 -47
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/pi-session-store.d.ts +151 -0
- package/dist/store/pi-session-store.d.ts.map +1 -0
- package/dist/store/pi-session-store.js +166 -0
- package/dist/store/pi-session-store.js.map +1 -0
- package/dist/store/safety-data-accessor.d.ts +1 -0
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +5 -0
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/schedule-schema.d.ts +195 -0
- package/dist/store/schedule-schema.d.ts.map +1 -0
- package/dist/store/schedule-schema.js +84 -0
- package/dist/store/schedule-schema.js.map +1 -0
- package/dist/store/schedule-store.d.ts +144 -0
- package/dist/store/schedule-store.d.ts.map +1 -0
- package/dist/store/schedule-store.js +162 -0
- package/dist/store/schedule-store.js.map +1 -0
- package/dist/store/schema/attachments.d.ts +1 -1
- package/dist/store/schema/cleo-global/accounts.d.ts +357 -0
- package/dist/store/schema/cleo-global/accounts.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/accounts.js +136 -0
- package/dist/store/schema/cleo-global/accounts.js.map +1 -0
- package/dist/store/schema/cleo-global/index.d.ts +5 -0
- package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/index.js +7 -0
- package/dist/store/schema/cleo-global/index.js.map +1 -1
- package/dist/store/schema/cleo-global/models-catalog.d.ts +359 -0
- package/dist/store/schema/cleo-global/models-catalog.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/models-catalog.js +114 -0
- package/dist/store/schema/cleo-global/models-catalog.js.map +1 -0
- package/dist/store/schema/cleo-global/providers.d.ts +279 -0
- package/dist/store/schema/cleo-global/providers.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/providers.js +94 -0
- package/dist/store/schema/cleo-global/providers.js.map +1 -0
- package/dist/store/schema/cleo-global/services.d.ts +493 -0
- package/dist/store/schema/cleo-global/services.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/services.js +200 -0
- package/dist/store/schema/cleo-global/services.js.map +1 -0
- package/dist/store/schema/cleo-global/session-manifest.d.ts +217 -0
- package/dist/store/schema/cleo-global/session-manifest.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/session-manifest.js +99 -0
- package/dist/store/schema/cleo-global/session-manifest.js.map +1 -0
- package/dist/store/schema/cleo-project/docs.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +14 -0
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
- package/dist/store/schema/memory-schema.d.ts +182 -2
- package/dist/store/schema/memory-schema.d.ts.map +1 -1
- package/dist/store/schema/memory-schema.js +111 -2
- package/dist/store/schema/memory-schema.js.map +1 -1
- package/dist/store/schema/provenance/releases.d.ts +1 -1
- package/dist/store/schema/tasks.d.ts +16 -0
- package/dist/store/schema/tasks.d.ts.map +1 -1
- package/dist/store/schema/tasks.js +10 -0
- package/dist/store/schema/tasks.js.map +1 -1
- package/dist/store/selfimprove-dhq-schema.d.ts +284 -0
- package/dist/store/selfimprove-dhq-schema.d.ts.map +1 -0
- package/dist/store/selfimprove-dhq-schema.js +128 -0
- package/dist/store/selfimprove-dhq-schema.js.map +1 -0
- package/dist/store/selfimprove-dhq-store.d.ts +175 -0
- package/dist/store/selfimprove-dhq-store.d.ts.map +1 -0
- package/dist/store/selfimprove-dhq-store.js +182 -0
- package/dist/store/selfimprove-dhq-store.js.map +1 -0
- package/dist/store/service-connections-accessor.d.ts +313 -0
- package/dist/store/service-connections-accessor.d.ts.map +1 -0
- package/dist/store/service-connections-accessor.js +464 -0
- package/dist/store/service-connections-accessor.js.map +1 -0
- package/dist/store/service-host-matcher.d.ts +70 -0
- package/dist/store/service-host-matcher.d.ts.map +1 -0
- package/dist/store/service-host-matcher.js +127 -0
- package/dist/store/service-host-matcher.js.map +1 -0
- package/dist/store/service-injection.d.ts +152 -0
- package/dist/store/service-injection.d.ts.map +1 -0
- package/dist/store/service-injection.js +225 -0
- package/dist/store/service-injection.js.map +1 -0
- package/dist/store/service-oauth.d.ts +287 -0
- package/dist/store/service-oauth.d.ts.map +1 -0
- package/dist/store/service-oauth.js +524 -0
- package/dist/store/service-oauth.js.map +1 -0
- package/dist/store/service-trust-gate.d.ts +164 -0
- package/dist/store/service-trust-gate.d.ts.map +1 -0
- package/dist/store/service-trust-gate.js +122 -0
- package/dist/store/service-trust-gate.js.map +1 -0
- package/dist/store/session-store.d.ts +52 -13
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +71 -13
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +7 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +1 -0
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +5 -0
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +36 -4
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/writer-lease-schema.d.ts +392 -0
- package/dist/store/writer-lease-schema.d.ts.map +1 -0
- package/dist/store/writer-lease-schema.js +142 -0
- package/dist/store/writer-lease-schema.js.map +1 -0
- package/dist/store/writer-lease.d.ts +368 -0
- package/dist/store/writer-lease.d.ts.map +1 -0
- package/dist/store/writer-lease.js +1002 -0
- package/dist/store/writer-lease.js.map +1 -0
- package/dist/tasks/agent-lifecycle-lane.d.ts +175 -0
- package/dist/tasks/agent-lifecycle-lane.d.ts.map +1 -0
- package/dist/tasks/agent-lifecycle-lane.js +176 -0
- package/dist/tasks/agent-lifecycle-lane.js.map +1 -0
- package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
- package/dist/tasks/backfill-child-projections.js +14 -9
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/complete.d.ts +17 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +60 -20
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/depends-waiver-audit.d.ts +52 -0
- package/dist/tasks/depends-waiver-audit.d.ts.map +1 -0
- package/dist/tasks/depends-waiver-audit.js +36 -0
- package/dist/tasks/depends-waiver-audit.js.map +1 -0
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +14 -7
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap.d.ts +36 -2
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +44 -2
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -0
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/ops.d.ts +3 -0
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.d.ts +1 -1
- package/dist/tasks/task-ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.js +3 -1
- package/dist/tasks/task-ops.js.map +1 -1
- package/dist/tasks/task-reparent.d.ts +90 -0
- package/dist/tasks/task-reparent.d.ts.map +1 -1
- package/dist/tasks/task-reparent.js +171 -0
- package/dist/tasks/task-reparent.js.map +1 -1
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +10 -4
- package/dist/telemetry/index.js.map +1 -1
- package/dist/tools/agent-registry.d.ts +250 -0
- package/dist/tools/agent-registry.d.ts.map +1 -0
- package/dist/tools/agent-registry.js +292 -0
- package/dist/tools/agent-registry.js.map +1 -0
- package/dist/tools/agent-tool-families.d.ts +107 -0
- package/dist/tools/agent-tool-families.d.ts.map +1 -0
- package/dist/tools/agent-tool-families.js +527 -0
- package/dist/tools/agent-tool-families.js.map +1 -0
- package/dist/tools/browser-driver.d.ts +183 -0
- package/dist/tools/browser-driver.d.ts.map +1 -0
- package/dist/tools/browser-driver.js +242 -0
- package/dist/tools/browser-driver.js.map +1 -0
- package/dist/tools/builtin-agent-tools.d.ts +36 -0
- package/dist/tools/builtin-agent-tools.d.ts.map +1 -0
- package/dist/tools/builtin-agent-tools.js +191 -0
- package/dist/tools/builtin-agent-tools.js.map +1 -0
- package/dist/tools/dispatch.d.ts +370 -0
- package/dist/tools/dispatch.d.ts.map +1 -0
- package/dist/tools/dispatch.js +505 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/env-scrub.d.ts +93 -0
- package/dist/tools/env-scrub.d.ts.map +1 -0
- package/dist/tools/env-scrub.js +176 -0
- package/dist/tools/env-scrub.js.map +1 -0
- package/dist/tools/exec-code-agent-tool.d.ts +179 -0
- package/dist/tools/exec-code-agent-tool.d.ts.map +1 -0
- package/dist/tools/exec-code-agent-tool.js +239 -0
- package/dist/tools/exec-code-agent-tool.js.map +1 -0
- package/dist/tools/fs.d.ts +30 -0
- package/dist/tools/fs.d.ts.map +1 -1
- package/dist/tools/fs.js +55 -2
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/guard.d.ts +15 -0
- package/dist/tools/guard.d.ts.map +1 -1
- package/dist/tools/guard.js +49 -12
- package/dist/tools/guard.js.map +1 -1
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp-agent-tool.d.ts +189 -0
- package/dist/tools/mcp-agent-tool.d.ts.map +1 -0
- package/dist/tools/mcp-agent-tool.js +243 -0
- package/dist/tools/mcp-agent-tool.js.map +1 -0
- package/dist/tools/media-agent-tools.d.ts +105 -0
- package/dist/tools/media-agent-tools.d.ts.map +1 -0
- package/dist/tools/media-agent-tools.js +255 -0
- package/dist/tools/media-agent-tools.js.map +1 -0
- package/dist/tools/memory-agent-tools.d.ts +99 -0
- package/dist/tools/memory-agent-tools.d.ts.map +1 -0
- package/dist/tools/memory-agent-tools.js +190 -0
- package/dist/tools/memory-agent-tools.js.map +1 -0
- package/dist/tools/pty.d.ts +45 -0
- package/dist/tools/pty.d.ts.map +1 -0
- package/dist/tools/pty.js +166 -0
- package/dist/tools/pty.js.map +1 -0
- package/dist/tools/schedule-agent-tools.d.ts +151 -0
- package/dist/tools/schedule-agent-tools.d.ts.map +1 -0
- package/dist/tools/schedule-agent-tools.js +238 -0
- package/dist/tools/schedule-agent-tools.js.map +1 -0
- package/dist/tools/schema-gen.d.ts +57 -0
- package/dist/tools/schema-gen.d.ts.map +1 -0
- package/dist/tools/schema-gen.js +52 -0
- package/dist/tools/schema-gen.js.map +1 -0
- package/dist/tools/shell.d.ts +12 -0
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +14 -1
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/skill-agent-tool.d.ts +108 -0
- package/dist/tools/skill-agent-tool.d.ts.map +1 -0
- package/dist/tools/skill-agent-tool.js +135 -0
- package/dist/tools/skill-agent-tool.js.map +1 -0
- package/dist/tools/web-agent-tools.d.ts +72 -0
- package/dist/tools/web-agent-tools.d.ts.map +1 -0
- package/dist/tools/web-agent-tools.js +393 -0
- package/dist/tools/web-agent-tools.js.map +1 -0
- package/dist/tools/web-search-backends.d.ts +156 -0
- package/dist/tools/web-search-backends.d.ts.map +1 -0
- package/dist/tools/web-search-backends.js +290 -0
- package/dist/tools/web-search-backends.js.map +1 -0
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +17 -1
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/ops.d.ts +1 -15
- package/dist/validation/ops.d.ts.map +1 -1
- package/dist/validation/ops.js +0 -20
- package/dist/validation/ops.js.map +1 -1
- package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -0
- package/migrations/drizzle-cleo-global/20260607000000_t11891-writer-leases/migration.sql +55 -0
- package/migrations/drizzle-cleo-global/20260607010000_t11639-session-manifest/migration.sql +43 -0
- package/migrations/drizzle-cleo-global/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
- package/migrations/drizzle-cleo-global/20260608010000_t11709-accounts-credential-pool/migration.sql +72 -0
- package/migrations/drizzle-cleo-global/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
- package/migrations/drizzle-cleo-global/20260609000000_t11937-service-vault/migration.sql +93 -0
- package/migrations/drizzle-cleo-global/20260609010000_t11733-models-catalog/migration.sql +65 -0
- package/migrations/drizzle-cleo-global/20260609020000_t11703-providers/migration.sql +52 -0
- package/migrations/drizzle-cleo-global/20260610000000_t11962-schedules/migration.sql +48 -0
- package/migrations/drizzle-cleo-project/20260607000000_t11891-writer-leases/migration.sql +55 -0
- package/migrations/drizzle-cleo-project/20260607010000_t11639-session-parent/migration.sql +22 -0
- package/migrations/drizzle-cleo-project/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
- package/migrations/drizzle-cleo-project/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
- package/migrations/drizzle-cleo-project/20260610000000_t11962-schedules/migration.sql +48 -0
- package/package.json +26 -14
- package/dist/lifecycle/chain-composition.d.ts +0 -30
- package/dist/lifecycle/chain-composition.d.ts.map +0 -1
- package/dist/lifecycle/chain-composition.js +0 -152
- package/dist/lifecycle/chain-composition.js.map +0 -1
- package/dist/lifecycle/chain-store.d.ts +0 -70
- package/dist/lifecycle/chain-store.d.ts.map +0 -1
- package/dist/lifecycle/chain-store.js +0 -246
- package/dist/lifecycle/chain-store.js.map +0 -1
- package/dist/lifecycle/default-chain.d.ts +0 -39
- package/dist/lifecycle/default-chain.d.ts.map +0 -1
- package/dist/lifecycle/default-chain.js +0 -176
- package/dist/lifecycle/default-chain.js.map +0 -1
- package/dist/lifecycle/tessera-engine.d.ts +0 -48
- package/dist/lifecycle/tessera-engine.d.ts.map +0 -1
- package/dist/lifecycle/tessera-engine.js +0 -249
- package/dist/lifecycle/tessera-engine.js.map +0 -1
- package/dist/validation/chain-validation.d.ts +0 -43
- package/dist/validation/chain-validation.d.ts.map +0 -1
- package/dist/validation/chain-validation.js +0 -146
- package/dist/validation/chain-validation.js.map +0 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cantbook stage LLM-profile resolution (T11759 · M4 cantbook done-gate).
|
|
3
|
+
*
|
|
4
|
+
* A `.cantbook` agentic stage can pin its LLM via `profile:` (a named
|
|
5
|
+
* `llm.profiles` entry), or the inline `model:` / `provider:` escape hatch
|
|
6
|
+
* ({@link PlaybookAgenticNode}). This module is the single seam the two
|
|
7
|
+
* production cantbook dispatchers (`buildDefaultDispatcher` in `playbook.ts` and
|
|
8
|
+
* `buildGoDispatcher` in `go-ivtr-runner.ts`) call to turn that declaration into
|
|
9
|
+
* a RESOLUTION through the E9 chokepoint.
|
|
10
|
+
*
|
|
11
|
+
* ## Gate-13 compliance (no transport construction here)
|
|
12
|
+
*
|
|
13
|
+
* This helper ONLY calls {@link resolveLLMForSystem} — the single E9 resolution
|
|
14
|
+
* chokepoint. It NEVER constructs a transport, an AI-SDK client, or reads a
|
|
15
|
+
* credential off the wire; the returned {@link ResolvedLLMForSystem} carries the
|
|
16
|
+
* provider/model/sealed-credential METADATA only. The Pi runner / model-runner
|
|
17
|
+
* downstream is the sole place a client is built. Passing a resolution hint (the
|
|
18
|
+
* profile + the cantbook system key) is exactly the Gate-13-allowed seam.
|
|
19
|
+
*
|
|
20
|
+
* ## How the cantbook node keys the resolver
|
|
21
|
+
*
|
|
22
|
+
* The node identity is encoded as the OPEN-axis system-of-use key
|
|
23
|
+
* `cantbook:<playbook>#<nodeId>` (via {@link formatSystemKey}), and threaded as
|
|
24
|
+
* `resolveLLMForSystem`'s `systemKey` option so it drives the
|
|
25
|
+
* `llm.systems[key]` granular-override tier + audit identity. The flat `system`
|
|
26
|
+
* argument stays the resolvable `'task-executor'` background label (the same one
|
|
27
|
+
* the Pi runner uses), and the node's `profile:` flows through `opts.profile` as
|
|
28
|
+
* the highest-priority pin. When the node declares neither `profile` nor
|
|
29
|
+
* `model`/`provider`, callers should skip this helper — the resolution is
|
|
30
|
+
* unchanged.
|
|
31
|
+
*
|
|
32
|
+
* @module playbooks/cantbook-profile
|
|
33
|
+
* @task T11759
|
|
34
|
+
* @epic T10403
|
|
35
|
+
*/
|
|
36
|
+
import { type ResolvedLLMForSystem } from '../llm/system-resolver.js';
|
|
37
|
+
/** The per-stage LLM pin a `.cantbook` agentic node may declare (T11759). */
|
|
38
|
+
export interface CantbookProfilePin {
|
|
39
|
+
/** Named `llm.profiles` profile to pin (highest priority when resolvable). */
|
|
40
|
+
readonly profile?: string;
|
|
41
|
+
/** Inline model id escape hatch (resolution hint only — no transport built). */
|
|
42
|
+
readonly model?: string;
|
|
43
|
+
/** Inline provider transport escape hatch (resolution hint only). */
|
|
44
|
+
readonly provider?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Inputs to {@link resolveCantbookNodeProfile}. */
|
|
47
|
+
export interface ResolveCantbookNodeProfileInput {
|
|
48
|
+
/** The playbook (`.cantbook`) name — the first segment of the node identity. */
|
|
49
|
+
readonly playbookName: string;
|
|
50
|
+
/** The agentic node id — the second segment of the node identity. */
|
|
51
|
+
readonly nodeId: string;
|
|
52
|
+
/** The node's declared LLM pin (`profile` / `model` / `provider`). */
|
|
53
|
+
readonly pin: CantbookProfilePin;
|
|
54
|
+
/** Project root for config + credential resolution (defaults to cwd inside E9). */
|
|
55
|
+
readonly projectRoot?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build the canonical OPEN-axis system-of-use key for a cantbook node
|
|
59
|
+
* (`cantbook:<playbook>#<nodeId>`).
|
|
60
|
+
*
|
|
61
|
+
* Exported so the dispatchers + tests assert the exact key the resolver is
|
|
62
|
+
* threaded with WITHOUT re-implementing the encoding.
|
|
63
|
+
*
|
|
64
|
+
* @param playbookName - The `.cantbook` name.
|
|
65
|
+
* @param nodeId - The agentic node id.
|
|
66
|
+
* @returns The encoded `cantbook:<playbook>#<nodeId>` key.
|
|
67
|
+
* @task T11759
|
|
68
|
+
*/
|
|
69
|
+
export declare function cantbookNodeSystemKey(playbookName: string, nodeId: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* `true` when a node's pin actually declares an LLM override (so the dispatcher
|
|
72
|
+
* should resolve via {@link resolveCantbookNodeProfile}); `false` when it is the
|
|
73
|
+
* empty/unset pin and the default resolution path applies unchanged.
|
|
74
|
+
*
|
|
75
|
+
* @param pin - The node's declared pin (may be all-undefined).
|
|
76
|
+
* @returns Whether any of `profile` / `model` / `provider` is set.
|
|
77
|
+
* @task T11759
|
|
78
|
+
*/
|
|
79
|
+
export declare function hasCantbookProfilePin(pin: CantbookProfilePin): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Resolve a cantbook stage's pinned LLM through the E9 chokepoint
|
|
82
|
+
* ({@link resolveLLMForSystem}).
|
|
83
|
+
*
|
|
84
|
+
* Threads the node identity as the `cantbook:<playbook>#<nodeId>` system key and
|
|
85
|
+
* the node's `profile:` as the highest-priority pin. Inline `model:` / `provider:`
|
|
86
|
+
* are NOT consumed by the resolver tiers directly (those are not config keys) —
|
|
87
|
+
* they ride back on the returned envelope as the caller-supplied hint so the
|
|
88
|
+
* dispatcher can surface them to the spawn / model-runner boundary. This function
|
|
89
|
+
* NEVER constructs a transport (Gate-13): it only resolves metadata.
|
|
90
|
+
*
|
|
91
|
+
* @param input - Playbook name + node id + the declared pin + project root.
|
|
92
|
+
* @returns The {@link ResolvedLLMForSystem} envelope (metadata only; never throws).
|
|
93
|
+
* @task T11759
|
|
94
|
+
*/
|
|
95
|
+
export declare function resolveCantbookNodeProfile(input: ResolveCantbookNodeProfileInput): Promise<ResolvedLLMForSystem>;
|
|
96
|
+
//# sourceMappingURL=cantbook-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cantbook-profile.d.ts","sourceRoot":"","sources":["../../src/playbooks/cantbook-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAE,KAAK,oBAAoB,EAAuB,MAAM,2BAA2B,CAAC;AAS3F,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,oDAAoD;AACpD,MAAM,WAAW,+BAA+B;IAC9C,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAQ/B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cantbook stage LLM-profile resolution (T11759 · M4 cantbook done-gate).
|
|
3
|
+
*
|
|
4
|
+
* A `.cantbook` agentic stage can pin its LLM via `profile:` (a named
|
|
5
|
+
* `llm.profiles` entry), or the inline `model:` / `provider:` escape hatch
|
|
6
|
+
* ({@link PlaybookAgenticNode}). This module is the single seam the two
|
|
7
|
+
* production cantbook dispatchers (`buildDefaultDispatcher` in `playbook.ts` and
|
|
8
|
+
* `buildGoDispatcher` in `go-ivtr-runner.ts`) call to turn that declaration into
|
|
9
|
+
* a RESOLUTION through the E9 chokepoint.
|
|
10
|
+
*
|
|
11
|
+
* ## Gate-13 compliance (no transport construction here)
|
|
12
|
+
*
|
|
13
|
+
* This helper ONLY calls {@link resolveLLMForSystem} — the single E9 resolution
|
|
14
|
+
* chokepoint. It NEVER constructs a transport, an AI-SDK client, or reads a
|
|
15
|
+
* credential off the wire; the returned {@link ResolvedLLMForSystem} carries the
|
|
16
|
+
* provider/model/sealed-credential METADATA only. The Pi runner / model-runner
|
|
17
|
+
* downstream is the sole place a client is built. Passing a resolution hint (the
|
|
18
|
+
* profile + the cantbook system key) is exactly the Gate-13-allowed seam.
|
|
19
|
+
*
|
|
20
|
+
* ## How the cantbook node keys the resolver
|
|
21
|
+
*
|
|
22
|
+
* The node identity is encoded as the OPEN-axis system-of-use key
|
|
23
|
+
* `cantbook:<playbook>#<nodeId>` (via {@link formatSystemKey}), and threaded as
|
|
24
|
+
* `resolveLLMForSystem`'s `systemKey` option so it drives the
|
|
25
|
+
* `llm.systems[key]` granular-override tier + audit identity. The flat `system`
|
|
26
|
+
* argument stays the resolvable `'task-executor'` background label (the same one
|
|
27
|
+
* the Pi runner uses), and the node's `profile:` flows through `opts.profile` as
|
|
28
|
+
* the highest-priority pin. When the node declares neither `profile` nor
|
|
29
|
+
* `model`/`provider`, callers should skip this helper — the resolution is
|
|
30
|
+
* unchanged.
|
|
31
|
+
*
|
|
32
|
+
* @module playbooks/cantbook-profile
|
|
33
|
+
* @task T11759
|
|
34
|
+
* @epic T10403
|
|
35
|
+
*/
|
|
36
|
+
import { formatSystemKey } from '../llm/system-key.js';
|
|
37
|
+
import { resolveLLMForSystem } from '../llm/system-resolver.js';
|
|
38
|
+
/**
|
|
39
|
+
* The flat background {@link SystemOfUseLabel} a cantbook stage resolves its LLM
|
|
40
|
+
* through. Mirrors the Pi runner's default (`'task-executor'`) so a stage with
|
|
41
|
+
* NO profile pin resolves to the same background lane the runner already uses.
|
|
42
|
+
*/
|
|
43
|
+
const CANTBOOK_BASE_SYSTEM = 'task-executor';
|
|
44
|
+
/**
|
|
45
|
+
* Build the canonical OPEN-axis system-of-use key for a cantbook node
|
|
46
|
+
* (`cantbook:<playbook>#<nodeId>`).
|
|
47
|
+
*
|
|
48
|
+
* Exported so the dispatchers + tests assert the exact key the resolver is
|
|
49
|
+
* threaded with WITHOUT re-implementing the encoding.
|
|
50
|
+
*
|
|
51
|
+
* @param playbookName - The `.cantbook` name.
|
|
52
|
+
* @param nodeId - The agentic node id.
|
|
53
|
+
* @returns The encoded `cantbook:<playbook>#<nodeId>` key.
|
|
54
|
+
* @task T11759
|
|
55
|
+
*/
|
|
56
|
+
export function cantbookNodeSystemKey(playbookName, nodeId) {
|
|
57
|
+
return formatSystemKey({ kind: 'cantbook-node', id: `${playbookName}#${nodeId}` });
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* `true` when a node's pin actually declares an LLM override (so the dispatcher
|
|
61
|
+
* should resolve via {@link resolveCantbookNodeProfile}); `false` when it is the
|
|
62
|
+
* empty/unset pin and the default resolution path applies unchanged.
|
|
63
|
+
*
|
|
64
|
+
* @param pin - The node's declared pin (may be all-undefined).
|
|
65
|
+
* @returns Whether any of `profile` / `model` / `provider` is set.
|
|
66
|
+
* @task T11759
|
|
67
|
+
*/
|
|
68
|
+
export function hasCantbookProfilePin(pin) {
|
|
69
|
+
return pin.profile !== undefined || pin.model !== undefined || pin.provider !== undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve a cantbook stage's pinned LLM through the E9 chokepoint
|
|
73
|
+
* ({@link resolveLLMForSystem}).
|
|
74
|
+
*
|
|
75
|
+
* Threads the node identity as the `cantbook:<playbook>#<nodeId>` system key and
|
|
76
|
+
* the node's `profile:` as the highest-priority pin. Inline `model:` / `provider:`
|
|
77
|
+
* are NOT consumed by the resolver tiers directly (those are not config keys) —
|
|
78
|
+
* they ride back on the returned envelope as the caller-supplied hint so the
|
|
79
|
+
* dispatcher can surface them to the spawn / model-runner boundary. This function
|
|
80
|
+
* NEVER constructs a transport (Gate-13): it only resolves metadata.
|
|
81
|
+
*
|
|
82
|
+
* @param input - Playbook name + node id + the declared pin + project root.
|
|
83
|
+
* @returns The {@link ResolvedLLMForSystem} envelope (metadata only; never throws).
|
|
84
|
+
* @task T11759
|
|
85
|
+
*/
|
|
86
|
+
export async function resolveCantbookNodeProfile(input) {
|
|
87
|
+
const systemKey = cantbookNodeSystemKey(input.playbookName, input.nodeId);
|
|
88
|
+
const opts = { systemKey };
|
|
89
|
+
if (input.projectRoot !== undefined)
|
|
90
|
+
opts.projectRoot = input.projectRoot;
|
|
91
|
+
if (input.pin.profile !== undefined)
|
|
92
|
+
opts.profile = input.pin.profile;
|
|
93
|
+
// `resolveLLMForSystem` is the single E9 chokepoint — it owns config tiers,
|
|
94
|
+
// CredentialPool binding, and the sealed-handle. No client is built here.
|
|
95
|
+
return resolveLLMForSystem(CANTBOOK_BASE_SYSTEM, opts);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=cantbook-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cantbook-profile.js","sourceRoot":"","sources":["../../src/playbooks/cantbook-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAA6B,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE3F;;;;GAIG;AACH,MAAM,oBAAoB,GAAqB,eAAe,CAAC;AAwB/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB,EAAE,MAAc;IACxE,OAAO,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,YAAY,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAuB;IAC3D,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAsC;IAEtC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAA+B,EAAE,SAAS,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1E,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,OAAO,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarded deterministic-node runner — routes EVERY `deterministic` (shell/tool)
|
|
3
|
+
* dispatch in `executePlaybook` through the `guard.ts` deny-first chokepoint
|
|
4
|
+
* (T11802 · M4 cantbook done-gate).
|
|
5
|
+
*
|
|
6
|
+
* ## The gap this closes (AC1)
|
|
7
|
+
*
|
|
8
|
+
* The playbook runtime (`@cleocode/playbooks/runtime`) executes `deterministic`
|
|
9
|
+
* nodes through an INJECTED `DeterministicRunner`. When no runner is injected it
|
|
10
|
+
* degrades to `AgentDispatcher.dispatch` with a synthetic `deterministic:<cmd>`
|
|
11
|
+
* agent id — a path that NEVER touches the `guard.ts` shell denylist. So a
|
|
12
|
+
* `.cantbook` shell step could spawn a subprocess that bypasses the single
|
|
13
|
+
* policy point.
|
|
14
|
+
*
|
|
15
|
+
* This factory builds the CANONICAL production `DeterministicRunner`: every
|
|
16
|
+
* command is funnelled through the injected {@link GuardedToolSurface}'s
|
|
17
|
+
* `executeShell` — the SAME deny-first command policy + env-scrub chokepoint
|
|
18
|
+
* (`createToolGuard`) that in-process skill nodes already use (T11477). There is
|
|
19
|
+
* NO second subprocess code path: shell steps and skill→tool calls share ONE
|
|
20
|
+
* guard. The runtime stays a pure state machine (it imports no `child_process`);
|
|
21
|
+
* the guard owns the spawn (AC1).
|
|
22
|
+
*
|
|
23
|
+
* ## Deny semantics (AC3)
|
|
24
|
+
*
|
|
25
|
+
* The guard's `executeShell` checks the command basename against the policy
|
|
26
|
+
* denylist BEFORE any process is spawned. In `mode: 'enforce'` a denied command
|
|
27
|
+
* rejects with {@link GuardDeniedError} (`E_TOOL_GUARD_DENIED`); this runner
|
|
28
|
+
* catches that rejection and maps it to a contract-clean
|
|
29
|
+
* `{ status: 'failure', error }` envelope so the runtime's retry / escalation
|
|
30
|
+
* semantics stay intact (the runtime contract is non-throwing). In `mode: 'warn'`
|
|
31
|
+
* the guard logs-and-proceeds — the denylist is advisory — so a guarded runner
|
|
32
|
+
* built for enforcement MUST be constructed from an `enforce`-mode guard.
|
|
33
|
+
*
|
|
34
|
+
* ## Why a factory over a guard (DIP)
|
|
35
|
+
*
|
|
36
|
+
* The runner depends on the abstract {@link GuardedToolSurface} (the contract
|
|
37
|
+
* shape of `createToolGuard()`), NOT on the concrete guard — so the policy point
|
|
38
|
+
* is injected, exactly mirroring {@link createSkillNodeExecutor}. `core` builds
|
|
39
|
+
* the guard once (`createToolGuard({ allowedRoots, deniedCommands, mode })`) and
|
|
40
|
+
* hands the same surface to BOTH the skill executor and this deterministic
|
|
41
|
+
* runner.
|
|
42
|
+
*
|
|
43
|
+
* @epic T11391
|
|
44
|
+
* @task T11802
|
|
45
|
+
* @saga T11387
|
|
46
|
+
* @see ../tools/guard.ts — the deny-first chokepoint
|
|
47
|
+
* @see ./skill-node-executor.ts — the sibling in-process skill path
|
|
48
|
+
*/
|
|
49
|
+
import type { GuardedToolSurface } from '@cleocode/contracts/tools/skill-executor';
|
|
50
|
+
/**
|
|
51
|
+
* Canonical deny-list of destructive command basenames a `.cantbook`
|
|
52
|
+
* `deterministic` node may NOT run (T11802 · AC3). This is the SSoT the
|
|
53
|
+
* production dispatcher hands to `createToolGuard({ deniedCommands })` so the
|
|
54
|
+
* SAME chokepoint that guards in-process skill→tool calls also rejects a
|
|
55
|
+
* dangerous shell step. Matched against the command's last path segment by the
|
|
56
|
+
* guard, so `/bin/rm` and `rm` are both denied.
|
|
57
|
+
*
|
|
58
|
+
* Intentionally conservative — destructive disk / process / system operations a
|
|
59
|
+
* planning playbook should never invoke. Extend deliberately; every addition is
|
|
60
|
+
* a policy decision.
|
|
61
|
+
*/
|
|
62
|
+
export declare const DEFAULT_DETERMINISTIC_DENIED_COMMANDS: readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* Minimal projection of the playbook runtime's `DeterministicRunInput` that the
|
|
65
|
+
* guarded runner consumes. Declared structurally so `@cleocode/core` does NOT
|
|
66
|
+
* import `@cleocode/playbooks` (preserves the directed layering
|
|
67
|
+
* `contracts → core → playbooks`). The runtime's input is structurally
|
|
68
|
+
* assignable to this shape.
|
|
69
|
+
*/
|
|
70
|
+
export interface GuardedDeterministicInput {
|
|
71
|
+
/** Playbook run identifier (FK into `playbook_runs.run_id`). */
|
|
72
|
+
readonly runId: string;
|
|
73
|
+
/** Node identifier within the run graph. */
|
|
74
|
+
readonly nodeId: string;
|
|
75
|
+
/** Executable to run (NOT a shell string — args are passed separately). */
|
|
76
|
+
readonly command: string;
|
|
77
|
+
/** Arguments passed to {@link GuardedDeterministicInput.command}. */
|
|
78
|
+
readonly args: readonly string[];
|
|
79
|
+
/** Working directory. Defaults to `process.cwd()` in the shell primitive. */
|
|
80
|
+
readonly cwd?: string;
|
|
81
|
+
/** Extra environment variables merged (and scrubbed) over the child env. */
|
|
82
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
83
|
+
/** Hard timeout in milliseconds; the process is killed when exceeded. */
|
|
84
|
+
readonly timeout_ms?: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Terminal output of a guarded deterministic execution. Structurally identical
|
|
88
|
+
* to the runtime's `DeterministicRunResult` so this runner is assignable to the
|
|
89
|
+
* runtime's `DeterministicRunner` interface without a wrapper.
|
|
90
|
+
*/
|
|
91
|
+
export interface GuardedDeterministicResult {
|
|
92
|
+
status: 'success' | 'failure';
|
|
93
|
+
/** Key-value pairs merged into the run context on success. */
|
|
94
|
+
output: Record<string, unknown>;
|
|
95
|
+
/** Human-readable failure reason on `status === 'failure'`. */
|
|
96
|
+
error?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Structural match for the playbook runtime's `DeterministicRunner` interface.
|
|
100
|
+
* Re-declared here (not imported) for the same directed-layering reason as
|
|
101
|
+
* {@link GuardedDeterministicInput}.
|
|
102
|
+
*/
|
|
103
|
+
export interface GuardedDeterministicRunner {
|
|
104
|
+
run(input: GuardedDeterministicInput): Promise<GuardedDeterministicResult>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Options accepted by {@link createGuardedDeterministicRunner}.
|
|
108
|
+
*
|
|
109
|
+
* @task T11802
|
|
110
|
+
*/
|
|
111
|
+
export interface GuardedDeterministicRunnerOptions {
|
|
112
|
+
/**
|
|
113
|
+
* The deny-first guarded tool surface every deterministic command is routed
|
|
114
|
+
* through. Typically the SAME `createToolGuard({ allowedRoots, deniedCommands,
|
|
115
|
+
* mode })` result handed to the in-process skill executor — so shell steps and
|
|
116
|
+
* skill→tool calls share ONE policy point. Injected (DIP) — the runner never
|
|
117
|
+
* constructs its own guard.
|
|
118
|
+
*/
|
|
119
|
+
readonly tools: GuardedToolSurface;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build a {@link GuardedDeterministicRunner} that routes EVERY `deterministic`
|
|
123
|
+
* node command through the injected guard's `executeShell` (T11802 · AC1).
|
|
124
|
+
*
|
|
125
|
+
* Inject the result as `deterministicRunner` when calling `executePlaybook`:
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { createToolGuard } from '@cleocode/core/internal';
|
|
130
|
+
*
|
|
131
|
+
* const tools = createToolGuard({
|
|
132
|
+
* allowedRoots: [projectRoot],
|
|
133
|
+
* deniedCommands: ['rm', 'shutdown', 'mkfs'],
|
|
134
|
+
* mode: 'enforce',
|
|
135
|
+
* });
|
|
136
|
+
* await executePlaybook({
|
|
137
|
+
* db, playbook, playbookHash, initialContext, dispatcher,
|
|
138
|
+
* deterministicRunner: createGuardedDeterministicRunner({ tools }),
|
|
139
|
+
* });
|
|
140
|
+
* // A `deterministic` node running `rm` → guard rejects → { status: 'failure' }
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* The returned runner NEVER throws — a guard `enforce`-mode rejection
|
|
144
|
+
* ({@link import('../tools/guard.js').GuardDeniedError}) is caught and mapped to
|
|
145
|
+
* a `{ status: 'failure', error }` envelope so the runtime's retry / escalation
|
|
146
|
+
* stays intact (the runtime's `DeterministicRunner` contract is non-throwing).
|
|
147
|
+
*
|
|
148
|
+
* @param opts - The injected guarded tool surface.
|
|
149
|
+
* @returns A runner assignable to the runtime's `DeterministicRunner`.
|
|
150
|
+
* @task T11802
|
|
151
|
+
*/
|
|
152
|
+
export declare function createGuardedDeterministicRunner(opts: GuardedDeterministicRunnerOptions): GuardedDeterministicRunner;
|
|
153
|
+
//# sourceMappingURL=guarded-deterministic-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guarded-deterministic-runner.d.ts","sourceRoot":"","sources":["../../src/playbooks/guarded-deterministic-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qCAAqC,EAAE,SAAS,MAAM,EAYjE,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC5E;AAED;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,iCAAiC,GACtC,0BAA0B,CAiD5B"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarded deterministic-node runner — routes EVERY `deterministic` (shell/tool)
|
|
3
|
+
* dispatch in `executePlaybook` through the `guard.ts` deny-first chokepoint
|
|
4
|
+
* (T11802 · M4 cantbook done-gate).
|
|
5
|
+
*
|
|
6
|
+
* ## The gap this closes (AC1)
|
|
7
|
+
*
|
|
8
|
+
* The playbook runtime (`@cleocode/playbooks/runtime`) executes `deterministic`
|
|
9
|
+
* nodes through an INJECTED `DeterministicRunner`. When no runner is injected it
|
|
10
|
+
* degrades to `AgentDispatcher.dispatch` with a synthetic `deterministic:<cmd>`
|
|
11
|
+
* agent id — a path that NEVER touches the `guard.ts` shell denylist. So a
|
|
12
|
+
* `.cantbook` shell step could spawn a subprocess that bypasses the single
|
|
13
|
+
* policy point.
|
|
14
|
+
*
|
|
15
|
+
* This factory builds the CANONICAL production `DeterministicRunner`: every
|
|
16
|
+
* command is funnelled through the injected {@link GuardedToolSurface}'s
|
|
17
|
+
* `executeShell` — the SAME deny-first command policy + env-scrub chokepoint
|
|
18
|
+
* (`createToolGuard`) that in-process skill nodes already use (T11477). There is
|
|
19
|
+
* NO second subprocess code path: shell steps and skill→tool calls share ONE
|
|
20
|
+
* guard. The runtime stays a pure state machine (it imports no `child_process`);
|
|
21
|
+
* the guard owns the spawn (AC1).
|
|
22
|
+
*
|
|
23
|
+
* ## Deny semantics (AC3)
|
|
24
|
+
*
|
|
25
|
+
* The guard's `executeShell` checks the command basename against the policy
|
|
26
|
+
* denylist BEFORE any process is spawned. In `mode: 'enforce'` a denied command
|
|
27
|
+
* rejects with {@link GuardDeniedError} (`E_TOOL_GUARD_DENIED`); this runner
|
|
28
|
+
* catches that rejection and maps it to a contract-clean
|
|
29
|
+
* `{ status: 'failure', error }` envelope so the runtime's retry / escalation
|
|
30
|
+
* semantics stay intact (the runtime contract is non-throwing). In `mode: 'warn'`
|
|
31
|
+
* the guard logs-and-proceeds — the denylist is advisory — so a guarded runner
|
|
32
|
+
* built for enforcement MUST be constructed from an `enforce`-mode guard.
|
|
33
|
+
*
|
|
34
|
+
* ## Why a factory over a guard (DIP)
|
|
35
|
+
*
|
|
36
|
+
* The runner depends on the abstract {@link GuardedToolSurface} (the contract
|
|
37
|
+
* shape of `createToolGuard()`), NOT on the concrete guard — so the policy point
|
|
38
|
+
* is injected, exactly mirroring {@link createSkillNodeExecutor}. `core` builds
|
|
39
|
+
* the guard once (`createToolGuard({ allowedRoots, deniedCommands, mode })`) and
|
|
40
|
+
* hands the same surface to BOTH the skill executor and this deterministic
|
|
41
|
+
* runner.
|
|
42
|
+
*
|
|
43
|
+
* @epic T11391
|
|
44
|
+
* @task T11802
|
|
45
|
+
* @saga T11387
|
|
46
|
+
* @see ../tools/guard.ts — the deny-first chokepoint
|
|
47
|
+
* @see ./skill-node-executor.ts — the sibling in-process skill path
|
|
48
|
+
*/
|
|
49
|
+
/**
|
|
50
|
+
* Canonical deny-list of destructive command basenames a `.cantbook`
|
|
51
|
+
* `deterministic` node may NOT run (T11802 · AC3). This is the SSoT the
|
|
52
|
+
* production dispatcher hands to `createToolGuard({ deniedCommands })` so the
|
|
53
|
+
* SAME chokepoint that guards in-process skill→tool calls also rejects a
|
|
54
|
+
* dangerous shell step. Matched against the command's last path segment by the
|
|
55
|
+
* guard, so `/bin/rm` and `rm` are both denied.
|
|
56
|
+
*
|
|
57
|
+
* Intentionally conservative — destructive disk / process / system operations a
|
|
58
|
+
* planning playbook should never invoke. Extend deliberately; every addition is
|
|
59
|
+
* a policy decision.
|
|
60
|
+
*/
|
|
61
|
+
export const DEFAULT_DETERMINISTIC_DENIED_COMMANDS = Object.freeze([
|
|
62
|
+
'rm',
|
|
63
|
+
'rmdir',
|
|
64
|
+
'shutdown',
|
|
65
|
+
'reboot',
|
|
66
|
+
'mkfs',
|
|
67
|
+
'dd',
|
|
68
|
+
'shred',
|
|
69
|
+
'fdisk',
|
|
70
|
+
'mkswap',
|
|
71
|
+
'kill',
|
|
72
|
+
'killall',
|
|
73
|
+
]);
|
|
74
|
+
/**
|
|
75
|
+
* Build a {@link GuardedDeterministicRunner} that routes EVERY `deterministic`
|
|
76
|
+
* node command through the injected guard's `executeShell` (T11802 · AC1).
|
|
77
|
+
*
|
|
78
|
+
* Inject the result as `deterministicRunner` when calling `executePlaybook`:
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { createToolGuard } from '@cleocode/core/internal';
|
|
83
|
+
*
|
|
84
|
+
* const tools = createToolGuard({
|
|
85
|
+
* allowedRoots: [projectRoot],
|
|
86
|
+
* deniedCommands: ['rm', 'shutdown', 'mkfs'],
|
|
87
|
+
* mode: 'enforce',
|
|
88
|
+
* });
|
|
89
|
+
* await executePlaybook({
|
|
90
|
+
* db, playbook, playbookHash, initialContext, dispatcher,
|
|
91
|
+
* deterministicRunner: createGuardedDeterministicRunner({ tools }),
|
|
92
|
+
* });
|
|
93
|
+
* // A `deterministic` node running `rm` → guard rejects → { status: 'failure' }
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* The returned runner NEVER throws — a guard `enforce`-mode rejection
|
|
97
|
+
* ({@link import('../tools/guard.js').GuardDeniedError}) is caught and mapped to
|
|
98
|
+
* a `{ status: 'failure', error }` envelope so the runtime's retry / escalation
|
|
99
|
+
* stays intact (the runtime's `DeterministicRunner` contract is non-throwing).
|
|
100
|
+
*
|
|
101
|
+
* @param opts - The injected guarded tool surface.
|
|
102
|
+
* @returns A runner assignable to the runtime's `DeterministicRunner`.
|
|
103
|
+
* @task T11802
|
|
104
|
+
*/
|
|
105
|
+
export function createGuardedDeterministicRunner(opts) {
|
|
106
|
+
const { tools } = opts;
|
|
107
|
+
return {
|
|
108
|
+
async run(input) {
|
|
109
|
+
try {
|
|
110
|
+
// The guard checks the command basename against the denylist BEFORE
|
|
111
|
+
// spawning (deny → reject in enforce mode), then scrubs the child env at
|
|
112
|
+
// the chokepoint. This is the ONLY shell-spawn path for deterministic
|
|
113
|
+
// nodes — there is no bypass.
|
|
114
|
+
const result = await tools.executeShell({
|
|
115
|
+
command: input.command,
|
|
116
|
+
args: [...input.args],
|
|
117
|
+
...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
|
|
118
|
+
...(input.env !== undefined ? { env: input.env } : {}),
|
|
119
|
+
...(input.timeout_ms !== undefined ? { timeoutMs: input.timeout_ms } : {}),
|
|
120
|
+
});
|
|
121
|
+
// A non-zero exit is a node failure, not a thrown error — mirror the
|
|
122
|
+
// shell primitive's "exit code is the result" contract.
|
|
123
|
+
if (result.code === 0) {
|
|
124
|
+
return {
|
|
125
|
+
status: 'success',
|
|
126
|
+
output: {
|
|
127
|
+
[`${input.nodeId}_stdout`]: result.stdout,
|
|
128
|
+
[`${input.nodeId}_exitCode`]: result.code,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
status: 'failure',
|
|
134
|
+
output: {
|
|
135
|
+
[`${input.nodeId}_stdout`]: result.stdout,
|
|
136
|
+
[`${input.nodeId}_stderr`]: result.stderr,
|
|
137
|
+
[`${input.nodeId}_exitCode`]: result.code,
|
|
138
|
+
},
|
|
139
|
+
error: `deterministic node "${input.nodeId}" command "${input.command}" exited ` +
|
|
140
|
+
`${result.code === null ? 'on signal/timeout' : `with code ${result.code}`}`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
// Guard-denied (enforce mode) or an unexpected spawn error — never let it
|
|
145
|
+
// escape; the runtime contract is non-throwing.
|
|
146
|
+
return {
|
|
147
|
+
status: 'failure',
|
|
148
|
+
output: {},
|
|
149
|
+
error: err instanceof Error ? err.message : String(err),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=guarded-deterministic-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guarded-deterministic-runner.js","sourceRoot":"","sources":["../../src/playbooks/guarded-deterministic-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAsB,MAAM,CAAC,MAAM,CAAC;IACpF,IAAI;IACJ,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAgEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAuC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,KAAgC;YACxC,IAAI,CAAC;gBACH,oEAAoE;gBACpE,yEAAyE;gBACzE,sEAAsE;gBACtE,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;oBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;oBACrB,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3E,CAAC,CAAC;gBACH,qEAAqE;gBACrE,wDAAwD;gBACxD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE;4BACN,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;4BACzC,CAAC,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI;yBAC1C;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE;wBACN,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;wBACzC,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;wBACzC,CAAC,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI;qBAC1C;oBACD,KAAK,EACH,uBAAuB,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,OAAO,WAAW;wBACzE,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,EAAE;iBAC/E,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0EAA0E;gBAC1E,gDAAgD;gBAChD,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* @task T1239 — meta-agent infrastructure (epic T1232)
|
|
12
12
|
*/
|
|
13
13
|
export { AGENT_TIER_META, type AgentDispatcher, CoreAgentDispatcher, type CoreAgentDispatcherOptions, createAgentDispatcher, type DispatchContext, type DispatchResult, resolveMetaAgent, } from './agent-dispatcher.js';
|
|
14
|
+
export { type CantbookProfilePin, cantbookNodeSystemKey, hasCantbookProfilePin, type ResolveCantbookNodeProfileInput, resolveCantbookNodeProfile, } from './cantbook-profile.js';
|
|
14
15
|
export type { playbookCoreOps } from './ops.js';
|
|
16
|
+
export { type MaybePiRunnerDeps, maybeCreatePiRunner } from './pi-runner-wiring.js';
|
|
15
17
|
export { listPlaybooks, PlaybookNotFoundError, type PlaybookTier, type ResolvedPlaybook, type ResolvePlaybookOptions, resolvePlaybook, } from './playbook-resolver.js';
|
|
16
18
|
export { createSkillNodeExecutor, ISOLATION_CONTEXT_KEY, runSkillNodeOrSpawn, type SkillNodeDispatchInput, type SkillNodeExecutorOptions, type SubprocessSpawnExecutor, } from './skill-node-executor.js';
|
|
17
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EACL,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,+BAA+B,EACpC,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,OAAO,EAAE,KAAK,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC"}
|
package/dist/playbooks/index.js
CHANGED
|
@@ -11,6 +11,16 @@
|
|
|
11
11
|
* @task T1239 — meta-agent infrastructure (epic T1232)
|
|
12
12
|
*/
|
|
13
13
|
export { AGENT_TIER_META, CoreAgentDispatcher, createAgentDispatcher, resolveMetaAgent, } from './agent-dispatcher.js';
|
|
14
|
+
// Cantbook stage LLM-profile resolution — the seam the production cantbook
|
|
15
|
+
// dispatchers call to resolve a node's `profile:` / `model:` / `provider:` pin
|
|
16
|
+
// through the E9 chokepoint (`resolveLLMForSystem`). Gate-13: resolves metadata
|
|
17
|
+
// only, never constructs a transport (T11759 · M4).
|
|
18
|
+
export { cantbookNodeSystemKey, hasCantbookProfilePin, resolveCantbookNodeProfile, } from './cantbook-profile.js';
|
|
19
|
+
// Pi in-process runner wiring — default-OFF, lazy-imported Pi `SkillRunner` the
|
|
20
|
+
// production cantbook dispatchers pass into `runSkillNodeOrSpawn`'s `runner`
|
|
21
|
+
// slot (T11945 · M4). Exported here (the eager core graph) so its live binding
|
|
22
|
+
// is initialised before `internal.ts` re-exports it.
|
|
23
|
+
export { maybeCreatePiRunner } from './pi-runner-wiring.js';
|
|
14
24
|
export { listPlaybooks, PlaybookNotFoundError, resolvePlaybook, } from './playbook-resolver.js';
|
|
15
25
|
// Skill-node executor — injects the in-process SkillExecutorAdapter as the
|
|
16
26
|
// dispatcher's executor while retaining subprocess-spawn for isolation nodes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EAEf,mBAAmB,EAEnB,qBAAqB,EAGrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EAEf,mBAAmB,EAEnB,qBAAqB,EAGrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,oDAAoD;AACpD,OAAO,EAEL,qBAAqB,EACrB,qBAAqB,EAErB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,qDAAqD;AACrD,OAAO,EAA0B,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,aAAa,EACb,qBAAqB,EAIrB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,2EAA2E;AAC3E,6EAA6E;AAC7E,0BAA0B;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production wiring helper for the Pi in-process `SkillRunner` (T11945 · M4).
|
|
3
|
+
*
|
|
4
|
+
* THE M4 keystone seam: this is the single place the two production cantbook
|
|
5
|
+
* dispatchers (`buildDefaultDispatcher` in `playbook.ts` and `buildGoDispatcher`
|
|
6
|
+
* in `go-ivtr-runner.ts`) reach to obtain the Pi-backed `SkillRunner` they pass
|
|
7
|
+
* into {@link runSkillNodeOrSpawn}'s `runner` slot. When the runner is supplied,
|
|
8
|
+
* an in-process `ct-*` skill node routes THROUGH the {@link
|
|
9
|
+
* import('../llm/pi/pi-agent-adapter.js').PiAgentAdapter} (the Pi agent loop);
|
|
10
|
+
* when it is `undefined`, the adapter falls back to `defaultSkillRunner` — the
|
|
11
|
+
* pre-T11945 behaviour.
|
|
12
|
+
*
|
|
13
|
+
* ## Default-OFF + lazy-import (Gate-13 + OOM safety)
|
|
14
|
+
*
|
|
15
|
+
* The Pi embed is gated behind the **default-OFF** `CLEO_PI_RUNNER_ENABLED`
|
|
16
|
+
* flag. When the flag is unset (the default) this helper returns `undefined`
|
|
17
|
+
* WITHOUT importing the Pi barrel — so `@earendil-works/pi-ai`'s `register-
|
|
18
|
+
* builtins` side effect is never paid on the hot dispatch path, and there is
|
|
19
|
+
* ZERO behaviour change. Only when the flag is explicitly `'1'` do we
|
|
20
|
+
* dynamically import the barrel and construct the runner. The import is dynamic
|
|
21
|
+
* (not a top-level `import`) precisely so the heavy `pi-ai` dependency stays out
|
|
22
|
+
* of `@cleocode/core/internal`'s eager module graph (every CLI dispatcher loads
|
|
23
|
+
* `internal`, but must not load `pi-ai` unless Pi is enabled).
|
|
24
|
+
*
|
|
25
|
+
* Keeping this helper in `core` keeps the CLI dispatchers thin (CLI package
|
|
26
|
+
* boundary, Gate-6): each call site is a single `await maybeCreatePiRunner(...)`.
|
|
27
|
+
*
|
|
28
|
+
* @epic T10403
|
|
29
|
+
* @task T11761
|
|
30
|
+
* @task T11945
|
|
31
|
+
*/
|
|
32
|
+
import type { SystemOfUseLabel } from '@cleocode/contracts';
|
|
33
|
+
import type { SkillRunner } from '../skills/skill-executor-adapter.js';
|
|
34
|
+
/**
|
|
35
|
+
* Resolution + project-root deps forwarded to `createPiSkillRunner` when the Pi
|
|
36
|
+
* runner is constructed. Mirrors the subset of `PiAgentAdapterDeps` the
|
|
37
|
+
* dispatchers can supply at their call site.
|
|
38
|
+
*/
|
|
39
|
+
export interface MaybePiRunnerDeps {
|
|
40
|
+
/**
|
|
41
|
+
* The system-of-use label the Pi adapter resolves its LLM through (E9). When
|
|
42
|
+
* omitted, `createPiSkillRunner` defaults to `'task-executor'`.
|
|
43
|
+
*/
|
|
44
|
+
readonly system?: SystemOfUseLabel;
|
|
45
|
+
/**
|
|
46
|
+
* Project root for config + credential resolution. When omitted, resolution
|
|
47
|
+
* defaults to `process.cwd()` inside `resolveLLMForSystem`.
|
|
48
|
+
*/
|
|
49
|
+
readonly projectRoot?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Return the Pi-backed {@link SkillRunner} when `CLEO_PI_RUNNER_ENABLED=1`, else
|
|
53
|
+
* `undefined`.
|
|
54
|
+
*
|
|
55
|
+
* The two production cantbook dispatchers call this and pass the result into
|
|
56
|
+
* {@link runSkillNodeOrSpawn}'s `runner` slot:
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const runner = await maybeCreatePiRunner({ system: 'task-executor', projectRoot });
|
|
61
|
+
* await runSkillNodeOrSpawn(input, { tools, cwd: projectRoot, subprocessSpawn, runner });
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* Default-OFF: when the flag is unset (the common case) this short-circuits to
|
|
65
|
+
* `undefined` before importing the Pi barrel, so `pi-ai`'s `register-builtins`
|
|
66
|
+
* is never loaded and the dispatcher behaves exactly as it did pre-T11945
|
|
67
|
+
* (`defaultSkillRunner` runs the in-process skill node).
|
|
68
|
+
*
|
|
69
|
+
* @param deps - Optional resolution system + project root forwarded to the Pi
|
|
70
|
+
* adapter when the runner is constructed.
|
|
71
|
+
* @returns The Pi `SkillRunner` when enabled, otherwise `undefined`.
|
|
72
|
+
* @task T11945
|
|
73
|
+
*/
|
|
74
|
+
export declare function maybeCreatePiRunner(deps?: MaybePiRunnerDeps): Promise<SkillRunner | undefined>;
|
|
75
|
+
//# sourceMappingURL=pi-runner-wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-runner-wiring.d.ts","sourceRoot":"","sources":["../../src/playbooks/pi-runner-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAUvE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAoBlC"}
|