briefops 1.0.2 → 2.0.0

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 (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +55 -50
  3. package/SECURITY.md +4 -3
  4. package/dist/cli.js +2 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/bootstrap.d.ts +2 -0
  7. package/dist/commands/bootstrap.js +59 -0
  8. package/dist/commands/bootstrap.js.map +1 -0
  9. package/dist/commands/continue.js +5 -4
  10. package/dist/commands/continue.js.map +1 -1
  11. package/dist/commands/doctor.js +16 -0
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/finish.js +9 -1
  14. package/dist/commands/finish.js.map +1 -1
  15. package/dist/commands/skill.js +1 -1
  16. package/dist/commands/skill.js.map +1 -1
  17. package/dist/core/bootstrap.d.ts +25 -0
  18. package/dist/core/bootstrap.js +69 -0
  19. package/dist/core/bootstrap.js.map +1 -0
  20. package/dist/core/codex.js +32 -5
  21. package/dist/core/codex.js.map +1 -1
  22. package/dist/core/codexPlugin.js +13 -12
  23. package/dist/core/codexPlugin.js.map +1 -1
  24. package/dist/core/exportTargets.js +21 -18
  25. package/dist/core/exportTargets.js.map +1 -1
  26. package/dist/core/prime.js +16 -9
  27. package/dist/core/prime.js.map +1 -1
  28. package/dist/core/stabilityDoctor.d.ts +14 -0
  29. package/dist/core/stabilityDoctor.js +356 -0
  30. package/dist/core/stabilityDoctor.js.map +1 -0
  31. package/dist/core/workflow.d.ts +4 -0
  32. package/dist/core/workflow.js +21 -2
  33. package/dist/core/workflow.js.map +1 -1
  34. package/dist/core/workspace.js +13 -1
  35. package/dist/core/workspace.js.map +1 -1
  36. package/dist/version.d.ts +1 -1
  37. package/dist/version.js +1 -1
  38. package/docs/codex-resume.md +1 -1
  39. package/docs/compatibility.md +6 -6
  40. package/docs/concept.md +2 -2
  41. package/docs/handoff-briefs.md +1 -1
  42. package/docs/integrations/harnesses.md +5 -6
  43. package/docs/memory-lifecycle.md +11 -5
  44. package/docs/privacy-model.md +7 -3
  45. package/docs/quickstart.md +8 -6
  46. package/docs/release-checklist.md +5 -3
  47. package/docs/superpowers/plans/2026-06-08-briefops-oss-readiness.md +1 -1
  48. package/package.json +1 -1
  49. package/plugins/briefops-codex/.codex-plugin/plugin.json +1 -1
  50. package/plugins/briefops-codex/README.md +6 -6
  51. package/plugins/briefops-codex/skills/briefops-continue-worker/SKILL.md +3 -3
  52. package/plugins/briefops-codex/skills/briefops-finish-task/SKILL.md +4 -4
  53. package/plugins/briefops-codex/skills/briefops-prime-context/SKILL.md +4 -4
  54. package/plugins/briefops-codex/skills/briefops-review-memory/SKILL.md +8 -7
package/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@
4
4
 
5
5
  - No changes yet.
6
6
 
7
+ ## 2.0.0 - 2026-06-14
8
+
9
+ - Make `briefops finish` apply durable directory-local memory by default while retaining proposal files as an audit trail.
10
+ - Add `--memory-review` for explicit pending memory queues.
11
+ - Update Codex/plugin/router guidance to treat `.briefops/` memory as local repo state and reserve confirmation for external sharing or skill patches.
12
+
13
+ ## 1.1.0 - 2026-06-10
14
+
15
+ - Add `briefops doctor --stability` for bounded read-only workspace integrity checks.
16
+ - Detect invalid workspace schemas, duplicate memory ids, broken references, managed-path symlinks, and orphaned review artifacts.
17
+ - Keep detailed stability diagnostics out of `prime`, handoff, resume, and pack context so local checks do not increase prompt volume.
18
+
7
19
  ## 1.0.2 - 2026-06-10
8
20
 
9
21
  - Include work-log lessons in local handoff, Codex resume, and worker recent-work context before durable memory approval.
package/README.md CHANGED
@@ -6,13 +6,11 @@
6
6
 
7
7
  BriefOps is a local-first CLI for AI coding agents with persistent memory, handoffs, and token-aware context.
8
8
 
9
- The goal is not just to generate a good brief. The goal is to let a user finish an AI coding task, carry recent work into the next handoff immediately, promote only reviewed items into durable memory, and start a fresh Codex or Claude Code thread where the same worker can continue with prior decisions, lessons, risks, and judgment profile.
9
+ The goal is not just to generate a good brief. The goal is to let a user finish an AI coding task, carry recent work into the next handoff immediately, promote useful items into directory-local durable memory, and start a fresh Codex or Claude Code thread where the same worker can continue with prior decisions, lessons, risks, and judgment profile.
10
10
 
11
11
  ```bash
12
12
  briefops prime --task "Start the next task." --format codex --max-tokens 800
13
13
  briefops finish ...
14
- briefops memory proposal-show latest
15
- briefops memory proposal-apply latest
16
14
  briefops continue --worker <worker> --task "<next task>" --pack
17
15
  ```
18
16
 
@@ -23,7 +21,7 @@ It should not maximize context. It preserves continuity by selecting the smalles
23
21
 
24
22
  - a local CLI
25
23
  - a file-based skill, project, memory, worker, and work-log store
26
- - a deterministic memory proposal and approval workflow
24
+ - a deterministic directory-local memory promotion workflow
27
25
  - a token-aware brief, handoff, Codex mission, and resume generator
28
26
  - a compact first-context primer for fresh Codex threads
29
27
  - a persistent worker continuity layer for fresh AI coding threads
@@ -48,12 +46,12 @@ BriefOps can generate Codex skill-plugin assets, but the plugin calls the local
48
46
 
49
47
  ## Release Status
50
48
 
51
- BriefOps 1.0 is intended for developers who want a local-first memory and context ledger for AI coding agents. The public CLI and file-format compatibility policy is documented in `docs/compatibility.md` and `docs/file-format.md`. The core safety principles are stable:
49
+ BriefOps 2.0 is intended for developers who want a local-first memory and context ledger for AI coding agents. The public CLI behavior and workspace file-format policy are documented in `docs/compatibility.md` and `docs/file-format.md`. The core safety principles are stable:
52
50
 
53
51
  - local files first
54
52
  - no hosted service required
55
53
  - no required MCP server
56
- - human-approved memory
54
+ - directory-local memory by default
57
55
  - shared-only export controls
58
56
  - deterministic CLI behavior
59
57
 
@@ -66,7 +64,7 @@ Before publishing a repository or sharing generated context, review:
66
64
  - `SECURITY.md` for vulnerability reporting and local data handling.
67
65
  - `CONTRIBUTING.md` for development checks and safety rules.
68
66
  - `CHANGELOG.md` for release notes.
69
- - `docs/file-format.md` and `docs/compatibility.md` for the 1.0 local data contract.
67
+ - `docs/file-format.md` and `docs/compatibility.md` for the local data contract.
70
68
  - `docs/privacy-model.md` for export-policy and local data boundaries.
71
69
 
72
70
  ## Install
@@ -99,22 +97,22 @@ This is the primary BriefOps workflow.
99
97
  ### 1. Initialize
100
98
 
101
99
  ```bash
102
- briefops init
100
+ briefops bootstrap
103
101
  ```
104
102
 
105
- This creates a local `.briefops/` workspace.
103
+ This creates a local `.briefops/` workspace, installs Codex first-context guidance into `AGENTS.md`, writes `.briefops/codex/prompts/`, installs the deterministic local plugin bundle under `.briefops/codex/plugin/briefops`, adds `.briefops/` to `.gitignore`, and runs bounded privacy/stability checks.
106
104
 
107
- ### 2. Install Codex Guidance
105
+ If you want the manual path instead:
108
106
 
109
107
  ```bash
108
+ briefops init
110
109
  briefops codex install
111
110
  briefops codex plugin install
111
+ briefops doctor --privacy --fix-gitignore
112
+ briefops doctor --stability
112
113
  ```
113
114
 
114
- This creates or updates `AGENTS.md` with BriefOps guidance and creates `.briefops/codex/prompts/`.
115
- `briefops codex plugin install` writes a deterministic local plugin bundle under `.briefops/codex/plugin/briefops`. It does not publish to a marketplace and does not write to global Codex folders by default.
116
-
117
- ### 3. Create A Skill
115
+ ### 2. Create A Skill
118
116
 
119
117
  ```bash
120
118
  briefops skill create risk-review \
@@ -124,7 +122,7 @@ briefops skill create risk-review \
124
122
 
125
123
  A skill is a reusable working protocol.
126
124
 
127
- ### 4. Create Project Context
125
+ ### 3. Create Project Context
128
126
 
129
127
  ```bash
130
128
  briefops project create atlas-q \
@@ -134,7 +132,7 @@ briefops project create atlas-q \
134
132
 
135
133
  A project stores durable facts and constraints.
136
134
 
137
- ### 5. Create A Worker
135
+ ### 4. Create A Worker
138
136
 
139
137
  ```bash
140
138
  briefops worker create quant-reviewer \
@@ -147,7 +145,7 @@ briefops worker use quant-reviewer
147
145
 
148
146
  A worker is the persistent identity BriefOps carries across fresh threads: default project, skill bundle, style, lessons, risks, and judgment profile. `worker use` makes it the default worker for start-of-thread priming.
149
147
 
150
- ### 6. Prime A Fresh Codex Thread
148
+ ### 5. Prime A Fresh Codex Thread
151
149
 
152
150
  ```bash
153
151
  briefops prime \
@@ -156,11 +154,11 @@ briefops prime \
156
154
  --max-tokens 800
157
155
  ```
158
156
 
159
- Paste the compact prime context into Codex first. It is smaller than a full resume pack and is designed to reduce repeated history/context lookup.
157
+ Paste the compact prime context into Codex first. Repos bootstrapped with BriefOps also get `AGENTS.md` guidance that tells Codex to run this before broad repo/history inspection.
160
158
 
161
- Codex-format prime output includes an operating note for Codex: use the selected worker/project context, inspect only files needed for the task, and never apply memory or skill patches without user approval.
159
+ Codex-format prime output includes an operating note for Codex: use the selected worker/project context, inspect only files needed for the task, treat `.briefops/` memory as local repo state, and ask before exporting private memory or applying skill patches.
162
160
 
163
- ### 7. Start A Codex Mission When Needed
161
+ ### 6. Start A Codex Mission When Needed
164
162
 
165
163
  ```bash
166
164
  briefops codex mission \
@@ -173,7 +171,7 @@ briefops codex mission \
173
171
 
174
172
  Paste the generated mission prompt into Codex.
175
173
 
176
- ### 8. Finish The Task
174
+ ### 7. Finish The Task
177
175
 
178
176
  When Codex finishes, record what happened:
179
177
 
@@ -193,27 +191,25 @@ briefops finish \
193
191
 
194
192
  `finish` always writes a work log when `--task` and `--result` are valid. If the log has no durable memory candidates, `finish` warns and still prints the next `briefops continue` command.
195
193
 
196
- ### 9. Review And Apply Memory
194
+ ### 8. Local Memory Is Applied
197
195
 
198
- Memory is human-approved. Review the proposal:
199
-
200
- ```bash
201
- briefops memory proposal-show latest
202
- ```
196
+ `finish` applies durable memory candidates into `.briefops/memory/` by default and keeps the proposal file as an audit trail. The output reports how many memory items were created or skipped as duplicates.
203
197
 
204
- Apply it only when useful:
198
+ Use review mode only when you explicitly want a pending local queue:
205
199
 
206
200
  ```bash
207
- briefops memory proposal-apply latest
201
+ briefops finish --memory-review ...
208
202
  ```
209
203
 
210
- You can also use the convenience command:
204
+ Inspect, apply, or reject queued proposals when needed:
211
205
 
212
206
  ```bash
213
- briefops approve latest
207
+ briefops memory proposal-show latest
208
+ briefops memory proposal-apply latest
209
+ briefops memory proposal-reject latest
214
210
  ```
215
211
 
216
- ### 10. Continue In A Fresh Thread
212
+ ### 9. Continue In A Fresh Thread
217
213
 
218
214
  ```bash
219
215
  briefops continue \
@@ -222,7 +218,7 @@ briefops continue \
222
218
  --pack
223
219
  ```
224
220
 
225
- `continue --pack` checks continuity health, warns about pending memory proposals, refreshes worker intelligence, saves a handoff, saves a Codex resume prompt, saves a portable resume pack, and prints all generated paths.
221
+ `continue --pack` checks continuity health, notes any optional pending memory proposals, refreshes worker intelligence, saves a handoff, saves a Codex resume prompt, saves a portable resume pack, and prints all generated paths.
226
222
 
227
223
  ## Shared-Only Export Path
228
224
 
@@ -239,7 +235,7 @@ It omits private memory, local project file details, raw work logs, open risks,
239
235
 
240
236
  `local-private` is intended for local terminal/Codex use only and may include local private continuity context.
241
237
 
242
- BriefOps skills must never auto-approve memory proposals or skill patches.
238
+ BriefOps may update directory-local memory during normal local work. Explicit confirmation is reserved for sharing private memory outside the workspace or applying skill patches.
243
239
 
244
240
  ## Local Harness Export
245
241
 
@@ -252,7 +248,7 @@ briefops export cursor-rules
252
248
  briefops export all
253
249
  ```
254
250
 
255
- Exports are routers, not memory dumps. They tell local AI tools to run `briefops prime`, `briefops finish`, `briefops approve`, and `briefops continue --pack`.
251
+ Exports are routers, not memory dumps. They tell local AI tools to run `briefops prime`, `briefops finish`, and `briefops continue --pack`.
256
252
 
257
253
  They do not copy `.briefops` memory, raw logs, private decisions, incidents, handoffs, or worker summaries into `AGENTS.md`, `CLAUDE.md`, or Cursor rules. Export commands default to `--export-policy shared-only` because these files are often committed.
258
254
 
@@ -292,12 +288,15 @@ Run this before publishing a repository, sharing a pack, or attaching BriefOps c
292
288
  ```bash
293
289
  briefops doctor --privacy
294
290
  briefops doctor --privacy --fix-gitignore
291
+ briefops doctor --stability
295
292
  ```
296
293
 
297
294
  BriefOps is local-first, but `.briefops/` may contain private logs and memory. Keep `.briefops/` out of source control unless you intentionally curated the contents.
298
295
 
299
296
  `doctor --privacy` checks local memory sharing hazards, including `.briefops/` gitignore coverage, private/exportable memory, and secret-like memory strings.
300
297
 
298
+ `doctor --stability` checks local workspace integrity, schema validity, duplicate memory ids, broken references, managed-path symlinks, and orphaned review artifacts. It keeps diagnostics bounded and does not add detailed doctor output to `prime`, handoff, resume, or pack context.
299
+
301
300
  ## Pre-Publish Readiness
302
301
 
303
302
  Before `npm publish`, run the local release checks and review the package contents:
@@ -326,13 +325,13 @@ BriefOps works best as a local memory ledger beside stronger harnesses such as C
326
325
 
327
326
  `finish` records what happened.
328
327
 
329
- It writes a work log, proposes durable memory when the log contains useful candidates, can propose a skill patch, can refresh the worker summary, and prints the next `briefops continue` command.
328
+ It writes a work log, applies durable directory-local memory when the log contains useful candidates, keeps a proposal audit file, can propose a skill patch, can refresh the worker summary, and prints the next `briefops continue` command.
330
329
 
331
- Recent work logs are available to the next local handoff immediately. Durable memory is separate: lessons, decisions, incidents, and reusable rules become long-lived memory only after review.
330
+ Recent work logs are available to the next local handoff immediately. Durable memory is the long-lived layer: lessons, decisions, incidents, and reusable rules are promoted locally by default unless `--memory-review` is used.
332
331
 
333
332
  `continue` prepares the same worker for a fresh thread.
334
333
 
335
- It inspects continuity health, warns about pending memory proposals, refreshes the worker summary, generates a handoff, and saves a Codex resume prompt. Add `--pack` when you also want one self-contained markdown file.
334
+ It inspects continuity health, notes optional pending memory proposals, refreshes the worker summary, generates a handoff, and saves a Codex resume prompt. Add `--pack` when you also want one self-contained markdown file.
336
335
 
337
336
  ```bash
338
337
  briefops finish \
@@ -350,7 +349,7 @@ briefops continue \
350
349
  --pack
351
350
  ```
352
351
 
353
- You can continue before applying a memory proposal. The handoff still includes recent local work such as results, lessons, decisions, open risks, incidents, and next steps. If pending memory proposals exist, `continue` prints explicit review, apply, and reject commands. It never applies memory automatically.
352
+ You can continue even if older or review-mode memory proposals are still pending. The handoff still includes recent local work such as results, lessons, decisions, open risks, incidents, and next steps. If pending memory proposals exist, `continue` prints inspect, apply, and reject commands without blocking the flow.
354
353
 
355
354
  ## Portable Resume Pack
356
355
 
@@ -383,11 +382,11 @@ exportable: false
383
382
 
384
383
  BriefOps does not add cloud sync or encryption.
385
384
 
386
- ## Approvals
385
+ ## Local Memory Queue And Skill Patches
387
386
 
388
- Memory and skill changes are human-approved.
387
+ `briefops finish` applies durable memory locally by default. Pending memory proposals still exist for audit/review mode and older workspaces.
389
388
 
390
- Use explicit proposal commands:
389
+ Use explicit proposal commands when you choose to inspect the queue:
391
390
 
392
391
  ```bash
393
392
  briefops memory proposal-show latest
@@ -399,7 +398,7 @@ briefops skill apply-patch risk-review --patch latest
399
398
  briefops skill reject-patch latest
400
399
  ```
401
400
 
402
- Or use the convenience approval command:
401
+ The convenience approval command remains available for pending queue items:
403
402
 
404
403
  ```bash
405
404
  briefops approve latest
@@ -407,7 +406,7 @@ briefops approve memory latest
407
406
  briefops approve skill-patch latest
408
407
  ```
409
408
 
410
- `briefops approve <id|latest>` tries memory first. If no matching memory proposal exists, it tries a skill patch. It applies at most one item.
409
+ `briefops approve <id|latest>` tries memory first. If no matching memory proposal exists, it tries a skill patch. It applies at most one item. Skill patches should be applied only with explicit user direction.
411
410
 
412
411
  ## Inbox
413
412
 
@@ -432,8 +431,8 @@ briefops inbox --skill risk-review
432
431
  | Worker Summary | Refreshed worker intelligence | `.briefops/workers/summaries/*.summary.md` |
433
432
  | Work Log | Completed task record | `.briefops/logs/*.yaml` |
434
433
  | Memory | Curated facts, decisions, lessons, incidents | `.briefops/memory/*.yaml` |
435
- | Memory Proposal | Human-reviewed memory candidate | `.briefops/memory-proposals/*.yaml` |
436
- | Skill Patch | Human-reviewed skill improvement | `.briefops/patches/*.patch.yaml` |
434
+ | Memory Proposal | Audit/review memory candidate | `.briefops/memory-proposals/*.yaml` |
435
+ | Skill Patch | Explicit-review skill improvement | `.briefops/patches/*.patch.yaml` |
437
436
  | Handoff | Fresh-thread continuity brief | `.briefops/handoffs/*.md` |
438
437
  | Codex Prompt | Mission or resume prompt | `.briefops/codex/prompts/*.md` |
439
438
  | Portable Pack | Self-contained resume markdown | `.briefops/codex/prompts/*resume-pack*.md` |
@@ -483,7 +482,7 @@ briefops memory show <memory-id>
483
482
  briefops memory update-status <memory-id> --status archived
484
483
  ```
485
484
 
486
- Promote useful work-log items through a proposal:
485
+ Promote useful work-log items through a proposal. `briefops finish` does this automatically by default; these commands are for manual or review-mode flows:
487
486
 
488
487
  ```bash
489
488
  briefops memory propose-from-log latest
@@ -493,7 +492,7 @@ briefops memory proposal-apply <proposal-id|latest>
493
492
  briefops memory proposal-reject <proposal-id|latest>
494
493
  ```
495
494
 
496
- Extraction is deterministic and local. Lessons, decisions, incidents, open risks, prefixed notes, and policy-like next steps can become proposal items. Proposal generation and approval are local file-backed operations protected by workspace locks.
495
+ Extraction is deterministic and local. Lessons, decisions, incidents, open risks, prefixed notes, and policy-like next steps can become proposal items. Proposal generation and application are local file-backed operations protected by workspace locks.
497
496
 
498
497
  ## Skills And Skill Patches
499
498
 
@@ -596,6 +595,7 @@ briefops handoff inspect latest
596
595
 
597
596
  ```bash
598
597
  briefops doctor
598
+ briefops doctor --stability
599
599
  briefops doctor --privacy
600
600
  briefops doctor --security
601
601
  briefops doctor --security --fix-stale-locks
@@ -606,7 +606,7 @@ briefops inspect retrieval --project atlas-q --worker quant-reviewer --task "Con
606
606
  briefops inspect continuity --project atlas-q --worker quant-reviewer
607
607
  ```
608
608
 
609
- `doctor --security --fix-stale-locks` removes stale locks only; it does not remove fresh locks or other workspace files.
609
+ `doctor --stability` is read-only and bounded: it reports counts plus a small set of examples instead of dumping workspace contents. `doctor --security --fix-stale-locks` removes stale locks only; it does not remove fresh locks or other workspace files.
610
610
 
611
611
  Evals are deterministic checklist checks. They do not call an LLM judge.
612
612
 
@@ -655,6 +655,9 @@ When generated briefs, handoffs, or resumes are too large, BriefOps trims lower-
655
655
  +-- briefs/
656
656
  +-- codex/
657
657
  | +-- prompts/
658
+ | +-- prime.md
659
+ | +-- mission.md
660
+ | +-- plan.md
658
661
  +-- evals/
659
662
  | +-- results/
660
663
  +-- patches/
@@ -671,8 +674,10 @@ Because `.briefops/` is local/private, Codex does not automatically see it. Prov
671
674
  ## Command Reference
672
675
 
673
676
  ```bash
677
+ briefops bootstrap
674
678
  briefops init
675
679
  briefops doctor
680
+ briefops doctor --stability
676
681
  briefops doctor --privacy
677
682
  briefops doctor --security
678
683
  briefops inbox
@@ -763,7 +768,7 @@ Workspace not found:
763
768
  briefops init
764
769
  ```
765
770
 
766
- Pending memory before continuing:
771
+ Optional pending memory before continuing:
767
772
 
768
773
  ```bash
769
774
  briefops memory proposal-list --status proposed
package/SECURITY.md CHANGED
@@ -6,8 +6,9 @@ BriefOps is a local-first CLI. It stores project memory, work logs, generated pr
6
6
 
7
7
  | Version | Supported |
8
8
  | --- | --- |
9
- | 1.x | Security fixes accepted |
10
- | 0.2.x alpha | Not supported; upgrade to 1.x |
9
+ | 2.x | Security fixes accepted |
10
+ | 1.x | Security fixes accepted for critical issues |
11
+ | 0.2.x alpha | Not supported; upgrade to 2.x |
11
12
 
12
13
  ## Reporting A Vulnerability
13
14
 
@@ -44,7 +45,7 @@ See `docs/privacy-model.md` for the full 1.0 privacy contract.
44
45
 
45
46
  `briefops export agents-md`, `briefops export claude-md`, `briefops export cursor-rules`, and `briefops export all` generate router files for local AI coding harnesses.
46
47
 
47
- These files are intended to be safe to commit by default. They should contain command guidance and approval boundaries, not raw `.briefops/` memory, work logs, handoffs, resume packs, private decisions, private incidents, or worker summaries.
48
+ These files are intended to be safe to commit by default. They should contain command guidance and explicit export/skill-patch boundaries, not raw `.briefops/` memory, work logs, handoffs, resume packs, private decisions, private incidents, or worker summaries.
48
49
 
49
50
  If you use `--export-policy local-private`, review the generated files before sharing them outside the local machine.
50
51
 
package/dist/cli.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Command } from "commander";
2
2
  import { registerApproveCommand } from "./commands/approve.js";
3
3
  import { registerBriefCommands } from "./commands/brief.js";
4
+ import { registerBootstrapCommand } from "./commands/bootstrap.js";
4
5
  import { registerCodexCommands } from "./commands/codex.js";
5
6
  import { registerCompareCommands } from "./commands/compare.js";
6
7
  import { registerContinueCommand } from "./commands/continue.js";
@@ -26,6 +27,7 @@ export function buildProgram() {
26
27
  .name("briefops")
27
28
  .description("Local-first, token-aware brief compiler for AI coding workflows.")
28
29
  .version(briefopsVersion);
30
+ registerBootstrapCommand(program);
29
31
  registerInitCommand(program);
30
32
  registerDoctorCommand(program);
31
33
  registerPrimeCommand(program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,MAAM,YAAY,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerBootstrapCommand(program: Command): void;
@@ -0,0 +1,59 @@
1
+ import { bootstrapWorkspace } from "../core/bootstrap.js";
2
+ import { printTable } from "./shared.js";
3
+ export function registerBootstrapCommand(program) {
4
+ program
5
+ .command("bootstrap")
6
+ .description("Initialize BriefOps and install first-context Codex guidance for this repo.")
7
+ .option("--force", "Update existing generated guidance/plugin files when safe.")
8
+ .option("--no-codex", "Skip AGENTS.md Codex guidance and prompt pack installation.")
9
+ .option("--no-plugin", "Skip local Codex plugin bundle installation.")
10
+ .option("--no-fix-gitignore", "Do not add `.briefops/` to .gitignore.")
11
+ .option("--no-doctor", "Skip privacy and stability doctor checks.")
12
+ .action(async (options) => {
13
+ const result = await bootstrapWorkspace({
14
+ force: Boolean(options.force),
15
+ codex: options.codex,
16
+ plugin: options.plugin,
17
+ fixGitignore: options.fixGitignore,
18
+ doctor: options.doctor
19
+ });
20
+ console.log("BriefOps bootstrap complete.");
21
+ printTable([
22
+ ["Item", "Status", "Path"],
23
+ ["Workspace", "ready", result.root],
24
+ ["Codex guidance", result.agentsPath ? "installed" : "skipped", result.agentsPath ?? "-"],
25
+ ["Codex prompts", result.promptDir ? "ready" : "skipped", result.promptDir ?? "-"],
26
+ ["Codex plugin", result.pluginRoot ? "installed" : "skipped", result.pluginRoot ?? "-"],
27
+ [".gitignore", result.gitignorePath ? "updated" : "skipped", result.gitignorePath ?? "-"],
28
+ [
29
+ "Stability doctor",
30
+ result.stability ? (result.stability.ok ? "ok" : "fail") : "skipped",
31
+ result.stability ? `${result.stability.checks.length} check(s)` : "-"
32
+ ],
33
+ [
34
+ "Privacy doctor",
35
+ result.privacy ? (result.privacy.ok ? "ok" : "fail") : "skipped",
36
+ result.privacy ? `${result.privacy.checks.length} check(s)` : "-"
37
+ ]
38
+ ]);
39
+ if (result.warnings.length > 0) {
40
+ console.log("");
41
+ console.log("Warnings:");
42
+ for (const warning of result.warnings) {
43
+ console.log(`- ${warning}`);
44
+ }
45
+ }
46
+ console.log("");
47
+ console.log("Next commands:");
48
+ for (const command of result.nextCommands) {
49
+ console.log(`- ${command}`);
50
+ }
51
+ if (result.stability && !result.stability.ok) {
52
+ process.exitCode = 1;
53
+ }
54
+ if (result.privacy && !result.privacy.ok) {
55
+ process.exitCode = 1;
56
+ }
57
+ });
58
+ }
59
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,SAAS,EAAE,4DAA4D,CAAC;SAC/E,MAAM,CAAC,YAAY,EAAE,6DAA6D,CAAC;SACnF,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;SACrE,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,KAA4B;YAC3C,MAAM,EAAE,OAAO,CAAC,MAA6B;YAC7C,YAAY,EAAE,OAAO,CAAC,YAAmC;YACzD,MAAM,EAAE,OAAO,CAAC,MAA6B;SAC9C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,UAAU,CAAC;YACT,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;YAC1B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;YACnC,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;YACzF,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;YAClF,CAAC,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;YACvF,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,IAAI,GAAG,CAAC;YACzF;gBACE,kBAAkB;gBAClB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG;aACtE;YACD;gBACE,gBAAgB;gBAChB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG;aAClE;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -38,16 +38,17 @@ export function registerContinueCommand(program) {
38
38
  }
39
39
  if (result.pendingMemoryProposals > 0) {
40
40
  console.log("");
41
- console.log("Pending memory proposals should be reviewed before continuing.");
41
+ console.log("Pending local memory proposals found.");
42
+ console.log("They do not block continuing; apply or reject them when useful.");
42
43
  console.log("");
43
- console.log("Review:");
44
+ console.log("Inspect:");
44
45
  console.log("briefops memory proposal-list --status proposed");
45
46
  console.log("briefops memory proposal-show latest");
46
47
  console.log("");
47
- console.log("Apply if appropriate:");
48
+ console.log("Apply locally:");
48
49
  console.log("briefops memory proposal-apply latest");
49
50
  console.log("");
50
- console.log("Reject if not useful:");
51
+ console.log("Reject:");
51
52
  console.log("briefops memory proposal-reject latest");
52
53
  }
53
54
  console.log("");
@@ -1 +1 @@
1
- {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,15 @@ import { cleanStaleLocks } from "../core/lock.js";
2
2
  import { memoryCategories, workspacePaths } from "../core/paths.js";
3
3
  import { fixBriefOpsGitignore, runPrivacyDoctor } from "../core/privacyDoctor.js";
4
4
  import { runSecurityDoctor } from "../core/securityDoctor.js";
5
+ import { runStabilityDoctor } from "../core/stabilityDoctor.js";
5
6
  import { pathExists } from "../core/storage.js";
6
7
  import { printTable } from "./shared.js";
7
8
  export function registerDoctorCommand(program) {
8
9
  program
9
10
  .command("doctor")
10
11
  .description("Check the local BriefOps workspace structure.")
12
+ .option("--stability", "Run bounded workspace integrity checks without changing prompt context.")
13
+ .option("--verbose", "Show more stability examples while keeping output bounded.")
11
14
  .option("--security", "Run security, export, and local conflict checks.")
12
15
  .option("--fix-stale-locks", "Remove stale BriefOps workspace locks before reporting security checks.")
13
16
  .option("--privacy", "Run privacy checks for local memory and share safety.")
@@ -29,6 +32,19 @@ export function registerDoctorCommand(program) {
29
32
  }
30
33
  return;
31
34
  }
35
+ if (options.stability) {
36
+ const result = await runStabilityDoctor({
37
+ maxExamples: options.verbose ? 25 : 5
38
+ });
39
+ printTable([
40
+ ["Check", "Status", "Detail"],
41
+ ...result.checks.map((check) => [check.name, check.status, check.detail])
42
+ ]);
43
+ if (!result.ok) {
44
+ process.exitCode = 1;
45
+ }
46
+ return;
47
+ }
32
48
  if (options.security) {
33
49
  if (options.fixStaleLocks) {
34
50
  const removed = await cleanStaleLocks();
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export function registerFinishCommand(program) {
19
19
  .option("--notes <notes>", "Additional notes.")
20
20
  .option("--importance <importance>", "trivial|normal|durable|incident", "normal")
21
21
  .option("--no-memory-proposal", "Skip memory proposal generation.")
22
+ .option("--memory-review", "Leave durable memory as a pending review proposal instead of applying it locally.")
22
23
  .option("--propose-skill-patch", "Also propose a skill patch from log lessons.")
23
24
  .option("--refresh-worker", "Refresh the worker summary after logging.")
24
25
  .option("--continue-task <task>", "Task text to use in the printed continue command.")
@@ -39,6 +40,7 @@ export function registerFinishCommand(program) {
39
40
  notes: options.notes,
40
41
  importance: options.importance,
41
42
  noMemoryProposal: Boolean(options.noMemoryProposal),
43
+ memoryReview: Boolean(options.memoryReview),
42
44
  proposeSkillPatch: Boolean(options.proposeSkillPatch),
43
45
  refreshWorker: Boolean(options.refreshWorker),
44
46
  continueTask: options.continueTask
@@ -46,7 +48,13 @@ export function registerFinishCommand(program) {
46
48
  console.log(`Added work log: ${result.logId}`);
47
49
  console.log(result.logPath);
48
50
  if (result.memoryProposalId && result.memoryProposalPath) {
49
- console.log(`Created memory proposal: ${result.memoryProposalId}`);
51
+ if (result.memoryProposalStatus === "applied") {
52
+ console.log(`Applied local memory: ${result.memoryProposalId}`);
53
+ console.log(`Memory items: ${result.memoryCreated ?? 0} created, ${result.memorySkipped ?? 0} skipped`);
54
+ }
55
+ else {
56
+ console.log(`Created memory review proposal: ${result.memoryProposalId}`);
57
+ }
50
58
  console.log(result.memoryProposalPath);
51
59
  }
52
60
  if (result.skillPatchId && result.skillPatchPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"finish.js","sourceRoot":"","sources":["../../src/commands/finish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finish.js","sourceRoot":"","sources":["../../src/commands/finish.ts"],"names":[],"mappings":"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"}
@@ -85,7 +85,7 @@ export function registerSkillCommands(program) {
85
85
  });
86
86
  skill
87
87
  .command("propose-patch")
88
- .description("Create a human-approved skill patch proposal from a work log lesson.")
88
+ .description("Create an explicit-review skill patch proposal from a work log lesson.")
89
89
  .requiredOption("--skill <skill>", "Skill name.")
90
90
  .option("--from-log <id>", "Work log id or latest.", "latest")
91
91
  .action(async (options) => {