briefops 1.1.0 → 2.1.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/CHANGELOG.md +22 -0
- package/README.md +88 -49
- package/SECURITY.md +4 -3
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/bootstrap.d.ts +2 -0
- package/dist/commands/bootstrap.js +59 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/continue.js +5 -4
- package/dist/commands/continue.js.map +1 -1
- package/dist/commands/doctor.js +27 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/finish.js +9 -1
- package/dist/commands/finish.js.map +1 -1
- package/dist/commands/harness.d.ts +2 -0
- package/dist/commands/harness.js +56 -0
- package/dist/commands/harness.js.map +1 -0
- package/dist/commands/memory.js +20 -3
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/obs.d.ts +2 -0
- package/dist/commands/obs.js +51 -0
- package/dist/commands/obs.js.map +1 -0
- package/dist/commands/skill.js +1 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/core/bootstrap.d.ts +25 -0
- package/dist/core/bootstrap.js +69 -0
- package/dist/core/bootstrap.js.map +1 -0
- package/dist/core/codex.js +32 -5
- package/dist/core/codex.js.map +1 -1
- package/dist/core/codexPlugin.js +53 -12
- package/dist/core/codexPlugin.js.map +1 -1
- package/dist/core/exportTargets.js +21 -18
- package/dist/core/exportTargets.js.map +1 -1
- package/dist/core/harness.d.ts +27 -0
- package/dist/core/harness.js +342 -0
- package/dist/core/harness.js.map +1 -0
- package/dist/core/lock.d.ts +1 -0
- package/dist/core/lock.js +18 -4
- package/dist/core/lock.js.map +1 -1
- package/dist/core/memory.d.ts +4 -1
- package/dist/core/memory.js +54 -2
- package/dist/core/memory.js.map +1 -1
- package/dist/core/memoryHygiene.d.ts +11 -0
- package/dist/core/memoryHygiene.js +93 -0
- package/dist/core/memoryHygiene.js.map +1 -1
- package/dist/core/memoryProposal.js +21 -8
- package/dist/core/memoryProposal.js.map +1 -1
- package/dist/core/observability.d.ts +36 -0
- package/dist/core/observability.js +70 -0
- package/dist/core/observability.js.map +1 -0
- package/dist/core/prime.js +16 -9
- package/dist/core/prime.js.map +1 -1
- package/dist/core/securityDoctor.js +3 -5
- package/dist/core/securityDoctor.js.map +1 -1
- package/dist/core/strictDoctor.d.ts +22 -0
- package/dist/core/strictDoctor.js +95 -0
- package/dist/core/strictDoctor.js.map +1 -0
- package/dist/core/workflow.d.ts +4 -0
- package/dist/core/workflow.js +21 -2
- package/dist/core/workflow.js.map +1 -1
- package/dist/core/workspace.js +13 -1
- package/dist/core/workspace.js.map +1 -1
- package/dist/schemas/memory.d.ts +100 -0
- package/dist/schemas/memory.js +9 -1
- package/dist/schemas/memory.js.map +1 -1
- package/dist/schemas/memoryProposal.d.ts +115 -0
- package/dist/schemas/memoryProposal.js +2 -1
- package/dist/schemas/memoryProposal.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/codex-resume.md +1 -1
- package/docs/compatibility.md +10 -6
- package/docs/concept.md +2 -2
- package/docs/file-format.md +3 -1
- package/docs/handoff-briefs.md +1 -1
- package/docs/impact-report.md +140 -0
- package/docs/integrations/harnesses.md +14 -6
- package/docs/master-harness.md +610 -0
- package/docs/memory-lifecycle.md +11 -5
- package/docs/privacy-model.md +7 -3
- package/docs/quickstart.md +22 -6
- package/docs/release-checklist.md +18 -4
- package/docs/roadmap.md +12 -5
- package/docs/superpowers/plans/2026-06-08-briefops-oss-readiness.md +1 -1
- package/docs/token-budget.md +8 -0
- package/package.json +2 -2
- package/plugins/briefops-codex/.codex-plugin/plugin.json +2 -1
- package/plugins/briefops-codex/README.md +8 -6
- package/plugins/briefops-codex/skills/briefops-continue-worker/SKILL.md +3 -3
- package/plugins/briefops-codex/skills/briefops-finish-task/SKILL.md +4 -4
- package/plugins/briefops-codex/skills/briefops-prime-context/SKILL.md +4 -4
- package/plugins/briefops-codex/skills/briefops-review-memory/SKILL.md +8 -7
- package/plugins/briefops-codex/skills/briefops-route-task/SKILL.md +33 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
- No changes yet.
|
|
6
6
|
|
|
7
|
+
## 2.1.1 - 2026-06-28
|
|
8
|
+
|
|
9
|
+
- Refresh the development dependency baseline for Node.js type definitions and Vitest lockfile resolution.
|
|
10
|
+
- Prepare the npm package version for the next patch publication after the GitHub-only `v2.1.0` tag.
|
|
11
|
+
- Clarify npm install, release readiness, and 2.1.x public documentation.
|
|
12
|
+
|
|
13
|
+
## 2.1.0 - 2026-06-22
|
|
14
|
+
|
|
15
|
+
- Add `briefops harness route` and `briefops harness matrix` as a Codex-first Master Harness routing MVP.
|
|
16
|
+
- Add a Codex `briefops-route-task` skill for workflow-depth classification before implementation.
|
|
17
|
+
- Add `briefops obs continuity` for compression, continuity, queue, and memory hygiene observability without dumping private memory.
|
|
18
|
+
- Add `briefops doctor --strict --json` as a local release-readiness gate across stability, security, privacy, and memory hygiene.
|
|
19
|
+
- Add optional evidence anchors to memory items and memory proposals.
|
|
20
|
+
- Harden lock stale detection so fresh in-progress lock files are not removed during concurrent writes.
|
|
21
|
+
- Update release readiness docs and patch the esbuild lockfile to clear npm audit findings.
|
|
22
|
+
|
|
23
|
+
## 2.0.0 - 2026-06-14
|
|
24
|
+
|
|
25
|
+
- Make `briefops finish` apply durable directory-local memory by default while retaining proposal files as an audit trail.
|
|
26
|
+
- Add `--memory-review` for explicit pending memory queues.
|
|
27
|
+
- Update Codex/plugin/router guidance to treat `.briefops/` memory as local repo state and reserve confirmation for external sharing or skill patches.
|
|
28
|
+
|
|
7
29
|
## 1.1.0 - 2026-06-10
|
|
8
30
|
|
|
9
31
|
- Add `briefops doctor --stability` for bounded read-only workspace integrity checks.
|
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
|
|
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
|
|
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,14 @@ BriefOps can generate Codex skill-plugin assets, but the plugin calls the local
|
|
|
48
46
|
|
|
49
47
|
## Release Status
|
|
50
48
|
|
|
51
|
-
BriefOps 1.
|
|
49
|
+
BriefOps 2.1.1 is the current npm-ready release for developers who want a local-first memory and context ledger for AI coding agents. It packages the 2.1 Master Harness routing, continuity observability, strict release-readiness checks, evidence anchors, and workspace-lock hardening that were prepared after 2.0.
|
|
50
|
+
|
|
51
|
+
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
52
|
|
|
53
53
|
- local files first
|
|
54
54
|
- no hosted service required
|
|
55
55
|
- no required MCP server
|
|
56
|
-
-
|
|
56
|
+
- directory-local memory by default
|
|
57
57
|
- shared-only export controls
|
|
58
58
|
- deterministic CLI behavior
|
|
59
59
|
|
|
@@ -66,11 +66,18 @@ Before publishing a repository or sharing generated context, review:
|
|
|
66
66
|
- `SECURITY.md` for vulnerability reporting and local data handling.
|
|
67
67
|
- `CONTRIBUTING.md` for development checks and safety rules.
|
|
68
68
|
- `CHANGELOG.md` for release notes.
|
|
69
|
-
- `docs/file-format.md` and `docs/compatibility.md` for the
|
|
69
|
+
- `docs/file-format.md` and `docs/compatibility.md` for the local data contract.
|
|
70
70
|
- `docs/privacy-model.md` for export-policy and local data boundaries.
|
|
71
71
|
|
|
72
72
|
## Install
|
|
73
73
|
|
|
74
|
+
From npm:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm install -g briefops
|
|
78
|
+
briefops --version
|
|
79
|
+
```
|
|
80
|
+
|
|
74
81
|
From this repository:
|
|
75
82
|
|
|
76
83
|
```bash
|
|
@@ -99,22 +106,22 @@ This is the primary BriefOps workflow.
|
|
|
99
106
|
### 1. Initialize
|
|
100
107
|
|
|
101
108
|
```bash
|
|
102
|
-
briefops
|
|
109
|
+
briefops bootstrap
|
|
103
110
|
```
|
|
104
111
|
|
|
105
|
-
This creates a local `.briefops/` workspace.
|
|
112
|
+
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
113
|
|
|
107
|
-
|
|
114
|
+
If you want the manual path instead:
|
|
108
115
|
|
|
109
116
|
```bash
|
|
117
|
+
briefops init
|
|
110
118
|
briefops codex install
|
|
111
119
|
briefops codex plugin install
|
|
120
|
+
briefops doctor --privacy --fix-gitignore
|
|
121
|
+
briefops doctor --stability
|
|
112
122
|
```
|
|
113
123
|
|
|
114
|
-
|
|
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
|
|
124
|
+
### 2. Create A Skill
|
|
118
125
|
|
|
119
126
|
```bash
|
|
120
127
|
briefops skill create risk-review \
|
|
@@ -124,7 +131,7 @@ briefops skill create risk-review \
|
|
|
124
131
|
|
|
125
132
|
A skill is a reusable working protocol.
|
|
126
133
|
|
|
127
|
-
###
|
|
134
|
+
### 3. Create Project Context
|
|
128
135
|
|
|
129
136
|
```bash
|
|
130
137
|
briefops project create atlas-q \
|
|
@@ -134,7 +141,7 @@ briefops project create atlas-q \
|
|
|
134
141
|
|
|
135
142
|
A project stores durable facts and constraints.
|
|
136
143
|
|
|
137
|
-
###
|
|
144
|
+
### 4. Create A Worker
|
|
138
145
|
|
|
139
146
|
```bash
|
|
140
147
|
briefops worker create quant-reviewer \
|
|
@@ -147,7 +154,7 @@ briefops worker use quant-reviewer
|
|
|
147
154
|
|
|
148
155
|
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
156
|
|
|
150
|
-
###
|
|
157
|
+
### 5. Prime A Fresh Codex Thread
|
|
151
158
|
|
|
152
159
|
```bash
|
|
153
160
|
briefops prime \
|
|
@@ -156,11 +163,11 @@ briefops prime \
|
|
|
156
163
|
--max-tokens 800
|
|
157
164
|
```
|
|
158
165
|
|
|
159
|
-
Paste the compact prime context into Codex first.
|
|
166
|
+
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
167
|
|
|
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
|
|
168
|
+
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
169
|
|
|
163
|
-
###
|
|
170
|
+
### 6. Start A Codex Mission When Needed
|
|
164
171
|
|
|
165
172
|
```bash
|
|
166
173
|
briefops codex mission \
|
|
@@ -173,7 +180,7 @@ briefops codex mission \
|
|
|
173
180
|
|
|
174
181
|
Paste the generated mission prompt into Codex.
|
|
175
182
|
|
|
176
|
-
###
|
|
183
|
+
### 7. Finish The Task
|
|
177
184
|
|
|
178
185
|
When Codex finishes, record what happened:
|
|
179
186
|
|
|
@@ -193,27 +200,25 @@ briefops finish \
|
|
|
193
200
|
|
|
194
201
|
`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
202
|
|
|
196
|
-
###
|
|
203
|
+
### 8. Local Memory Is Applied
|
|
197
204
|
|
|
198
|
-
|
|
205
|
+
`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.
|
|
199
206
|
|
|
200
|
-
|
|
201
|
-
briefops memory proposal-show latest
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Apply it only when useful:
|
|
207
|
+
Use review mode only when you explicitly want a pending local queue:
|
|
205
208
|
|
|
206
209
|
```bash
|
|
207
|
-
briefops memory
|
|
210
|
+
briefops finish --memory-review ...
|
|
208
211
|
```
|
|
209
212
|
|
|
210
|
-
|
|
213
|
+
Inspect, apply, or reject queued proposals when needed:
|
|
211
214
|
|
|
212
215
|
```bash
|
|
213
|
-
briefops
|
|
216
|
+
briefops memory proposal-show latest
|
|
217
|
+
briefops memory proposal-apply latest
|
|
218
|
+
briefops memory proposal-reject latest
|
|
214
219
|
```
|
|
215
220
|
|
|
216
|
-
###
|
|
221
|
+
### 9. Continue In A Fresh Thread
|
|
217
222
|
|
|
218
223
|
```bash
|
|
219
224
|
briefops continue \
|
|
@@ -222,7 +227,7 @@ briefops continue \
|
|
|
222
227
|
--pack
|
|
223
228
|
```
|
|
224
229
|
|
|
225
|
-
`continue --pack` checks continuity health,
|
|
230
|
+
`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
231
|
|
|
227
232
|
## Shared-Only Export Path
|
|
228
233
|
|
|
@@ -239,7 +244,7 @@ It omits private memory, local project file details, raw work logs, open risks,
|
|
|
239
244
|
|
|
240
245
|
`local-private` is intended for local terminal/Codex use only and may include local private continuity context.
|
|
241
246
|
|
|
242
|
-
BriefOps
|
|
247
|
+
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
248
|
|
|
244
249
|
## Local Harness Export
|
|
245
250
|
|
|
@@ -252,10 +257,26 @@ briefops export cursor-rules
|
|
|
252
257
|
briefops export all
|
|
253
258
|
```
|
|
254
259
|
|
|
255
|
-
Exports are routers, not memory dumps. They tell local AI tools to run `briefops prime`, `briefops finish`,
|
|
260
|
+
Exports are routers, not memory dumps. They tell local AI tools to run `briefops prime`, `briefops finish`, and `briefops continue --pack`.
|
|
256
261
|
|
|
257
262
|
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
263
|
|
|
264
|
+
## Master Harness Routing
|
|
265
|
+
|
|
266
|
+
Use the Master Harness router when Codex should decide the smallest sufficient workflow before implementation:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
briefops harness route --task "Fix the failing dashboard layout test."
|
|
270
|
+
briefops harness route --task "Build the release readiness flow." --type large-feature
|
|
271
|
+
briefops harness matrix
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
The router classifies work across bug fixes, features, refactors, dependency upgrades, UI changes, test repairs, incidents, documentation, architecture decisions, research, code review, and release preparation. It returns the required specification, planning, goal ledger, findings, verification, memory update, artifacts, exit criteria, and final response contract.
|
|
275
|
+
|
|
276
|
+
In 2.1.x this is a routing contract, not a forced process engine. Tiny fixes can stay light; release, incident, UI, and larger feature work can require evidence, findings, and handoff discipline.
|
|
277
|
+
|
|
278
|
+
See `docs/master-harness.md` for the Codex-compatible BriefOps Master Harness architecture and MVP plan.
|
|
279
|
+
|
|
259
280
|
## Context Minimalism
|
|
260
281
|
|
|
261
282
|
Inspect the built-in budget policy:
|
|
@@ -272,6 +293,14 @@ briefops compare context --worker quant-reviewer --task "Review this PR."
|
|
|
272
293
|
|
|
273
294
|
BriefOps should not become the context bloat it was built to prevent. Use `prime` first, then generate a handoff or resume pack only when continuity needs more detail.
|
|
274
295
|
|
|
296
|
+
Inspect the live continuity signal for a worker:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
briefops obs continuity --worker quant-reviewer --task "Review this PR." --json
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
This reports raw candidate context, compiled prime size, compression, continuity health, local queues, and memory hygiene signals without dumping private memory content.
|
|
303
|
+
|
|
275
304
|
## Memory Hygiene
|
|
276
305
|
|
|
277
306
|
Not every task deserves durable memory. Use durable memory for decisions, lessons, incidents, open risks, and reusable constraints:
|
|
@@ -293,6 +322,7 @@ Run this before publishing a repository, sharing a pack, or attaching BriefOps c
|
|
|
293
322
|
briefops doctor --privacy
|
|
294
323
|
briefops doctor --privacy --fix-gitignore
|
|
295
324
|
briefops doctor --stability
|
|
325
|
+
briefops doctor --strict --json
|
|
296
326
|
```
|
|
297
327
|
|
|
298
328
|
BriefOps is local-first, but `.briefops/` may contain private logs and memory. Keep `.briefops/` out of source control unless you intentionally curated the contents.
|
|
@@ -301,6 +331,8 @@ BriefOps is local-first, but `.briefops/` may contain private logs and memory. K
|
|
|
301
331
|
|
|
302
332
|
`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.
|
|
303
333
|
|
|
334
|
+
`doctor --strict` aggregates stability, security, privacy, and memory hygiene checks. Warnings keep `releaseReady` false in JSON output, which makes the command useful as a pre-release gate.
|
|
335
|
+
|
|
304
336
|
## Pre-Publish Readiness
|
|
305
337
|
|
|
306
338
|
Before `npm publish`, run the local release checks and review the package contents:
|
|
@@ -308,7 +340,9 @@ Before `npm publish`, run the local release checks and review the package conten
|
|
|
308
340
|
```bash
|
|
309
341
|
npm run build
|
|
310
342
|
npm test
|
|
343
|
+
npm audit --audit-level=moderate
|
|
311
344
|
npm pack --dry-run
|
|
345
|
+
npm run verify:release
|
|
312
346
|
```
|
|
313
347
|
|
|
314
348
|
Run `npm audit --audit-level=moderate` or `npm run verify:release` only from an environment where sending dependency metadata to the npm registry is acceptable.
|
|
@@ -318,6 +352,7 @@ Confirm:
|
|
|
318
352
|
- generated harness files are routers, not `.briefops` memory dumps
|
|
319
353
|
- `briefops --version` matches `package.json`
|
|
320
354
|
- `.briefops/` is ignored or intentionally curated
|
|
355
|
+
- `npm view briefops versions --json` does not already include the target version
|
|
321
356
|
- `SECURITY.md`, `CHANGELOG.md`, and the release checklist reflect the shipped behavior
|
|
322
357
|
- `npm pack --dry-run` includes `dist`, docs, examples, plugins, README, LICENSE, SECURITY, CONTRIBUTING, CODE_OF_CONDUCT, and CHANGELOG
|
|
323
358
|
|
|
@@ -329,13 +364,13 @@ BriefOps works best as a local memory ledger beside stronger harnesses such as C
|
|
|
329
364
|
|
|
330
365
|
`finish` records what happened.
|
|
331
366
|
|
|
332
|
-
It writes a work log,
|
|
367
|
+
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.
|
|
333
368
|
|
|
334
|
-
Recent work logs are available to the next local handoff immediately. Durable memory is
|
|
369
|
+
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.
|
|
335
370
|
|
|
336
371
|
`continue` prepares the same worker for a fresh thread.
|
|
337
372
|
|
|
338
|
-
It inspects continuity health,
|
|
373
|
+
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.
|
|
339
374
|
|
|
340
375
|
```bash
|
|
341
376
|
briefops finish \
|
|
@@ -353,7 +388,7 @@ briefops continue \
|
|
|
353
388
|
--pack
|
|
354
389
|
```
|
|
355
390
|
|
|
356
|
-
You can continue
|
|
391
|
+
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.
|
|
357
392
|
|
|
358
393
|
## Portable Resume Pack
|
|
359
394
|
|
|
@@ -386,11 +421,11 @@ exportable: false
|
|
|
386
421
|
|
|
387
422
|
BriefOps does not add cloud sync or encryption.
|
|
388
423
|
|
|
389
|
-
##
|
|
424
|
+
## Local Memory Queue And Skill Patches
|
|
390
425
|
|
|
391
|
-
|
|
426
|
+
`briefops finish` applies durable memory locally by default. Pending memory proposals still exist for audit/review mode and older workspaces.
|
|
392
427
|
|
|
393
|
-
Use explicit proposal commands:
|
|
428
|
+
Use explicit proposal commands when you choose to inspect the queue:
|
|
394
429
|
|
|
395
430
|
```bash
|
|
396
431
|
briefops memory proposal-show latest
|
|
@@ -402,7 +437,7 @@ briefops skill apply-patch risk-review --patch latest
|
|
|
402
437
|
briefops skill reject-patch latest
|
|
403
438
|
```
|
|
404
439
|
|
|
405
|
-
|
|
440
|
+
The convenience approval command remains available for pending queue items:
|
|
406
441
|
|
|
407
442
|
```bash
|
|
408
443
|
briefops approve latest
|
|
@@ -410,7 +445,7 @@ briefops approve memory latest
|
|
|
410
445
|
briefops approve skill-patch latest
|
|
411
446
|
```
|
|
412
447
|
|
|
413
|
-
`briefops approve <id|latest>` tries memory first. If no matching memory proposal exists, it tries a skill patch. It applies at most one item.
|
|
448
|
+
`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.
|
|
414
449
|
|
|
415
450
|
## Inbox
|
|
416
451
|
|
|
@@ -435,8 +470,8 @@ briefops inbox --skill risk-review
|
|
|
435
470
|
| Worker Summary | Refreshed worker intelligence | `.briefops/workers/summaries/*.summary.md` |
|
|
436
471
|
| Work Log | Completed task record | `.briefops/logs/*.yaml` |
|
|
437
472
|
| Memory | Curated facts, decisions, lessons, incidents | `.briefops/memory/*.yaml` |
|
|
438
|
-
| Memory Proposal |
|
|
439
|
-
| Skill Patch |
|
|
473
|
+
| Memory Proposal | Audit/review memory candidate | `.briefops/memory-proposals/*.yaml` |
|
|
474
|
+
| Skill Patch | Explicit-review skill improvement | `.briefops/patches/*.patch.yaml` |
|
|
440
475
|
| Handoff | Fresh-thread continuity brief | `.briefops/handoffs/*.md` |
|
|
441
476
|
| Codex Prompt | Mission or resume prompt | `.briefops/codex/prompts/*.md` |
|
|
442
477
|
| Portable Pack | Self-contained resume markdown | `.briefops/codex/prompts/*resume-pack*.md` |
|
|
@@ -486,7 +521,7 @@ briefops memory show <memory-id>
|
|
|
486
521
|
briefops memory update-status <memory-id> --status archived
|
|
487
522
|
```
|
|
488
523
|
|
|
489
|
-
Promote useful work-log items through a proposal:
|
|
524
|
+
Promote useful work-log items through a proposal. `briefops finish` does this automatically by default; these commands are for manual or review-mode flows:
|
|
490
525
|
|
|
491
526
|
```bash
|
|
492
527
|
briefops memory propose-from-log latest
|
|
@@ -496,7 +531,7 @@ briefops memory proposal-apply <proposal-id|latest>
|
|
|
496
531
|
briefops memory proposal-reject <proposal-id|latest>
|
|
497
532
|
```
|
|
498
533
|
|
|
499
|
-
Extraction is deterministic and local. Lessons, decisions, incidents, open risks, prefixed notes, and policy-like next steps can become proposal items. Proposal generation and
|
|
534
|
+
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.
|
|
500
535
|
|
|
501
536
|
## Skills And Skill Patches
|
|
502
537
|
|
|
@@ -659,6 +694,9 @@ When generated briefs, handoffs, or resumes are too large, BriefOps trims lower-
|
|
|
659
694
|
+-- briefs/
|
|
660
695
|
+-- codex/
|
|
661
696
|
| +-- prompts/
|
|
697
|
+
| +-- prime.md
|
|
698
|
+
| +-- mission.md
|
|
699
|
+
| +-- plan.md
|
|
662
700
|
+-- evals/
|
|
663
701
|
| +-- results/
|
|
664
702
|
+-- patches/
|
|
@@ -675,6 +713,7 @@ Because `.briefops/` is local/private, Codex does not automatically see it. Prov
|
|
|
675
713
|
## Command Reference
|
|
676
714
|
|
|
677
715
|
```bash
|
|
716
|
+
briefops bootstrap
|
|
678
717
|
briefops init
|
|
679
718
|
briefops doctor
|
|
680
719
|
briefops doctor --stability
|
|
@@ -768,7 +807,7 @@ Workspace not found:
|
|
|
768
807
|
briefops init
|
|
769
808
|
```
|
|
770
809
|
|
|
771
|
-
|
|
810
|
+
Optional pending memory before continuing:
|
|
772
811
|
|
|
773
812
|
```bash
|
|
774
813
|
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
|
-
|
|
|
10
|
-
|
|
|
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
|
|
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";
|
|
@@ -8,12 +9,14 @@ import { registerDoctorCommand } from "./commands/doctor.js";
|
|
|
8
9
|
import { registerEvalCommands } from "./commands/eval.js";
|
|
9
10
|
import { registerExportCommands } from "./commands/export.js";
|
|
10
11
|
import { registerFinishCommand } from "./commands/finish.js";
|
|
12
|
+
import { registerHarnessCommands } from "./commands/harness.js";
|
|
11
13
|
import { registerInitCommand } from "./commands/init.js";
|
|
12
14
|
import { registerHandoffCommands } from "./commands/handoff.js";
|
|
13
15
|
import { registerInboxCommand } from "./commands/inbox.js";
|
|
14
16
|
import { registerInspectCommands } from "./commands/inspect.js";
|
|
15
17
|
import { registerLogCommands } from "./commands/log.js";
|
|
16
18
|
import { registerMemoryCommands } from "./commands/memory.js";
|
|
19
|
+
import { registerObsCommands } from "./commands/obs.js";
|
|
17
20
|
import { registerPackCommands } from "./commands/pack.js";
|
|
18
21
|
import { registerPrimeCommand } from "./commands/prime.js";
|
|
19
22
|
import { registerProjectCommands } from "./commands/project.js";
|
|
@@ -26,17 +29,20 @@ export function buildProgram() {
|
|
|
26
29
|
.name("briefops")
|
|
27
30
|
.description("Local-first, token-aware brief compiler for AI coding workflows.")
|
|
28
31
|
.version(briefopsVersion);
|
|
32
|
+
registerBootstrapCommand(program);
|
|
29
33
|
registerInitCommand(program);
|
|
30
34
|
registerDoctorCommand(program);
|
|
31
35
|
registerPrimeCommand(program);
|
|
32
36
|
registerApproveCommand(program);
|
|
33
37
|
registerFinishCommand(program);
|
|
38
|
+
registerHarnessCommands(program);
|
|
34
39
|
registerContinueCommand(program);
|
|
35
40
|
registerExportCommands(program);
|
|
36
41
|
registerInboxCommand(program);
|
|
37
42
|
registerSkillCommands(program);
|
|
38
43
|
registerProjectCommands(program);
|
|
39
44
|
registerMemoryCommands(program);
|
|
45
|
+
registerObsCommands(program);
|
|
40
46
|
registerBriefCommands(program);
|
|
41
47
|
registerHandoffCommands(program);
|
|
42
48
|
registerCodexCommands(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,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":"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"}
|
|
@@ -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
|
|
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("
|
|
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
|
|
48
|
+
console.log("Apply locally:");
|
|
48
49
|
console.log("briefops memory proposal-apply latest");
|
|
49
50
|
console.log("");
|
|
50
|
-
console.log("Reject
|
|
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oGAAoG,CAAC;SACjH,MAAM,CAAC,qBAAqB,EAAE,+CAA+C,CAAC;SAC9E,cAAc,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SAC3D,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC;SAC7C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,IAAI,CAAC;SAC3E,MAAM,CAAC,eAAe,EAAE,mBAAmB,EAAE,MAAM,CAAC;SACpD,MAAM,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;SACrE,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,kDAAkD,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,OAAO,EAAE,OAAO,CAAC,OAA6B;YAC9C,MAAM,EAAE,OAAO,CAAC,MAAgB;YAChC,IAAI,EAAE,OAAO,CAAC,IAAc;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;YAChC,IAAI,EAAE,OAAO,CAAC,IAA0B;YACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAuC;YAClE,UAAU,EAAE,OAAO,CAAC,MAAM;gBACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAgB,CAAC;gBACvD,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,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;QACD,IAAI,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -3,6 +3,7 @@ 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
5
|
import { runStabilityDoctor } from "../core/stabilityDoctor.js";
|
|
6
|
+
import { runStrictDoctor } from "../core/strictDoctor.js";
|
|
6
7
|
import { pathExists } from "../core/storage.js";
|
|
7
8
|
import { printTable } from "./shared.js";
|
|
8
9
|
export function registerDoctorCommand(program) {
|
|
@@ -15,7 +16,33 @@ export function registerDoctorCommand(program) {
|
|
|
15
16
|
.option("--fix-stale-locks", "Remove stale BriefOps workspace locks before reporting security checks.")
|
|
16
17
|
.option("--privacy", "Run privacy checks for local memory and share safety.")
|
|
17
18
|
.option("--fix-gitignore", "Add `.briefops/` to .gitignore when running --privacy.")
|
|
19
|
+
.option("--strict", "Run stability, security, privacy, and memory hygiene checks as one release-readiness gate.")
|
|
20
|
+
.option("--json", "Print JSON output for --strict.")
|
|
18
21
|
.action(async (options) => {
|
|
22
|
+
if (options.strict) {
|
|
23
|
+
const result = await runStrictDoctor({
|
|
24
|
+
maxExamples: options.verbose ? 25 : 5
|
|
25
|
+
});
|
|
26
|
+
if (options.json) {
|
|
27
|
+
console.log(JSON.stringify(result, null, 2));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
console.log("BriefOps Strict Doctor");
|
|
31
|
+
console.log("");
|
|
32
|
+
console.log(`OK: ${result.ok ? "yes" : "no"}`);
|
|
33
|
+
console.log(`Release ready: ${result.releaseReady ? "yes" : "no"}`);
|
|
34
|
+
console.log(`Checks: ${result.summary.checks} (${result.summary.ok} ok, ${result.summary.warn} warn, ${result.summary.fail} fail)`);
|
|
35
|
+
console.log("");
|
|
36
|
+
printTable([
|
|
37
|
+
["Source", "Check", "Status", "Detail"],
|
|
38
|
+
...result.checks.map((check) => [check.source, check.name, check.status, check.detail])
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
41
|
+
if (!result.releaseReady) {
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
19
46
|
if (options.privacy) {
|
|
20
47
|
if (options.fixGitignore) {
|
|
21
48
|
const path = await fixBriefOpsGitignore();
|