@cleocode/core 2026.4.74 → 2026.4.75

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/core",
3
- "version": "2026.4.74",
3
+ "version": "2026.4.75",
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",
@@ -76,13 +76,13 @@
76
76
  "write-file-atomic": "^7.0.1",
77
77
  "yaml": "^2.8.3",
78
78
  "zod": "^4.3.6",
79
- "@cleocode/adapters": "2026.4.74",
80
- "@cleocode/contracts": "2026.4.74",
81
- "@cleocode/agents": "2026.4.74",
82
- "@cleocode/caamp": "2026.4.74",
83
- "@cleocode/lafs": "2026.4.74",
84
- "@cleocode/skills": "2026.4.74",
85
- "@cleocode/nexus": "2026.4.74"
79
+ "@cleocode/agents": "2026.4.75",
80
+ "@cleocode/caamp": "2026.4.75",
81
+ "@cleocode/lafs": "2026.4.75",
82
+ "@cleocode/adapters": "2026.4.75",
83
+ "@cleocode/contracts": "2026.4.75",
84
+ "@cleocode/nexus": "2026.4.75",
85
+ "@cleocode/skills": "2026.4.75"
86
86
  },
87
87
  "engines": {
88
88
  "node": ">=24.0.0"
@@ -30,8 +30,10 @@ describe('CLEO-INJECTION v2.4.0 CLI-only template', () => {
30
30
  });
31
31
 
32
32
  describe('Version and identity', () => {
33
- it('has version 2.4.0', () => {
34
- expect(content).toContain('Version: 2.4.0');
33
+ it('has version 2.4.1 (v2026.4.74 template update)', () => {
34
+ // Added: Triggers table, Orchestration + Docs cheat-sheets, Pre-Complete
35
+ // Gate Ritual, exit codes 80+83, and corrected `cleo observe` → `cleo memory observe`.
36
+ expect(content).toContain('Version: 2.4.1');
35
37
  });
36
38
 
37
39
  it('declares CLI-only dispatch', () => {
@@ -71,7 +73,8 @@ describe('CLEO-INJECTION v2.4.0 CLI-only template', () => {
71
73
  expect(content).toContain('cleo memory find');
72
74
  expect(content).toContain('cleo memory timeline');
73
75
  expect(content).toContain('cleo memory fetch');
74
- expect(content).toContain('cleo observe');
76
+ // v2.4.1: corrected from bare `cleo observe` to actual CLI command
77
+ expect(content).toContain('cleo memory observe');
75
78
  });
76
79
 
77
80
  it('includes Error Handling', () => {
@@ -125,9 +128,9 @@ describe('CLEO-INJECTION v2.4.0 CLI-only template', () => {
125
128
  });
126
129
 
127
130
  describe('Template size', () => {
128
- it('is under 100 lines (token-optimized)', () => {
131
+ it('is under 200 lines (token-optimized; v2.4.1 adds Triggers/Orchestration/Docs/Gate Ritual sections — ~140 lines still compact)', () => {
129
132
  const lines = content.split('\n').length;
130
- expect(lines).toBeLessThanOrEqual(100);
133
+ expect(lines).toBeLessThanOrEqual(200);
131
134
  });
132
135
 
133
136
  it('is at least 50 lines (not accidentally empty)', () => {
@@ -1,6 +1,6 @@
1
1
  # CLEO Protocol
2
2
 
3
- Version: 2.4.0 | CLI-only dispatch | `cleo <command> [args]`
3
+ Version: 2.4.1 | CLI-only dispatch | `cleo <command> [args]`
4
4
 
5
5
  ## Session Start (cheapest-first)
6
6
 
@@ -9,6 +9,7 @@ Version: 2.4.0 | CLI-only dispatch | `cleo <command> [args]`
9
9
  3. `cleo current` — active task? (~100 tokens)
10
10
  4. `cleo next` — what to work on (~300 tokens)
11
11
  5. `cleo show {id}` — full details for chosen task (~400 tokens)
12
+ 6. `cleo orchestrate start --epic TXXX` — for epics with ≥ 5 children (~300 tokens, auto-inits LOOM)
12
13
 
13
14
  ## Work Loop
14
15
 
@@ -18,6 +19,17 @@ Version: 2.4.0 | CLI-only dispatch | `cleo <command> [args]`
18
19
  4. `cleo complete {id}` → mark done
19
20
  5. `cleo next` → continue or end session
20
21
 
22
+ ## Triggers (when to call what)
23
+
24
+ | Signal | Action |
25
+ |--------|--------|
26
+ | Epic with ≥ 5 child tasks just created | Run `cleo orchestrate start <epicId>` before touching any child |
27
+ | You just ran `cleo complete <id>` for a non-trivial task | Run `cleo memory observe "..." --title "..."` with what you learned |
28
+ | Task acceptance criterion contains "test" | Propose an `AcceptanceGate` with `kind:"test"` via `cleo req add` |
29
+ | Session token budget ≈ 80% consumed | Run `cleo session end --note "..."` and hand off |
30
+ | Multiple related tasks ready in parallel | Run `cleo orchestrate ready --epic <id>` for the wave set |
31
+ | About to call `cleo complete` | First: check gates via `cleo show <id>` → run tests → then complete |
32
+
21
33
  ## Task Discovery
22
34
 
23
35
  **Use `cleo find` for discovery. NEVER `cleo list` for browsing.**
@@ -46,10 +58,30 @@ Version: 2.4.0 | CLI-only dispatch | `cleo <command> [args]`
46
58
  | Search | `cleo memory find "query"` | 50/hit |
47
59
  | Context | `cleo memory timeline <id>` | 200-500 |
48
60
  | Details | `cleo memory fetch <id>` | 500/entry |
49
- | Save | `cleo observe "text" --title "title"` | — |
61
+ | Save | `cleo memory observe "text" --title "title"` | — |
62
+ | LLM status | `cleo memory llm-status` | 50 |
63
+ | Ground-truth promote | `cleo memory verify <id>` (owner only) | 50 |
50
64
 
51
65
  Memory bridge (`.cleo/memory-bridge.md`) auto-refreshes on session end and task completion.
52
66
 
67
+ ## Orchestration (for epics ≥ 5 tasks)
68
+
69
+ | Goal | Command |
70
+ |------|---------|
71
+ | Initialize epic pipeline | `cleo orchestrate start <epicId>` (auto-inits LOOM research stage) |
72
+ | Get parallel-safe wave | `cleo orchestrate ready --epic <id>` |
73
+ | Get spawn prompt for a task | `cleo orchestrate spawn <taskId>` |
74
+ | Multi-agent IVTR loop | `cleo orchestrate ivtr <taskId> --start` |
75
+ | View epic wave plan | `cleo orchestrate waves <epicId>` |
76
+
77
+ ## Documents & Attachments
78
+
79
+ | Goal | Command |
80
+ |------|---------|
81
+ | Attach file/url to task | `cleo docs add <taskId> <file>` or `--url <url>` |
82
+ | List task attachments | `cleo docs list --task <id>` |
83
+ | Generate llms.txt summary | `cleo docs generate --for <taskId>` |
84
+
53
85
  ## Error Handling
54
86
 
55
87
  Check exit code (`0` = success) and `"success"` in JSON output after every command.
@@ -59,6 +91,24 @@ Check exit code (`0` = success) and `"success"` in JSON output after every comma
59
91
  | 4 | `E_NOT_FOUND` | `cleo find` to verify ID |
60
92
  | 6 | `E_VALIDATION` | Check field lengths |
61
93
  | 10 | `E_PARENT_NOT_FOUND` | `cleo exists <id>` |
94
+ | 80 | `E_LIFECYCLE_GATE_FAILED` | Parent epic not in implementation stage yet — advance with `cleo lifecycle complete` |
95
+ | 83 | `E_IVTR_INCOMPLETE` | IVTR loop not released — run `cleo orchestrate ivtr <id> --next` |
96
+
97
+ ## Pre-Complete Gate Ritual
98
+
99
+ MANDATORY before every `cleo complete <id>`:
100
+
101
+ 1. `cleo show <id>` — inspect gates
102
+ 2. Run each acceptance criterion verifiable (tests, lint, file checks)
103
+ 3. `cleo verify <id> --run` — executes programmatic AcceptanceGates
104
+ 4. `cleo memory observe "..." --title "..."` — capture learnings
105
+ 5. `cleo complete <id>` — should pass cleanly
106
+
107
+ Anti-patterns to avoid:
108
+ - ❌ Calling `cleo complete` without verifying tests actually ran
109
+ - ❌ Marking all gates green on `cleo verify --all` when only some criteria were checked
110
+ - ❌ Skipping `cleo memory observe` on non-trivial tasks
111
+ - ❌ Self-attesting without programmatic proof (IVTR validate phase exists to prevent this)
62
112
 
63
113
  ## Rules
64
114