@haaaiawd/loom 2.0.0 → 2.0.1

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/README.md CHANGED
@@ -1,209 +1,214 @@
1
- <p align="center"><strong>English</strong> · <a href="README.zh-CN.md">简体中文</a></p>
2
-
3
- <p align="center">
4
- <img src="docs/brand/loom-readme-header.svg" alt="LOOM — Keep the whole. Continue the work." width="100%">
5
- </p>
6
-
7
- <p align="center">
8
- <a href="https://www.npmjs.com/package/@haaaiawd/loom"><img src="https://img.shields.io/npm/v/%40haaaiawd%2Floom?style=flat-square&amp;color=4169E1&amp;label=npm" alt="npm version"></a>
9
- <img src="https://img.shields.io/badge/node-%E2%89%A518-17212B?style=flat-square" alt="Node.js 18 or newer">
10
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-9AD8C2?style=flat-square&amp;labelColor=17212B" alt="MIT license"></a>
11
- </p>
12
-
13
- <p align="center"><strong>The human talks to the Agent. LOOM helps the Agent remember, understand, and continue.</strong></p>
14
-
15
- LOOM is invisible project-understanding and continuity infrastructure for AI Agents. It supports
16
- any work that can be materially advanced through code or command-line tools: software, operations,
17
- research workflows, office automation, data work, and highly personalized projects.
18
-
19
- The human does not learn a framework or operate a CLI. They describe what they want, answer useful
20
- questions, disagree, delegate decisions, and watch the work become real. The Agent uses LOOM in the
21
- background to preserve the whole project across context compression, new sessions, and implementation.
22
-
23
- <table>
24
- <tr>
25
- <td width="33%"><strong>Whole over fragments</strong><br>Keep the result, decisions, systems, and unknowns connected.</td>
26
- <td width="33%"><strong>Expertise over costumes</strong><br>Compile project-specific professional judgment, not decorative expert personas.</td>
27
- <td width="33%"><strong>Proof over ceremony</strong><br>Use independent handoff, exact done conditions, and disk evidence.</td>
28
- </tr>
29
- </table>
30
-
31
- ## The loop
32
-
33
- ![The LOOM production loop](docs/loom-production-loop.svg)
34
-
35
- LOOM has three explicit feedback loops: understanding converges on the whole project; a fresh Keeper
36
- tests the frozen handoff and returns concrete gaps; restartable Tasks carry implementation and evidence
37
- across interruptions. A failed Keeper does not become a warning that everyone politely ignores—it sends
38
- the project back to the exact source that needs repair, then requires a changed digest and a new Keeper.
39
-
40
- The loop is adaptive. LOOM does not provide a universal questionnaire, fixed professional roles, or
41
- a mandatory phase ritual. The Agent keeps clarifying while unknowns could materially change the whole.
42
- It proceeds when the remaining uncertainty is reversible and local, or when the human explicitly asks
43
- to skip after hearing the concrete cost.
44
-
45
- ## Project truth on disk
46
-
47
- An initialized project contains one small semantic backbone:
48
-
49
- ```text
50
- .loom/
51
- ├── PROJECT.md concise entry point and map of the current whole
52
- ├── DECISIONS.md concise history when important decisions supersede earlier ones
53
- ├── design/ product, experience, system, contract, verification, operations, or research docs
54
- ├── capabilities/ one project-specific dossier per recognizable professional field
55
- ├── state.json confirmed facts, assumptions, unresolved questions, Keeper status
56
- ├── tasks.json broad Work Map plus the detailed active horizon
57
- └── eval/ optional Evil Eval scenarios for testing LOOM itself
58
- ```
59
-
60
- Small projects may need few design documents; large projects may need many. A consequential subsystem,
61
- experience, interface, contract, or operational concern gets its own document when a fresh Agent must
62
- understand or verify it independently. `PROJECT.md` maps the whole instead of becoming a thousand-line attic.
63
-
64
- ### Capability dossiers
65
-
66
- A dossier exists only when specialist knowledge would change a question, design choice,
67
- implementation, risk, or verification method. Each dossier represents one recognizable professional
68
- field—such as UI/UX design, visual art direction, game design, psychology, security, or distributed
69
- systems. Different fields remain separate even when tightly coupled; their synthesis belongs in the
70
- design document whose decision they jointly shape. A task technique such as triage, ranking, parsing,
71
- or caching is not allowed to masquerade as the project's entire capability surface.
72
-
73
- ### Work Map and Task
74
-
75
- The Work Map may be hundreds or thousands of lines. It is stored, searched, and revised on disk; it
76
- is not injected into every model context. Planning begins broadly, while detailed steps are compiled
77
- only for the active horizon.
78
-
79
- A Task is not a miniature bureaucracy. It is the smallest restartable checkpoint that tells a fresh
80
- Agent:
81
-
82
- - what observable result to create;
83
- - what proves completion;
84
- - what must not be damaged;
85
- - which project and capability documents matter;
86
- - what has happened, what is happening, and what comes next;
87
- - which evidence already exists and which exact done condition it proves.
88
-
89
- ## Agent quick start
90
-
91
- Install the CLI:
92
-
93
- ```bash
94
- npm install --global @haaaiawd/loom
95
- loom --version
96
- ```
97
-
98
- Or install from the repository during development:
99
-
100
- ```bash
101
- npm install --global .
102
- loom --version
103
- ```
104
-
105
- Inside a project, the Agent runs:
106
-
107
- ```bash
1
+ <p align="center"><strong>English</strong> · <a href="README.zh-CN.md">简体中文</a></p>
2
+
3
+ <p align="center">
4
+ <img src="docs/brand/loom-readme-header.svg" alt="LOOM — Keep the whole. Continue the work." width="100%">
5
+ </p>
6
+
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/@haaaiawd/loom"><img src="https://img.shields.io/npm/v/%40haaaiawd%2Floom?style=flat-square&amp;color=4169E1&amp;label=npm" alt="npm version"></a>
9
+ <img src="https://img.shields.io/badge/node-%E2%89%A518-17212B?style=flat-square" alt="Node.js 18 or newer">
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-9AD8C2?style=flat-square&amp;labelColor=17212B" alt="MIT license"></a>
11
+ </p>
12
+
13
+ <p align="center"><strong>The human talks to the Agent. LOOM helps the Agent remember, understand, and continue.</strong></p>
14
+
15
+ LOOM is invisible project-understanding and continuity infrastructure for AI Agents. It supports
16
+ any work that can be materially advanced through code or command-line tools: software, operations,
17
+ research workflows, office automation, data work, and highly personalized projects.
18
+
19
+ The human does not learn a framework or operate a CLI. They describe what they want, answer useful
20
+ questions, disagree, delegate decisions, and watch the work become real. The Agent uses LOOM in the
21
+ background to preserve the whole project across context compression, new sessions, and implementation.
22
+
23
+ <table>
24
+ <tr>
25
+ <td width="33%"><strong>Whole over fragments</strong><br>Keep the result, decisions, systems, and unknowns connected.</td>
26
+ <td width="33%"><strong>Expertise over costumes</strong><br>Compile project-specific professional judgment, not decorative expert personas.</td>
27
+ <td width="33%"><strong>Proof over ceremony</strong><br>Use independent handoff, exact done conditions, and disk evidence.</td>
28
+ </tr>
29
+ </table>
30
+
31
+ ## The loop
32
+
33
+ ![The LOOM production loop](docs/loom-production-loop.svg)
34
+
35
+ LOOM has three explicit feedback loops: understanding converges on the whole project; a fresh Keeper
36
+ tests the frozen handoff and returns concrete gaps; restartable Tasks carry implementation and evidence
37
+ across interruptions. A failed Keeper does not become a warning that everyone politely ignores—it sends
38
+ the project back to the exact source that needs repair, then requires a changed digest and a new Keeper.
39
+
40
+ The loop is adaptive. LOOM does not provide a universal questionnaire, fixed professional roles, or
41
+ a mandatory phase ritual. The Agent keeps clarifying while unknowns could materially change the whole.
42
+ It proceeds when the remaining uncertainty is reversible and local, or when the human explicitly asks
43
+ to skip after hearing the concrete cost.
44
+
45
+ ## Project truth on disk
46
+
47
+ An initialized project contains one small semantic backbone:
48
+
49
+ ```text
50
+ .loom/
51
+ ├── PROJECT.md concise entry point and map of the current whole
52
+ ├── DECISIONS.md concise history when important decisions supersede earlier ones
53
+ ├── design/ product, experience, system, contract, verification, operations, or research docs
54
+ ├── capabilities/ one project-specific dossier per recognizable professional field
55
+ ├── state.json confirmed facts, assumptions, unresolved questions, Keeper status
56
+ ├── tasks.json broad Work Map plus the detailed active horizon
57
+ └── eval/ optional Evil Eval scenarios for testing LOOM itself
58
+ ```
59
+
60
+ Small projects may need few design documents; large projects may need many. A consequential subsystem,
61
+ experience, interface, contract, or operational concern gets its own document when a fresh Agent must
62
+ understand or verify it independently. `PROJECT.md` maps the whole instead of becoming a thousand-line attic.
63
+
64
+ ### Capability dossiers
65
+
66
+ A dossier exists only when specialist knowledge would change a question, design choice,
67
+ implementation, risk, or verification method. Each dossier represents one recognizable professional
68
+ field—such as UI/UX design, visual art direction, game design, psychology, security, or distributed
69
+ systems. Different fields remain separate even when tightly coupled; their synthesis belongs in the
70
+ design document whose decision they jointly shape. A task technique such as triage, ranking, parsing,
71
+ or caching is not allowed to masquerade as the project's entire capability surface.
72
+
73
+ ### Work Map and Task
74
+
75
+ The Work Map may be hundreds or thousands of lines. It is stored, searched, and revised on disk; it
76
+ is not injected into every model context. Planning begins broadly, while detailed steps are compiled
77
+ only for the active horizon.
78
+
79
+ A Task is not a miniature bureaucracy. It is the smallest restartable checkpoint that tells a fresh
80
+ Agent:
81
+
82
+ - what observable result to create;
83
+ - what proves completion;
84
+ - what must not be damaged;
85
+ - which project and capability documents matter;
86
+ - what has happened, what is happening, and what comes next;
87
+ - which evidence already exists and which exact done condition it proves.
88
+
89
+ ## Agent quick start
90
+
91
+ Install the CLI:
92
+
93
+ ```bash
94
+ npm install --global @haaaiawd/loom
95
+ loom --version
96
+ ```
97
+
98
+ Or install from the repository during development:
99
+
100
+ ```bash
101
+ npm install --global .
102
+ loom --version
103
+ ```
104
+
105
+ Inside a project, the Agent runs:
106
+
107
+ ```bash
108
108
  loom init
