@cleocode/core 2026.6.11 → 2026.6.13
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/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/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/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/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 +2309 -1262
- package/dist/docs/export-document.js.map +3 -3
- 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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +13 -10
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +11 -11
- 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/cli-ops.d.ts +14 -1
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +41 -12
- package/dist/llm/cli-ops.js.map +1 -1
- 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/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/index.d.ts +4 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +4 -0
- package/dist/llm/index.js.map +1 -1
- 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 +227 -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 +2253 -1151
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/role-executor.d.ts.map +1 -1
- package/dist/llm/role-executor.js +8 -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 +178 -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 +70 -18
- 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/llm-backend-resolver.js +23 -5
- package/dist/memory/llm-backend-resolver.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/release/engine-ops.js +2 -2
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/release/plan.d.ts +4 -6
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +10 -23
- package/dist/release/plan.js.map +1 -1
- package/dist/release/reconcile.d.ts +0 -2
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +43 -50
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/release-manifest.d.ts.map +1 -1
- package/dist/release/release-manifest.js +4 -1
- package/dist/release/release-manifest.js.map +1 -1
- package/dist/release/verify-provenance.js +20 -20
- package/dist/release/verify-provenance.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/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/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/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/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 +2 -0
- package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/index.js +2 -0
- package/dist/store/schema/cleo-global/index.js.map +1 -1
- 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/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/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/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/tasks-schema.d.ts +4 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +14 -0
- package/dist/store/tasks-schema.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 +94 -62
- 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/task-tools/describe-schema.d.ts +4 -2
- package/dist/task-tools/describe-schema.d.ts.map +1 -1
- package/dist/task-tools/describe-schema.js +9 -3
- package/dist/task-tools/describe-schema.js.map +1 -1
- 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.map +1 -1
- package/dist/tasks/complete.js +7 -10
- package/dist/tasks/complete.js.map +1 -1
- 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/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 +150 -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/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 +10 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +37 -0
- package/dist/tools/index.js.map +1 -1
- 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/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/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/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-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-project/20260606000000_t11884-restore-prefixed-task-triggers/migration.sql +272 -0
- package/migrations/drizzle-cleo-project/20260606000000_t11884-restore-prefixed-task-triggers/revert.sql +29 -0
- package/migrations/drizzle-cleo-project/20260606000100_t11883-tasks-releases-version-unique/migration.sql +21 -0
- package/migrations/drizzle-cleo-project/20260606000100_t11883-tasks-releases-version-unique/revert.sql +4 -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/package.json +15 -13
- 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/release/provenance-fk.d.ts +0 -74
- package/dist/release/provenance-fk.d.ts.map +0 -1
- package/dist/release/provenance-fk.js +0 -122
- package/dist/release/provenance-fk.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
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default RCASD-IVTR+C WarpChain Builder
|
|
3
|
-
*
|
|
4
|
-
* Constructs the canonical 9-stage pipeline chain from existing
|
|
5
|
-
* stage definitions, prerequisites, and verification gates.
|
|
6
|
-
*
|
|
7
|
-
* @task T5399
|
|
8
|
-
*/
|
|
9
|
-
import { PROTOCOL_TYPES } from '../orchestration/protocol-validators.js';
|
|
10
|
-
import { VERIFICATION_GATE_ORDER } from '../validation/verification.js';
|
|
11
|
-
import { PIPELINE_STAGES, STAGE_DEFINITIONS, STAGE_PREREQUISITES } from './stages.js';
|
|
12
|
-
export const DEFAULT_CHAIN_ID = 'rcasd-ivtrc';
|
|
13
|
-
/**
|
|
14
|
-
* Stage mapping for protocol validation gates in the default chain.
|
|
15
|
-
*
|
|
16
|
-
* Cross-cutting protocols compose with specific host stages:
|
|
17
|
-
* - `contribution` is validated at implementation (author attribution).
|
|
18
|
-
* - `artifact-publish` and `provenance` are validated at release
|
|
19
|
-
* (see release.md composition: release triggers artifact-publish for the
|
|
20
|
-
* distribution phase, which delegates signing/attestation to provenance).
|
|
21
|
-
*
|
|
22
|
-
* Pipeline stages map 1:1 to their own protocol validators.
|
|
23
|
-
*
|
|
24
|
-
* @task T5419
|
|
25
|
-
* @task T260 — add architecture-decision, validation, testing mappings
|
|
26
|
-
*/
|
|
27
|
-
export const DEFAULT_PROTOCOL_STAGE_MAP = {
|
|
28
|
-
research: 'research',
|
|
29
|
-
consensus: 'consensus',
|
|
30
|
-
'architecture-decision': 'architecture_decision',
|
|
31
|
-
specification: 'specification',
|
|
32
|
-
decomposition: 'decomposition',
|
|
33
|
-
implementation: 'implementation',
|
|
34
|
-
contribution: 'implementation',
|
|
35
|
-
validation: 'validation',
|
|
36
|
-
testing: 'testing',
|
|
37
|
-
release: 'release',
|
|
38
|
-
'artifact-publish': 'release',
|
|
39
|
-
provenance: 'release',
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Map a pipeline stage name to the WarpStage category union.
|
|
43
|
-
*
|
|
44
|
-
* @task T5399
|
|
45
|
-
*/
|
|
46
|
-
function stageToCategory(stage) {
|
|
47
|
-
const map = {
|
|
48
|
-
research: 'research',
|
|
49
|
-
consensus: 'consensus',
|
|
50
|
-
architecture_decision: 'architecture',
|
|
51
|
-
specification: 'specification',
|
|
52
|
-
decomposition: 'decomposition',
|
|
53
|
-
implementation: 'implementation',
|
|
54
|
-
validation: 'validation',
|
|
55
|
-
testing: 'testing',
|
|
56
|
-
release: 'release',
|
|
57
|
-
};
|
|
58
|
-
return map[stage];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Map verification gate names to the stages they guard (exit gates).
|
|
62
|
-
*
|
|
63
|
-
* Each gate is positioned as an exit gate on the stage it validates:
|
|
64
|
-
* - implemented -> implementation
|
|
65
|
-
* - testsPassed -> testing
|
|
66
|
-
* - qaPassed -> validation
|
|
67
|
-
* - cleanupDone -> decomposition
|
|
68
|
-
* - securityPassed -> validation
|
|
69
|
-
* - documented -> specification
|
|
70
|
-
*
|
|
71
|
-
* @task T5399
|
|
72
|
-
*/
|
|
73
|
-
function gateToStageId(gate) {
|
|
74
|
-
const map = {
|
|
75
|
-
implemented: 'implementation',
|
|
76
|
-
testsPassed: 'testing',
|
|
77
|
-
qaPassed: 'validation',
|
|
78
|
-
cleanupDone: 'decomposition',
|
|
79
|
-
securityPassed: 'validation',
|
|
80
|
-
documented: 'specification',
|
|
81
|
-
};
|
|
82
|
-
return map[gate];
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Build the canonical 9-stage RCASD-IVTR+C WarpChain.
|
|
86
|
-
*
|
|
87
|
-
* - Each PIPELINE_STAGE becomes a WarpStage
|
|
88
|
-
* - Each prerequisite from STAGE_PREREQUISITES becomes an entry GateContract
|
|
89
|
-
* - Each verification gate from VERIFICATION_GATE_ORDER becomes an exit GateContract
|
|
90
|
-
* - All 8 links are linear (stage[i] -> stage[i+1])
|
|
91
|
-
*
|
|
92
|
-
* @task T5399
|
|
93
|
-
*/
|
|
94
|
-
export function buildDefaultChain() {
|
|
95
|
-
const stages = PIPELINE_STAGES.map((stage) => {
|
|
96
|
-
const def = STAGE_DEFINITIONS[stage];
|
|
97
|
-
return {
|
|
98
|
-
id: stage,
|
|
99
|
-
name: def.name,
|
|
100
|
-
category: stageToCategory(stage),
|
|
101
|
-
skippable: def.skippable,
|
|
102
|
-
description: def.description,
|
|
103
|
-
};
|
|
104
|
-
});
|
|
105
|
-
const links = [];
|
|
106
|
-
for (let i = 0; i < PIPELINE_STAGES.length - 1; i++) {
|
|
107
|
-
links.push({
|
|
108
|
-
from: PIPELINE_STAGES[i],
|
|
109
|
-
to: PIPELINE_STAGES[i + 1],
|
|
110
|
-
type: 'linear',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
const gates = [];
|
|
114
|
-
let gateCounter = 0;
|
|
115
|
-
for (const stage of PIPELINE_STAGES) {
|
|
116
|
-
const prereqs = STAGE_PREREQUISITES[stage];
|
|
117
|
-
for (const prereq of prereqs) {
|
|
118
|
-
gateCounter++;
|
|
119
|
-
gates.push({
|
|
120
|
-
id: `gate-entry-${gateCounter}`,
|
|
121
|
-
name: `${prereq} complete (prereq for ${stage})`,
|
|
122
|
-
type: 'entry',
|
|
123
|
-
stageId: stage,
|
|
124
|
-
position: 'before',
|
|
125
|
-
check: { type: 'stage_complete', stageId: prereq },
|
|
126
|
-
severity: 'blocking',
|
|
127
|
-
canForce: false,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
for (const stage of PIPELINE_STAGES) {
|
|
132
|
-
for (const protocolType of PROTOCOL_TYPES) {
|
|
133
|
-
if (DEFAULT_PROTOCOL_STAGE_MAP[protocolType] !== stage) {
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
gateCounter++;
|
|
137
|
-
gates.push({
|
|
138
|
-
id: `gate-protocol-${gateCounter}`,
|
|
139
|
-
name: `${protocolType} protocol validation`,
|
|
140
|
-
type: 'exit',
|
|
141
|
-
stageId: stage,
|
|
142
|
-
position: 'after',
|
|
143
|
-
check: { type: 'protocol_valid', protocolType },
|
|
144
|
-
severity: 'blocking',
|
|
145
|
-
canForce: false,
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
for (const gate of VERIFICATION_GATE_ORDER) {
|
|
150
|
-
gateCounter++;
|
|
151
|
-
gates.push({
|
|
152
|
-
id: `gate-exit-${gateCounter}`,
|
|
153
|
-
name: `${gate} verification gate`,
|
|
154
|
-
type: 'exit',
|
|
155
|
-
stageId: gateToStageId(gate),
|
|
156
|
-
position: 'after',
|
|
157
|
-
check: { type: 'verification_gate', gateName: gate },
|
|
158
|
-
severity: 'blocking',
|
|
159
|
-
canForce: true,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
id: DEFAULT_CHAIN_ID,
|
|
164
|
-
name: 'RCASD-IVTR+C Default Pipeline',
|
|
165
|
-
version: '1.0.0',
|
|
166
|
-
description: 'Canonical 9-stage CLEO lifecycle pipeline: Research, Consensus, Architecture, Specification, Decomposition, Implementation, Validation, Testing, Release (+Contribution)',
|
|
167
|
-
shape: {
|
|
168
|
-
stages,
|
|
169
|
-
links,
|
|
170
|
-
entryPoint: PIPELINE_STAGES[0],
|
|
171
|
-
exitPoints: [PIPELINE_STAGES[PIPELINE_STAGES.length - 1]],
|
|
172
|
-
},
|
|
173
|
-
gates,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=default-chain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"default-chain.js","sourceRoot":"","sources":["../../src/lifecycle/default-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tessera Instantiation Engine
|
|
3
|
-
*
|
|
4
|
-
* Provides template management and instantiation for parameterized
|
|
5
|
-
* WarpChain workflows. Wraps buildDefaultChain() with template
|
|
6
|
-
* variables and manages the template registry.
|
|
7
|
-
*
|
|
8
|
-
* @task T5409
|
|
9
|
-
*/
|
|
10
|
-
import type { TesseraInstantiationInput, TesseraTemplate, WarpChainInstance } from '@cleocode/contracts';
|
|
11
|
-
/**
|
|
12
|
-
* Build the default RCASD Tessera template.
|
|
13
|
-
*
|
|
14
|
-
* Wraps buildDefaultChain() with template variables:
|
|
15
|
-
* - epicId (required, type 'epicId')
|
|
16
|
-
* - projectName (optional, type 'string', default 'unnamed')
|
|
17
|
-
* - skipResearch (optional, type 'boolean', default false)
|
|
18
|
-
*
|
|
19
|
-
* @task T5409
|
|
20
|
-
*/
|
|
21
|
-
export declare function buildDefaultTessera(): TesseraTemplate;
|
|
22
|
-
/**
|
|
23
|
-
* Instantiate a Tessera template into a concrete WarpChainInstance.
|
|
24
|
-
*
|
|
25
|
-
* Steps:
|
|
26
|
-
* 1. Validate all required variables are provided
|
|
27
|
-
* 2. Apply defaults for missing optional variables
|
|
28
|
-
* 3. Construct concrete WarpChain from template
|
|
29
|
-
* 4. Validate chain via validateChain()
|
|
30
|
-
* 5. Store via createInstance() from chain-store
|
|
31
|
-
* 6. Return instance
|
|
32
|
-
*
|
|
33
|
-
* @task T5409
|
|
34
|
-
*/
|
|
35
|
-
export declare function instantiateTessera(template: TesseraTemplate, input: TesseraInstantiationInput, projectRoot: string): Promise<WarpChainInstance>;
|
|
36
|
-
/**
|
|
37
|
-
* List all registered Tessera templates.
|
|
38
|
-
*
|
|
39
|
-
* @task T5409
|
|
40
|
-
*/
|
|
41
|
-
export declare function listTesseraTemplates(): TesseraTemplate[];
|
|
42
|
-
/**
|
|
43
|
-
* Find a Tessera template by ID.
|
|
44
|
-
*
|
|
45
|
-
* @task T5409
|
|
46
|
-
*/
|
|
47
|
-
export declare function showTessera(id: string): TesseraTemplate | null;
|
|
48
|
-
//# sourceMappingURL=tessera-engine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tessera-engine.d.ts","sourceRoot":"","sources":["../../src/lifecycle/tessera-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EAGf,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AA6J7B;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAoCrD;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA6C5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAGxD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAG9D"}
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tessera Instantiation Engine
|
|
3
|
-
*
|
|
4
|
-
* Provides template management and instantiation for parameterized
|
|
5
|
-
* WarpChain workflows. Wraps buildDefaultChain() with template
|
|
6
|
-
* variables and manages the template registry.
|
|
7
|
-
*
|
|
8
|
-
* @task T5409
|
|
9
|
-
*/
|
|
10
|
-
import { validateChain } from '../validation/chain-validation.js';
|
|
11
|
-
import { addChain, createInstance, showChain } from './chain-store.js';
|
|
12
|
-
import { buildDefaultChain } from './default-chain.js';
|
|
13
|
-
const DEFAULT_TESSERA_ID = 'tessera-rcasd';
|
|
14
|
-
const TASK_ID_PATTERN = /^T\d+$/;
|
|
15
|
-
const PLACEHOLDER_EXACT = /^\{\{\s*([A-Za-z0-9_]+)\s*\}\}$/;
|
|
16
|
-
const PLACEHOLDER_GLOBAL = /\{\{\s*([A-Za-z0-9_]+)\s*\}\}/g;
|
|
17
|
-
function valueType(value) {
|
|
18
|
-
if (value === null) {
|
|
19
|
-
return 'null';
|
|
20
|
-
}
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
return 'array';
|
|
23
|
-
}
|
|
24
|
-
return typeof value;
|
|
25
|
-
}
|
|
26
|
-
function hasOwn(obj, key) {
|
|
27
|
-
return Object.hasOwn(obj, key);
|
|
28
|
-
}
|
|
29
|
-
function validateVariableType(name, varDef, value) {
|
|
30
|
-
switch (varDef.type) {
|
|
31
|
-
case 'string': {
|
|
32
|
-
if (typeof value !== 'string') {
|
|
33
|
-
throw new Error(`Invalid variable type for "${name}": expected string, got ${valueType(value)}`);
|
|
34
|
-
}
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
case 'number': {
|
|
38
|
-
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
39
|
-
throw new Error(`Invalid variable type for "${name}": expected finite number, got ${valueType(value)}`);
|
|
40
|
-
}
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
case 'boolean': {
|
|
44
|
-
if (typeof value !== 'boolean') {
|
|
45
|
-
throw new Error(`Invalid variable type for "${name}": expected boolean, got ${valueType(value)}`);
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
case 'taskId':
|
|
50
|
-
case 'epicId': {
|
|
51
|
-
if (typeof value !== 'string') {
|
|
52
|
-
throw new Error(`Invalid variable type for "${name}": expected ${varDef.type}, got ${valueType(value)}`);
|
|
53
|
-
}
|
|
54
|
-
if (!TASK_ID_PATTERN.test(value)) {
|
|
55
|
-
throw new Error(`Invalid variable format for "${name}": expected ${varDef.type} like "T1234", got "${value}"`);
|
|
56
|
-
}
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
default: {
|
|
60
|
-
throw new Error(`Unsupported variable type for "${name}": ${String(varDef.type)}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
function substituteTemplateValue(value, variables, path) {
|
|
65
|
-
if (typeof value === 'string') {
|
|
66
|
-
const exact = value.match(PLACEHOLDER_EXACT);
|
|
67
|
-
if (exact) {
|
|
68
|
-
const variableName = exact[1];
|
|
69
|
-
if (!hasOwn(variables, variableName)) {
|
|
70
|
-
throw new Error(`Unknown template variable "${variableName}" at ${path}`);
|
|
71
|
-
}
|
|
72
|
-
return variables[variableName];
|
|
73
|
-
}
|
|
74
|
-
return value.replace(PLACEHOLDER_GLOBAL, (_full, variableName) => {
|
|
75
|
-
if (!hasOwn(variables, variableName)) {
|
|
76
|
-
throw new Error(`Unknown template variable "${variableName}" at ${path}`);
|
|
77
|
-
}
|
|
78
|
-
return String(variables[variableName]);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (Array.isArray(value)) {
|
|
82
|
-
return value.map((entry, index) => substituteTemplateValue(entry, variables, `${path}[${index}]`));
|
|
83
|
-
}
|
|
84
|
-
if (value !== null && typeof value === 'object') {
|
|
85
|
-
const out = {};
|
|
86
|
-
for (const [key, nested] of Object.entries(value)) {
|
|
87
|
-
out[key] = substituteTemplateValue(nested, variables, `${path}.${key}`);
|
|
88
|
-
}
|
|
89
|
-
return out;
|
|
90
|
-
}
|
|
91
|
-
return value;
|
|
92
|
-
}
|
|
93
|
-
function resolveVariables(template, inputVariables) {
|
|
94
|
-
const variableKeys = Object.keys(template.variables).sort();
|
|
95
|
-
const allowedVariables = new Set(variableKeys);
|
|
96
|
-
for (const key of Object.keys(inputVariables).sort()) {
|
|
97
|
-
if (!allowedVariables.has(key)) {
|
|
98
|
-
throw new Error(`Unknown variable: ${key}. Allowed variables: ${variableKeys.join(', ')}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
const resolvedVariables = {};
|
|
102
|
-
for (const key of variableKeys) {
|
|
103
|
-
const varDef = template.variables[key];
|
|
104
|
-
const hasInput = hasOwn(inputVariables, key);
|
|
105
|
-
const inputValue = hasInput ? inputVariables[key] : undefined;
|
|
106
|
-
if (inputValue === undefined) {
|
|
107
|
-
if (varDef.required) {
|
|
108
|
-
throw new Error(`Missing required variable: ${key}`);
|
|
109
|
-
}
|
|
110
|
-
if (hasOwn(template.defaultValues, key)) {
|
|
111
|
-
const defaultValue = template.defaultValues[key];
|
|
112
|
-
validateVariableType(key, varDef, defaultValue);
|
|
113
|
-
resolvedVariables[key] = defaultValue;
|
|
114
|
-
}
|
|
115
|
-
else if (varDef.default !== undefined) {
|
|
116
|
-
validateVariableType(key, varDef, varDef.default);
|
|
117
|
-
resolvedVariables[key] = varDef.default;
|
|
118
|
-
}
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
validateVariableType(key, varDef, inputValue);
|
|
122
|
-
resolvedVariables[key] = inputValue;
|
|
123
|
-
}
|
|
124
|
-
return resolvedVariables;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Build the default RCASD Tessera template.
|
|
128
|
-
*
|
|
129
|
-
* Wraps buildDefaultChain() with template variables:
|
|
130
|
-
* - epicId (required, type 'epicId')
|
|
131
|
-
* - projectName (optional, type 'string', default 'unnamed')
|
|
132
|
-
* - skipResearch (optional, type 'boolean', default false)
|
|
133
|
-
*
|
|
134
|
-
* @task T5409
|
|
135
|
-
*/
|
|
136
|
-
export function buildDefaultTessera() {
|
|
137
|
-
const chain = buildDefaultChain();
|
|
138
|
-
return {
|
|
139
|
-
...chain,
|
|
140
|
-
id: DEFAULT_TESSERA_ID,
|
|
141
|
-
tessera: DEFAULT_TESSERA_ID,
|
|
142
|
-
variables: {
|
|
143
|
-
epicId: {
|
|
144
|
-
name: 'epicId',
|
|
145
|
-
type: 'epicId',
|
|
146
|
-
description: 'The epic task ID to bind this pipeline to',
|
|
147
|
-
required: true,
|
|
148
|
-
},
|
|
149
|
-
projectName: {
|
|
150
|
-
name: 'projectName',
|
|
151
|
-
type: 'string',
|
|
152
|
-
description: 'Name of the project for labeling',
|
|
153
|
-
required: false,
|
|
154
|
-
default: 'unnamed',
|
|
155
|
-
},
|
|
156
|
-
skipResearch: {
|
|
157
|
-
name: 'skipResearch',
|
|
158
|
-
type: 'boolean',
|
|
159
|
-
description: 'Whether to skip the research stage',
|
|
160
|
-
required: false,
|
|
161
|
-
default: false,
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
archetypes: ['lifecycle', 'rcasd'],
|
|
165
|
-
defaultValues: {
|
|
166
|
-
projectName: 'unnamed',
|
|
167
|
-
skipResearch: false,
|
|
168
|
-
},
|
|
169
|
-
category: 'lifecycle',
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
/** In-memory template registry. */
|
|
173
|
-
const templates = new Map();
|
|
174
|
-
/** Ensure the default template is registered. */
|
|
175
|
-
function ensureDefaults() {
|
|
176
|
-
if (!templates.has(DEFAULT_TESSERA_ID)) {
|
|
177
|
-
templates.set(DEFAULT_TESSERA_ID, buildDefaultTessera());
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Instantiate a Tessera template into a concrete WarpChainInstance.
|
|
182
|
-
*
|
|
183
|
-
* Steps:
|
|
184
|
-
* 1. Validate all required variables are provided
|
|
185
|
-
* 2. Apply defaults for missing optional variables
|
|
186
|
-
* 3. Construct concrete WarpChain from template
|
|
187
|
-
* 4. Validate chain via validateChain()
|
|
188
|
-
* 5. Store via createInstance() from chain-store
|
|
189
|
-
* 6. Return instance
|
|
190
|
-
*
|
|
191
|
-
* @task T5409
|
|
192
|
-
*/
|
|
193
|
-
export async function instantiateTessera(template, input, projectRoot) {
|
|
194
|
-
// 1. Resolve and validate input variables
|
|
195
|
-
const inputVariables = input.variables && typeof input.variables === 'object' ? input.variables : {};
|
|
196
|
-
const resolvedVariables = resolveVariables(template, inputVariables);
|
|
197
|
-
// 2. Build chain from template with deep substitution
|
|
198
|
-
const chainSeed = {
|
|
199
|
-
id: template.id,
|
|
200
|
-
name: template.name,
|
|
201
|
-
version: template.version,
|
|
202
|
-
description: template.description,
|
|
203
|
-
shape: template.shape,
|
|
204
|
-
gates: template.gates,
|
|
205
|
-
tessera: template.id,
|
|
206
|
-
metadata: template.metadata,
|
|
207
|
-
};
|
|
208
|
-
const substituted = substituteTemplateValue(chainSeed, resolvedVariables, 'chain');
|
|
209
|
-
const chain = substituted;
|
|
210
|
-
chain.metadata = {
|
|
211
|
-
...(chain.metadata ?? {}),
|
|
212
|
-
variables: resolvedVariables,
|
|
213
|
-
};
|
|
214
|
-
// 3. Validate the chain
|
|
215
|
-
const validation = validateChain(chain);
|
|
216
|
-
if (validation.errors.length > 0) {
|
|
217
|
-
throw new Error(`Tessera chain validation failed: ${validation.errors.join('; ')}`);
|
|
218
|
-
}
|
|
219
|
-
// 4. Store chain if not already stored, then create instance
|
|
220
|
-
const existing = await showChain(chain.id, projectRoot);
|
|
221
|
-
if (!existing) {
|
|
222
|
-
await addChain(chain, projectRoot);
|
|
223
|
-
}
|
|
224
|
-
// 5. Create and return instance
|
|
225
|
-
return createInstance({
|
|
226
|
-
chainId: chain.id,
|
|
227
|
-
epicId: input.epicId,
|
|
228
|
-
variables: resolvedVariables,
|
|
229
|
-
}, projectRoot);
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* List all registered Tessera templates.
|
|
233
|
-
*
|
|
234
|
-
* @task T5409
|
|
235
|
-
*/
|
|
236
|
-
export function listTesseraTemplates() {
|
|
237
|
-
ensureDefaults();
|
|
238
|
-
return Array.from(templates.values());
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Find a Tessera template by ID.
|
|
242
|
-
*
|
|
243
|
-
* @task T5409
|
|
244
|
-
*/
|
|
245
|
-
export function showTessera(id) {
|
|
246
|
-
ensureDefaults();
|
|
247
|
-
return templates.get(id) ?? null;
|
|
248
|
-
}
|
|
249
|
-
//# sourceMappingURL=tessera-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tessera-engine.js","sourceRoot":"","sources":["../../src/lifecycle/tessera-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Post-cutover provenance `task_id` / `epic_id` FK reconciliation (DHQ-051).
|
|
3
|
-
*
|
|
4
|
-
* Shared between `cleo release reconcile` ({@link releaseReconcileV2}) and
|
|
5
|
-
* `cleo release plan` ({@link releasePlan} → `upsertReleasesRow`). Both verbs
|
|
6
|
-
* write provenance rows (`task_commits`, `pr_tasks`, `releases`,
|
|
7
|
-
* `release_changes`) whose `task_id` / `epic_id` foreign keys reference the
|
|
8
|
-
* BARE `tasks` table — which is empty on a consolidated dual-scope `cleo.db`
|
|
9
|
-
* after the T11578 cutover (runtime task data moved to the prefixed
|
|
10
|
-
* `tasks_tasks` table). A row inserted with an `epicId` / `taskId` that exists
|
|
11
|
-
* only in `tasks_tasks` violates the FK at INSERT time, aborting the verb.
|
|
12
|
-
*
|
|
13
|
-
* This module is the single source of truth for the FK-ordered parent backfill
|
|
14
|
-
* that makes those FKs satisfiable. `reconcile.ts` re-exports both symbols so
|
|
15
|
-
* its public surface is unchanged.
|
|
16
|
-
*
|
|
17
|
-
* @task T11659 — reconcile slice (original)
|
|
18
|
-
* @task T11818 — plan/open slice (DRY hoist)
|
|
19
|
-
* @epic T11466
|
|
20
|
-
*/
|
|
21
|
-
import type { DatabaseSync } from '../store/sqlite.js';
|
|
22
|
-
/** Result of resolving + reconciling the provenance `task_id` FK parent table. */
|
|
23
|
-
export interface FkParentTaskResolution {
|
|
24
|
-
/** Physical table the provenance `task_id` FK references, or null if absent. */
|
|
25
|
-
parentTable: string | null;
|
|
26
|
-
/**
|
|
27
|
-
* Task IDs the FK can now resolve (FK parent rows present after any
|
|
28
|
-
* FK-ordered shim backfill). A `task_id` reference to an id in this set is
|
|
29
|
-
* safe to INSERT under strict FK enforcement.
|
|
30
|
-
*/
|
|
31
|
-
resolvableIds: Set<string>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Make the provenance `task_id` foreign keys satisfiable on a consolidated
|
|
35
|
-
* `cleo.db` by inserting any missing FK-parent rows in FK order (parent-before
|
|
36
|
-
* -child), then returning the set of IDs the FK can resolve.
|
|
37
|
-
*
|
|
38
|
-
* ## Background (DHQ-051 · T11659 / T11818 — same class as DHQ-045)
|
|
39
|
-
*
|
|
40
|
-
* After the dual-scope `cleo.db` cutover (T11578) the runtime task store moved
|
|
41
|
-
* from the bare `tasks` table to the prefixed `tasks_tasks` table. The drizzle
|
|
42
|
-
* `schema.tasks` symbol is shadowed at the barrel (`tasks-schema.ts`) onto
|
|
43
|
-
* `tasks_tasks`, so token-validity probes read the populated prefixed table.
|
|
44
|
-
* BUT the provenance tables (`task_commits`, `pr_tasks`, `releases`,
|
|
45
|
-
* `release_changes`) predate the cutover — their `task_id` / `epic_id` FKs
|
|
46
|
-
* still reference the BARE `tasks` table, which is empty on a consolidated
|
|
47
|
-
* `cleo.db`. A token validated against `tasks_tasks` therefore passes the
|
|
48
|
-
* legacy gate yet violates the FK at INSERT time, aborting the whole verb with
|
|
49
|
-
* `E_PROVENANCE_FAILED` (reconcile) or `E_INTERNAL` (plan).
|
|
50
|
-
*
|
|
51
|
-
* ## Strategy — FK-ordered parent backfill (Strategy 1)
|
|
52
|
-
*
|
|
53
|
-
* For every task referenced by this release we ensure a row exists in the FK
|
|
54
|
-
* parent table BEFORE the child provenance rows are written. The parent table
|
|
55
|
-
* is discovered dynamically via `PRAGMA foreign_key_list('task_commits')` (so
|
|
56
|
-
* the logic tracks whatever the live schema enforces — including a future
|
|
57
|
-
* schema that repoints the FK at `tasks_tasks`, where this becomes a no-op).
|
|
58
|
-
* Missing parent rows are copied from the runtime `tasks_tasks` store via
|
|
59
|
-
* `INSERT OR IGNORE … SELECT` of only the NOT NULL columns, so the copied rows
|
|
60
|
-
* satisfy the parent table's own CHECK/NOT NULL constraints. Tasks that exist
|
|
61
|
-
* in neither table remain unresolvable and are skipped-with-warn / NULLed by
|
|
62
|
-
* the callers (the row, never the whole verb).
|
|
63
|
-
*
|
|
64
|
-
* Idempotent: `INSERT OR IGNORE` never duplicates and never overwrites an
|
|
65
|
-
* existing parent row. Callers run it inside their write transaction so a later
|
|
66
|
-
* failure rolls the shim rows back too.
|
|
67
|
-
*
|
|
68
|
-
* @param nativeDb - The consolidated `cleo.db` native handle.
|
|
69
|
-
* @param referencedIds - Every task id this verb may reference (commit tokens,
|
|
70
|
-
* PR tokens, plan tasks, epic).
|
|
71
|
-
* @returns The FK parent table name + the IDs it can now resolve.
|
|
72
|
-
*/
|
|
73
|
-
export declare function ensureProvenanceTaskFkParents(nativeDb: DatabaseSync, referencedIds: ReadonlySet<string>): FkParentTaskResolution;
|
|
74
|
-
//# sourceMappingURL=provenance-fk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provenance-fk.d.ts","sourceRoot":"","sources":["../../src/release/provenance-fk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,kFAAkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,sBAAsB,CAmExB"}
|