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
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ export declare const skillPatchStatuses: readonly ["proposed", "applied", "rejected"];
3
+ export declare const skillPatchSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ created_at: z.ZodString;
6
+ skill: z.ZodString;
7
+ from_log: z.ZodString;
8
+ status: z.ZodDefault<z.ZodEnum<["proposed", "applied", "rejected"]>>;
9
+ target_section: z.ZodDefault<z.ZodString>;
10
+ lessons: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
11
+ additions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
12
+ applied_at: z.ZodOptional<z.ZodString>;
13
+ rejected_at: z.ZodOptional<z.ZodString>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ lessons: string[];
16
+ id: string;
17
+ created_at: string;
18
+ skill: string;
19
+ status: "proposed" | "applied" | "rejected";
20
+ from_log: string;
21
+ target_section: string;
22
+ additions: string[];
23
+ applied_at?: string | undefined;
24
+ rejected_at?: string | undefined;
25
+ }, {
26
+ id: string;
27
+ created_at: string;
28
+ skill: string;
29
+ from_log: string;
30
+ lessons?: string[] | undefined;
31
+ status?: "proposed" | "applied" | "rejected" | undefined;
32
+ applied_at?: string | undefined;
33
+ rejected_at?: string | undefined;
34
+ target_section?: string | undefined;
35
+ additions?: string[] | undefined;
36
+ }>;
37
+ export type SkillPatch = z.infer<typeof skillPatchSchema>;
38
+ export type SkillPatchStatus = (typeof skillPatchStatuses)[number];
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ export const skillPatchStatuses = ["proposed", "applied", "rejected"];
3
+ export const skillPatchSchema = z.object({
4
+ id: z.string().min(1),
5
+ created_at: z.string().datetime(),
6
+ skill: z.string().min(1),
7
+ from_log: z.string().min(1),
8
+ status: z.enum(skillPatchStatuses).default("proposed"),
9
+ target_section: z.string().default("Check"),
10
+ lessons: z.array(z.string()).default([]),
11
+ additions: z.array(z.string()).default([]),
12
+ applied_at: z.string().datetime().optional(),
13
+ rejected_at: z.string().datetime().optional()
14
+ });
15
+ //# sourceMappingURL=patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/schemas/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACtD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ export declare const projectFrontmatterSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ description: z.ZodDefault<z.ZodString>;
5
+ max_tokens: z.ZodDefault<z.ZodNumber>;
6
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ name: string;
9
+ tags: string[];
10
+ description: string;
11
+ max_tokens: number;
12
+ }, {
13
+ name: string;
14
+ tags?: string[] | undefined;
15
+ description?: string | undefined;
16
+ max_tokens?: number | undefined;
17
+ }>;
18
+ export type ProjectFrontmatter = z.infer<typeof projectFrontmatterSchema>;
19
+ export type ProjectDocument = {
20
+ data: ProjectFrontmatter;
21
+ body: string;
22
+ raw: string;
23
+ };
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export const projectFrontmatterSchema = z.object({
3
+ name: z.string().min(1),
4
+ description: z.string().default(""),
5
+ max_tokens: z.number().int().positive().default(500),
6
+ tags: z.array(z.string()).default([])
7
+ });
8
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/schemas/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ export declare const skillFrontmatterSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ version: z.ZodDefault<z.ZodString>;
5
+ description: z.ZodDefault<z.ZodString>;
6
+ max_tokens: z.ZodDefault<z.ZodNumber>;
7
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ name: string;
10
+ tags: string[];
11
+ version: string;
12
+ description: string;
13
+ max_tokens: number;
14
+ }, {
15
+ name: string;
16
+ tags?: string[] | undefined;
17
+ version?: string | undefined;
18
+ description?: string | undefined;
19
+ max_tokens?: number | undefined;
20
+ }>;
21
+ export type SkillFrontmatter = z.infer<typeof skillFrontmatterSchema>;
22
+ export type SkillDocument = {
23
+ data: SkillFrontmatter;
24
+ body: string;
25
+ raw: string;
26
+ };
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ export const skillFrontmatterSchema = z.object({
3
+ name: z.string().min(1),
4
+ version: z.string().default("0.1.0"),
5
+ description: z.string().default(""),
6
+ max_tokens: z.number().int().positive().default(700),
7
+ tags: z.array(z.string()).default([])
8
+ });
9
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/schemas/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ export declare const workerStatuses: readonly ["active", "draft", "archived"];
3
+ export declare const workerProfileSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ description: z.ZodDefault<z.ZodString>;
6
+ project: z.ZodOptional<z.ZodString>;
7
+ default_skills: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
8
+ style: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
9
+ max_tokens: z.ZodDefault<z.ZodNumber>;
10
+ status: z.ZodDefault<z.ZodEnum<["active", "draft", "archived"]>>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ status: "active" | "archived" | "draft";
13
+ name: string;
14
+ description: string;
15
+ max_tokens: number;
16
+ default_skills: string[];
17
+ style: string[];
18
+ project?: string | undefined;
19
+ }, {
20
+ name: string;
21
+ project?: string | undefined;
22
+ status?: "active" | "archived" | "draft" | undefined;
23
+ description?: string | undefined;
24
+ max_tokens?: number | undefined;
25
+ default_skills?: string[] | undefined;
26
+ style?: string[] | undefined;
27
+ }>;
28
+ export type WorkerProfile = z.infer<typeof workerProfileSchema>;
29
+ export type WorkerStatus = (typeof workerStatuses)[number];
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ export const workerStatuses = ["active", "draft", "archived"];
3
+ export const workerProfileSchema = z.object({
4
+ name: z.string().min(1),
5
+ description: z.string().default(""),
6
+ project: z.string().optional(),
7
+ default_skills: z.array(z.string()).default([]),
8
+ style: z.array(z.string()).default([]),
9
+ max_tokens: z.number().int().positive().default(300),
10
+ status: z.enum(workerStatuses).default("active")
11
+ });
12
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/schemas/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CACjD,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const briefopsVersion = "1.0.0";
@@ -0,0 +1,3 @@
1
+ // Keep this version in sync with package.json.
2
+ export const briefopsVersion = "1.0.0";
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC"}
@@ -0,0 +1,13 @@
1
+ # Codex Resume
2
+
3
+ `briefops codex resume` combines a handoff brief with a Codex execution contract.
4
+
5
+ ```bash
6
+ briefops codex resume --worker quant-reviewer --task "Continue the rebalance review and identify remaining risks." --save
7
+ ```
8
+
9
+ Use `--export-policy shared-only` when the resume prompt may be pasted outside the local Codex workspace.
10
+
11
+ Shared-only resume output includes selected shared/exportable memory and omits private memory, local project file details, raw work logs, open risks, local next steps, private worker history, and private metadata counts.
12
+
13
+ The generated prompt includes continuity rules, evidence gates, a completion signal, and after-completion logging instructions.
@@ -0,0 +1,49 @@
1
+ # BriefOps 1.0 Compatibility Policy
2
+
3
+ BriefOps follows semantic versioning for the public CLI and local file formats.
4
+
5
+ ## Stable In 1.0
6
+
7
+ - Public commands documented in `README.md`.
8
+ - `.briefops/` source file formats documented in `docs/file-format.md`.
9
+ - `shared-only` and `local-private` export policy names.
10
+ - Human-approved memory proposal and skill patch flow.
11
+ - Workspace lock behavior for local write operations.
12
+ - Harness router export targets: `agents-md`, `claude-md`, `cursor-rules`, and `all`.
13
+
14
+ ## Compatible Changes
15
+
16
+ Minor and patch releases may:
17
+
18
+ - Add optional fields with safe defaults.
19
+ - Add new commands or flags.
20
+ - Add new generated artifact sections.
21
+ - Improve deterministic selection, trimming, and warnings.
22
+ - Add new doctor checks that warn without rewriting user data.
23
+
24
+ ## Breaking Changes
25
+
26
+ Breaking changes require a new major version. Examples:
27
+
28
+ - Removing or renaming stable CLI commands or flags.
29
+ - Changing required fields in documented `.briefops/` source formats.
30
+ - Changing `shared-only` so it includes private local content or private metadata counts.
31
+ - Auto-applying memory proposals or skill patches.
32
+ - Requiring a hosted service, network dependency, agent runtime, MCP server, vector database, or cloud sync.
33
+
34
+ ## Workspace Version Support
35
+
36
+ New 1.0 workspaces write `version: 1.0.0` in `.briefops/config.yaml`.
37
+
38
+ BriefOps 1.0 can read legacy `0.x` workspace configs on a best-effort compatibility basis. Future `2.x` workspace configs fail with an explicit upgrade error instead of silently reading incompatible data.
39
+
40
+ ## Migration Policy
41
+
42
+ BriefOps does not rewrite workspace data during normal reads. Commands that mutate user data are explicit, local, file-backed, and protected by workspace locks.
43
+
44
+ If a future release needs a migration, it must provide:
45
+
46
+ - a documented command or manual procedure,
47
+ - dry-run or inspection guidance,
48
+ - no automatic approval of memory or skill patches,
49
+ - tests covering old fixtures.
@@ -0,0 +1,13 @@
1
+ # BriefOps Concept
2
+
3
+ BriefOps is a local-first, token-aware persistent work history layer for AI coding agents.
4
+
5
+ It does not run Codex, Claude Code, or other agents. It prepares compact continuity artifacts so a fresh thread can start with the usable parts of prior work: project constraints, worker style, active decisions, lessons, incidents, and recent logs.
6
+
7
+ The core loop is:
8
+
9
+ ```text
10
+ brief -> work -> log -> proposal -> approved memory -> worker summary -> handoff/resume
11
+ ```
12
+
13
+ Raw logs remain audit records. Memory is curated operational knowledge that requires human approval.
package/docs/evals.md ADDED
@@ -0,0 +1,18 @@
1
+ # Evals
2
+
3
+ BriefOps evals are deterministic checklist cases for generated artifacts.
4
+
5
+ Use them to verify that important context appears in generated briefs:
6
+
7
+ ```bash
8
+ briefops eval create continuity-rebalance --worker quant-reviewer --input "Continue rebalance review" --expected "turnover warning threshold"
9
+ briefops eval run --worker quant-reviewer
10
+ ```
11
+
12
+ Continuity evals should check for prior lessons, decisions, and sections that a fresh thread needs before acting.
13
+
14
+ Prime-context evals should also check that the compact output is materially smaller than a manual history dump:
15
+
16
+ ```bash
17
+ npm test -- tests/prime.test.ts
18
+ ```
@@ -0,0 +1,67 @@
1
+ # BriefOps File Format Contract
2
+
3
+ BriefOps stores all user data under `.briefops/`. Version 1.0 treats these files as the durable local data contract.
4
+
5
+ ## Workspace
6
+
7
+ - `.briefops/config.yaml`
8
+ - `version`: workspace schema version. New 1.0 workspaces use `1.0.0`.
9
+ - `created_at`: ISO datetime.
10
+ - `defaults.project`: optional default project name.
11
+ - `defaults.worker`: optional default worker name.
12
+ - `token_budgets.prime`: default prime budget.
13
+ - `token_budgets.resume`: default resume/pack budget.
14
+ - `memory_categories`: supported memory categories.
15
+
16
+ ## Source Files
17
+
18
+ - `.briefops/projects/<name>.project.md`
19
+ - Markdown with YAML frontmatter.
20
+ - Stable frontmatter: `name`, `description`, `max_tokens`, `tags`.
21
+ - Body is local project context. Shared-only exports omit it.
22
+
23
+ - `.briefops/skills/<name>.skill.md`
24
+ - Markdown with YAML frontmatter.
25
+ - Stable frontmatter: `name`, `version`, `description`, `max_tokens`, `tags`.
26
+ - Skill patches append checklist items and changelog entries only after approval.
27
+
28
+ - `.briefops/workers/<name>.worker.yaml`
29
+ - Stable fields: `name`, `description`, `project`, `default_skills`, `style`, `max_tokens`, `status`.
30
+
31
+ ## Memory And Logs
32
+
33
+ - `.briefops/memory/<category>.yaml`
34
+ - Shape: `items: MemoryItem[]`.
35
+ - Stable item fields: `id`, `type`, `status`, `project`, `skill`, `content`, `source`, `created_at`, `tags`, `visibility`, `exportable`.
36
+ - Supported statuses: `active`, `stale`, `deprecated`, `superseded`, `archived`.
37
+ - Supported visibility values: `private`, `shared`, `public`.
38
+
39
+ - `.briefops/logs/*.yaml`
40
+ - Stable fields: `id`, `created_at`, `project`, `skill`, `worker`, `task`, `result`, `lessons`, `open_risks`, `next_steps`, `decisions`, `incidents`, `files_changed`, `commands_run`, `notes`.
41
+ - Logs are private local history. Shared-only exports omit raw logs.
42
+
43
+ ## Review Queues
44
+
45
+ - `.briefops/memory-proposals/*.memory-proposal.yaml`
46
+ - Stable fields: `id`, `created_at`, `from_log`, `status`, `project`, `skill`, `worker`, `items`, `applied_at`, `rejected_at`.
47
+ - Legacy `proposals` arrays remain readable and are normalized to `items`.
48
+ - Proposal entries use memory item fields plus `category` and `rationale`.
49
+
50
+ - `.briefops/patches/*.patch.yaml`
51
+ - Stable fields: `id`, `created_at`, `skill`, `from_log`, `status`, `target_section`, `lessons`, `additions`, `applied_at`, `rejected_at`.
52
+
53
+ ## Generated Artifacts
54
+
55
+ - `.briefops/handoffs/*.md`
56
+ - `.briefops/codex/prompts/*.md`
57
+ - `.briefops/briefs/*.md`
58
+
59
+ Generated artifacts are reproducible outputs, not the canonical data store. Their command names, privacy behavior, and frontmatter metadata are stable in 1.0, but users should keep durable facts in source files, memory, logs, proposals, and patches.
60
+
61
+ ## Harness Router Files
62
+
63
+ - `AGENTS.md`
64
+ - `CLAUDE.md`
65
+ - `.cursor/rules/briefops-*.mdc`
66
+
67
+ `briefops export` generates router files. They contain command routing and safety boundaries only. They must not copy raw memory, logs, worker summaries, handoffs, incidents, or private decisions.
@@ -0,0 +1,9 @@
1
+ # Handoff Briefs
2
+
3
+ Handoff briefs prepare a fresh AI coding thread to continue without restarting from zero.
4
+
5
+ ```bash
6
+ briefops handoff generate --worker quant-reviewer --task "Continue rebalance review" --adapter codex --save
7
+ ```
8
+
9
+ A handoff includes project context, worker summary, recent work, active decisions, lessons, incidents, deprecated notes when relevant, a recommended start, after-completion commands, and token accounting.
@@ -0,0 +1,74 @@
1
+ # Harness Integrations
2
+
3
+ BriefOps is not an agent harness. It does not run models, manage subscriptions, install hooks, expose MCP tools, or route work across agents.
4
+
5
+ BriefOps is a local memory and context ledger that a harness can read before work and update after work.
6
+
7
+ ## Recommended Pattern
8
+
9
+ Before a task:
10
+
11
+ ```bash
12
+ briefops prime --task "<task>" --format codex --max-tokens 800
13
+ ```
14
+
15
+ After meaningful work:
16
+
17
+ ```bash
18
+ briefops finish --worker <worker> --task "<task>" --result "<result>"
19
+ briefops memory proposal-show latest
20
+ briefops approve latest
21
+ ```
22
+
23
+ For a fresh thread:
24
+
25
+ ```bash
26
+ briefops continue --worker <worker> --task "<next task>" --pack
27
+ ```
28
+
29
+ For portable or shared context:
30
+
31
+ ```bash
32
+ briefops prime --task "<task>" --format codex --export-policy shared-only
33
+ briefops pack resume --worker <worker> --task "<task>" --export-policy shared-only
34
+ ```
35
+
36
+ To generate always-visible harness router files:
37
+
38
+ ```bash
39
+ briefops export agents-md
40
+ briefops export claude-md
41
+ briefops export cursor-rules
42
+ briefops export all
43
+ ```
44
+
45
+ These files should stay compact. They teach harnesses how to call BriefOps and do not copy private memory, raw logs, handoffs, or worker summaries.
46
+
47
+ ## LazyCodex / OmO
48
+
49
+ Use LazyCodex or OmO for orchestration, hooks, LSP/MCP, and autonomous execution. Use BriefOps for durable local continuity.
50
+
51
+ Suggested human workflow:
52
+
53
+ ```bash
54
+ briefops prime --task "Implement the next scoped change." --format codex --max-tokens 800
55
+ codex "Use the BriefOps prime context, then run ultrawork for this task."
56
+ briefops finish --worker <worker> --task "Implement the next scoped change." --result "<verified result>"
57
+ briefops memory proposal-show latest
58
+ ```
59
+
60
+ Do not let a harness auto-run `briefops approve latest`. Approval should remain human-confirmed.
61
+
62
+ ## Codex App And Codex CLI
63
+
64
+ Use `briefops codex plugin install` to generate local plugin assets under `.briefops/codex/plugin/briefops`.
65
+
66
+ This command does not write to global Codex folders by default.
67
+
68
+ ## Claude Code
69
+
70
+ BriefOps can coexist with `CLAUDE.md`. Keep `CLAUDE.md` for always-loaded project instructions and use BriefOps for task history, approved memory, handoffs, and shared-only packs.
71
+
72
+ ## Cursor
73
+
74
+ BriefOps can coexist with Cursor rules and memories. Keep Cursor rules for editor behavior and use BriefOps for auditable cross-thread work history.
@@ -0,0 +1,23 @@
1
+ # Memory Lifecycle
2
+
3
+ BriefOps separates raw logs from durable memory.
4
+
5
+ Allowed flow:
6
+
7
+ ```text
8
+ log -> memory proposal -> human approval -> memory
9
+ ```
10
+
11
+ Commands:
12
+
13
+ ```bash
14
+ briefops memory propose-from-log latest
15
+ briefops memory proposal-list
16
+ briefops memory proposal-show <proposal-id>
17
+ briefops memory proposal-apply <proposal-id>
18
+ briefops memory proposal-reject <proposal-id>
19
+ ```
20
+
21
+ Extraction is deterministic and local. Lessons become lesson memory. Notes prefixed with `decision:` or `fact:` become matching memory candidates. Results containing risk or failure language become incident candidates.
22
+
23
+ Proposal generation and approval are local file-backed operations protected by workspace locks. BriefOps never auto-approves memory or skill patches.
@@ -0,0 +1,15 @@
1
+ # Persistent Worker
2
+
3
+ A BriefOps worker is not roleplay. It is a durable bundle of:
4
+
5
+ - default project
6
+ - default skills
7
+ - style constraints
8
+ - recent work history
9
+ - active lessons
10
+ - known failure patterns
11
+ - judgment rules
12
+
13
+ Use `briefops worker refresh-summary <worker>` to compile this into `.briefops/workers/summaries/<worker>.summary.md`.
14
+
15
+ Handoffs and Codex resume prompts prefer this summary when it exists, so fresh threads inherit worker intelligence without dumping every prior log.
@@ -0,0 +1,40 @@
1
+ # BriefOps Privacy Model
2
+
3
+ BriefOps is local-first. It stores work history, memory, proposals, patches, generated prompts, and plugin assets under `.briefops/` in the current repository.
4
+
5
+ ## Export Policies
6
+
7
+ `local-private` is for local terminal and local Codex/Claude/Cursor use. It may include private project details, approved private memory, local work logs, risks, next steps, worker history, and metadata counts.
8
+
9
+ `shared-only` is for artifacts that may leave the local workspace. It includes only memory items marked `visibility: shared` and `exportable: true`.
10
+
11
+ Shared-only omits:
12
+
13
+ - private memory,
14
+ - local project file details,
15
+ - raw work logs,
16
+ - open risks,
17
+ - local next steps,
18
+ - private worker lessons,
19
+ - private incidents,
20
+ - recent work history,
21
+ - private worker history,
22
+ - private metadata counts.
23
+
24
+ ## Router Exports
25
+
26
+ `briefops export agents-md`, `briefops export claude-md`, `briefops export cursor-rules`, and `briefops export all` generate router files. Router files point AI harnesses to BriefOps commands. They do not copy `.briefops` memory, logs, worker summaries, handoffs, incidents, or private decisions.
27
+
28
+ ## Human Approval
29
+
30
+ BriefOps never auto-approves memory proposals or skill patches. Approval is always an explicit user action through `briefops approve`, `briefops memory proposal-apply`, or `briefops skill apply-patch`.
31
+
32
+ ## Doctor Checks
33
+
34
+ `briefops doctor --privacy` checks local memory sharing hazards:
35
+
36
+ - `.briefops/` gitignore coverage,
37
+ - private memory marked exportable,
38
+ - secret-like local memory strings.
39
+
40
+ `briefops doctor --security --fix-stale-locks` removes stale lock files only. It does not remove fresh locks or other workspace files.
@@ -0,0 +1,74 @@
1
+ # Quickstart
2
+
3
+ ## Codex First Context Path
4
+
5
+ ```bash
6
+ briefops init
7
+ briefops codex install
8
+ briefops codex plugin install
9
+ briefops skill create risk-review --description "Review risk and governance."
10
+ briefops project create atlas-q --description "Rule-based quantitative system."
11
+ briefops worker create quant-reviewer --project atlas-q --skills "risk-review" --style "skeptical,verify before completion"
12
+ briefops worker use quant-reviewer
13
+ briefops export all --worker quant-reviewer --force
14
+ briefops memory add --type lessons --project atlas-q --skill risk-review --content "Always verify turnover warning threshold."
15
+ briefops prime --task "Continue rebalance review" --format codex --max-tokens 800
16
+ ```
17
+
18
+ `briefops codex plugin install` is local and deterministic. It does not publish to a marketplace and does not write to global Codex folders by default.
19
+
20
+ `briefops export all` writes router files for Codex, Claude Code, and Cursor. These files point harnesses at BriefOps commands and do not copy `.briefops` memory, logs, handoffs, or worker summaries.
21
+
22
+ ## Persistent Worker Path
23
+
24
+ After work finishes, log the result and promote only useful lessons:
25
+
26
+ ```bash
27
+ briefops finish --project atlas-q --skill risk-review --worker quant-reviewer --task "Review rebalance" --result "Found missing turnover warning check." --lesson "Always verify turnover warning threshold."
28
+ briefops approve latest
29
+ briefops continue --worker quant-reviewer --task "Continue rebalance review" --pack
30
+ ```
31
+
32
+ BriefOps skills must never auto-approve memory proposals or skill patches. Approval is a human step.
33
+
34
+ For small or exploratory work, keep durable memory clean:
35
+
36
+ ```bash
37
+ briefops finish --task "Fix typo" --result "Fixed typo." --importance trivial
38
+ briefops finish --task "Try discarded approach" --result "Discarded." --no-memory-proposal
39
+ briefops memory hygiene
40
+ briefops memory prune --dry-run
41
+ ```
42
+
43
+ ## Shared-Only Export Path
44
+
45
+ ```bash
46
+ briefops prime --task "Continue unresolved checks." --format codex --export-policy shared-only
47
+ briefops pack resume --worker quant-reviewer --task "Continue unresolved checks." --export-policy shared-only
48
+ ```
49
+
50
+ `shared-only` omits private memory, local project file details, raw work logs, open risks, local next steps, private worker lessons, private incidents, recent work history, and private metadata counts.
51
+
52
+ `local-private` is intended for local terminal/Codex use only.
53
+
54
+ ## Privacy Check
55
+
56
+ Before publishing a repository or sharing generated context, run:
57
+
58
+ ```bash
59
+ briefops doctor --privacy
60
+ briefops doctor --privacy --fix-gitignore
61
+ ```
62
+
63
+ `.briefops/` can contain private local work logs and memory. Keep it ignored unless you intentionally curated the contents for sharing.
64
+
65
+ `doctor --privacy` checks local memory sharing hazards, including `.briefops/` gitignore coverage, private/exportable memory, and secret-like memory strings.
66
+
67
+ ## Context Budget Check
68
+
69
+ ```bash
70
+ briefops inspect budget
71
+ briefops compare context --worker quant-reviewer --task "Continue rebalance review"
72
+ ```
73
+
74
+ Use these before adding more always-loaded instructions. BriefOps works best when `prime` stays compact and full resume packs are generated only when needed.