@cleocode/core 2026.9.10 → 2026.9.12

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.
Files changed (38) hide show
  1. package/dist/docs/export-document.js +50 -11
  2. package/dist/docs/export-document.js.map +1 -1
  3. package/dist/llm/plugin-facade.js +50 -11
  4. package/dist/llm/plugin-facade.js.map +2 -2
  5. package/dist/paths.d.ts +8 -0
  6. package/dist/paths.d.ts.map +1 -1
  7. package/dist/paths.js +57 -4
  8. package/dist/paths.js.map +1 -1
  9. package/dist/release/open.d.ts.map +1 -1
  10. package/dist/release/open.js +13 -1
  11. package/dist/release/open.js.map +1 -1
  12. package/dist/selfimprove/fix-gen.js +50 -11
  13. package/dist/selfimprove/fix-gen.js.map +2 -2
  14. package/dist/shutdown-deadline.d.ts +3 -1
  15. package/dist/shutdown-deadline.d.ts.map +1 -1
  16. package/dist/shutdown-deadline.js +11 -1
  17. package/dist/shutdown-deadline.js.map +1 -1
  18. package/dist/shutdown.d.ts.map +1 -1
  19. package/dist/shutdown.js +10 -3
  20. package/dist/shutdown.js.map +1 -1
  21. package/dist/store/background-ops.d.ts +51 -5
  22. package/dist/store/background-ops.d.ts.map +1 -1
  23. package/dist/store/background-ops.js +72 -6
  24. package/dist/store/background-ops.js.map +1 -1
  25. package/dist/store/schema/background-jobs.d.ts +1 -1
  26. package/dist/store/schema/cleo-project/lifecycle.d.ts +2 -2
  27. package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
  28. package/dist/store/schema/cleo-project/runtime.d.ts +2 -2
  29. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +1 -1
  30. package/dist/store/schema/cleo-project/tasks-core.d.ts +1 -1
  31. package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
  32. package/dist/store/schema/lifecycle.d.ts +2 -2
  33. package/dist/store/schema/memory-schema.d.ts +2 -2
  34. package/dist/store/schema/provenance/releases.d.ts +1 -1
  35. package/dist/store/schema/tasks.d.ts +1 -1
  36. package/dist/store/validation-schemas.d.ts +12 -12
  37. package/package.json +13 -13
  38. package/templates/workflows/release-prepare.yml.tmpl +48 -2
@@ -14,10 +14,10 @@
14
14
  import { z } from 'zod';
15
15
  /** Zod enum schema for task statuses. */
