briefops 1.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 (255) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CODE_OF_CONDUCT.md +13 -0
  3. package/CONTRIBUTING.md +53 -0
  4. package/LICENSE +21 -0
  5. package/README.md +801 -0
  6. package/SECURITY.md +59 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.js +54 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/approve.d.ts +2 -0
  11. package/dist/commands/approve.js +38 -0
  12. package/dist/commands/approve.js.map +1 -0
  13. package/dist/commands/brief.d.ts +2 -0
  14. package/dist/commands/brief.js +81 -0
  15. package/dist/commands/brief.js.map +1 -0
  16. package/dist/commands/codex.d.ts +2 -0
  17. package/dist/commands/codex.js +163 -0
  18. package/dist/commands/codex.js.map +1 -0
  19. package/dist/commands/compare.d.ts +2 -0
  20. package/dist/commands/compare.js +48 -0
  21. package/dist/commands/compare.js.map +1 -0
  22. package/dist/commands/continue.d.ts +2 -0
  23. package/dist/commands/continue.js +66 -0
  24. package/dist/commands/continue.js.map +1 -0
  25. package/dist/commands/doctor.d.ts +2 -0
  26. package/dist/commands/doctor.js +90 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/eval.d.ts +2 -0
  29. package/dist/commands/eval.js +89 -0
  30. package/dist/commands/eval.js.map +1 -0
  31. package/dist/commands/export.d.ts +2 -0
  32. package/dist/commands/export.js +105 -0
  33. package/dist/commands/export.js.map +1 -0
  34. package/dist/commands/finish.d.ts +2 -0
  35. package/dist/commands/finish.js +71 -0
  36. package/dist/commands/finish.js.map +1 -0
  37. package/dist/commands/handoff.d.ts +2 -0
  38. package/dist/commands/handoff.js +77 -0
  39. package/dist/commands/handoff.js.map +1 -0
  40. package/dist/commands/inbox.d.ts +2 -0
  41. package/dist/commands/inbox.js +36 -0
  42. package/dist/commands/inbox.js.map +1 -0
  43. package/dist/commands/init.d.ts +2 -0
  44. package/dist/commands/init.js +13 -0
  45. package/dist/commands/init.js.map +1 -0
  46. package/dist/commands/inspect.d.ts +2 -0
  47. package/dist/commands/inspect.js +226 -0
  48. package/dist/commands/inspect.js.map +1 -0
  49. package/dist/commands/log.d.ts +2 -0
  50. package/dist/commands/log.js +96 -0
  51. package/dist/commands/log.js.map +1 -0
  52. package/dist/commands/memory.d.ts +2 -0
  53. package/dist/commands/memory.js +236 -0
  54. package/dist/commands/memory.js.map +1 -0
  55. package/dist/commands/pack.d.ts +2 -0
  56. package/dist/commands/pack.js +42 -0
  57. package/dist/commands/pack.js.map +1 -0
  58. package/dist/commands/prime.d.ts +4 -0
  59. package/dist/commands/prime.js +44 -0
  60. package/dist/commands/prime.js.map +1 -0
  61. package/dist/commands/project.d.ts +2 -0
  62. package/dist/commands/project.js +50 -0
  63. package/dist/commands/project.js.map +1 -0
  64. package/dist/commands/shared.d.ts +3 -0
  65. package/dist/commands/shared.js +24 -0
  66. package/dist/commands/shared.js.map +1 -0
  67. package/dist/commands/skill.d.ts +2 -0
  68. package/dist/commands/skill.js +146 -0
  69. package/dist/commands/skill.js.map +1 -0
  70. package/dist/commands/worker.d.ts +2 -0
  71. package/dist/commands/worker.js +128 -0
  72. package/dist/commands/worker.js.map +1 -0
  73. package/dist/core/adapter.d.ts +22 -0
  74. package/dist/core/adapter.js +167 -0
  75. package/dist/core/adapter.js.map +1 -0
  76. package/dist/core/approval.d.ts +26 -0
  77. package/dist/core/approval.js +86 -0
  78. package/dist/core/approval.js.map +1 -0
  79. package/dist/core/brief.d.ts +47 -0
  80. package/dist/core/brief.js +411 -0
  81. package/dist/core/brief.js.map +1 -0
  82. package/dist/core/codex.d.ts +53 -0
  83. package/dist/core/codex.js +286 -0
  84. package/dist/core/codex.js.map +1 -0
  85. package/dist/core/codexPlugin.d.ts +51 -0
  86. package/dist/core/codexPlugin.js +228 -0
  87. package/dist/core/codexPlugin.js.map +1 -0
  88. package/dist/core/compatibility.d.ts +2 -0
  89. package/dist/core/compatibility.js +16 -0
  90. package/dist/core/compatibility.js.map +1 -0
  91. package/dist/core/config.d.ts +19 -0
  92. package/dist/core/config.js +77 -0
  93. package/dist/core/config.js.map +1 -0
  94. package/dist/core/contextBudget.d.ts +12 -0
  95. package/dist/core/contextBudget.js +22 -0
  96. package/dist/core/contextBudget.js.map +1 -0
  97. package/dist/core/contextCompare.d.ts +27 -0
  98. package/dist/core/contextCompare.js +97 -0
  99. package/dist/core/contextCompare.js.map +1 -0
  100. package/dist/core/continuity.d.ts +25 -0
  101. package/dist/core/continuity.js +73 -0
  102. package/dist/core/continuity.js.map +1 -0
  103. package/dist/core/errors.d.ts +4 -0
  104. package/dist/core/errors.js +12 -0
  105. package/dist/core/errors.js.map +1 -0
  106. package/dist/core/eval.d.ts +38 -0
  107. package/dist/core/eval.js +180 -0
  108. package/dist/core/eval.js.map +1 -0
  109. package/dist/core/exportPolicy.d.ts +7 -0
  110. package/dist/core/exportPolicy.js +17 -0
  111. package/dist/core/exportPolicy.js.map +1 -0
  112. package/dist/core/exportTargets.d.ts +25 -0
  113. package/dist/core/exportTargets.js +292 -0
  114. package/dist/core/exportTargets.js.map +1 -0
  115. package/dist/core/handoff.d.ts +48 -0
  116. package/dist/core/handoff.js +611 -0
  117. package/dist/core/handoff.js.map +1 -0
  118. package/dist/core/inbox.d.ts +15 -0
  119. package/dist/core/inbox.js +56 -0
  120. package/dist/core/inbox.js.map +1 -0
  121. package/dist/core/lock.d.ts +11 -0
  122. package/dist/core/lock.js +99 -0
  123. package/dist/core/lock.js.map +1 -0
  124. package/dist/core/log.d.ts +38 -0
  125. package/dist/core/log.js +93 -0
  126. package/dist/core/log.js.map +1 -0
  127. package/dist/core/memory.d.ts +86 -0
  128. package/dist/core/memory.js +353 -0
  129. package/dist/core/memory.js.map +1 -0
  130. package/dist/core/memoryHygiene.d.ts +25 -0
  131. package/dist/core/memoryHygiene.js +95 -0
  132. package/dist/core/memoryHygiene.js.map +1 -0
  133. package/dist/core/memoryProposal.d.ts +40 -0
  134. package/dist/core/memoryProposal.js +279 -0
  135. package/dist/core/memoryProposal.js.map +1 -0
  136. package/dist/core/output.d.ts +7 -0
  137. package/dist/core/output.js +18 -0
  138. package/dist/core/output.js.map +1 -0
  139. package/dist/core/patch.d.ts +37 -0
  140. package/dist/core/patch.js +220 -0
  141. package/dist/core/patch.js.map +1 -0
  142. package/dist/core/paths.d.ts +33 -0
  143. package/dist/core/paths.js +84 -0
  144. package/dist/core/paths.js.map +1 -0
  145. package/dist/core/prime.d.ts +17 -0
  146. package/dist/core/prime.js +298 -0
  147. package/dist/core/prime.js.map +1 -0
  148. package/dist/core/privacyDoctor.d.ts +14 -0
  149. package/dist/core/privacyDoctor.js +59 -0
  150. package/dist/core/privacyDoctor.js.map +1 -0
  151. package/dist/core/project.d.ts +16 -0
  152. package/dist/core/project.js +73 -0
  153. package/dist/core/project.js.map +1 -0
  154. package/dist/core/securityDoctor.d.ts +14 -0
  155. package/dist/core/securityDoctor.js +96 -0
  156. package/dist/core/securityDoctor.js.map +1 -0
  157. package/dist/core/skill.d.ts +16 -0
  158. package/dist/core/skill.js +81 -0
  159. package/dist/core/skill.js.map +1 -0
  160. package/dist/core/storage.d.ts +20 -0
  161. package/dist/core/storage.js +112 -0
  162. package/dist/core/storage.js.map +1 -0
  163. package/dist/core/tokens.d.ts +5 -0
  164. package/dist/core/tokens.js +24 -0
  165. package/dist/core/tokens.js.map +1 -0
  166. package/dist/core/worker.d.ts +51 -0
  167. package/dist/core/worker.js +312 -0
  168. package/dist/core/worker.js.map +1 -0
  169. package/dist/core/workflow.d.ts +61 -0
  170. package/dist/core/workflow.js +308 -0
  171. package/dist/core/workflow.js.map +1 -0
  172. package/dist/core/workspace.d.ts +7 -0
  173. package/dist/core/workspace.js +214 -0
  174. package/dist/core/workspace.js.map +1 -0
  175. package/dist/index.d.ts +2 -0
  176. package/dist/index.js +16 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/schemas/brief.d.ts +12 -0
  179. package/dist/schemas/brief.js +2 -0
  180. package/dist/schemas/brief.js.map +1 -0
  181. package/dist/schemas/eval.d.ts +96 -0
  182. package/dist/schemas/eval.js +30 -0
  183. package/dist/schemas/eval.js.map +1 -0
  184. package/dist/schemas/handoff.d.ts +33 -0
  185. package/dist/schemas/handoff.js +13 -0
  186. package/dist/schemas/handoff.js.map +1 -0
  187. package/dist/schemas/log.d.ts +51 -0
  188. package/dist/schemas/log.js +19 -0
  189. package/dist/schemas/log.js.map +1 -0
  190. package/dist/schemas/memory.d.ts +112 -0
  191. package/dist/schemas/memory.js +21 -0
  192. package/dist/schemas/memory.js.map +1 -0
  193. package/dist/schemas/memoryProposal.d.ts +181 -0
  194. package/dist/schemas/memoryProposal.js +46 -0
  195. package/dist/schemas/memoryProposal.js.map +1 -0
  196. package/dist/schemas/patch.d.ts +38 -0
  197. package/dist/schemas/patch.js +15 -0
  198. package/dist/schemas/patch.js.map +1 -0
  199. package/dist/schemas/project.d.ts +23 -0
  200. package/dist/schemas/project.js +8 -0
  201. package/dist/schemas/project.js.map +1 -0
  202. package/dist/schemas/skill.d.ts +26 -0
  203. package/dist/schemas/skill.js +9 -0
  204. package/dist/schemas/skill.js.map +1 -0
  205. package/dist/schemas/worker.d.ts +29 -0
  206. package/dist/schemas/worker.js +12 -0
  207. package/dist/schemas/worker.js.map +1 -0
  208. package/dist/version.d.ts +1 -0
  209. package/dist/version.js +3 -0
  210. package/dist/version.js.map +1 -0
  211. package/docs/codex-resume.md +13 -0
  212. package/docs/compatibility.md +49 -0
  213. package/docs/concept.md +13 -0
  214. package/docs/evals.md +18 -0
  215. package/docs/file-format.md +67 -0
  216. package/docs/handoff-briefs.md +9 -0
  217. package/docs/integrations/harnesses.md +74 -0
  218. package/docs/memory-lifecycle.md +23 -0
  219. package/docs/persistent-worker.md +15 -0
  220. package/docs/privacy-model.md +40 -0
  221. package/docs/quickstart.md +74 -0
  222. package/docs/release-checklist.md +68 -0
  223. package/docs/roadmap.md +33 -0
  224. package/docs/superpowers/plans/2026-06-08-briefops-oss-readiness.md +1272 -0
  225. package/docs/superpowers/plans/2026-06-08-codex-first-context-optimization.md +1176 -0
  226. package/docs/token-budget.md +63 -0
  227. package/examples/atlas-q/README.md +15 -0
  228. package/examples/codex-first-context/README.md +48 -0
  229. package/examples/codex-first-context/after-briefops-prime.md +40 -0
  230. package/examples/codex-first-context/before-manual-history-dump.md +18 -0
  231. package/examples/persistent-worker-demo/README.md +15 -0
  232. package/examples/persistent-worker-demo/after-codex-resume.md +17 -0
  233. package/examples/persistent-worker-demo/before-context-dump.md +5 -0
  234. package/examples/persistent-worker-demo/briefops-workspace/codex/prompts/resume_demo.md +29 -0
  235. package/examples/persistent-worker-demo/briefops-workspace/handoffs/handoff_demo.md +50 -0
  236. package/examples/persistent-worker-demo/briefops-workspace/logs/log_20260604_001.yaml +14 -0
  237. package/examples/persistent-worker-demo/briefops-workspace/logs/log_20260604_002.yaml +12 -0
  238. package/examples/persistent-worker-demo/briefops-workspace/memory/decisions.yaml +12 -0
  239. package/examples/persistent-worker-demo/briefops-workspace/memory/deprecated.yaml +1 -0
  240. package/examples/persistent-worker-demo/briefops-workspace/memory/facts.yaml +12 -0
  241. package/examples/persistent-worker-demo/briefops-workspace/memory/incidents.yaml +12 -0
  242. package/examples/persistent-worker-demo/briefops-workspace/memory/lessons.yaml +12 -0
  243. package/examples/persistent-worker-demo/briefops-workspace/memory-proposals/memprop_demo_001.memory-proposal.yaml +23 -0
  244. package/examples/persistent-worker-demo/briefops-workspace/projects/atlas-q.project.md +18 -0
  245. package/examples/persistent-worker-demo/briefops-workspace/skills/backtest-validation.skill.md +13 -0
  246. package/examples/persistent-worker-demo/briefops-workspace/skills/risk-review.skill.md +15 -0
  247. package/examples/persistent-worker-demo/briefops-workspace/workers/quant-reviewer.worker.yaml +12 -0
  248. package/examples/persistent-worker-demo/briefops-workspace/workers/summaries/quant-reviewer.summary.md +44 -0
  249. package/package.json +59 -0
  250. package/plugins/briefops-codex/.codex-plugin/plugin.json +39 -0
  251. package/plugins/briefops-codex/README.md +44 -0
  252. package/plugins/briefops-codex/skills/briefops-continue-worker/SKILL.md +22 -0
  253. package/plugins/briefops-codex/skills/briefops-finish-task/SKILL.md +22 -0
  254. package/plugins/briefops-codex/skills/briefops-prime-context/SKILL.md +24 -0
  255. package/plugins/briefops-codex/skills/briefops-review-memory/SKILL.md +27 -0
