@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,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drizzle ORM schema for the **cron / todo schedule** table (`schedules`) — the
|
|
3
|
+
* durable sink for recurring-task schedules registered by the `cron_schedule`
|
|
4
|
+
* agent tool (T11962 · under T11679 · M7 · epic T11456).
|
|
5
|
+
*
|
|
6
|
+
* One row per recurring schedule: a cron expression plus the task TEMPLATE
|
|
7
|
+
* (title / description) materialized on each fire, an `enabled` flag, and
|
|
8
|
+
* creation/update timestamps. The `cron_schedule` agent tool
|
|
9
|
+
* ({@link import('../tools/schedule-agent-tools.js')}) registers a row through the
|
|
10
|
+
* leased Gate-3 accessor ({@link import('./schedule-store.js')}) so it persists
|
|
11
|
+
* WITHOUT a running daemon (T11950 AC3); a future daemon scheduler consumes the
|
|
12
|
+
* SAME table as a separate reader (T11962 AC4).
|
|
13
|
+
*
|
|
14
|
+
* ## Pure runtime infrastructure (NOT the exodus target shape)
|
|
15
|
+
*
|
|
16
|
+
* Like `_writer_leases` (T11627), `pi_session_*` (T11899), and `selfimprove_dhq`
|
|
17
|
+
* (T11911), this table is co-located inside EACH scope's consolidated `cleo.db`
|
|
18
|
+
* (project + global) via the `drizzle-cleo-project` / `drizzle-cleo-global`
|
|
19
|
+
* migration sets — so the two lineages produce the SAME migration hash and the
|
|
20
|
+
* consolidated single-file journal converges across both
|
|
21
|
+
* (CONSOLIDATED_JOURNAL_LINEAGES cross-lineage guard, T11829). It is NOT part of
|
|
22
|
+
* the exodus target shape under `schema/cleo-project/`, so the consolidated
|
|
23
|
+
* schema-parity gate (T11364) does not re-derive its CHECK set — exactly the
|
|
24
|
+
* runtime-infrastructure precedent.
|
|
25
|
+
*
|
|
26
|
+
* ## E10 typing
|
|
27
|
+
*
|
|
28
|
+
* TEXT ISO-8601 timestamps (`created_at` / `updated_at`); a typed boolean
|
|
29
|
+
* (`enabled`, `integer({ mode: 'boolean' })` → CHECK IN (0,1)). No JSON columns —
|
|
30
|
+
* the task template is two plain TEXT columns (title + nullable description).
|
|
31
|
+
*
|
|
32
|
+
* @module
|
|
33
|
+
* @task T11962
|
|
34
|
+
* @epic T11679
|
|
35
|
+
* @see ./schedule-store.ts — the Gate-3 accessor over this table
|
|
36
|
+
* @see ./selfimprove-dhq-schema.ts — the runtime-infrastructure-table precedent this mirrors
|
|
37
|
+
* @see ../../migrations/drizzle-cleo-project — project migration (CREATE TABLE schedules)
|
|
38
|
+
* @see ../../migrations/drizzle-cleo-global — global migration (byte-identical, journal convergence)
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* The physical name of the schedule table. Exported so the accessor and tests all
|
|
42
|
+
* reference one source of truth.
|
|
43
|
+
*/
|
|
44
|
+
export declare const SCHEDULES_TABLE: "schedules";
|
|
45
|
+
/**
|
|
46
|
+
* `schedules` — one row per recurring (cron) task schedule.
|
|
47
|
+
*
|
|
48
|
+
* `cronExpr` is the recurrence (a standard 5-field cron expression); `title` /
|
|
49
|
+
* `description` are the task template materialized on each fire; `enabled` toggles
|
|
50
|
+
* whether the daemon scheduler (a separate consumer, AC4) should fire it. The row
|
|
51
|
+
* is written by the leased accessor ({@link import('./schedule-store.js')}) — the
|
|
52
|
+
* `cron_schedule` agent tool delegates to it daemon-OFF.
|
|
53
|
+
*
|
|
54
|
+
* @task T11962
|
|
55
|
+
*/
|
|
56
|
+
export declare const schedules: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
57
|
+
name: "schedules";
|
|
58
|
+
schema: undefined;
|
|
59
|
+
columns: {
|
|
60
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
61
|
+
name: string;
|
|
62
|
+
tableName: "schedules";
|
|
63
|
+
dataType: "number int53";
|
|
64
|
+
data: number;
|
|
65
|
+
driverParam: number;
|
|
66
|
+
notNull: true;
|
|
67
|
+
hasDefault: true;
|
|
68
|
+
isPrimaryKey: true;
|
|
69
|
+
isAutoincrement: false;
|
|
70
|
+
hasRuntimeDefault: false;
|
|
71
|
+
enumValues: undefined;
|
|
72
|
+
baseColumn: never;
|
|
73
|
+
identity: undefined;
|
|
74
|
+
generated: undefined;
|
|
75
|
+
}, {}>;
|
|
76
|
+
scheduleId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
77
|
+
name: string;
|
|
78
|
+
tableName: "schedules";
|
|
79
|
+
dataType: "string";
|
|
80
|
+
data: string;
|
|
81
|
+
driverParam: string;
|
|
82
|
+
notNull: true;
|
|
83
|
+
hasDefault: false;
|
|
84
|
+
isPrimaryKey: false;
|
|
85
|
+
isAutoincrement: false;
|
|
86
|
+
hasRuntimeDefault: false;
|
|
87
|
+
enumValues: [string, ...string[]];
|
|
88
|
+
baseColumn: never;
|
|
89
|
+
identity: undefined;
|
|
90
|
+
generated: undefined;
|
|
91
|
+
}, {}>;
|
|
92
|
+
cronExpr: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
93
|
+
name: string;
|
|
94
|
+
tableName: "schedules";
|
|
95
|
+
dataType: "string";
|
|
96
|
+
data: string;
|
|
97
|
+
driverParam: string;
|
|
98
|
+
notNull: true;
|
|
99
|
+
hasDefault: false;
|
|
100
|
+
isPrimaryKey: false;
|
|
101
|
+
isAutoincrement: false;
|
|
102
|
+
hasRuntimeDefault: false;
|
|
103
|
+
enumValues: [string, ...string[]];
|
|
104
|
+
baseColumn: never;
|
|
105
|
+
identity: undefined;
|
|
106
|
+
generated: undefined;
|
|
107
|
+
}, {}>;
|
|
108
|
+
title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
109
|
+
name: string;
|
|
110
|
+
tableName: "schedules";
|
|
111
|
+
dataType: "string";
|
|
112
|
+
data: string;
|
|
113
|
+
driverParam: string;
|
|
114
|
+
notNull: true;
|
|
115
|
+
hasDefault: false;
|
|
116
|
+
isPrimaryKey: false;
|
|
117
|
+
isAutoincrement: false;
|
|
118
|
+
hasRuntimeDefault: false;
|
|
119
|
+
enumValues: [string, ...string[]];
|
|
120
|
+
baseColumn: never;
|
|
121
|
+
identity: undefined;
|
|
122
|
+
generated: undefined;
|
|
123
|
+
}, {}>;
|
|
124
|
+
description: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
125
|
+
name: string;
|
|
126
|
+
tableName: "schedules";
|
|
127
|
+
dataType: "string";
|
|
128
|
+
data: string;
|
|
129
|
+
driverParam: string;
|
|
130
|
+
notNull: false;
|
|
131
|
+
hasDefault: false;
|
|
132
|
+
isPrimaryKey: false;
|
|
133
|
+
isAutoincrement: false;
|
|
134
|
+
hasRuntimeDefault: false;
|
|
135
|
+
enumValues: [string, ...string[]];
|
|
136
|
+
baseColumn: never;
|
|
137
|
+
identity: undefined;
|
|
138
|
+
generated: undefined;
|
|
139
|
+
}, {}>;
|
|
140
|
+
enabled: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
141
|
+
name: string;
|
|
142
|
+
tableName: "schedules";
|
|
143
|
+
dataType: "boolean";
|
|
144
|
+
data: boolean;
|
|
145
|
+
driverParam: number;
|
|
146
|
+
notNull: true;
|
|
147
|
+
hasDefault: true;
|
|
148
|
+
isPrimaryKey: false;
|
|
149
|
+
isAutoincrement: false;
|
|
150
|
+
hasRuntimeDefault: false;
|
|
151
|
+
enumValues: undefined;
|
|
152
|
+
baseColumn: never;
|
|
153
|
+
identity: undefined;
|
|
154
|
+
generated: undefined;
|
|
155
|
+
}, {}>;
|
|
156
|
+
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
157
|
+
name: string;
|
|
158
|
+
tableName: "schedules";
|
|
159
|
+
dataType: "string";
|
|
160
|
+
data: string;
|
|
161
|
+
driverParam: string;
|
|
162
|
+
notNull: true;
|
|
163
|
+
hasDefault: true;
|
|
164
|
+
isPrimaryKey: false;
|
|
165
|
+
isAutoincrement: false;
|
|
166
|
+
hasRuntimeDefault: false;
|
|
167
|
+
enumValues: [string, ...string[]];
|
|
168
|
+
baseColumn: never;
|
|
169
|
+
identity: undefined;
|
|
170
|
+
generated: undefined;
|
|
171
|
+
}, {}>;
|
|
172
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
173
|
+
name: string;
|
|
174
|
+
tableName: "schedules";
|
|
175
|
+
dataType: "string";
|
|
176
|
+
data: string;
|
|
177
|
+
driverParam: string;
|
|
178
|
+
notNull: true;
|
|
179
|
+
hasDefault: true;
|
|
180
|
+
isPrimaryKey: false;
|
|
181
|
+
isAutoincrement: false;
|
|
182
|
+
hasRuntimeDefault: false;
|
|
183
|
+
enumValues: [string, ...string[]];
|
|
184
|
+
baseColumn: never;
|
|
185
|
+
identity: undefined;
|
|
186
|
+
generated: undefined;
|
|
187
|
+
}, {}>;
|
|
188
|
+
};
|
|
189
|
+
dialect: "sqlite";
|
|
190
|
+
}>;
|
|
191
|
+
/** Row type for `schedules` SELECT queries. */
|
|
192
|
+
export type ScheduleRow = typeof schedules.$inferSelect;
|
|
193
|
+
/** Row type for `schedules` INSERT operations. */
|
|
194
|
+
export type NewScheduleRow = typeof schedules.$inferInsert;
|
|
195
|
+
//# sourceMappingURL=schedule-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-schema.d.ts","sourceRoot":"","sources":["../../src/store/schedule-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAKH;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAG,WAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BrB,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC;AACxD,kDAAkD;AAClD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drizzle ORM schema for the **cron / todo schedule** table (`schedules`) — the
|
|
3
|
+
* durable sink for recurring-task schedules registered by the `cron_schedule`
|
|
4
|
+
* agent tool (T11962 · under T11679 · M7 · epic T11456).
|
|
5
|
+
*
|
|
6
|
+
* One row per recurring schedule: a cron expression plus the task TEMPLATE
|
|
7
|
+
* (title / description) materialized on each fire, an `enabled` flag, and
|
|
8
|
+
* creation/update timestamps. The `cron_schedule` agent tool
|
|
9
|
+
* ({@link import('../tools/schedule-agent-tools.js')}) registers a row through the
|
|
10
|
+
* leased Gate-3 accessor ({@link import('./schedule-store.js')}) so it persists
|
|
11
|
+
* WITHOUT a running daemon (T11950 AC3); a future daemon scheduler consumes the
|
|
12
|
+
* SAME table as a separate reader (T11962 AC4).
|
|
13
|
+
*
|
|
14
|
+
* ## Pure runtime infrastructure (NOT the exodus target shape)
|
|
15
|
+
*
|
|
16
|
+
* Like `_writer_leases` (T11627), `pi_session_*` (T11899), and `selfimprove_dhq`
|
|
17
|
+
* (T11911), this table is co-located inside EACH scope's consolidated `cleo.db`
|
|
18
|
+
* (project + global) via the `drizzle-cleo-project` / `drizzle-cleo-global`
|
|
19
|
+
* migration sets — so the two lineages produce the SAME migration hash and the
|
|
20
|
+
* consolidated single-file journal converges across both
|
|
21
|
+
* (CONSOLIDATED_JOURNAL_LINEAGES cross-lineage guard, T11829). It is NOT part of
|
|
22
|
+
* the exodus target shape under `schema/cleo-project/`, so the consolidated
|
|
23
|
+
* schema-parity gate (T11364) does not re-derive its CHECK set — exactly the
|
|
24
|
+
* runtime-infrastructure precedent.
|
|
25
|
+
*
|
|
26
|
+
* ## E10 typing
|
|
27
|
+
*
|
|
28
|
+
* TEXT ISO-8601 timestamps (`created_at` / `updated_at`); a typed boolean
|
|
29
|
+
* (`enabled`, `integer({ mode: 'boolean' })` → CHECK IN (0,1)). No JSON columns —
|
|
30
|
+
* the task template is two plain TEXT columns (title + nullable description).
|
|
31
|
+
*
|
|
32
|
+
* @module
|
|
33
|
+
* @task T11962
|
|
34
|
+
* @epic T11679
|
|
35
|
+
* @see ./schedule-store.ts — the Gate-3 accessor over this table
|
|
36
|
+
* @see ./selfimprove-dhq-schema.ts — the runtime-infrastructure-table precedent this mirrors
|
|
37
|
+
* @see ../../migrations/drizzle-cleo-project — project migration (CREATE TABLE schedules)
|
|
38
|
+
* @see ../../migrations/drizzle-cleo-global — global migration (byte-identical, journal convergence)
|
|
39
|
+
*/
|
|
40
|
+
import { sql } from 'drizzle-orm';
|
|
41
|
+
import { index, integer, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core';
|
|
42
|
+
/**
|
|
43
|
+
* The physical name of the schedule table. Exported so the accessor and tests all
|
|
44
|
+
* reference one source of truth.
|
|
45
|
+
*/
|
|
46
|
+
export const SCHEDULES_TABLE = 'schedules';
|
|
47
|
+
/**
|
|
48
|
+
* `schedules` — one row per recurring (cron) task schedule.
|
|
49
|
+
*
|
|
50
|
+
* `cronExpr` is the recurrence (a standard 5-field cron expression); `title` /
|
|
51
|
+
* `description` are the task template materialized on each fire; `enabled` toggles
|
|
52
|
+
* whether the daemon scheduler (a separate consumer, AC4) should fire it. The row
|
|
53
|
+
* is written by the leased accessor ({@link import('./schedule-store.js')}) — the
|
|
54
|
+
* `cron_schedule` agent tool delegates to it daemon-OFF.
|
|
55
|
+
*
|
|
56
|
+
* @task T11962
|
|
57
|
+
*/
|
|
58
|
+
export const schedules = sqliteTable(SCHEDULES_TABLE, {
|
|
59
|
+
/** Surrogate primary key (autoincrement via INTEGER PRIMARY KEY rowid alias). */
|
|
60
|
+
id: integer('id').primaryKey(),
|
|
61
|
+
/** Stable opaque schedule handle (`sched-<token>`) returned to the tool caller. */
|
|
62
|
+
scheduleId: text('schedule_id').notNull(),
|
|
63
|
+
/** The recurrence — a standard 5-field cron expression (e.g. `'0 9 * * 1'`). */
|
|
64
|
+
cronExpr: text('cron_expr').notNull(),
|
|
65
|
+
/** The title of the task created on each fire (the template). */
|
|
66
|
+
title: text('title').notNull(),
|
|
67
|
+
/** Optional description for the task created on each fire. */
|
|
68
|
+
description: text('description'),
|
|
69
|
+
/**
|
|
70
|
+
* Whether the daemon scheduler should fire this schedule. Typed boolean
|
|
71
|
+
* (CHECK IN (0,1)); defaults `true` so a freshly-registered schedule is live.
|
|
72
|
+
*/
|
|
73
|
+
enabled: integer('enabled', { mode: 'boolean' }).notNull().default(true),
|
|
74
|
+
/** ISO-8601 UTC creation instant. Defaults to write time. */
|
|
75
|
+
createdAt: text('created_at').notNull().default(sql `(datetime('now'))`),
|
|
76
|
+
/** ISO-8601 UTC last-update instant. Defaults to write time; bumped on mutation. */
|
|
77
|
+
updatedAt: text('updated_at').notNull().default(sql `(datetime('now'))`),
|
|
78
|
+
}, (table) => [
|
|
79
|
+
// `schedule_id` is the opaque handle the accessor looks up / removes by — unique.
|
|
80
|
+
unique('ux_schedules_schedule_id').on(table.scheduleId),
|
|
81
|
+
// Lookup index — the daemon scheduler enumerates enabled schedules.
|
|
82
|
+
index('ix_schedules_enabled').on(table.enabled),
|
|
83
|
+
]);
|
|
84
|
+
//# sourceMappingURL=schedule-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-schema.js","sourceRoot":"","sources":["../../src/store/schedule-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAClC,eAAe,EACf;IACE,iFAAiF;IACjF,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC9B,mFAAmF;IACnF,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IACzC,gFAAgF;IAChF,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,iEAAiE;IACjE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,8DAA8D;IAC9D,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxE,6DAA6D;IAC7D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;IACvE,oFAAoF;IACpF,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;CACxE,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,kFAAkF;IAClF,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACvD,oEAAoE;IACpE,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;CAChD,CACF,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store-layer accessor for the cron / todo schedule table (`schedules`) — T11962
|
|
3
|
+
* (under T11679 · M7 · epic T11456).
|
|
4
|
+
*
|
|
5
|
+
* This module is the ONLY place that touches the native `cleo.db` handle for
|
|
6
|
+
* schedule persistence. It lives INSIDE the store chokepoint
|
|
7
|
+
* (`packages/core/src/store/**`), the Gate-3 allowlist, so it may extract the
|
|
8
|
+
* native `DatabaseSync` that {@link openDualScopeDb} already holds (via drizzle's
|
|
9
|
+
* `$client`) and run prepared statements over it — exactly the established
|
|
10
|
+
* `selfimprove-dhq-store.ts` / `pi-session-store.ts` pattern. It NEVER calls
|
|
11
|
+
* `new DatabaseSync(` itself.
|
|
12
|
+
*
|
|
13
|
+
* The `cron_schedule` agent tool ({@link import('../tools/schedule-agent-tools.js')})
|
|
14
|
+
* sits OUTSIDE the chokepoint, so it must NOT open a raw handle; it calls
|
|
15
|
+
* {@link addSchedule} / {@link listSchedules} / {@link removeSchedule}. A single
|
|
16
|
+
* INSERT/DELETE is one atomic SQLite statement, so the accessor does not wrap them
|
|
17
|
+
* in a writer lease itself — daemon-OFF the chokepoint already serializes the
|
|
18
|
+
* single in-process writer; a future daemon scheduler (a separate reader, AC4)
|
|
19
|
+
* never writes through this path.
|
|
20
|
+
*
|
|
21
|
+
* Physical model (see the `t11962-schedules` migration):
|
|
22
|
+
* - `schedules(id, schedule_id, cron_expr, title, description, enabled,
|
|
23
|
+
* created_at, updated_at)` — one row per recurring schedule.
|
|
24
|
+
* - `schedule_id` is a unique opaque handle (`sched-<token>`) returned to the
|
|
25
|
+
* caller and used to remove a schedule.
|
|
26
|
+
*
|
|
27
|
+
* ## Never `.all()` an unbounded query
|
|
28
|
+
*
|
|
29
|
+
* {@link listSchedules} reads through `iterate()` with an explicit SQL `LIMIT`
|
|
30
|
+
* (capped, default {@link SCHEDULE_LIST_DEFAULT_LIMIT}), never `.all()` over the
|
|
31
|
+
* whole table — the established OOM-safe read pattern (cf.
|
|
32
|
+
* `exodus/verify-migration.ts`).
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
* @task T11962
|
|
36
|
+
* @epic T11679
|
|
37
|
+
* @see ./schedule-schema.ts — the drizzle table declaration (physical-name SSoT)
|
|
38
|
+
* @see ./selfimprove-dhq-store.ts — the Gate-3 native-handle accessor precedent this mirrors
|
|
39
|
+
* @see ../tools/schedule-agent-tools.ts — the `cron_schedule` tool that delegates here
|
|
40
|
+
*/
|
|
41
|
+
export { SCHEDULES_TABLE } from './schedule-schema.js';
|
|
42
|
+
/** Default cap for {@link listSchedules} — bounds the read so it never OOMs. */
|
|
43
|
+
export declare const SCHEDULE_LIST_DEFAULT_LIMIT: 500;
|
|
44
|
+
/** Hard ceiling on a {@link listSchedules} request — a caller cannot exceed it. */
|
|
45
|
+
export declare const SCHEDULE_LIST_MAX_LIMIT: 5000;
|
|
46
|
+
/** A persisted schedule row, decoded from `schedules`. */
|
|
47
|
+
export interface ScheduleRecord {
|
|
48
|
+
/** Stable opaque schedule handle (`sched-<token>`). */
|
|
49
|
+
readonly scheduleId: string;
|
|
50
|
+
/** The recurrence — a standard 5-field cron expression. */
|
|
51
|
+
readonly cronExpr: string;
|
|
52
|
+
/** The title of the task created on each fire (the template). */
|
|
53
|
+
readonly title: string;
|
|
54
|
+
/** Optional description for the task created on each fire. */
|
|
55
|
+
readonly description: string | null;
|
|
56
|
+
/** Whether the daemon scheduler should fire this schedule. */
|
|
57
|
+
readonly enabled: boolean;
|
|
58
|
+
/** ISO-8601 UTC creation instant. */
|
|
59
|
+
readonly createdAt: string;
|
|
60
|
+
/** ISO-8601 UTC last-update instant. */
|
|
61
|
+
readonly updatedAt: string;
|
|
62
|
+
}
|
|
63
|
+
/** Fields required to register one schedule via {@link addSchedule}. */
|
|
64
|
+
export interface AddScheduleParams {
|
|
65
|
+
/** The recurrence — a standard 5-field cron expression (e.g. `'0 9 * * 1'`). */
|
|
66
|
+
readonly cronExpr: string;
|
|
67
|
+
/** The title of the task to create on each fire. */
|
|
68
|
+
readonly title: string;
|
|
69
|
+
/** Optional description for the task created on each fire. */
|
|
70
|
+
readonly description?: string;
|
|
71
|
+
}
|
|
72
|
+
/** Narrow shape of the native handle methods this accessor uses. */
|
|
73
|
+
type NativeRunResult = {
|
|
74
|
+
changes: number | bigint;
|
|
75
|
+
lastInsertRowid: number | bigint;
|
|
76
|
+
};
|
|
77
|
+
interface NativeStatement {
|
|
78
|
+
run(...params: ReadonlyArray<string | number | null>): NativeRunResult;
|
|
79
|
+
get(...params: ReadonlyArray<string | number | null>): Record<string, unknown> | undefined;
|
|
80
|
+
iterate(...params: ReadonlyArray<string | number | null>): IterableIterator<Record<string, unknown>>;
|
|
81
|
+
}
|
|
82
|
+
interface NativeHandle {
|
|
83
|
+
prepare(sql: string): NativeStatement;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract the native `DatabaseSync` handle for the PROJECT-scope `cleo.db`.
|
|
87
|
+
*
|
|
88
|
+
* Routes through {@link openDualScopeDb} (the dual-scope chokepoint) — which
|
|
89
|
+
* applies the pragma SSoT, runs the consolidated migrations (creating
|
|
90
|
+
* `schedules`), and manages the singleton cache — then extracts the native handle
|
|
91
|
+
* drizzle holds on `$client`. NEVER opens a raw connection (Gate 3): it reuses the
|
|
92
|
+
* handle the chokepoint already owns.
|
|
93
|
+
*
|
|
94
|
+
* @param cwd - Working directory for project resolution (defaults to `cwd`).
|
|
95
|
+
* @returns The live native handle.
|
|
96
|
+
* @throws When the chokepoint returns a handle without `$client`.
|
|
97
|
+
*/
|
|
98
|
+
export declare function getScheduleNativeDb(cwd?: string): Promise<NativeHandle>;
|
|
99
|
+
/**
|
|
100
|
+
* REGISTER a recurring schedule: insert one `schedules` row and return its handle.
|
|
101
|
+
*
|
|
102
|
+
* A fresh `schedule_id` is minted (`sched-<token>`) and returned so the caller can
|
|
103
|
+
* later {@link removeSchedule} by it. The row is created `enabled = true`. Writes
|
|
104
|
+
* one atomic INSERT — the chokepoint serializes the single in-process writer
|
|
105
|
+
* daemon-OFF.
|
|
106
|
+
*
|
|
107
|
+
* @param native - The native project `cleo.db` handle (from {@link getScheduleNativeDb}).
|
|
108
|
+
* @param params - The cron expression + task template.
|
|
109
|
+
* @returns The minted schedule handle.
|
|
110
|
+
*/
|
|
111
|
+
export declare function addSchedule(native: NativeHandle, params: AddScheduleParams): string;
|
|
112
|
+
/**
|
|
113
|
+
* LIST registered schedules in stable creation order (`created_at ASC`, then `id`).
|
|
114
|
+
*
|
|
115
|
+
* Bounded by an explicit SQL `LIMIT` and read through `iterate()` — NEVER an
|
|
116
|
+
* unbounded `.all()`. The request limit is clamped to
|
|
117
|
+
* `[1, {@link SCHEDULE_LIST_MAX_LIMIT}]`, defaulting to
|
|
118
|
+
* {@link SCHEDULE_LIST_DEFAULT_LIMIT}.
|
|
119
|
+
*
|
|
120
|
+
* @param native - The native project `cleo.db` handle.
|
|
121
|
+
* @param limit - Maximum rows to return (clamped). Defaults to the default cap.
|
|
122
|
+
* @returns The ordered schedule records (at most `limit`).
|
|
123
|
+
*/
|
|
124
|
+
export declare function listSchedules(native: NativeHandle, limit?: number): ScheduleRecord[];
|
|
125
|
+
/**
|
|
126
|
+
* GET one schedule by its opaque handle, or `null` when no such schedule exists.
|
|
127
|
+
*
|
|
128
|
+
* @param native - The native project `cleo.db` handle.
|
|
129
|
+
* @param scheduleId - The `sched-<token>` handle.
|
|
130
|
+
* @returns The schedule record, or `null`.
|
|
131
|
+
*/
|
|
132
|
+
export declare function getSchedule(native: NativeHandle, scheduleId: string): ScheduleRecord | null;
|
|
133
|
+
/**
|
|
134
|
+
* REMOVE a schedule by its opaque handle.
|
|
135
|
+
*
|
|
136
|
+
* Writes one atomic DELETE. Returns whether a row was actually removed (`false`
|
|
137
|
+
* when the handle is unknown).
|
|
138
|
+
*
|
|
139
|
+
* @param native - The native project `cleo.db` handle.
|
|
140
|
+
* @param scheduleId - The `sched-<token>` handle to remove.
|
|
141
|
+
* @returns `true` if a row was deleted, `false` when no such schedule existed.
|
|
142
|
+
*/
|
|
143
|
+
export declare function removeSchedule(native: NativeHandle, scheduleId: string): boolean;
|
|
144
|
+
//# sourceMappingURL=schedule-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-store.d.ts","sourceRoot":"","sources":["../../src/store/schedule-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,EAAG,GAAY,CAAC;AAExD,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,EAAG,IAAa,CAAC;AAErD,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,oEAAoE;AACpE,KAAK,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AACtF,UAAU,eAAe;IACvB,GAAG,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;IACvE,GAAG,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3F,OAAO,CACL,GAAG,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAC/C,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C;AACD,UAAU,YAAY;IACpB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAW7E;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,MAAoC,GAC1C,cAAc,EAAE,CAWlB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAQ3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKhF"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store-layer accessor for the cron / todo schedule table (`schedules`) — T11962
|
|
3
|
+
* (under T11679 · M7 · epic T11456).
|
|
4
|
+
*
|
|
5
|
+
* This module is the ONLY place that touches the native `cleo.db` handle for
|
|
6
|
+
* schedule persistence. It lives INSIDE the store chokepoint
|
|
7
|
+
* (`packages/core/src/store/**`), the Gate-3 allowlist, so it may extract the
|
|
8
|
+
* native `DatabaseSync` that {@link openDualScopeDb} already holds (via drizzle's
|
|
9
|
+
* `$client`) and run prepared statements over it — exactly the established
|
|
10
|
+
* `selfimprove-dhq-store.ts` / `pi-session-store.ts` pattern. It NEVER calls
|
|
11
|
+
* `new DatabaseSync(` itself.
|
|
12
|
+
*
|
|
13
|
+
* The `cron_schedule` agent tool ({@link import('../tools/schedule-agent-tools.js')})
|
|
14
|
+
* sits OUTSIDE the chokepoint, so it must NOT open a raw handle; it calls
|
|
15
|
+
* {@link addSchedule} / {@link listSchedules} / {@link removeSchedule}. A single
|
|
16
|
+
* INSERT/DELETE is one atomic SQLite statement, so the accessor does not wrap them
|
|
17
|
+
* in a writer lease itself — daemon-OFF the chokepoint already serializes the
|
|
18
|
+
* single in-process writer; a future daemon scheduler (a separate reader, AC4)
|
|
19
|
+
* never writes through this path.
|
|
20
|
+
*
|
|
21
|
+
* Physical model (see the `t11962-schedules` migration):
|
|
22
|
+
* - `schedules(id, schedule_id, cron_expr, title, description, enabled,
|
|
23
|
+
* created_at, updated_at)` — one row per recurring schedule.
|
|
24
|
+
* - `schedule_id` is a unique opaque handle (`sched-<token>`) returned to the
|
|
25
|
+
* caller and used to remove a schedule.
|
|
26
|
+
*
|
|
27
|
+
* ## Never `.all()` an unbounded query
|
|
28
|
+
*
|
|
29
|
+
* {@link listSchedules} reads through `iterate()` with an explicit SQL `LIMIT`
|
|
30
|
+
* (capped, default {@link SCHEDULE_LIST_DEFAULT_LIMIT}), never `.all()` over the
|
|
31
|
+
* whole table — the established OOM-safe read pattern (cf.
|
|
32
|
+
* `exodus/verify-migration.ts`).
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
* @task T11962
|
|
36
|
+
* @epic T11679
|
|
37
|
+
* @see ./schedule-schema.ts — the drizzle table declaration (physical-name SSoT)
|
|
38
|
+
* @see ./selfimprove-dhq-store.ts — the Gate-3 native-handle accessor precedent this mirrors
|
|
39
|
+
* @see ../tools/schedule-agent-tools.ts — the `cron_schedule` tool that delegates here
|
|
40
|
+
*/
|
|
41
|
+
import { randomBytes } from 'node:crypto';
|
|
42
|
+
import { openDualScopeDb } from './dual-scope-db.js';
|
|
43
|
+
import { SCHEDULES_TABLE } from './schedule-schema.js';
|
|
44
|
+
export { SCHEDULES_TABLE } from './schedule-schema.js';
|
|
45
|
+
/** Default cap for {@link listSchedules} — bounds the read so it never OOMs. */
|
|
46
|
+
export const SCHEDULE_LIST_DEFAULT_LIMIT = 500;
|
|
47
|
+
/** Hard ceiling on a {@link listSchedules} request — a caller cannot exceed it. */
|
|
48
|
+
export const SCHEDULE_LIST_MAX_LIMIT = 5000;
|
|
49
|
+
/**
|
|
50
|
+
* Extract the native `DatabaseSync` handle for the PROJECT-scope `cleo.db`.
|
|
51
|
+
*
|
|
52
|
+
* Routes through {@link openDualScopeDb} (the dual-scope chokepoint) — which
|
|
53
|
+
* applies the pragma SSoT, runs the consolidated migrations (creating
|
|
54
|
+
* `schedules`), and manages the singleton cache — then extracts the native handle
|
|
55
|
+
* drizzle holds on `$client`. NEVER opens a raw connection (Gate 3): it reuses the
|
|
56
|
+
* handle the chokepoint already owns.
|
|
57
|
+
*
|
|
58
|
+
* @param cwd - Working directory for project resolution (defaults to `cwd`).
|
|
59
|
+
* @returns The live native handle.
|
|
60
|
+
* @throws When the chokepoint returns a handle without `$client`.
|
|
61
|
+
*/
|
|
62
|
+
export async function getScheduleNativeDb(cwd) {
|
|
63
|
+
const handle = await openDualScopeDb('project', cwd);
|
|
64
|
+
const native = handle.db.$client;
|
|
65
|
+
if (!native) {
|
|
66
|
+
throw new Error('T11962: openDualScopeDb returned a project handle without $client — ' +
|
|
67
|
+
'cannot extract DatabaseSync for schedule persistence.');
|
|
68
|
+
}
|
|
69
|
+
// The node:sqlite surface is wider than NativeHandle; narrow to what we use.
|
|
70
|
+
return native;
|
|
71
|
+
}
|
|
72
|
+
/** Decode a raw SQLite row into a typed {@link ScheduleRecord}. */
|
|
73
|
+
function decodeRow(row) {
|
|
74
|
+
return {
|
|
75
|
+
scheduleId: String(row.schedule_id),
|
|
76
|
+
cronExpr: String(row.cron_expr),
|
|
77
|
+
title: String(row.title),
|
|
78
|
+
description: row.description === null || row.description === undefined ? null : String(row.description),
|
|
79
|
+
// SQLite stores the typed boolean as 0/1.
|
|
80
|
+
enabled: Number(row.enabled) !== 0,
|
|
81
|
+
createdAt: String(row.created_at),
|
|
82
|
+
updatedAt: String(row.updated_at),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Mint a stable opaque schedule handle (`sched-<24 hex>`). */
|
|
86
|
+
function mintScheduleId() {
|
|
87
|
+
return `sched-${randomBytes(12).toString('hex')}`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* REGISTER a recurring schedule: insert one `schedules` row and return its handle.
|
|
91
|
+
*
|
|
92
|
+
* A fresh `schedule_id` is minted (`sched-<token>`) and returned so the caller can
|
|
93
|
+
* later {@link removeSchedule} by it. The row is created `enabled = true`. Writes
|
|
94
|
+
* one atomic INSERT — the chokepoint serializes the single in-process writer
|
|
95
|
+
* daemon-OFF.
|
|
96
|
+
*
|
|
97
|
+
* @param native - The native project `cleo.db` handle (from {@link getScheduleNativeDb}).
|
|
98
|
+
* @param params - The cron expression + task template.
|
|
99
|
+
* @returns The minted schedule handle.
|
|
100
|
+
*/
|
|
101
|
+
export function addSchedule(native, params) {
|
|
102
|
+
const scheduleId = mintScheduleId();
|
|
103
|
+
native
|
|
104
|
+
.prepare(`INSERT INTO ${SCHEDULES_TABLE} ` +
|
|
105
|
+
`(schedule_id, cron_expr, title, description, enabled) ` +
|
|
106
|
+
`VALUES (?, ?, ?, ?, 1)`)
|
|
107
|
+
.run(scheduleId, params.cronExpr, params.title, params.description ?? null);
|
|
108
|
+
return scheduleId;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* LIST registered schedules in stable creation order (`created_at ASC`, then `id`).
|
|
112
|
+
*
|
|
113
|
+
* Bounded by an explicit SQL `LIMIT` and read through `iterate()` — NEVER an
|
|
114
|
+
* unbounded `.all()`. The request limit is clamped to
|
|
115
|
+
* `[1, {@link SCHEDULE_LIST_MAX_LIMIT}]`, defaulting to
|
|
116
|
+
* {@link SCHEDULE_LIST_DEFAULT_LIMIT}.
|
|
117
|
+
*
|
|
118
|
+
* @param native - The native project `cleo.db` handle.
|
|
119
|
+
* @param limit - Maximum rows to return (clamped). Defaults to the default cap.
|
|
120
|
+
* @returns The ordered schedule records (at most `limit`).
|
|
121
|
+
*/
|
|
122
|
+
export function listSchedules(native, limit = SCHEDULE_LIST_DEFAULT_LIMIT) {
|
|
123
|
+
const clamped = Math.max(1, Math.min(Math.floor(limit), SCHEDULE_LIST_MAX_LIMIT));
|
|
124
|
+
const stmt = native.prepare(`SELECT schedule_id, cron_expr, title, description, enabled, created_at, updated_at ` +
|
|
125
|
+
`FROM ${SCHEDULES_TABLE} ORDER BY created_at ASC, id ASC LIMIT ?`);
|
|
126
|
+
const out = [];
|
|
127
|
+
for (const row of stmt.iterate(clamped)) {
|
|
128
|
+
out.push(decodeRow(row));
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* GET one schedule by its opaque handle, or `null` when no such schedule exists.
|
|
134
|
+
*
|
|
135
|
+
* @param native - The native project `cleo.db` handle.
|
|
136
|
+
* @param scheduleId - The `sched-<token>` handle.
|
|
137
|
+
* @returns The schedule record, or `null`.
|
|
138
|
+
*/
|
|
139
|
+
export function getSchedule(native, scheduleId) {
|
|
140
|
+
const row = native
|
|
141
|
+
.prepare(`SELECT schedule_id, cron_expr, title, description, enabled, created_at, updated_at ` +
|
|
142
|
+
`FROM ${SCHEDULES_TABLE} WHERE schedule_id = ?`)
|
|
143
|
+
.get(scheduleId);
|
|
144
|
+
return row === undefined ? null : decodeRow(row);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* REMOVE a schedule by its opaque handle.
|
|
148
|
+
*
|
|
149
|
+
* Writes one atomic DELETE. Returns whether a row was actually removed (`false`
|
|
150
|
+
* when the handle is unknown).
|
|
151
|
+
*
|
|
152
|
+
* @param native - The native project `cleo.db` handle.
|
|
153
|
+
* @param scheduleId - The `sched-<token>` handle to remove.
|
|
154
|
+
* @returns `true` if a row was deleted, `false` when no such schedule existed.
|
|
155
|
+
*/
|
|
156
|
+
export function removeSchedule(native, scheduleId) {
|
|
157
|
+
const result = native
|
|
158
|
+
.prepare(`DELETE FROM ${SCHEDULES_TABLE} WHERE schedule_id = ?`)
|
|
159
|
+
.run(scheduleId);
|
|
160
|
+
return Number(result.changes) > 0;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=schedule-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-store.js","sourceRoot":"","sources":["../../src/store/schedule-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,gFAAgF;AAChF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAY,CAAC;AAExD,mFAAmF;AACnF,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAa,CAAC;AA2CrD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAY;IACpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAI,MAAM,CAAC,EAAgD,CAAC,OAAO,CAAC;IAChF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IACD,6EAA6E;IAC7E,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,GAA4B;IAC7C,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,WAAW,EACT,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAC5F,0CAA0C;QAC1C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,SAAS,cAAc;IACrB,OAAO,SAAS,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,MAAyB;IACzE,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM;SACH,OAAO,CACN,eAAe,eAAe,GAAG;QAC/B,wDAAwD;QACxD,wBAAwB,CAC3B;SACA,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAC9E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAoB,EACpB,QAAgB,2BAA2B;IAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CACzB,qFAAqF;QACnF,QAAQ,eAAe,0CAA0C,CACpE,CAAC;IACF,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,UAAkB;IAClE,MAAM,GAAG,GAAG,MAAM;SACf,OAAO,CACN,qFAAqF;QACnF,QAAQ,eAAe,wBAAwB,CAClD;SACA,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,UAAkB;IACrE,MAAM,MAAM,GAAG,MAAM;SAClB,OAAO,CAAC,eAAe,eAAe,wBAAwB,CAAC;SAC/D,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -344,7 +344,7 @@ export declare const attachmentRefs: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
344
344
|
name: string;
|
|
345
345
|
tableName: "attachment_refs";
|
|
346
346
|
dataType: "string enum";
|
|
347
|
-
data: "task" | "
|
|
347
|
+
data: "task" | "observation" | "decision" | "pattern" | "learning" | "session";
|
|
348
348
|
driverParam: string;
|
|
349
349
|
notNull: true;
|
|
350
350
|
hasDefault: false;
|
|
@@ -94,7 +94,10 @@
|
|
|
94
94
|
export * from '../cleo-shared/index.js';
|
|
95
95
|
export * from './accounts.js';
|
|
96
96
|
export * from './agent-registry.js';
|
|
97
|
+
export * from './models-catalog.js';
|
|
97
98
|
export * from './nexus.js';
|
|
99
|
+
export * from './providers.js';
|
|
100
|
+
export * from './services.js';
|
|
98
101
|
export * from './session-manifest.js';
|
|
99
102
|
export * from './skills.js';
|
|
100
103
|
export * from './telemetry.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/store/schema/cleo-global/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/store/schema/cleo-global/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAE3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
|
@@ -94,7 +94,12 @@
|
|
|
94
94
|
export * from '../cleo-shared/index.js';
|
|
95
95
|
export * from './accounts.js';
|
|
96
96
|
export * from './agent-registry.js';
|
|
97
|
+
// E8-CATALOG-CURATION (T11733) — the models.dev catalog SSoT (`models_catalog`).
|
|
98
|
+
export * from './models-catalog.js';
|
|
97
99
|
export * from './nexus.js';
|
|
100
|
+
// M3 Provider SSoT (T11703 · epic T11667) — the declarative provider table (`providers`).
|
|
101
|
+
export * from './providers.js';
|
|
102
|
+
export * from './services.js';
|
|
98
103
|
export * from './session-manifest.js';
|
|
99
104
|
export * from './skills.js';
|
|
100
105
|
export * from './telemetry.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/store/schema/cleo-global/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/store/schema/cleo-global/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,iFAAiF;AACjF,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,0FAA0F;AAC1F,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|