@cleocode/core 2026.6.13 → 2026.6.15
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 +183 -0
- package/dist/check/pr-gate.d.ts.map +1 -0
- package/dist/check/pr-gate.js +348 -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-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/config-repair.d.ts +70 -0
- package/dist/config/config-repair.d.ts.map +1 -0
- package/dist/config/config-repair.js +248 -0
- package/dist/config/config-repair.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 +92 -0
- package/dist/config/registry.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -10
- package/dist/config.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/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/docs/export-document.js +3721 -696
- 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/gc/cleanup.d.ts +23 -8
- package/dist/gc/cleanup.d.ts.map +1 -1
- package/dist/gc/cleanup.js +287 -22
- package/dist/gc/cleanup.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -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 +10 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +18 -1
- package/dist/internal.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 +16 -0
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +37 -10
- 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/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/cross-provider-selector.d.ts +249 -0
- package/dist/llm/cross-provider-selector.d.ts.map +1 -0
- package/dist/llm/cross-provider-selector.js +572 -0
- package/dist/llm/cross-provider-selector.js.map +1 -0
- 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 +17 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +9 -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/local-model-fit.d.ts +260 -0
- package/dist/llm/local-model-fit.d.ts.map +1 -0
- package/dist/llm/local-model-fit.js +563 -0
- package/dist/llm/local-model-fit.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/pi-gondolin-env.d.ts +23 -0
- package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -1
- package/dist/llm/pi/pi-gondolin-env.js +2 -2
- package/dist/llm/pi/pi-gondolin-env.js.map +1 -1
- package/dist/llm/plugin-facade.js +4612 -1042
- 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/builtin/ollama.d.ts +18 -0
- package/dist/llm/provider-registry/builtin/ollama.d.ts.map +1 -1
- package/dist/llm/provider-registry/builtin/ollama.js +20 -2
- package/dist/llm/provider-registry/builtin/ollama.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 +36 -0
- package/dist/llm/role-executor.js.map +1 -1
- package/dist/llm/role-resolver.d.ts.map +1 -1
- package/dist/llm/role-resolver.js +52 -10
- package/dist/llm/role-resolver.js.map +1 -1
- package/dist/llm/system-resolver.d.ts.map +1 -1
- package/dist/llm/system-resolver.js +73 -22
- package/dist/llm/system-resolver.js.map +1 -1
- package/dist/llm/transports/codex-responses.d.ts +111 -88
- package/dist/llm/transports/codex-responses.d.ts.map +1 -1
- package/dist/llm/transports/codex-responses.js +456 -258
- package/dist/llm/transports/codex-responses.js.map +1 -1
- package/dist/memory/learnings.d.ts +4 -0
- package/dist/memory/learnings.d.ts.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/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/index.d.ts +2 -2
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +1 -1
- package/dist/release/index.js.map +1 -1
- package/dist/release/reconcile.d.ts +97 -0
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +412 -5
- package/dist/release/reconcile.js.map +1 -1
- package/dist/resources/backend.d.ts +155 -0
- package/dist/resources/backend.d.ts.map +1 -0
- package/dist/resources/backend.js +23 -0
- package/dist/resources/backend.js.map +1 -0
- package/dist/resources/linux-backend.d.ts +167 -0
- package/dist/resources/linux-backend.d.ts.map +1 -0
- package/dist/resources/linux-backend.js +259 -0
- package/dist/resources/linux-backend.js.map +1 -0
- package/dist/resources/monitor.d.ts +230 -0
- package/dist/resources/monitor.d.ts.map +1 -0
- package/dist/resources/monitor.js +255 -0
- package/dist/resources/monitor.js.map +1 -0
- package/dist/resources/spawn-wrapper.d.ts +265 -0
- package/dist/resources/spawn-wrapper.d.ts.map +1 -0
- package/dist/resources/spawn-wrapper.js +304 -0
- package/dist/resources/spawn-wrapper.js.map +1 -0
- 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 +11 -2
- package/dist/selfimprove/budget.d.ts.map +1 -1
- package/dist/selfimprove/budget.js +11 -2
- package/dist/selfimprove/budget.js.map +1 -1
- package/dist/selfimprove/fix-gen.d.ts +229 -0
- package/dist/selfimprove/fix-gen.d.ts.map +1 -0
- package/dist/selfimprove/fix-gen.js +266 -0
- package/dist/selfimprove/fix-gen.js.map +1 -0
- package/dist/selfimprove/run-loop.d.ts +44 -4
- package/dist/selfimprove/run-loop.d.ts.map +1 -1
- package/dist/selfimprove/run-loop.js +73 -6
- package/dist/selfimprove/run-loop.js.map +1 -1
- 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/cross-project-hygiene.d.ts +11 -2
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +73 -10
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/daemon.d.ts.map +1 -1
- package/dist/sentient/daemon.js +7 -2
- package/dist/sentient/daemon.js.map +1 -1
- package/dist/sentient/worktree-dispatch.d.ts.map +1 -1
- package/dist/sentient/worktree-dispatch.js +8 -1
- package/dist/sentient/worktree-dispatch.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/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +7 -1
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/store/attachment-repair.d.ts +110 -0
- package/dist/store/attachment-repair.d.ts.map +1 -0
- package/dist/store/attachment-repair.js +326 -0
- package/dist/store/attachment-repair.js.map +1 -0
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +24 -7
- package/dist/store/attachment-store.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/index.d.ts +3 -0
- package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/index.js +5 -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-project/docs.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +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/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/validation-schemas.d.ts +4 -4
- 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/complete.d.ts +17 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +53 -10
- 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/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/evidence.d.ts +34 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +293 -35
- package/dist/tasks/evidence.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/tools/builtin-agent-tools.d.ts.map +1 -1
- package/dist/tools/builtin-agent-tools.js +41 -0
- package/dist/tools/builtin-agent-tools.js.map +1 -1
- 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/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -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/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/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/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/verification/verify-tools.d.ts.map +1 -1
- package/dist/verification/verify-tools.js +5 -6
- package/dist/verification/verify-tools.js.map +1 -1
- package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -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/20260610000000_t11962-schedules/migration.sql +48 -0
- package/package.json +33 -13
- package/templates/workflows/release-prepare.yml.tmpl +48 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../../src/deriver/queue-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,oEAAoE;AACpE,eAAO,MAAM,eAAe,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../../src/deriver/queue-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,oEAAoE;AACpE,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,QAAU,CAAC;AAS3C,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B;AAED,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAiCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI7D;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,YAAiB,GAAG,WAAW,GAAG,IAAI,CA+D5E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAYhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAyB9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,GAAG,mBAAmB,CA4CpF"}
|
|
@@ -25,6 +25,18 @@ import { getBrainNativeDb } from '../store/memory-sqlite.js';
|
|
|
25
25
|
export const STALE_CLAIM_MINUTES = 30;
|
|
26
26
|
/** Max retry count before item is moved to 'failed' permanently. */
|
|
27
27
|
export const MAX_RETRY_COUNT = 5;
|
|
28
|
+
/**
|
|
29
|
+
* Base exponential-backoff delay in seconds for a re-queued item (T10405).
|
|
30
|
+
*
|
|
31
|
+
* A failed/recovered item's next claim is gated until
|
|
32
|
+
* `now + BACKOFF_BASE_SECONDS * 2^(retryCount - 1)`, capped at
|
|
33
|
+
* {@link BACKOFF_MAX_SECONDS}. With base 30s the schedule is
|
|
34
|
+
* 30s → 60s → 120s → 240s (then capped), so a transiently-failing item
|
|
35
|
+
* backs off geometrically instead of hot-looping the worker.
|
|
36
|
+
*/
|
|
37
|
+
export const BACKOFF_BASE_SECONDS = 30;
|
|
38
|
+
/** Maximum exponential-backoff delay in seconds (cap for {@link computeBackoffSeconds}). */
|
|
39
|
+
export const BACKOFF_MAX_SECONDS = 30 * 60;
|
|
28
40
|
/** SQLite busy error string (returned when BEGIN IMMEDIATE cannot acquire lock). */
|
|
29
41
|
const SQLITE_BUSY_STR = 'database is locked';
|
|
30
42
|
// ============================================================================
|
|
@@ -38,6 +50,28 @@ function defaultWorkerId() {
|
|
|
38
50
|
function minutesAgo(n) {
|
|
39
51
|
return new Date(Date.now() - n * 60_000).toISOString();
|
|
40
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Compute the exponential-backoff delay (seconds) for a re-queued item (T10405).
|
|
55
|
+
*
|
|
56
|
+
* Returns `BACKOFF_BASE_SECONDS * 2^(attempt - 1)` capped at
|
|
57
|
+
* {@link BACKOFF_MAX_SECONDS}. `attempt` is the *new* retry count (1-based:
|
|
58
|
+
* the first failure backs off by the base delay). An `attempt` of 0 or less is
|
|
59
|
+
* clamped to 1 so the first retry always waits at least the base delay.
|
|
60
|
+
*
|
|
61
|
+
* @param attempt - The new (post-increment) retry count for the item.
|
|
62
|
+
* @returns Backoff delay in seconds, in `[BACKOFF_BASE_SECONDS, BACKOFF_MAX_SECONDS]`.
|
|
63
|
+
*
|
|
64
|
+
* @task T10405
|
|
65
|
+
*/
|
|
66
|
+
export function computeBackoffSeconds(attempt) {
|
|
67
|
+
const safeAttempt = attempt < 1 ? 1 : attempt;
|
|
68
|
+
const delay = BACKOFF_BASE_SECONDS * 2 ** (safeAttempt - 1);
|
|
69
|
+
return Math.min(delay, BACKOFF_MAX_SECONDS);
|
|
70
|
+
}
|
|
71
|
+
/** Return ISO 8601 timestamp for N seconds in the future. */
|
|
72
|
+
function secondsFromNow(n) {
|
|
73
|
+
return new Date(Date.now() + n * 1000).toISOString();
|
|
74
|
+
}
|
|
41
75
|
// ============================================================================
|
|
42
76
|
// Public API
|
|
43
77
|
// ============================================================================
|
|
@@ -70,18 +104,22 @@ export function claimNextItem(options = {}) {
|
|
|
70
104
|
throw err;
|
|
71
105
|
}
|
|
72
106
|
try {
|
|
107
|
+
// T10405: gate on the exponential-backoff window — a re-queued item with a
|
|
108
|
+
// future `next_attempt_at` is skipped until its backoff elapses. Fresh items
|
|
109
|
+
// (next_attempt_at IS NULL) are always eligible.
|
|
110
|
+
const now = new Date().toISOString();
|
|
73
111
|
const row = nativeDb
|
|
74
112
|
.prepare(`SELECT id, item_type, item_id, priority, retry_count
|
|
75
113
|
FROM deriver_queue
|
|
76
114
|
WHERE status = 'pending'
|
|
115
|
+
AND (next_attempt_at IS NULL OR next_attempt_at <= ?)
|
|
77
116
|
ORDER BY priority DESC, created_at ASC
|
|
78
117
|
LIMIT 1`)
|
|
79
|
-
.get();
|
|
118
|
+
.get(now);
|
|
80
119
|
if (!row) {
|
|
81
120
|
nativeDb.exec('ROLLBACK');
|
|
82
121
|
return null;
|
|
83
122
|
}
|
|
84
|
-
const now = new Date().toISOString();
|
|
85
123
|
nativeDb
|
|
86
124
|
.prepare(`UPDATE deriver_queue
|
|
87
125
|
SET status = 'in_progress', claimed_at = ?, claimed_by = ?
|
|
@@ -129,8 +167,10 @@ export function completeItem(itemId, options = {}) {
|
|
|
129
167
|
* Mark a claimed item as failed (with optional error message).
|
|
130
168
|
*
|
|
131
169
|
* If `retryCount` is below {@link MAX_RETRY_COUNT}, the item is re-queued
|
|
132
|
-
* to `pending` with `retryCount + 1`
|
|
133
|
-
*
|
|
170
|
+
* to `pending` with `retryCount + 1` and an exponential-backoff
|
|
171
|
+
* `next_attempt_at` (T10405) so it is not re-claimed until the backoff window
|
|
172
|
+
* elapses. Otherwise the item is permanently moved to `failed` (DLQ semantics)
|
|
173
|
+
* and its backoff gate is cleared.
|
|
134
174
|
*
|
|
135
175
|
* @param itemId - The deriver_queue.id to fail.
|
|
136
176
|
* @param errorMsg - Human-readable error for the error_msg column.
|
|
@@ -147,13 +187,16 @@ export function failItem(itemId, errorMsg, options = {}) {
|
|
|
147
187
|
if (!row)
|
|
148
188
|
return;
|
|
149
189
|
const nextRetry = (row.retry_count ?? 0) + 1;
|
|
150
|
-
const
|
|
190
|
+
const permanentFail = nextRetry >= MAX_RETRY_COUNT;
|
|
191
|
+
const nextStatus = permanentFail ? 'failed' : 'pending';
|
|
192
|
+
// Re-queued items back off geometrically; permanently-failed items clear the gate.
|
|
193
|
+
const nextAttemptAt = permanentFail ? null : secondsFromNow(computeBackoffSeconds(nextRetry));
|
|
151
194
|
nativeDb
|
|
152
195
|
.prepare(`UPDATE deriver_queue
|
|
153
196
|
SET status = ?, retry_count = ?, error_msg = ?,
|
|
154
|
-
claimed_at = NULL, claimed_by = NULL
|
|
197
|
+
claimed_at = NULL, claimed_by = NULL, next_attempt_at = ?
|
|
155
198
|
WHERE id = ? AND status = 'in_progress'`)
|
|
156
|
-
.run(nextStatus, nextRetry, errorMsg, itemId);
|
|
199
|
+
.run(nextStatus, nextRetry, errorMsg, nextAttemptAt, itemId);
|
|
157
200
|
}
|
|
158
201
|
/**
|
|
159
202
|
* Re-queue stale in_progress items whose `claimed_at` is older than
|
|
@@ -192,12 +235,14 @@ export function recoverStaleItems(options = {}) {
|
|
|
192
235
|
result.failed++;
|
|
193
236
|
}
|
|
194
237
|
else {
|
|
238
|
+
// T10405: re-queued stale items also back off geometrically.
|
|
239
|
+
const nextAttemptAt = secondsFromNow(computeBackoffSeconds(nextRetry));
|
|
195
240
|
nativeDb
|
|
196
241
|
.prepare(`UPDATE deriver_queue
|
|
197
242
|
SET status = 'pending', retry_count = ?, error_msg = 'recovered from stale claim',
|
|
198
|
-
claimed_at = NULL, claimed_by = NULL
|
|
243
|
+
claimed_at = NULL, claimed_by = NULL, next_attempt_at = ?
|
|
199
244
|
WHERE id = ?`)
|
|
200
|
-
.run(nextRetry, row.id);
|
|
245
|
+
.run(nextRetry, nextAttemptAt, row.id);
|
|
201
246
|
result.requeued++;
|
|
202
247
|
}
|
|
203
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/deriver/queue-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,oFAAoF;AACpF,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAyD7C,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,mEAAmE;AACnE,SAAS,eAAe;IACtB,OAAO,UAAU,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,mDAAmD;AACnD,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,UAAwB,EAAE;IACtD,MAAM,EAAE,QAAQ,GAAG,eAAe,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACjE,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAE5E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,0EAA0E;IAC1E,IAAI,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,CAAC,iDAAiD;QAChE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ;aACjB,OAAO,CACN
|
|
1
|
+
{"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/deriver/queue-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigDomainHandler — routes the config-as-domain operations to the
|
|
3
|
+
* `ConfigManifest` cascade resolver.
|
|
4
|
+
*
|
|
5
|
+
* This is the CORE-side routing surface for the four config-as-domain ops added
|
|
6
|
+
* in T11917 (`config.get`, `config.list`, `config.validate`, `config.unset`),
|
|
7
|
+
* plus the pre-existing `config.show` read. Every method delegates to the pure
|
|
8
|
+
* JSON cascade resolver in `../config/registry.js` (`resolveCleoConfig`,
|
|
9
|
+
* `getConfigValue`, `validateConfig`, `unsetConfigValue`) — the SSoT
|
|
10
|
+
* implementation of the {@link ConfigManifestEntry} contract from
|
|
11
|
+
* `@cleocode/contracts/config`.
|
|
12
|
+
*
|
|
13
|
+
* The handler lives in CORE (not the CLI `cleo/` dispatch layer) so the routing
|
|
14
|
+
* logic — and the cascade resolver it calls — is reusable by every consumer
|
|
15
|
+
* (CLI dispatch, the SDK gateway, REST clients) without crossing the
|
|
16
|
+
* package boundary back into `cleo/`. The thin `admin` DomainHandler in
|
|
17
|
+
* `packages/cleo/src/dispatch/domains/admin.ts` delegates its `config.*` ops to
|
|
18
|
+
* this class and wraps the {@link EngineResult} into the LAFS envelope.
|
|
19
|
+
*
|
|
20
|
+
* Pure JSON file IO only — does NOT open SQLite (ADR-068 DB Open Guard
|
|
21
|
+
* preserved; the cascade resolver it calls is also SQLite-free).
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
* @module @cleocode/core/dispatch/config-domain-handler
|
|
25
|
+
*
|
|
26
|
+
* @task T11917 — config-as-domain (M5/AC3)
|
|
27
|
+
* @epic T11769 — EP-API-STANDARD-FOUNDATION
|
|
28
|
+
* @saga T9855 — ConfigManifest SSoT
|
|
29
|
+
* @adr 076
|
|
30
|
+
*/
|
|
31
|
+
import { type EngineResult } from '@cleocode/contracts';
|
|
32
|
+
import { type ResolveScope, type ValidateScope } from '../config/registry.js';
|
|
33
|
+
/** Result of `config.get`. */
|
|
34
|
+
export interface ConfigGetResult {
|
|
35
|
+
/** The dot-notation key that was resolved. */
|
|
36
|
+
key: string;
|
|
37
|
+
/** Cascade slice the value was resolved against. */
|
|
38
|
+
scope: ResolveScope;
|
|
39
|
+
/** Resolved value, or `null` when the key is absent. */
|
|
40
|
+
value: unknown;
|
|
41
|
+
/** `true` IFF the key resolved to a defined value in the cascade. */
|
|
42
|
+
found: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** Result of `config.list`. */
|
|
45
|
+
export interface ConfigListResult {
|
|
46
|
+
/** Cascade slice the config was resolved against. */
|
|
47
|
+
scope: ResolveScope;
|
|
48
|
+
/** Full resolved config object for the slice. */
|
|
49
|
+
config: Record<string, unknown>;
|
|
50
|
+
/** Flattened dot-notation keys present in the resolved config. */
|
|
51
|
+
keys: string[];
|
|
52
|
+
}
|
|
53
|
+
/** Result of `config.validate`. */
|
|
54
|
+
export interface ConfigValidateResult {
|
|
55
|
+
/** Scope that was validated. */
|
|
56
|
+
scope: ValidateScope;
|
|
57
|
+
/** `true` IFF every gate passed. */
|
|
58
|
+
ok: boolean;
|
|
59
|
+
/** Human-readable schema issues. Empty when `ok === true`. */
|
|
60
|
+
issues: string[];
|
|
61
|
+
}
|
|
62
|
+
/** Result of `config.unset`. */
|
|
63
|
+
export interface ConfigUnsetResult {
|
|
64
|
+
/** Config key that was targeted. */
|
|
65
|
+
key: string;
|
|
66
|
+
/** Scope the key was removed from. */
|
|
67
|
+
scope: 'project' | 'global';
|
|
68
|
+
/** `true` IFF a value was actually deleted. */
|
|
69
|
+
removed: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Routes the config-as-domain operations to the ConfigManifest cascade
|
|
73
|
+
* resolver. Stateless — construct once and reuse, or instantiate per call.
|
|
74
|
+
*
|
|
75
|
+
* @task T11917
|
|
76
|
+
*/
|
|
77
|
+
export declare class ConfigDomainHandler {
|
|
78
|
+
/**
|
|
79
|
+
* `config.get` — resolve a single config value by dot-notation key through
|
|
80
|
+
* the cascade resolver ({@link getConfigValue}).
|
|
81
|
+
*
|
|
82
|
+
* @param projectRoot - Absolute path to the project root.
|
|
83
|
+
* @param key - Dot-notation config key (required).
|
|
84
|
+
* @param scopeRaw - Cascade slice (`global` | `project` | `merged`). Defaults
|
|
85
|
+
* to `merged`.
|
|
86
|
+
*/
|
|
87
|
+
get(projectRoot: string, key: string | undefined, scopeRaw?: string): Promise<EngineResult<ConfigGetResult>>;
|
|
88
|
+
/**
|
|
89
|
+
* `config.list` — resolve the full config cascade for a slice and surface its
|
|
90
|
+
* flattened dot-notation keys ({@link resolveCleoConfig} +
|
|
91
|
+
* {@link flattenConfigKeys}).
|
|
92
|
+
*
|
|
93
|
+
* @param projectRoot - Absolute path to the project root.
|
|
94
|
+
* @param scopeRaw - Cascade slice. Defaults to `merged`.
|
|
95
|
+
*/
|
|
96
|
+
list(projectRoot: string, scopeRaw?: string): Promise<EngineResult<ConfigListResult>>;
|
|
97
|
+
/**
|
|
98
|
+
* `config.validate` — schema-validate a scoped config file against its
|
|
99
|
+
* manifest entry's schema ({@link validateConfig}). A rejected file resolves
|
|
100
|
+
* to `{ ok: false, issues: [...] }` — it does NOT throw.
|
|
101
|
+
*
|
|
102
|
+
* @param projectRoot - Absolute path to the project root.
|
|
103
|
+
* @param scopeRaw - `global` | `project`. Defaults to `project`. `merged` is
|
|
104
|
+
* rejected — validation runs against a single file's manifest entry.
|
|
105
|
+
*/
|
|
106
|
+
validate(projectRoot: string, scopeRaw?: string): Promise<EngineResult<ConfigValidateResult>>;
|
|
107
|
+
/**
|
|
108
|
+
* `config.unset` — remove a key from a scoped config file and persist the
|
|
109
|
+
* result ({@link unsetConfigValue}). Idempotent: removing an absent key is a
|
|
110
|
+
* success with `removed: false`.
|
|
111
|
+
*
|
|
112
|
+
* @param projectRoot - Absolute path to the project root.
|
|
113
|
+
* @param key - Dot-notation config key to remove (required).
|
|
114
|
+
* @param global - When `true`, target the global config file.
|
|
115
|
+
*/
|
|
116
|
+
unset(projectRoot: string, key: string | undefined, global?: boolean): Promise<EngineResult<ConfigUnsetResult>>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Shared singleton {@link ConfigDomainHandler}. The handler is stateless, so a
|
|
120
|
+
* single instance is reused across the process.
|
|
121
|
+
*
|
|
122
|
+
* @task T11917
|
|
123
|
+
*/
|
|
124
|
+
export declare const configDomainHandler: ConfigDomainHandler;
|
|
125
|
+
//# sourceMappingURL=config-domain-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-domain-handler.d.ts","sourceRoot":"","sources":["../../src/dispatch/config-domain-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,KAAK,YAAY,EAA8B,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAGL,KAAK,YAAY,EAGjB,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAE/B,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,KAAK,EAAE,YAAY,CAAC;IACpB,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAC;IACf,qEAAqE;IACrE,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+BAA+B;AAC/B,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,KAAK,EAAE,YAAY,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kEAAkE;IAClE,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,oCAAoC;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,gCAAgC;AAChC,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;CAClB;AA2BD;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;OAQG;IACG,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAmBzC;;;;;;;OAOG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAgB3F;;;;;;;;OAQG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAmB9C;;;;;;;;OAQG;IACG,KAAK,CACT,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CAW5C;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigDomainHandler — routes the config-as-domain operations to the
|
|
3
|
+
* `ConfigManifest` cascade resolver.
|
|
4
|
+
*
|
|
5
|
+
* This is the CORE-side routing surface for the four config-as-domain ops added
|
|
6
|
+
* in T11917 (`config.get`, `config.list`, `config.validate`, `config.unset`),
|
|
7
|
+
* plus the pre-existing `config.show` read. Every method delegates to the pure
|
|
8
|
+
* JSON cascade resolver in `../config/registry.js` (`resolveCleoConfig`,
|
|
9
|
+
* `getConfigValue`, `validateConfig`, `unsetConfigValue`) — the SSoT
|
|
10
|
+
* implementation of the {@link ConfigManifestEntry} contract from
|
|
11
|
+
* `@cleocode/contracts/config`.
|
|
12
|
+
*
|
|
13
|
+
* The handler lives in CORE (not the CLI `cleo/` dispatch layer) so the routing
|
|
14
|
+
* logic — and the cascade resolver it calls — is reusable by every consumer
|
|
15
|
+
* (CLI dispatch, the SDK gateway, REST clients) without crossing the
|
|
16
|
+
* package boundary back into `cleo/`. The thin `admin` DomainHandler in
|
|
17
|
+
* `packages/cleo/src/dispatch/domains/admin.ts` delegates its `config.*` ops to
|
|
18
|
+
* this class and wraps the {@link EngineResult} into the LAFS envelope.
|
|
19
|
+
*
|
|
20
|
+
* Pure JSON file IO only — does NOT open SQLite (ADR-068 DB Open Guard
|
|
21
|
+
* preserved; the cascade resolver it calls is also SQLite-free).
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
* @module @cleocode/core/dispatch/config-domain-handler
|
|
25
|
+
*
|
|
26
|
+
* @task T11917 — config-as-domain (M5/AC3)
|
|
27
|
+
* @epic T11769 — EP-API-STANDARD-FOUNDATION
|
|
28
|
+
* @saga T9855 — ConfigManifest SSoT
|
|
29
|
+
* @adr 076
|
|
30
|
+
*/
|
|
31
|
+
import { engineError, engineSuccess } from '@cleocode/contracts';
|
|
32
|
+
import { flattenConfigKeys, getConfigValue, resolveCleoConfig, unsetConfigValue, validateConfig, } from '../config/registry.js';
|
|
33
|
+
/** Cascade slice selector accepted by `config.get` / `config.list`. */
|
|
34
|
+
const RESOLVE_SCOPES = ['global', 'project', 'merged'];
|
|
35
|
+
/** Scope selector accepted by `config.validate`. */
|
|
36
|
+
const VALIDATE_SCOPES = ['global', 'project'];
|
|
37
|
+
/**
|
|
38
|
+
* Narrow an untrusted scope string to a {@link ResolveScope}, defaulting to
|
|
39
|
+
* `'merged'`. Returns `null` when the string is non-empty but invalid so the
|
|
40
|
+
* caller can reject with `E_INVALID_INPUT`.
|
|
41
|
+
*/
|
|
42
|
+
function coerceResolveScope(scope) {
|
|
43
|
+
if (scope === undefined)
|
|
44
|
+
return 'merged';
|
|
45
|
+
return RESOLVE_SCOPES.includes(scope) ? scope : null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Narrow an untrusted scope string to a {@link ValidateScope}, defaulting to
|
|
49
|
+
* `'project'`. Returns `null` when the string is non-empty but invalid.
|
|
50
|
+
*/
|
|
51
|
+
function coerceValidateScope(scope) {
|
|
52
|
+
if (scope === undefined)
|
|
53
|
+
return 'project';
|
|
54
|
+
return VALIDATE_SCOPES.includes(scope) ? scope : null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Routes the config-as-domain operations to the ConfigManifest cascade
|
|
58
|
+
* resolver. Stateless — construct once and reuse, or instantiate per call.
|
|
59
|
+
*
|
|
60
|
+
* @task T11917
|
|
61
|
+
*/
|
|
62
|
+
export class ConfigDomainHandler {
|
|
63
|
+
/**
|
|
64
|
+
* `config.get` — resolve a single config value by dot-notation key through
|
|
65
|
+
* the cascade resolver ({@link getConfigValue}).
|
|
66
|
+
*
|
|
67
|
+
* @param projectRoot - Absolute path to the project root.
|
|
68
|
+
* @param key - Dot-notation config key (required).
|
|
69
|
+
* @param scopeRaw - Cascade slice (`global` | `project` | `merged`). Defaults
|
|
70
|
+
* to `merged`.
|
|
71
|
+
*/
|
|
72
|
+
async get(projectRoot, key, scopeRaw) {
|
|
73
|
+
if (!key) {
|
|
74
|
+
return engineError('E_INVALID_INPUT', 'key is required', { fix: 'cleo config get <key>' });
|
|
75
|
+
}
|
|
76
|
+
const scope = coerceResolveScope(scopeRaw);
|
|
77
|
+
if (scope === null) {
|
|
78
|
+
return engineError('E_INVALID_INPUT', `scope must be one of: ${RESOLVE_SCOPES.join(', ')}`);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const value = await getConfigValue(key, { scope, projectRoot });
|
|
82
|
+
return engineSuccess({ key, scope, value: value ?? null, found: value !== undefined });
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return engineError('E_CONFIG_RESOLVE_FAILED', err instanceof Error ? err.message : String(err));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* `config.list` — resolve the full config cascade for a slice and surface its
|
|
90
|
+
* flattened dot-notation keys ({@link resolveCleoConfig} +
|
|
91
|
+
* {@link flattenConfigKeys}).
|
|
92
|
+
*
|
|
93
|
+
* @param projectRoot - Absolute path to the project root.
|
|
94
|
+
* @param scopeRaw - Cascade slice. Defaults to `merged`.
|
|
95
|
+
*/
|
|
96
|
+
async list(projectRoot, scopeRaw) {
|
|
97
|
+
const scope = coerceResolveScope(scopeRaw);
|
|
98
|
+
if (scope === null) {
|
|
99
|
+
return engineError('E_INVALID_INPUT', `scope must be one of: ${RESOLVE_SCOPES.join(', ')}`);
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const config = await resolveCleoConfig({ scope, projectRoot });
|
|
103
|
+
return engineSuccess({ scope, config, keys: flattenConfigKeys(config) });
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
return engineError('E_CONFIG_RESOLVE_FAILED', err instanceof Error ? err.message : String(err));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* `config.validate` — schema-validate a scoped config file against its
|
|
111
|
+
* manifest entry's schema ({@link validateConfig}). A rejected file resolves
|
|
112
|
+
* to `{ ok: false, issues: [...] }` — it does NOT throw.
|
|
113
|
+
*
|
|
114
|
+
* @param projectRoot - Absolute path to the project root.
|
|
115
|
+
* @param scopeRaw - `global` | `project`. Defaults to `project`. `merged` is
|
|
116
|
+
* rejected — validation runs against a single file's manifest entry.
|
|
117
|
+
*/
|
|
118
|
+
async validate(projectRoot, scopeRaw) {
|
|
119
|
+
const scope = coerceValidateScope(scopeRaw);
|
|
120
|
+
if (scope === null) {
|
|
121
|
+
return engineError('E_INVALID_INPUT', `scope must be one of: ${VALIDATE_SCOPES.join(', ')} (merged is not validatable)`);
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const result = await validateConfig(scope, projectRoot);
|
|
125
|
+
return engineSuccess({ scope, ok: result.ok, issues: result.issues });
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
return engineError('E_CONFIG_VALIDATE_FAILED', err instanceof Error ? err.message : String(err));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* `config.unset` — remove a key from a scoped config file and persist the
|
|
133
|
+
* result ({@link unsetConfigValue}). Idempotent: removing an absent key is a
|
|
134
|
+
* success with `removed: false`.
|
|
135
|
+
*
|
|
136
|
+
* @param projectRoot - Absolute path to the project root.
|
|
137
|
+
* @param key - Dot-notation config key to remove (required).
|
|
138
|
+
* @param global - When `true`, target the global config file.
|
|
139
|
+
*/
|
|
140
|
+
async unset(projectRoot, key, global) {
|
|
141
|
+
if (!key) {
|
|
142
|
+
return engineError('E_INVALID_INPUT', 'key is required', { fix: 'cleo config unset <key>' });
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const result = await unsetConfigValue(key, { projectRoot, global });
|
|
146
|
+
return engineSuccess({ key: result.key, scope: result.scope, removed: result.removed });
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
return engineError('E_CONFIG_UNSET_FAILED', err instanceof Error ? err.message : String(err));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Shared singleton {@link ConfigDomainHandler}. The handler is stateless, so a
|
|
155
|
+
* single instance is reused across the process.
|
|
156
|
+
*
|
|
157
|
+
* @task T11917
|
|
158
|
+
*/
|
|
159
|
+
export const configDomainHandler = new ConfigDomainHandler();
|
|
160
|
+
//# sourceMappingURL=config-domain-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-domain-handler.js","sourceRoot":"","sources":["../../src/dispatch/config-domain-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-contracts.d.ts","sourceRoot":"","sources":["../../../src/dispatch/contracts/input-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"input-contracts.d.ts","sourceRoot":"","sources":["../../../src/dispatch/contracts/input-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EAepC,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,EAAE,8BAsB7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI,CAE1F"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* @task T9918 — original seed entry + getInputContract accessor
|
|
27
27
|
* @task T9917 — tasks.add + tasks.update extension; schemas moved to contracts
|
|
28
28
|
*/
|
|
29
|
-
import { tasksAddBatchInputContract, tasksAddInputContract, tasksUpdateInputContract, } from '@cleocode/contracts';
|
|
29
|
+
import { accountAddInputContract, accountListInputContract, accountRemoveInputContract, modelQueryInputContract, modelShowInputContract, profileCreateInputContract, profileListInputContract, profilePinInputContract, profileUseInputContract, providerConnectInputContract, providerListInputContract, providerShowInputContract, serviceConnectInputContract, serviceListInputContract, serviceRevokeInputContract, serviceStatusInputContract, tasksAddBatchInputContract, tasksAddInputContract, tasksUpdateInputContract, } from '@cleocode/contracts';
|
|
30
30
|
/**
|
|
31
31
|
* Registry of every {@link OperationInputContract} known to the CLEO
|
|
32
32
|
* runtime, keyed by the contract's `operation` identifier.
|
|
@@ -50,6 +50,24 @@ export const INPUT_CONTRACTS = {
|
|
|
50
50
|
'tasks.add': tasksAddInputContract,
|
|
51
51
|
'tasks.add-batch': tasksAddBatchInputContract,
|
|
52
52
|
'tasks.update': tasksUpdateInputContract,
|
|
53
|
+
// service-vault CLI verbs (T11941 · epic T11765 · M2-W4)
|
|
54
|
+
'service.connect': serviceConnectInputContract,
|
|
55
|
+
'service.list': serviceListInputContract,
|
|
56
|
+
'service.revoke': serviceRevokeInputContract,
|
|
57
|
+
'service.status': serviceStatusInputContract,
|
|
58
|
+
// 5-entity provider-experience ops (T11700 · epic T11666)
|
|
59
|
+
'account.add': accountAddInputContract,
|
|
60
|
+
'account.list': accountListInputContract,
|
|
61
|
+
'account.remove': accountRemoveInputContract,
|
|
62
|
+
'provider.list': providerListInputContract,
|
|
63
|
+
'provider.show': providerShowInputContract,
|
|
64
|
+
'provider.connect': providerConnectInputContract,
|
|
65
|
+
'model.query': modelQueryInputContract,
|
|
66
|
+
'model.show': modelShowInputContract,
|
|
67
|
+
'profile.create': profileCreateInputContract,
|
|
68
|
+
'profile.list': profileListInputContract,
|
|
69
|
+
'profile.pin': profilePinInputContract,
|
|
70
|
+
'profile.use': profileUseInputContract,
|
|
53
71
|
};
|
|
54
72
|
/**
|
|
55
73
|
* Resolve the {@link OperationInputContract} for an operation id, or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-contracts.js","sourceRoot":"","sources":["../../../src/dispatch/contracts/input-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"input-contracts.js","sourceRoot":"","sources":["../../../src/dispatch/contracts/input-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EAGtB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D,WAAW,EAAE,qBAAqB;IAClC,iBAAiB,EAAE,0BAA0B;IAC7C,cAAc,EAAE,wBAAwB;IACxC,yDAAyD;IACzD,iBAAiB,EAAE,2BAA2B;IAC9C,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,0BAA0B;IAC5C,gBAAgB,EAAE,0BAA0B;IAC5C,0DAA0D;IAC1D,aAAa,EAAE,uBAAuB;IACtC,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,0BAA0B;IAC5C,eAAe,EAAE,yBAAyB;IAC1C,eAAe,EAAE,yBAAyB;IAC1C,kBAAkB,EAAE,4BAA4B;IAChD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE,sBAAsB;IACpC,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,wBAAwB;IACxC,aAAa,EAAE,uBAAuB;IACtC,aAAa,EAAE,uBAAuB;CACvC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC"}
|