package/SECURITY.md ADDED
@@ -0,0 +1,59 @@
1
+ # Security Policy
2
+
3
+ BriefOps is a local-first CLI. It stores project memory, work logs, generated prompts, and plugin assets under `.briefops/` in the current repository.
4
+
5
+ ## Supported Versions
6
+
7
+ | Version | Supported |
8
+ | --- | --- |
9
+ | 0.2.x alpha | Security fixes accepted |
10
+
11
+ ## Reporting A Vulnerability
12
+
13
+ Please report suspected vulnerabilities through GitHub Security Advisories when available. If advisories are not enabled, open a GitHub issue with a minimal description and avoid posting secrets, private logs, or exploit payloads.
14
+
15
+ Include:
16
+
17
+ - BriefOps version
18
+ - Operating system
19
+ - Command used
20
+ - Whether `.briefops/` contains private project data
21
+ - Expected behavior
22
+ - Observed behavior
23
+
24
+ ## Local Data Policy
25
+
26
+ BriefOps does not require a hosted service, MCP server, vector database, or network access.
27
+
28
+ Do not commit `.briefops/` unless you intentionally curated the contents for sharing. Use:
29
+
30
+ ```bash
31
+ briefops doctor --privacy
32
+ briefops prime --export-policy shared-only
33
+ briefops pack resume --export-policy shared-only
34
+ ```
35
+
36
+ before sharing generated context outside your local machine.
37
+
38
+ `shared-only` omits private memory, local project file details, raw work logs, open risks, local next steps, private worker history, and private metadata counts. `doctor --privacy` checks local memory sharing hazards. `doctor --security --fix-stale-locks` removes stale locks only.
39
+
40
+ See `docs/privacy-model.md` for the full 1.0 privacy contract.
41
+
42
+ ## Harness Export Safety
43
+
44
+ `briefops export agents-md`, `briefops export claude-md`, `briefops export cursor-rules`, and `briefops export all` generate router files for local AI coding harnesses.
45
+
46
+ 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.
47
+
48
+ If you use `--export-policy local-private`, review the generated files before sharing them outside the local machine.
49
+
50
+ ## Network And Release Checks
51
+
52
+ Most BriefOps commands are local and deterministic. Release verification may call npm registry services:
53
+
54
+ ```bash
55
+ npm audit --audit-level=moderate
56
+ npm run verify:release
57
+ ```
58
+
59
+ Run these commands only when it is acceptable to send package dependency/audit metadata to npm. `npm pack --dry-run` is the preferred local package-content check before publishing.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function buildProgram(): Command;
3
+ export declare function main(argv: string[]): Promise<void>;
package/dist/cli.js ADDED
@@ -0,0 +1,54 @@
1
+ import { Command } from "commander";
2
+ import { registerApproveCommand } from "./commands/approve.js";
3
+ import { registerBriefCommands } from "./commands/brief.js";
4
+ import { registerCodexCommands } from "./commands/codex.js";
5
+ import { registerCompareCommands } from "./commands/compare.js";
6
+ import { registerContinueCommand } from "./commands/continue.js";
7
+ import { registerDoctorCommand } from "./commands/doctor.js";
8
+ import { registerEvalCommands } from "./commands/eval.js";
9
+ import { registerExportCommands } from "./commands/export.js";
10
+ import { registerFinishCommand } from "./commands/finish.js";
11
+ import { registerInitCommand } from "./commands/init.js";
12
+ import { registerHandoffCommands } from "./commands/handoff.js";
13
+ import { registerInboxCommand } from "./commands/inbox.js";
14
+ import { registerInspectCommands } from "./commands/inspect.js";
15
+ import { registerLogCommands } from "./commands/log.js";
16
+ import { registerMemoryCommands } from "./commands/memory.js";
17
+ import { registerPackCommands } from "./commands/pack.js";
18
+ import { registerPrimeCommand } from "./commands/prime.js";
19
+ import { registerProjectCommands } from "./commands/project.js";
20
+ import { registerSkillCommands } from "./commands/skill.js";
21
+ import { registerWorkerCommands } from "./commands/worker.js";
22
+ import { briefopsVersion } from "./version.js";
23
+ export function buildProgram() {
24
+ const program = new Command();
25
+ program
26
+ .name("briefops")
27
+ .description("Local-first, token-aware brief compiler for AI coding workflows.")
28
+ .version(briefopsVersion);
29
+ registerInitCommand(program);
30
+ registerDoctorCommand(program);
31
+ registerPrimeCommand(program);
32
+ registerApproveCommand(program);
33
+ registerFinishCommand(program);
34
+ registerContinueCommand(program);
35
+ registerExportCommands(program);
36
+ registerInboxCommand(program);
37
+ registerSkillCommands(program);
38
+ registerProjectCommands(program);
39
+ registerMemoryCommands(program);
40
+ registerBriefCommands(program);
41
+ registerHandoffCommands(program);
42
+ registerCodexCommands(program);
43
+ registerPackCommands(program);
44
+ registerLogCommands(program);
45
+ registerEvalCommands(program);
46
+ registerWorkerCommands(program);
47
+ registerInspectCommands(program);
48
+ registerCompareCommands(program);
49
+ return program;
50
+ }
51
+ export async function main(argv) {
52
+ await buildProgram().parseAsync(argv);
53
+ }
54
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerApproveCommand(program: Command): void;
@@ -0,0 +1,38 @@
1
+ import { approveAny, approveMemory, approveSkillPatch } from "../core/approval.js";
2
+ function printApproval(result) {
3
+ if (result.kind === "memory") {
4
+ console.log(`Applied memory proposal: ${result.proposal.id}`);
5
+ console.log(`Created: ${result.created}`);
6
+ console.log(`Skipped duplicates: ${result.skipped}`);
7
+ return;
8
+ }
9
+ console.log(`Applied skill patch: ${result.patch.id}`);
10
+ console.log(result.skillPath);
11
+ }
12
+ export function registerApproveCommand(program) {
13
+ const approve = program
14
+ .command("approve")
15
+ .description("Approve a proposed memory item or skill patch.");
16
+ approve
17
+ .argument("[id]", "Memory proposal or skill patch id, or latest.")
18
+ .action(async (id) => {
19
+ if (!id) {
20
+ approve.help({ error: true });
21
+ return;
22
+ }
23
+ printApproval(await approveAny({ id }));
24
+ });
25
+ approve
26
+ .command("memory <id>")
27
+ .description("Apply a memory proposal.")
28
+ .action(async (id) => {
29
+ printApproval(await approveMemory({ id }));
30
+ });
31
+ approve
32
+ .command("skill-patch <id>")
33
+ .description("Apply a skill patch proposal.")
34
+ .action(async (id) => {
35
+ printApproval(await approveSkillPatch({ id }));
36
+ });
37
+ }
38
+ //# sourceMappingURL=approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,SAAS,aAAa,CAAC,MAAqB;IAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gDAAgD,CAAC,CAAC;IAEjE,OAAO;SACJ,QAAQ,CAAC,MAAM,EAAE,+CAA+C,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;QAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,aAAa,CAAC,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,aAAa,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,aAAa,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerBriefCommands(program: Command): void;
@@ -0,0 +1,81 @@
1
+ import path from "node:path";
2
+ import { generateBrief, inspectSavedBrief, listSavedBriefs, saveGeneratedBrief, showSavedBrief } from "../core/brief.js";
3
+ import { parsePositiveInt, printTable } from "./shared.js";
4
+ export function registerBriefCommands(program) {
5
+ const brief = program.command("brief").description("Generate token-aware task briefs.");
6
+ brief
7
+ .command("generate")
8
+ .description("Compile skill, project context, memory, and task into a brief.")
9
+ .option("--skill <skill>", "Skill name.")
10
+ .option("--project <project>", "Project name.")
11
+ .option("--worker <worker>", "Worker profile name.")
12
+ .requiredOption("--task <task>", "Task description.")
13
+ .option("--budget <tokens>", "Overall token budget.", parsePositiveInt, 2000)
14
+ .option("--adapter <adapter>", "generic|codex|claude-code", "generic")
15
+ .option("--save", "Save to .briefops/briefs.")
16
+ .option("--output <path>", "Write the brief to a specific path.")
17
+ .option("--force", "Overwrite an existing explicit output file.")
18
+ .option("--copy", "Reserved for future clipboard support.")
19
+ .action(async (options) => {
20
+ const generated = await generateBrief({
21
+ skill: options.skill,
22
+ project: options.project,
23
+ worker: options.worker,
24
+ task: options.task,
25
+ budget: options.budget,
26
+ adapter: options.adapter
27
+ });
28
+ console.log(generated.content);
29
+ if (options.copy) {
30
+ console.error("Warning: --copy is not implemented yet; brief printed to stdout.");
31
+ }
32
+ if (options.save || options.output) {
33
+ const savedPath = await saveGeneratedBrief({
34
+ cwd: process.cwd(),
35
+ generated,
36
+ project: options.project,
37
+ skill: options.skill,
38
+ worker: options.worker,
39
+ outputPath: options.output
40
+ ? path.resolve(process.cwd(), options.output)
41
+ : undefined,
42
+ force: Boolean(options.force)
43
+ });
44
+ console.error(`Saved brief: ${savedPath}`);
45
+ }
46
+ });
47
+ brief
48
+ .command("list")
49
+ .description("List saved briefs.")
50
+ .action(async () => {
51
+ const briefs = await listSavedBriefs(process.cwd());
52
+ if (briefs.length === 0) {
53
+ console.log("No saved briefs found.");
54
+ return;
55
+ }
56
+ printTable([
57
+ ["ID", "Tokens", "Path"],
58
+ ...briefs.map((item) => [item.id, String(item.tokens), item.path])
59
+ ]);
60
+ });
61
+ brief
62
+ .command("show <id>")
63
+ .description("Show a saved brief by id or latest.")
64
+ .action(async (id) => {
65
+ console.log(await showSavedBrief(process.cwd(), id));
66
+ });
67
+ brief
68
+ .command("inspect <id>")
69
+ .description("Inspect a saved brief by id or latest.")
70
+ .action(async (id) => {
71
+ const result = await inspectSavedBrief(process.cwd(), id);
72
+ printTable([
73
+ ["Field", "Value"],
74
+ ["ID", result.id],
75
+ ["Path", result.path],
76
+ ["Characters", String(result.characters)],
77
+ ["Estimated Tokens", String(result.tokens)]
78
+ ]);
79
+ });
80
+ }
81
+ //# sourceMappingURL=brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerCodexCommands(program: Command): void;
@@ -0,0 +1,163 @@
1
+ import path from "node:path";
2
+ import { generateCodexMission, generateCodexPlan, generateCodexResume, installCodexPack } from "../core/codex.js";
3
+ import { inspectCodexPlugin, installCodexPlugin } from "../core/codexPlugin.js";
4
+ import { normalizeExportPolicy } from "../core/exportPolicy.js";
5
+ import { runPrimeCommand } from "./prime.js";
6
+ import { parsePositiveInt, printTable } from "./shared.js";
7
+ export function registerCodexCommands(program) {
8
+ const codex = program
9
+ .command("codex")
10
+ .description("Generate Codex-favored prompts, missions, and repo guidance.");
11
+ codex
12
+ .command("install")
13
+ .description("Install BriefOps Codex guidance into AGENTS.md and .briefops/codex.")
14
+ .option("--force", "Append BriefOps guidance when AGENTS.md already exists.")
15
+ .action(async (options) => {
16
+ const result = await installCodexPack({
17
+ force: Boolean(options.force)
18
+ });
19
+ console.log("BriefOps Codex pack installed.");
20
+ console.log(`AGENTS.md: ${result.agentsPath}`);
21
+ console.log(`Prompts: ${result.promptDir}`);
22
+ });
23
+ const plugin = codex
24
+ .command("plugin")
25
+ .description("Manage local BriefOps Codex plugin assets.");
26
+ plugin
27
+ .command("install")
28
+ .description("Install the BriefOps Codex plugin bundle into .briefops/codex/plugin.")
29
+ .option("--force", "Overwrite generated plugin files.")
30
+ .action(async (options) => {
31
+ const result = await installCodexPlugin({
32
+ force: Boolean(options.force)
33
+ });
34
+ console.log("BriefOps Codex plugin bundle installed.");
35
+ console.log(`Plugin: ${result.root}`);
36
+ console.log(`Files: ${result.files.length}`);
37
+ console.log("Next: install this local plugin folder in Codex, or use the generated skills as repo guidance.");
38
+ });
39
+ plugin
40
+ .command("doctor")
41
+ .description("Check whether the local BriefOps Codex plugin bundle is installed and current.")
42
+ .action(async () => {
43
+ const result = await inspectCodexPlugin();
44
+ console.log(`Plugin: ${result.root}`);
45
+ printTable([
46
+ ["File", "Status"],
47
+ ...result.files.map((file) => [file.relativePath, file.status])
48
+ ]);
49
+ if (!result.ok) {
50
+ process.exitCode = 1;
51
+ }
52
+ });
53
+ codex
54
+ .command("prime")
55
+ .description("Print compact BriefOps context for starting Codex work.")
56
+ .option("--worker <worker>", "Worker profile name.")
57
+ .option("--project <project>", "Project name.")
58
+ .option("--task <task>", "Current task.")
59
+ .option("--max-tokens <tokens>", "Prime context token budget.", parsePositiveInt, 800)
60
+ .option("--export-policy <policy>", "local-private|shared-only", "local-private")
61
+ .action(async (options) => {
62
+ await runPrimeCommand(options, {
63
+ format: "codex"
64
+ });
65
+ });
66
+ codex
67
+ .command("resume")
68
+ .description("Generate a continuity-aware Codex resume prompt.")
69
+ .option("--worker <worker>", "Worker profile name.")
70
+ .option("--project <project>", "Project name.")
71
+ .requiredOption("--task <task>", "Task description.")
72
+ .option("--from-handoff <id>", "Saved handoff id or latest.")
73
+ .option("--budget <tokens>", "Resume token budget.", parsePositiveInt, 3000)
74
+ .option("--mode <mode>", "loop|execute|plan", "loop")
75
+ .option("--completion-promise <text>", "Concrete completion promise.")
76
+ .option("--export-policy <policy>", "local-private|shared-only", "local-private")
77
+ .option("--save", "Save to .briefops/codex/prompts.")
78
+ .option("--output <path>", "Write the prompt to a specific path.")
79
+ .option("--force", "Overwrite an existing explicit output file.")
80
+ .action(async (options) => {
81
+ const result = await generateCodexResume({
82
+ worker: options.worker,
83
+ project: options.project,
84
+ task: options.task,
85
+ fromHandoff: options.fromHandoff,
86
+ budget: options.budget,
87
+ mode: options.mode,
88
+ completionPromise: options.completionPromise,
89
+ exportPolicy: normalizeExportPolicy(options.exportPolicy),
90
+ save: Boolean(options.save) || Boolean(options.output),
91
+ outputPath: options.output
92
+ ? path.resolve(process.cwd(), options.output)
93
+ : undefined,
94
+ force: Boolean(options.force)
95
+ });
96
+ console.log(result.content);
97
+ if (result.savedPath) {
98
+ console.error(`Saved Codex resume: ${result.savedPath}`);
99
+ }
100
+ console.error(`Estimated tokens: ${result.tokens}`);
101
+ });
102
+ codex
103
+ .command("mission")
104
+ .description("Generate a Codex mission prompt with evidence gates and a completion promise.")
105
+ .option("--skill <skill>", "Skill name.")
106
+ .option("--project <project>", "Project name.")
107
+ .option("--worker <worker>", "Worker profile name.")
108
+ .requiredOption("--task <task>", "Task description.")
109
+ .option("--budget <tokens>", "Brief token budget.", parsePositiveInt, 2500)
110
+ .option("--completion-promise <text>", "Concrete completion promise.")
111
+ .option("--mode <mode>", "loop|execute|plan", "loop")
112
+ .option("--save", "Save to .briefops/codex/prompts.")
113
+ .option("--output <path>", "Write the prompt to a specific path.")
114
+ .option("--force", "Overwrite an existing explicit output file.")
115
+ .action(async (options) => {
116
+ const result = await generateCodexMission({
117
+ skill: options.skill,
118
+ project: options.project,
119
+ worker: options.worker,
120
+ task: options.task,
121
+ budget: options.budget,
122
+ completionPromise: options.completionPromise,
123
+ mode: options.mode,
124
+ save: Boolean(options.save) || Boolean(options.output),
125
+ outputPath: options.output
126
+ ? path.resolve(process.cwd(), options.output)
127
+ : undefined,
128
+ force: Boolean(options.force)
129
+ });
130
+ console.log(result.content);
131
+ if (result.savedPath) {
132
+ console.error(`Saved Codex mission: ${result.savedPath}`);
133
+ }
134
+ console.error(`Estimated tokens: ${result.tokens}`);
135
+ });
136
+ codex
137
+ .command("plan")
138
+ .description("Generate a Codex planning prompt that does not edit product code.")
139
+ .option("--project <project>", "Project name.")
140
+ .option("--worker <worker>", "Worker profile name.")
141
+ .requiredOption("--idea <idea>", "What to plan.")
142
+ .option("--save", "Save to .briefops/codex/prompts.")
143
+ .option("--output <path>", "Write the prompt to a specific path.")
144
+ .option("--force", "Overwrite an existing explicit output file.")
145
+ .action(async (options) => {
146
+ const result = await generateCodexPlan({
147
+ project: options.project,
148
+ worker: options.worker,
149
+ idea: options.idea,
150
+ save: Boolean(options.save) || Boolean(options.output),
151
+ outputPath: options.output
152
+ ? path.resolve(process.cwd(), options.output)
153
+ : undefined,
154
+ force: Boolean(options.force)
155
+ });
156
+ console.log(result.content);
157
+ if (result.savedPath) {
158
+ console.error(`Saved Codex plan: ${result.savedPath}`);
159
+ }
160
+ console.error(`Estimated tokens: ${result.tokens}`);
161
+ });
162
+ }
163
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/commands/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerCompareCommands(program: Command): void;
@@ -0,0 +1,48 @@
1
+ import { compareContext } from "../core/contextCompare.js";
2
+ import { normalizeExportPolicy } from "../core/exportPolicy.js";
3
+ import { parsePositiveInt } from "./shared.js";
4
+ export function registerCompareCommands(program) {
5
+ const compare = program.command("compare").description("Compare BriefOps context shapes.");
6
+ compare
7
+ .command("context")
8
+ .description("Compare raw local candidate context with compiled prime context.")
9
+ .option("--worker <worker>", "Worker profile name.")
10
+ .option("--project <project>", "Project name.")
11
+ .requiredOption("--task <task>", "Current task.")
12
+ .option("--max-tokens <tokens>", "Prime context token budget.", parsePositiveInt, 800)
13
+ .option("--export-policy <policy>", "local-private|shared-only", "local-private")
14
+ .action(async (options) => {
15
+ const result = await compareContext({
16
+ worker: options.worker,
17
+ project: options.project,
18
+ task: options.task,
19
+ maxTokens: options.maxTokens,
20
+ exportPolicy: normalizeExportPolicy(options.exportPolicy)
21
+ });
22
+ console.log("BriefOps Context Comparison");
23
+ console.log("");
24
+ console.log("Raw candidate context:");
25
+ console.log(`- project file: ${result.raw.projectTokens} tokens`);
26
+ console.log(`- worker summary: ${result.raw.workerSummaryTokens} tokens`);
27
+ console.log(`- active memory: ${result.raw.activeMemoryTokens} tokens`);
28
+ console.log(`- recent logs: ${result.raw.recentLogTokens} tokens`);
29
+ console.log(`Estimated raw total: ${result.raw.totalTokens} tokens`);
30
+ console.log("");
31
+ console.log("Compiled prime:");
32
+ console.log(`- estimated prime total: ${result.prime.tokens} tokens`);
33
+ console.log(`- max tokens: ${result.prime.maxTokens}`);
34
+ console.log(`- export policy: ${result.prime.exportPolicy}`);
35
+ console.log("");
36
+ console.log("Reduction:");
37
+ console.log(`- saved: ~${result.savedTokens} tokens`);
38
+ console.log(`- compression: ${result.compressionPercent}%`);
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
+ });
47
+ }
48
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerContinueCommand(program: Command): void;
@@ -0,0 +1,66 @@
1
+ import path from "node:path";
2
+ import { continueWork } from "../core/workflow.js";
3
+ import { parsePositiveInt } from "./shared.js";
4
+ export function registerContinueCommand(program) {
5
+ program
6
+ .command("continue")
7
+ .description("Continue work: check continuity, refresh worker, generate handoff, and save a Codex resume prompt.")
8
+ .option("--project <project>", "Project name. Defaults to the worker project.")
9
+ .requiredOption("--worker <worker>", "Worker profile name.")
10
+ .requiredOption("--task <task>", "Next task.")
11
+ .option("--budget <tokens>", "Resume token budget.", parsePositiveInt, 3000)
12
+ .option("--mode <mode>", "loop|execute|plan", "loop")
13
+ .option("--completion-promise <text>", "Concrete completion promise.")
14
+ .option("--output <path>", "Write the resume prompt to a specific path.")
15
+ .option("--force", "Overwrite an existing explicit output file.")
16
+ .option("--pack", "Also save a self-contained portable resume pack.")
17
+ .action(async (options) => {
18
+ const result = await continueWork({
19
+ project: options.project,
20
+ worker: options.worker,
21
+ task: options.task,
22
+ budget: options.budget,
23
+ mode: options.mode,
24
+ completionPromise: options.completionPromise,
25
+ outputPath: options.output
26
+ ? path.resolve(process.cwd(), options.output)
27
+ : undefined,
28
+ force: Boolean(options.force),
29
+ pack: Boolean(options.pack)
30
+ });
31
+ console.log(`Continuity readiness: ${result.readiness}`);
32
+ if (result.warnings.length > 0) {
33
+ console.log("");
34
+ console.log("Warnings:");
35
+ for (const warning of result.warnings) {
36
+ console.log(`- ${warning}`);
37
+ }
38
+ }
39
+ if (result.pendingMemoryProposals > 0) {
40
+ console.log("");
41
+ console.log("Pending memory proposals should be reviewed before continuing.");
42
+ console.log("");
43
+ console.log("Review:");
44
+ console.log("briefops memory proposal-list --status proposed");
45
+ console.log("briefops memory proposal-show latest");
46
+ console.log("");
47
+ console.log("Apply if appropriate:");
48
+ console.log("briefops memory proposal-apply latest");
49
+ console.log("");
50
+ console.log("Reject if not useful:");
51
+ console.log("briefops memory proposal-reject latest");
52
+ }
53
+ console.log("");
54
+ console.log(`Refreshed worker summary: ${result.workerSummaryPath}`);
55
+ if (result.handoffPath) {
56
+ console.log(`Saved handoff: ${result.handoffPath}`);
57
+ }
58
+ if (result.resumePath) {
59
+ console.log(`Saved Codex resume: ${result.resumePath}`);
60
+ }
61
+ if (result.packPath) {
62
+ console.log(`Saved portable resume pack: ${result.packPath}`);
63
+ }
64
+ });
65
+ }
66
+ //# sourceMappingURL=continue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/commands/continue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDoctorCommand(program: Command): void;