109
109
  loom context
110
110
  ```
111
111
 
112
- The Agent edits `.loom/PROJECT.md`, design documents, and capability dossiers as human-readable project truth. Structured
113
- writes use JSON files so long content remains auditable and shell quoting does not corrupt it:
114
-
115
- ```bash
116
- loom record --json-file understanding-update.json
117
- loom design add product --title "Product definition" --kind product
118
- loom design add local-analysis --title "Local analysis system" --kind system
119
- loom design add acceptance --title "Vertical-slice verification" --kind verification
120
- loom capability add ui-ux-design --title "UI/UX design"
121
- loom capability add behavioral-psychology --title "Behavioral psychology"
122
- loom task plan --json-file initial-work-map.json
123
- loom project ready
124
- ```
125
-
126
- At the transition to material execution, open a fresh Agent thread and give it one short instruction:
127
-
128
- ```text
129
- Run loom keeper prompt in this project and follow it. Decide whether you can responsibly start.
130
- ```
131
-
132
- If Keeper returns `needs_revision` or `blocked`, those exact gaps reappear in `loom context`. The Agent
133
- repairs the relevant project, design, capability, or Task source, prepares a changed digest, and opens a
134
- different fresh Keeper. If the host cannot create a subagent, the human can open a new window and use the
135
- same sentence. After the one-time handoff passes, the execution Agent starts and maintains Tasks normally:
136
-
137
- ```bash
138
- loom task next
139
- loom task start TASK-001
140
- loom context
141
- loom task update TASK-001 --json-file progress.json
142
- loom task block TASK-001 --json-file block.json
143
- loom task reopen TASK-001
144
- loom task reopen TASK-001 --reason "Prior completion evidence was disproven"
145
- loom task done TASK-001 --json-file evidence.json
146
- ```
147
-
148
- Completion is deliberately explicit:
149
-
150
- ```json
151
- {
152
- "evidence": ["npm test: 21 passed, 0 failed"],
153
- "checks": [
154
- {
155
- "criterion": "The exact done_when sentence from the Task.",
156
- "evidence": ["The command, artifact, or observation that proves this criterion."]
157
- }
158
- ]
159
- }
160
- ```
161
-
162
- Run `loom --help` for the complete command surface. Run `loom check` for structural health. Run
163
- `loom prompts` to print every cognitive message LOOM can inject: the stable collaboration core,
164
- runtime protocol, dynamic state layer, all document templates, Keeper prompt, eval conditions, judge
165
- prompt, and their composition order. See the [prompt and message catalog](docs/PROMPT_CATALOG.md).
166
-
167
- ## What LOOM deliberately removed
168
-
169
- LOOM 2 replaces the v1 chain of Doctrine, Vision, Capability Graph, Impact Gate, Intent Map, Expertise
170
- Pack, Atelier, Quality Arena, per-Intent Keeper, and Atlas with one adaptive understanding loop, a
171
- scalable graph of design documents, separate professional-field dossiers, one Work Map, and one
172
- restartable Task contract.
173
-
174
- The valuable ideas remain: project judgment, external professional capability, authored choices,
175
- observable completion, context isolation, and evidence. They no longer require separate roles and gates.
176
-
177
- ## Proving that LOOM helps
178
-
179
- `loom eval scaffold --json-file scenario.json` creates an Evil Eval scenario with equal model, tools,
180
- workspace, user facts, and budget across two conditions. The only intended difference is the availability
181
- of LOOM. Runs are repeated, context is forcibly reset, outputs are blinded and order-swapped, and ceremony,
182
- user burden, time, and token cost are penalized alongside quality. See [EVIL_EVAL.md](EVIL_EVAL.md).
183
-
184
- ![The LOOM Evil Eval](docs/loom-eval-loop.svg)
185
-
186
- ## Development
187
-
188
- ```bash
189
- npm test
190
- ```
191
-
192
- The v2 test suite exercises the complete loop, including a 250-Task Work Map, context selection,
193
- superseding decisions, scalable design documents, professional-field separation, capability compilation,
194
- multi-attempt Keeper revision, stale digest and duplicate-run
195
- rejection, exact-file Task start, block/reopen including disproven completion, per-done-condition evidence,
196
- and Evil Eval controls. See the
197
- [complete UX and loop specification](docs/UX_FLOW.md).
112
+ When a Task is active, `loom context` also restores a compact execution protocol: reconcile the Task with
113
+ the current workspace and version-control state, inspect relevant tests before editing, choose proof by risk
114
+ and exact `done_when` claims, persist `completed/current/next` at meaningful handoffs, and close only with
115
+ reproducible evidence. It does not impose a ceremonial test or pull request on work that does not need one.
198
116
 
199
- ## Documentation
200
-
201
- | Read this | When you need |
202
- | --- | --- |
203
- | [System design](design.md) | The architecture, storage model, invariants, and command contracts |
204
- | [UX and loop specification](docs/UX_FLOW.md) | Every human, Agent, LOOM, Keeper, and Task transition |
205
- | [Prompt and message catalog](docs/PROMPT_CATALOG.md) | Every message LOOM injects and how the layers compose |
206
- | [Evil Eval protocol](EVIL_EVAL.md) | A controlled framework-vs-no-framework comparison |
207
- | [Changelog](CHANGELOG.md) | What changed in LOOM 2 |
208
-
209
- Editable Draw.io sources live beside both flow diagrams in [`docs/`](docs/).
117
+ The Agent edits `.loom/PROJECT.md`, design documents, and capability dossiers as human-readable project truth. Structured
118
+ writes use JSON files so long content remains auditable and shell quoting does not corrupt it:
119
+
120
+ ```bash
121
+ loom record --json-file understanding-update.json
122
+ loom design add product --title "Product definition" --kind product
123
+ loom design add local-analysis --title "Local analysis system" --kind system
124
+ loom design add acceptance --title "Vertical-slice verification" --kind verification
125
+ loom capability add ui-ux-design --title "UI/UX design"
126
+ loom capability add behavioral-psychology --title "Behavioral psychology"
127
+ loom task plan --json-file initial-work-map.json
128
+ loom project ready
129
+ ```
130
+
131
+ At the transition to material execution, open a fresh Agent thread and give it one short instruction:
132
+
133
+ ```text
134
+ Run loom keeper prompt in this project and follow it. Decide whether you can responsibly start.
135
+ ```
136
+
137
+ If Keeper returns `needs_revision` or `blocked`, those exact gaps reappear in `loom context`. The Agent
138
+ repairs the relevant project, design, capability, or Task source, prepares a changed digest, and opens a
139
+ different fresh Keeper. If the host cannot create a subagent, the human can open a new window and use the
140
+ same sentence. After the one-time handoff passes, the execution Agent starts and maintains Tasks normally:
141
+
142
+ ```bash
143
+ loom task next
144
+ loom task start TASK-001
145
+ loom context
146
+ loom task update TASK-001 --json-file progress.json
147
+ loom task block TASK-001 --json-file block.json
148
+ loom task reopen TASK-001
149
+ loom task reopen TASK-001 --reason "Prior completion evidence was disproven"
150
+ loom task done TASK-001 --json-file evidence.json
151
+ ```
152
+
153
+ Completion is deliberately explicit:
154
+
155
+ ```json
156
+ {
157
+ "evidence": ["npm test: 21 passed, 0 failed"],
158
+ "checks": [
159
+ {
160
+ "criterion": "The exact done_when sentence from the Task.",
161
+ "evidence": ["The command, artifact, or observation that proves this criterion."]
162
+ }
163
+ ]
164
+ }
165
+ ```
166
+
167
+ Run `loom --help` for the complete command surface. Run `loom check` for structural health. Run
168
+ `loom prompts` to print every cognitive message LOOM can inject: the stable collaboration core,
169
+ runtime protocol, dynamic state layer, all document templates, Keeper prompt, eval conditions, judge
170
+ prompt, and their composition order. See the [prompt and message catalog](docs/PROMPT_CATALOG.md).
171
+
172
+ ## What LOOM deliberately removed
173
+
174
+ LOOM 2 replaces the v1 chain of Doctrine, Vision, Capability Graph, Impact Gate, Intent Map, Expertise
175
+ Pack, Atelier, Quality Arena, per-Intent Keeper, and Atlas with one adaptive understanding loop, a
176
+ scalable graph of design documents, separate professional-field dossiers, one Work Map, and one
177
+ restartable Task contract.
178
+
179
+ The valuable ideas remain: project judgment, external professional capability, authored choices,
180
+ observable completion, context isolation, and evidence. They no longer require separate roles and gates.
181
+
182
+ ## Proving that LOOM helps
183
+
184
+ `loom eval scaffold --json-file scenario.json` creates an Evil Eval scenario with equal model, tools,
185
+ workspace, user facts, and budget across two conditions. The only intended difference is the availability
186
+ of LOOM. Runs are repeated, context is forcibly reset, outputs are blinded and order-swapped, and ceremony,
187
+ user burden, time, and token cost are penalized alongside quality. See [EVIL_EVAL.md](EVIL_EVAL.md).
188
+
189
+ ![The LOOM Evil Eval](docs/loom-eval-loop.svg)
190
+
191
+ ## Development
192
+
193
+ ```bash
194
+ npm test
195
+ ```
196
+
197
+ The v2 test suite exercises the complete loop, including a 250-Task Work Map, context selection,
198
+ superseding decisions, scalable design documents, professional-field separation, capability compilation,
199
+ multi-attempt Keeper revision, stale digest and duplicate-run
200
+ rejection, exact-file Task start, block/reopen including disproven completion, per-done-condition evidence,
201
+ and Evil Eval controls. See the
202
+ [complete UX and loop specification](docs/UX_FLOW.md).
203
+
204
+ ## Documentation
205
+
206
+ | Read this | When you need |
207
+ | --- | --- |
208
+ | [System design](design.md) | The architecture, storage model, invariants, and command contracts |
209
+ | [UX and loop specification](docs/UX_FLOW.md) | Every human, Agent, LOOM, Keeper, and Task transition |
210
+ | [Prompt and message catalog](docs/PROMPT_CATALOG.md) | Every message LOOM injects and how the layers compose |
211
+ | [Evil Eval protocol](EVIL_EVAL.md) | A controlled framework-vs-no-framework comparison |
212
+ | [Changelog](CHANGELOG.md) | What changed in LOOM 2 |
213
+
214
+ Editable Draw.io sources live beside both flow diagrams in [`docs/`](docs/).