@cleocode/core 2026.4.74 → 2026.4.76
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.
|
|
3
|
+
"version": "2026.4.76",
|
|
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/
|
|
80
|
-
"@cleocode/contracts": "2026.4.
|
|
81
|
-
"@cleocode/agents": "2026.4.
|
|
82
|
-
"@cleocode/
|
|
83
|
-
"@cleocode/lafs": "2026.4.
|
|
84
|
-
"@cleocode/
|
|
85
|
-
"@cleocode/
|
|
79
|
+
"@cleocode/caamp": "2026.4.76",
|
|
80
|
+
"@cleocode/contracts": "2026.4.76",
|
|
81
|
+
"@cleocode/agents": "2026.4.76",
|
|
82
|
+
"@cleocode/adapters": "2026.4.76",
|
|
83
|
+
"@cleocode/lafs": "2026.4.76",
|
|
84
|
+
"@cleocode/nexus": "2026.4.76",
|
|
85
|
+
"@cleocode/skills": "2026.4.76"
|
|
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.
|
|
34
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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.
|
|
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
|
|