@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
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-vault trust gate — **policy-before-decrypt** per-agent access control.
|
|
3
|
+
*
|
|
4
|
+
* EP-UNIVERSAL-SERVICE-VAULT (epic T11765 · saga SG-VAULT-CORE T10409 · M2 W1a ·
|
|
5
|
+
* task T11937 · AC4). Ports onecli `connect.rs` selective-mode: an agent may use a
|
|
6
|
+
* service connection ONLY when (a) a row exists in `agent_service_grants` linking
|
|
7
|
+
* the agent to the connection, AND (b) the grant's `session_policy` evaluates to
|
|
8
|
+
* an allow. This module evaluates that decision from already-loaded grant data —
|
|
9
|
+
* it performs ZERO crypto. The store
|
|
10
|
+
* ({@link import('./service-connections-accessor.js')}) calls `decryptGlobal`
|
|
11
|
+
* ONLY after this gate returns `allowed: true`, so a denied/blocked agent NEVER
|
|
12
|
+
* triggers a decrypt (the policy-before-decrypt invariant, proven by unit test).
|
|
13
|
+
*
|
|
14
|
+
* ## Why the gate is decrypt-free
|
|
15
|
+
*
|
|
16
|
+
* The gate takes the grant rows as INPUT and returns a pure decision. It cannot
|
|
17
|
+
* decrypt even if it wanted to — it imports no crypto. The decryption chokepoint
|
|
18
|
+
* lives one layer up (the accessor), guarded by this decision. That separation is
|
|
19
|
+
* exactly what makes "a denied agent never decrypts" structurally true and
|
|
20
|
+
* spy-assertable: the spy is placed on `decryptGlobal`, and a deny path returns
|
|
21
|
+
* before the accessor reaches the decrypt call.
|
|
22
|
+
*
|
|
23
|
+
* ## Policy shape ({@link SessionPolicy})
|
|
24
|
+
*
|
|
25
|
+
* Mirrors onecli's `PolicyAction` (block / rate-limit / manual-approval) collapsed
|
|
26
|
+
* to a per-grant JSON:
|
|
27
|
+
*
|
|
28
|
+
* - `mode: 'allow' | 'block'` — `block` is a hard deny (no decrypt).
|
|
29
|
+
* - `rateLimit?` — advisory rate cap; the gate surfaces it but does not itself
|
|
30
|
+
* count requests (the caller enforces). Presence alone does not deny.
|
|
31
|
+
* - `manualApproval?: true` — the connection requires an out-of-band human
|
|
32
|
+
* approval that has not been granted for this session → deny (no decrypt)
|
|
33
|
+
* until the caller supplies `approved: true` in the evaluation context.
|
|
34
|
+
*
|
|
35
|
+
* A bare grant (`{"mode":"allow"}`, the column default) allows.
|
|
36
|
+
*
|
|
37
|
+
* @module store/service-trust-gate
|
|
38
|
+
* @task T11937
|
|
39
|
+
* @epic T11765
|
|
40
|
+
* @saga T10409
|
|
41
|
+
* @see ./service-connections-accessor.ts — the accessor that decrypts ONLY on allow
|
|
42
|
+
* @see ../../../onecli — `apps/gateway/src/connect.rs` selective-mode (the ported model)
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* Advisory rate-limit clause on a {@link SessionPolicy}.
|
|
46
|
+
*
|
|
47
|
+
* The gate reports it on an allow decision; it does NOT itself maintain a counter
|
|
48
|
+
* (the consumer enforces the cap). Presence never denies access — it shapes how
|
|
49
|
+
* the caller throttles an already-permitted credential use.
|
|
50
|
+
*
|
|
51
|
+
* @task T11937
|
|
52
|
+
*/
|
|
53
|
+
export interface SessionRateLimit {
|
|
54
|
+
/** Maximum requests permitted within `window`. */
|
|
55
|
+
readonly maxRequests: number;
|
|
56
|
+
/** Rolling window the cap applies over. */
|
|
57
|
+
readonly window: 'minute' | 'hour' | 'day';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Per-grant session policy evaluated by the trust gate BEFORE any decrypt.
|
|
61
|
+
*
|
|
62
|
+
* Serialized as the `agent_service_grants.session_policy` JSON column. The column
|
|
63
|
+
* default `{"mode":"allow"}` makes a bare grant permissive.
|
|
64
|
+
*
|
|
65
|
+
* @task T11937
|
|
66
|
+
*/
|
|
67
|
+
export interface SessionPolicy {
|
|
68
|
+
/** `block` is a hard deny (no decrypt); `allow` permits (subject to other clauses). */
|
|
69
|
+
readonly mode: 'allow' | 'block';
|
|
70
|
+
/** Advisory rate cap surfaced on an allow decision (never itself denies). */
|
|
71
|
+
readonly rateLimit?: SessionRateLimit;
|
|
72
|
+
/**
|
|
73
|
+
* When `true`, the connection requires an out-of-band human approval. The gate
|
|
74
|
+
* DENIES unless the evaluation context carries `approved: true` for this
|
|
75
|
+
* session.
|
|
76
|
+
*/
|
|
77
|
+
readonly manualApproval?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Minimal grant projection the gate evaluates — exactly the
|
|
81
|
+
* `agent_service_grants` columns the decision needs, no token material.
|
|
82
|
+
*
|
|
83
|
+
* @task T11937
|
|
84
|
+
*/
|
|
85
|
+
export interface ServiceGrant {
|
|
86
|
+
/** The granted agent. */
|
|
87
|
+
readonly agentId: string;
|
|
88
|
+
/** The connection this grant authorizes. */
|
|
89
|
+
readonly serviceConnectionId: number;
|
|
90
|
+
/** The parsed {@link SessionPolicy} (already JSON-decoded from the column). */
|
|
91
|
+
readonly sessionPolicy: SessionPolicy;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Context for a single access evaluation.
|
|
95
|
+
*
|
|
96
|
+
* @task T11937
|
|
97
|
+
*/
|
|
98
|
+
export interface TrustEvalContext {
|
|
99
|
+
/** The agent requesting access. */
|
|
100
|
+
readonly agentId: string;
|
|
101
|
+
/** The connection the agent wants to use. */
|
|
102
|
+
readonly serviceConnectionId: number;
|
|
103
|
+
/**
|
|
104
|
+
* Whether an out-of-band manual approval has been granted for this session.
|
|
105
|
+
* Required to pass a `manualApproval: true` policy. Defaults to `false`.
|
|
106
|
+
*/
|
|
107
|
+
readonly approved?: boolean;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Reason an access evaluation was DENIED — stable codes for diagnostics/audit.
|
|
111
|
+
*
|
|
112
|
+
* @task T11937
|
|
113
|
+
*/
|
|
114
|
+
export type TrustDenyReason = 'no-grant' | 'policy-block' | 'manual-approval-required';
|
|
115
|
+
/**
|
|
116
|
+
* The pure decision returned by {@link evaluateServiceAccess}.
|
|
117
|
+
*
|
|
118
|
+
* On `allowed: false` the accessor MUST NOT decrypt. On `allowed: true` the
|
|
119
|
+
* accessor may decrypt and (optionally) honor `rateLimit`.
|
|
120
|
+
*
|
|
121
|
+
* @task T11937
|
|
122
|
+
*/
|
|
123
|
+
export type TrustDecision = {
|
|
124
|
+
readonly allowed: true;
|
|
125
|
+
readonly rateLimit?: SessionRateLimit;
|
|
126
|
+
} | {
|
|
127
|
+
readonly allowed: false;
|
|
128
|
+
readonly reason: TrustDenyReason;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Parse a raw `session_policy` JSON string into a {@link SessionPolicy}, failing
|
|
132
|
+
* CLOSED (to `block`) on any malformed input.
|
|
133
|
+
*
|
|
134
|
+
* SECURITY: a corrupt/unparseable policy must NEVER silently widen access — it
|
|
135
|
+
* resolves to `{ mode: 'block' }` so the gate denies and no decrypt occurs.
|
|
136
|
+
*
|
|
137
|
+
* @param raw - The `agent_service_grants.session_policy` column value.
|
|
138
|
+
* @returns A well-formed {@link SessionPolicy}; `block` on parse failure.
|
|
139
|
+
* @task T11937
|
|
140
|
+
*/
|
|
141
|
+
export declare function parseSessionPolicy(raw: string): SessionPolicy;
|
|
142
|
+
/**
|
|
143
|
+
* Evaluate whether an agent may access a service connection — the **policy-
|
|
144
|
+
* before-decrypt** chokepoint.
|
|
145
|
+
*
|
|
146
|
+
* Pure: takes the agent's grants (already loaded) + the evaluation context and
|
|
147
|
+
* returns a {@link TrustDecision} WITHOUT touching crypto. The store calls
|
|
148
|
+
* `decryptGlobal` ONLY when the returned `allowed` is `true`. Deny order:
|
|
149
|
+
*
|
|
150
|
+
* 1. no matching grant → `no-grant` (denied).
|
|
151
|
+
* 2. grant policy `mode: 'block'` → `policy-block` (denied).
|
|
152
|
+
* 3. policy `manualApproval` set but context not `approved` →
|
|
153
|
+
* `manual-approval-required` (denied).
|
|
154
|
+
* 4. otherwise → allowed (carrying any advisory `rateLimit`).
|
|
155
|
+
*
|
|
156
|
+
* @param grants - The agent's grant rows (the accessor loads these from
|
|
157
|
+
* `agent_service_grants`). Only grants for `ctx.agentId` /
|
|
158
|
+
* `ctx.serviceConnectionId` are considered.
|
|
159
|
+
* @param ctx - The evaluation context (agent, connection, approval flag).
|
|
160
|
+
* @returns The access decision. NEVER decrypts.
|
|
161
|
+
* @task T11937
|
|
162
|
+
*/
|
|
163
|
+
export declare function evaluateServiceAccess(grants: readonly ServiceGrant[], ctx: TrustEvalContext): TrustDecision;
|
|
164
|
+
//# sourceMappingURL=service-trust-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-trust-gate.d.ts","sourceRoot":"","sources":["../../src/store/service-trust-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,0BAA0B,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAElE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAkC7D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,GAAG,EAAE,gBAAgB,GACpB,aAAa,CAiBf"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-vault trust gate — **policy-before-decrypt** per-agent access control.
|
|
3
|
+
*
|
|
4
|
+
* EP-UNIVERSAL-SERVICE-VAULT (epic T11765 · saga SG-VAULT-CORE T10409 · M2 W1a ·
|
|
5
|
+
* task T11937 · AC4). Ports onecli `connect.rs` selective-mode: an agent may use a
|
|
6
|
+
* service connection ONLY when (a) a row exists in `agent_service_grants` linking
|
|
7
|
+
* the agent to the connection, AND (b) the grant's `session_policy` evaluates to
|
|
8
|
+
* an allow. This module evaluates that decision from already-loaded grant data —
|
|
9
|
+
* it performs ZERO crypto. The store
|
|
10
|
+
* ({@link import('./service-connections-accessor.js')}) calls `decryptGlobal`
|
|
11
|
+
* ONLY after this gate returns `allowed: true`, so a denied/blocked agent NEVER
|
|
12
|
+
* triggers a decrypt (the policy-before-decrypt invariant, proven by unit test).
|
|
13
|
+
*
|
|
14
|
+
* ## Why the gate is decrypt-free
|
|
15
|
+
*
|
|
16
|
+
* The gate takes the grant rows as INPUT and returns a pure decision. It cannot
|
|
17
|
+
* decrypt even if it wanted to — it imports no crypto. The decryption chokepoint
|
|
18
|
+
* lives one layer up (the accessor), guarded by this decision. That separation is
|
|
19
|
+
* exactly what makes "a denied agent never decrypts" structurally true and
|
|
20
|
+
* spy-assertable: the spy is placed on `decryptGlobal`, and a deny path returns
|
|
21
|
+
* before the accessor reaches the decrypt call.
|
|
22
|
+
*
|
|
23
|
+
* ## Policy shape ({@link SessionPolicy})
|
|
24
|
+
*
|
|
25
|
+
* Mirrors onecli's `PolicyAction` (block / rate-limit / manual-approval) collapsed
|
|
26
|
+
* to a per-grant JSON:
|
|
27
|
+
*
|
|
28
|
+
* - `mode: 'allow' | 'block'` — `block` is a hard deny (no decrypt).
|
|
29
|
+
* - `rateLimit?` — advisory rate cap; the gate surfaces it but does not itself
|
|
30
|
+
* count requests (the caller enforces). Presence alone does not deny.
|
|
31
|
+
* - `manualApproval?: true` — the connection requires an out-of-band human
|
|
32
|
+
* approval that has not been granted for this session → deny (no decrypt)
|
|
33
|
+
* until the caller supplies `approved: true` in the evaluation context.
|
|
34
|
+
*
|
|
35
|
+
* A bare grant (`{"mode":"allow"}`, the column default) allows.
|
|
36
|
+
*
|
|
37
|
+
* @module store/service-trust-gate
|
|
38
|
+
* @task T11937
|
|
39
|
+
* @epic T11765
|
|
40
|
+
* @saga T10409
|
|
41
|
+
* @see ./service-connections-accessor.ts — the accessor that decrypts ONLY on allow
|
|
42
|
+
* @see ../../../onecli — `apps/gateway/src/connect.rs` selective-mode (the ported model)
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* Parse a raw `session_policy` JSON string into a {@link SessionPolicy}, failing
|
|
46
|
+
* CLOSED (to `block`) on any malformed input.
|
|
47
|
+
*
|
|
48
|
+
* SECURITY: a corrupt/unparseable policy must NEVER silently widen access — it
|
|
49
|
+
* resolves to `{ mode: 'block' }` so the gate denies and no decrypt occurs.
|
|
50
|
+
*
|
|
51
|
+
* @param raw - The `agent_service_grants.session_policy` column value.
|
|
52
|
+
* @returns A well-formed {@link SessionPolicy}; `block` on parse failure.
|
|
53
|
+
* @task T11937
|
|
54
|
+
*/
|
|
55
|
+
export function parseSessionPolicy(raw) {
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = JSON.parse(raw);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return { mode: 'block' };
|
|
62
|
+
}
|
|
63
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
64
|
+
return { mode: 'block' };
|
|
65
|
+
}
|
|
66
|
+
const obj = parsed;
|
|
67
|
+
const mode = obj['mode'] === 'block' ? 'block' : obj['mode'] === 'allow' ? 'allow' : 'block';
|
|
68
|
+
const policy = { mode };
|
|
69
|
+
if (obj['manualApproval'] === true) {
|
|
70
|
+
policy.manualApproval = true;
|
|
71
|
+
}
|
|
72
|
+
const rl = obj['rateLimit'];
|
|
73
|
+
if (typeof rl === 'object' && rl !== null) {
|
|
74
|
+
const rlObj = rl;
|
|
75
|
+
const maxRequests = rlObj['maxRequests'];
|
|
76
|
+
const window = rlObj['window'];
|
|
77
|
+
if (typeof maxRequests === 'number' &&
|
|
78
|
+
maxRequests > 0 &&
|
|
79
|
+
(window === 'minute' || window === 'hour' || window === 'day')) {
|
|
80
|
+
policy.rateLimit = { maxRequests, window };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return policy;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Evaluate whether an agent may access a service connection — the **policy-
|
|
87
|
+
* before-decrypt** chokepoint.
|
|
88
|
+
*
|
|
89
|
+
* Pure: takes the agent's grants (already loaded) + the evaluation context and
|
|
90
|
+
* returns a {@link TrustDecision} WITHOUT touching crypto. The store calls
|
|
91
|
+
* `decryptGlobal` ONLY when the returned `allowed` is `true`. Deny order:
|
|
92
|
+
*
|
|
93
|
+
* 1. no matching grant → `no-grant` (denied).
|
|
94
|
+
* 2. grant policy `mode: 'block'` → `policy-block` (denied).
|
|
95
|
+
* 3. policy `manualApproval` set but context not `approved` →
|
|
96
|
+
* `manual-approval-required` (denied).
|
|
97
|
+
* 4. otherwise → allowed (carrying any advisory `rateLimit`).
|
|
98
|
+
*
|
|
99
|
+
* @param grants - The agent's grant rows (the accessor loads these from
|
|
100
|
+
* `agent_service_grants`). Only grants for `ctx.agentId` /
|
|
101
|
+
* `ctx.serviceConnectionId` are considered.
|
|
102
|
+
* @param ctx - The evaluation context (agent, connection, approval flag).
|
|
103
|
+
* @returns The access decision. NEVER decrypts.
|
|
104
|
+
* @task T11937
|
|
105
|
+
*/
|
|
106
|
+
export function evaluateServiceAccess(grants, ctx) {
|
|
107
|
+
const grant = grants.find((g) => g.agentId === ctx.agentId && g.serviceConnectionId === ctx.serviceConnectionId);
|
|
108
|
+
if (grant === undefined) {
|
|
109
|
+
return { allowed: false, reason: 'no-grant' };
|
|
110
|
+
}
|
|
111
|
+
const policy = grant.sessionPolicy;
|
|
112
|
+
if (policy.mode === 'block') {
|
|
113
|
+
return { allowed: false, reason: 'policy-block' };
|
|
114
|
+
}
|
|
115
|
+
if (policy.manualApproval === true && ctx.approved !== true) {
|
|
116
|
+
return { allowed: false, reason: 'manual-approval-required' };
|
|
117
|
+
}
|
|
118
|
+
return policy.rateLimit !== undefined
|
|
119
|
+
? { allowed: true, rateLimit: policy.rateLimit }
|
|
120
|
+
: { allowed: true };
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=service-trust-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-trust-gate.js","sourceRoot":"","sources":["../../src/store/service-trust-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AA0FH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7F,MAAM,MAAM,GAIR,EAAE,IAAI,EAAE,CAAC;IACb,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,EAA6B,CAAC;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,IACE,OAAO,WAAW,KAAK,QAAQ;YAC/B,WAAW,GAAG,CAAC;YACf,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,EAC9D,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,GAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,mBAAmB,KAAK,GAAG,CAAC,mBAAmB,CACtF,CAAC;IACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IACnC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS;QACnC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;QAChD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -227,10 +227,10 @@ export declare const brainLinkTypeSchema: z.ZodEnum<{
|
|
|
227
227
|
}>;
|
|
228
228
|
/** Zod enum schema for brain memory entity types. */
|
|
229
229
|
export declare const brainMemoryTypeSchema: z.ZodEnum<{
|
|
230
|
+
observation: "observation";
|
|
230
231
|
decision: "decision";
|
|
231
232
|
pattern: "pattern";
|
|
232
233
|
learning: "learning";
|
|
233
|
-
observation: "observation";
|
|
234
234
|
}>;
|
|
235
235
|
/** Zod enum schema for brain sticky note statuses. */
|
|
236
236
|
export declare const brainStickyStatusSchema: z.ZodEnum<{
|
|
@@ -257,10 +257,10 @@ export declare const brainNodeTypeSchema: z.ZodEnum<{
|
|
|
257
257
|
symbol: "symbol";
|
|
258
258
|
file: "file";
|
|
259
259
|
task: "task";
|
|
260
|
+
observation: "observation";
|
|
260
261
|
decision: "decision";
|
|
261
262
|
pattern: "pattern";
|
|
262
263
|
learning: "learning";
|
|
263
|
-
observation: "observation";
|
|
264
264
|
epic: "epic";
|
|
265
265
|
session: "session";
|
|
266
266
|
sticky: "sticky";
|
|
@@ -7969,7 +7969,7 @@ export declare const insertReleaseSchema: import("drizzle-orm/zod").BuildSchema<
|
|
|
7969
7969
|
name: string;
|
|
7970
7970
|
tableName: "tasks_releases";
|
|
7971
7971
|
dataType: "string enum";
|
|
7972
|
-
data: "
|
|
7972
|
+
data: "beta" | "latest" | "dev" | "hotfix";
|
|
7973
7973
|
driverParam: string;
|
|
7974
7974
|
notNull: true;
|
|
7975
7975
|
hasDefault: true;
|
|
@@ -8470,7 +8470,7 @@ export declare const selectReleaseSchema: import("drizzle-orm/zod").BuildSchema<
|
|
|
8470
8470
|
name: string;
|
|
8471
8471
|
tableName: "tasks_releases";
|
|
8472
8472
|
dataType: "string enum";
|
|
8473
|
-
data: "
|
|
8473
|
+
data: "beta" | "latest" | "dev" | "hotfix";
|
|
8474
8474
|
driverParam: string;
|
|
8475
8475
|
notNull: true;
|
|
8476
8476
|
hasDefault: true;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure agent-lifecycle LANE RESOLVER — the SINGLE source of truth for the
|
|
3
|
+
* seven dispatcher lanes shared by the Studio Kanban board and the `cleo tui`
|
|
4
|
+
* terminal cockpit.
|
|
5
|
+
*
|
|
6
|
+
* ## Why this lives in `@cleocode/core` (not Studio)
|
|
7
|
+
*
|
|
8
|
+
* The lane model was originally authored for the Studio read-only Kanban
|
|
9
|
+
* dispatcher (T11926) under
|
|
10
|
+
* `packages/studio/src/lib/components/tasks/agent-lifecycle-lane.ts`. The
|
|
11
|
+
* `cleo tui` Kanban home view (T11934) needs the EXACT same semantics — same
|
|
12
|
+
* seven lanes, same precedence ladder — so the model was lifted here, into the
|
|
13
|
+
* SDK package both surfaces already depend on, and the Studio copy is now a
|
|
14
|
+
* thin re-export of this module (relate T11934 ↔ T11926). One lane model, two
|
|
15
|
+
* renderers, zero divergence.
|
|
16
|
+
*
|
|
17
|
+
* It is intentionally a pure, framework-free `.ts` module: NO Svelte import, NO
|
|
18
|
+
* gateway/DB access, only a `TaskStatus` type from `@cleocode/contracts`. That
|
|
19
|
+
* keeps it trivially unit-testable under vitest's `environment: 'node'` and
|
|
20
|
+
* importable from any surface (CLI, TUI, Studio loader/route).
|
|
21
|
+
*
|
|
22
|
+
* The resolver answers *"where is this task in the agent dispatch lifecycle?"* —
|
|
23
|
+
* collapsing several orthogonal signals (status, verification gates,
|
|
24
|
+
* completion-readiness, blocking dependencies, HITL pauses, and any
|
|
25
|
+
* active-worker / orchestrate-ready hint) onto ONE of seven dispatcher lanes:
|
|
26
|
+
*
|
|
27
|
+
* ```
|
|
28
|
+
* Backlog → Ready → Running → Review → Blocked → Done → Cancelled
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @task T11934 — extracted to core as the shared lane SSoT
|
|
32
|
+
* @task T11926 — original Studio resolver (now re-exports this module)
|
|
33
|
+
* @epic T11916
|
|
34
|
+
*/
|
|
35
|
+
import type { TaskStatus } from '@cleocode/contracts';
|
|
36
|
+
/**
|
|
37
|
+
* The seven dispatcher lanes, in canonical left-to-right board order.
|
|
38
|
+
*
|
|
39
|
+
* - `backlog` — pending work not yet eligible to start (deps unmet OR no
|
|
40
|
+
* active dispatch signal).
|
|
41
|
+
* - `ready` — dependencies satisfied and the task is eligible to be
|
|
42
|
+
* spawned, but no worker has claimed it yet.
|
|
43
|
+
* - `running` — an agent/worker is actively executing (spawned / claimed).
|
|
44
|
+
* - `review` — implementation done, awaiting verification gates / a PR
|
|
45
|
+
* merge before completion.
|
|
46
|
+
* - `blocked` — held by an explicit `blockedBy` reason, an unmet dependency
|
|
47
|
+
* it cannot start without, or a HITL approval pause.
|
|
48
|
+
* - `done` — terminal success.
|
|
49
|
+
* - `cancelled` — terminal abandonment.
|
|
50
|
+
*/
|
|
51
|
+
export type AgentLifecycleLane = 'backlog' | 'ready' | 'running' | 'review' | 'blocked' | 'done' | 'cancelled';
|
|
52
|
+
/**
|
|
53
|
+
* Canonical ordered list of dispatcher lanes — drives column order on the
|
|
54
|
+
* board. Tasks in unknown / non-surfaced statuses (e.g. `archived`,
|
|
55
|
+
* `proposed`) are filtered before resolution and never appear.
|
|
56
|
+
*/
|
|
57
|
+
export declare const AGENT_LIFECYCLE_LANES: readonly AgentLifecycleLane[];
|
|
58
|
+
/** Human-readable, board-facing labels for each lane. */
|
|
59
|
+
export declare const AGENT_LIFECYCLE_LANE_LABELS: Readonly<Record<AgentLifecycleLane, string>>;
|
|
60
|
+
/** One-line lane descriptions used for board empty-states + tooltips. */
|
|
61
|
+
export declare const AGENT_LIFECYCLE_LANE_HINTS: Readonly<Record<AgentLifecycleLane, string>>;
|
|
62
|
+
/**
|
|
63
|
+
* Minimal verification-gate snapshot the resolver consults to decide the
|
|
64
|
+
* {@link AgentLifecycleLane | review} lane.
|
|
65
|
+
*
|
|
66
|
+
* Structurally compatible with `TaskViewGatesStatus` from
|
|
67
|
+
* `@cleocode/contracts` so callers can pass the `/api/tasks` `views[i].
|
|
68
|
+
* gatesStatus` (Studio) or the gateway SDK's `view.gatesStatus` (TUI) straight
|
|
69
|
+
* through.
|
|
70
|
+
*/
|
|
71
|
+
export interface LaneGatesSnapshot {
|
|
72
|
+
/** Whether the `implemented` gate has passed. */
|
|
73
|
+
implemented: boolean;
|
|
74
|
+
/** Whether the `testsPassed` gate has passed. */
|
|
75
|
+
testsPassed: boolean;
|
|
76
|
+
/** Whether the `qaPassed` gate has passed. */
|
|
77
|
+
qaPassed: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Normalised, framework-free signal bundle for one task.
|
|
81
|
+
*
|
|
82
|
+
* Every caller projects a `Task` + its canonical `TaskView` (and the raw
|
|
83
|
+
* `depends` / `blockedBy` fields) onto this shape so the resolver never has to
|
|
84
|
+
* know about either contract directly — keeping it a pure, trivially testable
|
|
85
|
+
* function.
|
|
86
|
+
*/
|
|
87
|
+
export interface AgentLifecycleSignal {
|
|
88
|
+
/** Canonical execution status (`tasks.status`). */
|
|
89
|
+
status: TaskStatus;
|
|
90
|
+
/**
|
|
91
|
+
* Free-text blocker reason from `tasks.blockedBy`. Non-empty ⇒ the task is
|
|
92
|
+
* explicitly blocked by an operator/agent note (e.g. "waiting for API key",
|
|
93
|
+
* "awaiting HITL approval").
|
|
94
|
+
*/
|
|
95
|
+
blockedBy?: string | null;
|
|
96
|
+
/**
|
|
97
|
+
* IDs of tasks this task depends on (`tasks.depends`). Combined with
|
|
98
|
+
* {@link AgentLifecycleSignal.unmetDependsCount} to decide Ready-vs-Backlog
|
|
99
|
+
* and dependency blocking.
|
|
100
|
+
*/
|
|
101
|
+
depends?: readonly string[] | null;
|
|
102
|
+
/**
|
|
103
|
+
* Count of {@link AgentLifecycleSignal.depends} whose status is NOT `done`.
|
|
104
|
+
* `0` means every dependency is satisfied. When unknown (loader could not
|
|
105
|
+
* resolve), pass `undefined` — the resolver then treats a non-empty
|
|
106
|
+
* `depends` list as "not yet eligible" (conservative: keeps it in Backlog
|
|
107
|
+
* rather than falsely promoting to Ready).
|
|
108
|
+
*/
|
|
109
|
+
unmetDependsCount?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Verification gate snapshot. When all three gates are green and the task
|
|
112
|
+
* has not yet reached a terminal status, the task is parked in `review`
|
|
113
|
+
* awaiting completion.
|
|
114
|
+
*/
|
|
115
|
+
gates?: LaneGatesSnapshot | null;
|
|
116
|
+
/**
|
|
117
|
+
* Canonical `readyToComplete` flag from `TaskView` — true when required
|
|
118
|
+
* gates are green AND no unresolved blocking deps AND status is non-terminal.
|
|
119
|
+
* A strong `review` signal.
|
|
120
|
+
*/
|
|
121
|
+
readyToComplete?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Whether a PR is open/awaiting for this task (review signal). The loader
|
|
124
|
+
* derives this from orchestration metadata when available; defaults to
|
|
125
|
+
* `false`.
|
|
126
|
+
*/
|
|
127
|
+
prAwaiting?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Whether the task is paused on a HITL (human-in-the-loop) approval gate.
|
|
130
|
+
* A `blocked` signal that outranks everything except terminal status.
|
|
131
|
+
*/
|
|
132
|
+
hitlPending?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Whether an agent/worker is actively spawned or has claimed this task.
|
|
135
|
+
* The loader derives this from the active-session / orchestrate signal in
|
|
136
|
+
* the existing data layer; defaults to `false`.
|
|
137
|
+
*/
|
|
138
|
+
workerActive?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Canonical `nextAction` hint from `TaskView`. `'spawn-worker'` is treated
|
|
141
|
+
* as an orchestrate-ready signal; `'blocked-on-deps'` reinforces blocking.
|
|
142
|
+
* Optional — the resolver never requires it.
|
|
143
|
+
*/
|
|
144
|
+
nextAction?: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve a single task's signal bundle onto exactly ONE
|
|
148
|
+
* {@link AgentLifecycleLane}.
|
|
149
|
+
*
|
|
150
|
+
* ## Precedence ladder (highest wins)
|
|
151
|
+
*
|
|
152
|
+
* 1. **`cancelled`** — terminal. `status === 'cancelled'`.
|
|
153
|
+
* 2. **`done`** — terminal. `status === 'done'`.
|
|
154
|
+
* 3. **`blocked`** — `status === 'blocked'` OR a non-empty `blockedBy` reason
|
|
155
|
+
* OR a pending HITL gate OR a known-unmet dependency. (Blocked outranks
|
|
156
|
+
* Running/Review/Ready because a blocked task cannot progress regardless of
|
|
157
|
+
* other signals.)
|
|
158
|
+
* 4. **`review`** — non-terminal, not blocked, and verified: all gates green
|
|
159
|
+
* OR `readyToComplete` OR a PR is awaiting. (A task in review may also be
|
|
160
|
+
* `active`, but review outranks running — it is past execution.)
|
|
161
|
+
* 5. **`running`** — a worker is actively executing: `workerActive` OR
|
|
162
|
+
* `status === 'active'` OR `nextAction === 'spawn-worker'`-already-spawned.
|
|
163
|
+
* 6. **`ready`** — `status === 'pending'`, dependencies satisfied, and an
|
|
164
|
+
* orchestrate-ready hint (`nextAction === 'spawn-worker'`).
|
|
165
|
+
* 7. **`backlog`** — everything else (pending, not yet eligible / unwaved).
|
|
166
|
+
*
|
|
167
|
+
* The ladder is documented as `cancelled > done > blocked > review > running
|
|
168
|
+
* > ready > backlog`. Terminal lanes short-circuit first so a `done` task
|
|
169
|
+
* with stale gate/worker flags can never leak into Running or Review.
|
|
170
|
+
*
|
|
171
|
+
* @param signal - Normalised signal bundle (see {@link AgentLifecycleSignal}).
|
|
172
|
+
* @returns The single lane this task belongs in.
|
|
173
|
+
*/
|
|
174
|
+
export declare function resolveAgentLifecycleLane(signal: AgentLifecycleSignal): AgentLifecycleLane;
|
|
175
|
+
//# sourceMappingURL=agent-lifecycle-lane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-lifecycle-lane.d.ts","sourceRoot":"","sources":["../../src/tasks/agent-lifecycle-lane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAQrD,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAQ3E,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAQ1E,CAAC;AAMX;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,CA0C1F"}
|