16
16
  export declare const taskStatusSchema: z.ZodEnum<{
17
+ cancelled: "cancelled";
17
18
  active: "active";
18
19
  done: "done";
19
20
  archived: "archived";
20
- cancelled: "cancelled";
21
21
  blocked: "blocked";
22
22
  pending: "pending";
23
23
  proposed: "proposed";
@@ -51,17 +51,17 @@ export declare const sessionStatusSchema: z.ZodEnum<{
51
51
  }>;
52
52
  /** Zod enum schema for lifecycle pipeline statuses. */
53
53
  export declare const lifecyclePipelineStatusSchema: z.ZodEnum<{
54
+ failed: "failed";
55
+ cancelled: "cancelled";
54
56
  active: "active";
55
57
  aborted: "aborted";
56
- cancelled: "cancelled";
57
58
  blocked: "blocked";
58
- failed: "failed";
59
59
  completed: "completed";
60
60
  }>;
61
61
  /** Zod enum schema for lifecycle stage statuses. */
62
62
  export declare const lifecycleStageStatusSchema: z.ZodEnum<{
63
- blocked: "blocked";
64
63
  failed: "failed";
64
+ blocked: "blocked";
65
65
  in_progress: "in_progress";
66
66
  skipped: "skipped";
67
67
  completed: "completed";
@@ -349,7 +349,7 @@ export declare const insertTaskSchema: import("drizzle-orm/zod").BuildSchema<"in
349
349
  name: string;
350
350
  tableName: "tasks_tasks";
351
351
  dataType: "string enum";
352
- data: "active" | "done" | "archived" | "cancelled" | "blocked" | "pending" | "proposed";
352
+ data: "cancelled" | "active" | "done" | "archived" | "blocked" | "pending" | "proposed";
353
353
  driverParam: string;
354
354
  notNull: true;
355
355
  hasDefault: true;
@@ -963,7 +963,7 @@ export declare const selectTaskSchema: import("drizzle-orm/zod").BuildSchema<"se
963
963
  name: string;
964
964
  tableName: "tasks_tasks";
965
965
  dataType: "string enum";
966
- data: "active" | "done" | "archived" | "cancelled" | "blocked" | "pending" | "proposed";
966
+ data: "cancelled" | "active" | "done" | "archived" | "blocked" | "pending" | "proposed";
967
967
  driverParam: string;
968
968
  notNull: true;
969
969
  hasDefault: true;
@@ -2865,7 +2865,7 @@ export declare const insertLifecyclePipelineSchema: import("drizzle-orm/zod").Bu
2865
2865
  name: string;
2866
2866
  tableName: "tasks_lifecycle_pipelines";
2867
2867
  dataType: "string enum";
2868
- data: "active" | "aborted" | "cancelled" | "blocked" | "failed" | "completed";
2868
+ data: "failed" | "cancelled" | "active" | "aborted" | "blocked" | "completed";
2869
2869
  driverParam: string;
2870
2870
  notNull: true;
2871
2871
  hasDefault: true;
@@ -2998,7 +2998,7 @@ export declare const selectLifecyclePipelineSchema: import("drizzle-orm/zod").Bu
2998
2998
  name: string;
2999
2999
  tableName: "tasks_lifecycle_pipelines";
3000
3000
  dataType: "string enum";
3001
- data: "active" | "aborted" | "cancelled" | "blocked" | "failed" | "completed";
3001
+ data: "failed" | "cancelled" | "active" | "aborted" | "blocked" | "completed";
3002
3002
  driverParam: string;
3003
3003
  notNull: true;
3004
3004
  hasDefault: true;
@@ -3147,7 +3147,7 @@ export declare const insertLifecycleStageSchema: import("drizzle-orm/zod").Build
3147
3147
  name: string;
3148
3148
  tableName: "tasks_lifecycle_stages";
3149
3149
  dataType: "string enum";
3150
- data: "blocked" | "failed" | "in_progress" | "skipped" | "completed" | "not_started";
3150
+ data: "failed" | "blocked" | "in_progress" | "skipped" | "completed" | "not_started";
3151
3151
  driverParam: string;
3152
3152
  notNull: true;
3153
3153
  hasDefault: true;
@@ -3458,7 +3458,7 @@ export declare const selectLifecycleStageSchema: import("drizzle-orm/zod").Build
3458
3458
  name: string;
3459
3459
  tableName: "tasks_lifecycle_stages";
3460
3460
  dataType: "string enum";
3461
- data: "blocked" | "failed" | "in_progress" | "skipped" | "completed" | "not_started";
3461
+ data: "failed" | "blocked" | "in_progress" | "skipped" | "completed" | "not_started";
3462
3462
  driverParam: string;
3463
3463
  notNull: true;
3464
3464
  hasDefault: true;
@@ -8017,7 +8017,7 @@ export declare const insertReleaseSchema: import("drizzle-orm/zod").BuildSchema<
8017
8017
  name: string;
8018
8018
  tableName: "tasks_releases";
8019
8019
  dataType: "string enum";
8020
- data: "cancelled" | "failed" | "reconciled" | "planned" | "pr-opened" | "pr-merged" | "published" | "prepared" | "committed" | "tagged" | "pushed" | "rolled_back";
8020
+ data: "failed" | "cancelled" | "reconciled" | "planned" | "pr-opened" | "pr-merged" | "published" | "prepared" | "committed" | "tagged" | "pushed" | "rolled_back";
8021
8021
  driverParam: string;
8022
8022
  notNull: true;
8023
8023
  hasDefault: true;
@@ -8518,7 +8518,7 @@ export declare const selectReleaseSchema: import("drizzle-orm/zod").BuildSchema<
8518
8518
  name: string;
8519
8519
  tableName: "tasks_releases";
8520
8520
  dataType: "string enum";
8521
- data: "cancelled" | "failed" | "reconciled" | "planned" | "pr-opened" | "pr-merged" | "published" | "prepared" | "committed" | "tagged" | "pushed" | "rolled_back";
8521
+ data: "failed" | "cancelled" | "reconciled" | "planned" | "pr-opened" | "pr-merged" | "published" | "prepared" | "committed" | "tagged" | "pushed" | "rolled_back";
8522
8522
  driverParam: string;
8523
8523
  notNull: true;
8524
8524
  hasDefault: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/core",
3
- "version": "2026.9.10",
3
+ "version": "2026.9.12",
4
4
  "description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -461,16 +461,16 @@
461
461
  "write-file-atomic": "^7.0.1",
462
462
  "yaml": "^2.8.3",
463
463
  "zod": "^4.3.6",
464
- "@cleocode/adapters": "2026.9.10",
465
- "@cleocode/agents": "2026.9.10",
466
- "@cleocode/git-shim": "2026.9.10",
467
- "@cleocode/caamp": "2026.9.10",
468
- "@cleocode/contracts": "2026.9.10",
469
- "@cleocode/lafs": "2026.9.10",
470
- "@cleocode/paths": "2026.9.10",
471
- "@cleocode/nexus": "2026.9.10",
472
- "@cleocode/skills": "2026.9.10",
473
- "@cleocode/worktree": "2026.9.10"
464
+ "@cleocode/adapters": "2026.9.12",
465
+ "@cleocode/caamp": "2026.9.12",
466
+ "@cleocode/contracts": "2026.9.12",
467
+ "@cleocode/agents": "2026.9.12",
468
+ "@cleocode/git-shim": "2026.9.12",
469
+ "@cleocode/lafs": "2026.9.12",
470
+ "@cleocode/paths": "2026.9.12",
471
+ "@cleocode/nexus": "2026.9.12",
472
+ "@cleocode/skills": "2026.9.12",
473
+ "@cleocode/worktree": "2026.9.12"
474
474
  },
475
475
  "engines": {
476
476
  "node": ">=24.16.0"
@@ -496,7 +496,7 @@
496
496
  "@types/proper-lockfile": "^4.1.4",
497
497
  "@types/tar": "^6.1.13",
498
498
  "@types/write-file-atomic": "^4.0.3",
499
- "@cleocode/utils": "2026.9.10"
499
+ "@cleocode/utils": "2026.9.12"
500
500
  },
501
501
  "repository": {
502
502
  "type": "git",
@@ -505,7 +505,7 @@
505
505
  },
506
506
  "optionalDependencies": {
507
507
  "llmtxt": "^2026.5.15",
508
- "@cleocode/studio": "^2026.9.10"
508
+ "@cleocode/studio": "^2026.9.12"
509
509
  },
510
510
  "scripts": {
511
511
  "build": "tsc && node scripts/copy-selfimprove-fixtures.mjs",
@@ -96,8 +96,46 @@ jobs:
96
96
  # is already green, tests can be skipped to avoid the redundant run.
97
97
  # (b) The test step is sharded across 2 parallel matrix workers, keeping
98
98
  # each shard under 10 min even without skipping.
99
+ # T12309: a dispatch that CANNOT succeed must not cost a full preflight.
100
+ #
101
+ # The "Resolve release plan" step has two branches. The committed-plan branch
102
+ # verifies a plan file by sha256 and works. The regenerate branch runs
103
+ # `cleo release plan --tasks|--epic` ON THIS RUNNER, and the task store
104
+ # (`.cleo/cleo.db`) is deliberately untracked (ADR-013 section 9, Runtime Data
105
+ # Safety), so a fresh checkout has zero tasks and the command exits
106
+ # `E_NOT_FOUND: One or more --tasks IDs were not found`.
107
+ #
108
+ # That failure landed in `prepare`, which needs all three preflight jobs, so
109
+ # ~20 minutes of lint, typecheck, two test shards and a build were spent
110
+ # proving a tree healthy before anyone learned the dispatch had been
111
+ # impossible from its first second. This job asks that question first.
112
+ dispatch-preconditions:
113
+ name: Dispatch preconditions
114
+ runs-on: ubuntu-latest
115
+ timeout-minutes: 3
116
+ steps:
117
+ - uses: actions/checkout@v4
118
+ - name: A scoped dispatch needs a committed plan
119
+ run: |
120
+ if [ -n "${{ inputs.plan-blob-sha256 }}" ]; then
121
+ echo "plan-blob-sha256 supplied - the committed-plan branch will be used."
122
+ exit 0
123
+ fi
124
+ if [ -z "${{ inputs.epic }}" ] && [ -z "${{ inputs.tasks }}" ]; then
125
+ echo "::error::No release scope supplied. Dispatch with 'epic' or 'tasks', or pass 'plan-blob-sha256' with a committed plan file."
126
+ exit 1
127
+ fi
128
+ if [ -f .cleo/cleo.db ]; then
129
+ echo "Task store present in the checkout - the regenerate branch can resolve the scope."
130
+ exit 0
131
+ fi
132
+ echo "::error::This dispatch cannot succeed. It supplies a scope (epic/tasks) but no 'plan-blob-sha256', so the workflow would regenerate the plan by running 'cleo release plan' here - and .cleo/cleo.db is untracked (ADR-013 section 9), so this checkout has no tasks to resolve."
133
+ echo "::error::Fix: run 'cleo release open <version>' locally. It commits the plan file (git add -f past the .cleo/ ignore), verifies it is on the branch this workflow checks out, and forwards its sha256 as 'plan-blob-sha256'. That is the default as of T12309."
134
+ exit 1
135
+
99
136
  preflight-lint-typecheck:
100
137
  name: Preflight (lint + typecheck)
138
+ needs: [dispatch-preconditions]
101
139
  runs-on: ubuntu-latest
102
140
  timeout-minutes: 15
103
141
  steps:
@@ -135,8 +173,12 @@ jobs:
135
173
  preflight-test:
136
174
  name: Preflight (test shard ${{ matrix.shard }}/2)
137
175
  if: ${{ inputs.skip-tests != true }}
176
+ needs: [dispatch-preconditions]
138
177
  runs-on: ubuntu-latest
139
- timeout-minutes: 30
178
+ # T12309: the job ceiling has to clear the step ceiling it contains. The
179
+ # step now gets 55 minutes (matching ci.yml); 30 here would have killed the
180
+ # job first and reported it as a job timeout rather than a slow suite.
181
+ timeout-minutes: 60
140
182
  strategy:
141
183
  fail-fast: true
142
184
  matrix:
@@ -210,7 +252,11 @@ jobs:
210
252
 
211
253
  - name: Test (shard ${{ matrix.shard }}/2)
212
254
  run: pnpm exec vitest run --shard=${{ matrix.shard }}/2
213
- timeout-minutes: 20
255
+ # T12309: was 20, against a sweep that does not fit in it. ci.yml gives
256
+ # the same suite 55 minutes and a shard measured 17m04s there; this step
257
+ # timed out at 20:00 on a tree whose CI was fully green, so a release
258
+ # could not be prepared from a release-ready commit.
259
+ timeout-minutes: 55
214
260
 
215
261
  preflight-build:
216
262
  name: Preflight (build)