agent-bober 0.10.2 → 0.11.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.
Files changed (37) hide show
  1. package/README.md +37 -15
  2. package/agents/bober-curator.md +345 -0
  3. package/dist/config/schema.d.ts +99 -0
  4. package/dist/config/schema.d.ts.map +1 -1
  5. package/dist/config/schema.js +14 -0
  6. package/dist/config/schema.js.map +1 -1
  7. package/dist/index.d.ts +2 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/orchestrator/curator-agent.d.ts +37 -0
  12. package/dist/orchestrator/curator-agent.d.ts.map +1 -0
  13. package/dist/orchestrator/curator-agent.js +172 -0
  14. package/dist/orchestrator/curator-agent.js.map +1 -0
  15. package/dist/orchestrator/evaluator-agent.js +2 -6
  16. package/dist/orchestrator/evaluator-agent.js.map +1 -1
  17. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  18. package/dist/orchestrator/generator-agent.js +3 -1
  19. package/dist/orchestrator/generator-agent.js.map +1 -1
  20. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  21. package/dist/orchestrator/pipeline.js +34 -0
  22. package/dist/orchestrator/pipeline.js.map +1 -1
  23. package/dist/state/briefing-state.d.ts +15 -0
  24. package/dist/state/briefing-state.d.ts.map +1 -0
  25. package/dist/state/briefing-state.js +51 -0
  26. package/dist/state/briefing-state.js.map +1 -0
  27. package/dist/state/history.d.ts +4 -4
  28. package/dist/state/history.d.ts.map +1 -1
  29. package/dist/state/history.js +1 -0
  30. package/dist/state/history.js.map +1 -1
  31. package/dist/state/index.d.ts +1 -0
  32. package/dist/state/index.d.ts.map +1 -1
  33. package/dist/state/index.js +2 -1
  34. package/dist/state/index.js.map +1 -1
  35. package/package.json +2 -2
  36. package/skills/bober.run/SKILL.md +93 -27
  37. package/skills/bober.sprint/SKILL.md +349 -26
@@ -0,0 +1,51 @@
1
+ import { readFile, writeFile, readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { ensureDir } from "./helpers.js";
4
+ const BRIEFING_DIR = ".bober/briefings";
5
+ function briefingDir(projectRoot) {
6
+ return join(projectRoot, BRIEFING_DIR);
7
+ }
8
+ function briefingPath(projectRoot, contractId) {
9
+ const safeId = contractId.replace(/[^a-zA-Z0-9_-]/g, "_");
10
+ return join(briefingDir(projectRoot), `${safeId}-briefing.md`);
11
+ }
12
+ /**
13
+ * Save a Sprint Briefing to disk as a markdown file.
14
+ * Overwrites any existing briefing for the same contract.
15
+ */
16
+ export async function saveBriefing(projectRoot, contractId, content) {
17
+ await ensureDir(briefingDir(projectRoot));
18
+ const filePath = briefingPath(projectRoot, contractId);
19
+ await writeFile(filePath, content, "utf-8");
20
+ }
21
+ /**
22
+ * Read a Sprint Briefing by contract ID.
23
+ * Returns null if not found (briefings are optional).
24
+ */
25
+ export async function readBriefing(projectRoot, contractId) {
26
+ const filePath = briefingPath(projectRoot, contractId);
27
+ try {
28
+ return await readFile(filePath, "utf-8");
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * List all saved briefing contract IDs, sorted by filename.
36
+ */
37
+ export async function listBriefings(projectRoot) {
38
+ const dir = briefingDir(projectRoot);
39
+ let entries;
40
+ try {
41
+ entries = await readdir(dir);
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ return entries
47
+ .filter((f) => f.endsWith("-briefing.md"))
48
+ .sort()
49
+ .map((f) => f.slice(0, -("-briefing.md".length)));
50
+ }
51
+ //# sourceMappingURL=briefing-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"briefing-state.js","sourceRoot":"","sources":["../../src/state/briefing-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,SAAS,WAAW,CAAC,WAAmB;IACtC,OAAO,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB,EAAE,UAAkB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,cAAc,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,UAAkB,EAClB,OAAe;IAEf,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,UAAkB;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SACzC,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1,25 +1,25 @@
1
1
  import { z } from "zod";
2
2
  import type { SprintContract } from "../contracts/sprint-contract.js";
3
3
  import type { PlanSpec } from "../contracts/spec.js";
4
- export declare const PhaseSchema: z.ZodEnum<["init", "planning", "generating", "evaluating", "rework", "complete", "failed"]>;
4
+ export declare const PhaseSchema: z.ZodEnum<["init", "planning", "curating", "generating", "evaluating", "rework", "complete", "failed"]>;
5
5
  export type Phase = z.infer<typeof PhaseSchema>;
6
6
  export declare const HistoryEntrySchema: z.ZodObject<{
7
7
  timestamp: z.ZodString;
8
8
  event: z.ZodString;
9
- phase: z.ZodEnum<["init", "planning", "generating", "evaluating", "rework", "complete", "failed"]>;
9
+ phase: z.ZodEnum<["init", "planning", "curating", "generating", "evaluating", "rework", "complete", "failed"]>;
10
10
  sprintId: z.ZodOptional<z.ZodString>;
11
11
  details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12
12
  }, "strip", z.ZodTypeAny, {
13
13
  timestamp: string;
14
14
  details: Record<string, unknown>;
15
15
  event: string;
16
- phase: "evaluating" | "failed" | "init" | "planning" | "generating" | "rework" | "complete";
16
+ phase: "evaluating" | "failed" | "init" | "planning" | "curating" | "generating" | "rework" | "complete";
17
17
  sprintId?: string | undefined;
18
18
  }, {
19
19
  timestamp: string;
20
20
  details: Record<string, unknown>;
21
21
  event: string;
22
- phase: "evaluating" | "failed" | "init" | "planning" | "generating" | "rework" | "complete";
22
+ phase: "evaluating" | "failed" | "init" | "planning" | "curating" | "generating" | "rework" | "complete";
23
23
  sprintId?: string | undefined;
24
24
  }>;
25
25
  export type HistoryEntry = z.infer<typeof HistoryEntrySchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/state/history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAmBrD,eAAO,MAAM,WAAW,6FAQtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB;AAID;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,GACpB,OAAO,CAAC,IAAI,CAAC,CAqFf"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/state/history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAmBrD,eAAO,MAAM,WAAW,yGAStB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB;AAID;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,GACpB,OAAO,CAAC,IAAI,CAAC,CAqFf"}
@@ -16,6 +16,7 @@ function progressPath(projectRoot) {
16
16
  export const PhaseSchema = z.enum([
17
17
  "init",
18
18
  "planning",
19
+ "curating",
19
20
  "generating",
20
21
  "evaluating",
21
22
  "rework",
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/state/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/state/history.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export { saveResearch, readResearch, listResearch, } from "./research-state.js";
5
5
  export { saveDesign, readDesign, } from "./design-state.js";
6
6
  export { saveOutline, readOutline, } from "./outline-state.js";
7
7
  export { saveArchitecture, readArchitecture, saveADR, readADRs, listArchitectures, } from "./architect-state.js";
8
+ export { saveBriefing, readBriefing, listBriefings, } from "./briefing-state.js";
8
9
  /**
9
10
  * Ensure the `.bober/` directory and all required subdirectories exist,
10
11
  * including the `research/` subdirectory for research documents.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,WAAW,EACX,kBAAkB,EAElB,KAAK,KAAK,EACV,KAAK,YAAY,EAEjB,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAK9B;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,WAAW,EACX,kBAAkB,EAElB,KAAK,KAAK,EACV,KAAK,YAAY,EAEjB,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC;AAK7B;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE"}
@@ -11,8 +11,9 @@ export { saveResearch, readResearch, listResearch, } from "./research-state.js";
11
11
  export { saveDesign, readDesign, } from "./design-state.js";
12
12
  export { saveOutline, readOutline, } from "./outline-state.js";
13
13
  export { saveArchitecture, readArchitecture, saveADR, readADRs, listArchitectures, } from "./architect-state.js";
14
+ export { saveBriefing, readBriefing, listBriefings, } from "./briefing-state.js";
14
15
  const BOBER_DIR = ".bober";
15
- const SUBDIRS = ["contracts", "specs", "research", "designs", "outlines", "architecture"];
16
+ const SUBDIRS = ["contracts", "specs", "research", "designs", "outlines", "architecture", "briefings"];
16
17
  /**
17
18
  * Ensure the `.bober/` directory and all required subdirectories exist,
18
19
  * including the `research/` subdirectory for research documents.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO;AACL,cAAc;AACd,WAAW,EACX,kBAAkB;AAIlB,YAAY;AACZ,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,CAAU,CAAC;AAEnG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO;AACL,cAAc;AACd,WAAW,EACX,kBAAkB;AAIlB,YAAY;AACZ,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,CAAU,CAAC;AAEhH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-bober",
3
- "version": "0.10.2",
4
- "description": "Generator-Evaluator multi-agent harness for building applications autonomously with any LLM. Supports Claude, GPT, Gemini, Ollama. Includes MCP server for Cursor/Windsurf.",
3
+ "version": "0.11.1",
4
+ "description": "Multi-agent harness for building applications autonomously with any LLM. Researcher, Planner, Curator, Generator, Evaluator pipeline. Supports Claude, GPT, Gemini, Ollama. MCP server for Cursor/Windsurf.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -251,7 +251,69 @@ For retry iterations (iteration > 1), populate `evaluatorFeedback` with the eval
251
251
 
252
252
  Save the handoff to `.bober/handoffs/<handoffId>.json`.
253
253
 
254
- ### 3d. Spawn the Generator Subagent
254
+ ### 3d. Spawn the Curator Subagent (once per sprint, before the first generator attempt)
255
+
256
+ Check if `curator.enabled` is `true` in `bober.config.json` (default: true). If enabled, and this is iteration 1 (not a retry), spawn a curator subagent to produce a Sprint Briefing.
257
+
258
+ **Skip the curator if:**
259
+ - `curator.enabled` is `false` in config
260
+ - This is a retry iteration (iteration > 1) — the briefing already exists from the first attempt
261
+
262
+ **Use the Agent tool to spawn the curator:**
263
+
264
+ ```
265
+ Agent tool call:
266
+ description: "Curate sprint <N>: <sprint title>"
267
+ subagent_type: bober-curator
268
+ mode: auto
269
+ prompt: <the full prompt below>
270
+ ```
271
+
272
+ **Build the curator prompt:**
273
+
274
+ ```
275
+ You are the Bober Curator subagent. You have been spawned by the orchestrator to produce a Sprint Briefing.
276
+
277
+ ## Sprint Contract
278
+ Read from: .bober/contracts/<contractId>.json
279
+
280
+ ## Project Overview
281
+ Plan: <spec title>
282
+ Description: <spec description>
283
+ Tech Stack: <spec techStack>
284
+
285
+ ## Completed Sprints
286
+ <list completed sprint titles and what they built, or "No prior sprints completed.">
287
+
288
+ ## Project Root
289
+ <project root path>
290
+
291
+ ## Instructions
292
+ 1. Read the sprint contract at .bober/contracts/<contractId>.json
293
+ 2. For each file in estimatedFiles: read it, extract relevant sections, trace imports
294
+ 3. Find existing utilities the generator should reuse (search src/utils/, src/lib/, src/helpers/)
295
+ 4. Find test files similar to what this sprint needs — extract patterns
296
+ 5. Check .bober/principles.md, README.md, architecture docs
297
+ 6. Identify files/tests that may be affected by the changes (grep for imports)
298
+ 7. Determine implementation sequence based on dependencies
299
+ 8. Save the Sprint Briefing to .bober/briefings/<contractId>-briefing.md
300
+
301
+ Your final response must contain ONLY a JSON object (no markdown fences):
302
+ {
303
+ "contractId": "<contract ID>",
304
+ "briefingPath": ".bober/briefings/<contractId>-briefing.md",
305
+ "filesAnalyzed": ["<files you read>"],
306
+ "patternsFound": <number>,
307
+ "utilsIdentified": <number>,
308
+ "summary": "<2-3 sentence summary>"
309
+ }
310
+ ```
311
+
312
+ **After the curator subagent returns:**
313
+ 1. Verify the briefing was saved: check `.bober/briefings/<contractId>-briefing.md` exists
314
+ 2. Log the curator result but do NOT read the full briefing into orchestrator context — the generator will read it from disk
315
+
316
+ ### 3e. Spawn the Generator Subagent
255
317
 
256
318
  Use the **Agent tool** to spawn a generator subagent.
257
319
 
@@ -269,22 +331,30 @@ IMPORTANT: The generator MUST have full write access (`mode: auto` or `mode: byp
269
331
 
270
332
  **Build the generator prompt:**
271
333
 
334
+ IMPORTANT: Do NOT paste the full handoff JSON inline. The handoff has already been saved to disk. Reference the file path instead — this keeps the orchestrator's context lean.
335
+
272
336
  ```
273
337
  You are the Bober Generator subagent. You have been spawned by the orchestrator to implement a sprint.
274
338
 
275
339
  ## Context Handoff
276
- <paste the FULL handoff JSON here — this is ALL the context you get>
340
+ Read the full handoff from: .bober/handoffs/<handoffId>.json
341
+
342
+ ## Sprint Briefing
343
+ Read the curated Sprint Briefing FIRST (if it exists): .bober/briefings/<contractId>-briefing.md
344
+ The briefing contains pre-analyzed code patterns, utilities to reuse, affected files, testing patterns, and implementation sequence. Start here before exploring the codebase.
277
345
 
278
346
  ## Instructions
279
- 1. Read the SprintContract at .bober/contracts/<contractId>.json
280
- 2. Read the PlanSpec at .bober/specs/<specId>.json for broader context
281
- 3. Read bober.config.json for commands configuration
282
- 4. Read .bober/principles.md if it exists — adhere to all principles strictly
283
- 5. Read the files listed in the contract's estimatedFiles
284
- 6. Implement the sprint according to the contract's success criteria
285
- 7. Self-verify: run build, typecheck, lint, and test commands
286
- 8. Commit your changes with proper messages (format: "bober(<sprint-N>): <description>")
287
- 9. Work on the feature branch, never on main/master
347
+ 1. Read the Sprint Briefing at .bober/briefings/<contractId>-briefing.md (if it exists)
348
+ 2. Read the handoff at .bober/handoffs/<handoffId>.json
349
+ 3. Read the SprintContract at .bober/contracts/<contractId>.json
350
+ 4. Read the PlanSpec at .bober/specs/<specId>.json for broader context
351
+ 5. Read bober.config.json for commands configuration
352
+ 6. Read .bober/principles.md if it exists — adhere to all principles strictly
353
+ 7. Read the files listed in the contract's estimatedFiles
354
+ 8. Implement the sprint according to the contract's success criteria
355
+ 9. Self-verify: run build, typecheck, lint, and test commands
356
+ 10. Commit your changes with proper messages (format: "bober(<sprint-N>): <description>")
357
+ 11. Work on the feature branch, never on main/master
288
358
 
289
359
  <IF iteration > 1>
290
360
  ## IMPORTANT — This is a RETRY (iteration <N>)
@@ -331,7 +401,7 @@ When done, respond with EXACTLY this JSON structure (no other text):
331
401
  ```
332
402
  5. If the generator subagent crashed or returned an error, mark the sprint as `needs-rework` and log it.
333
403
 
334
- ### 3e. Spawn the Evaluator Subagent
404
+ ### 3f. Spawn the Evaluator Subagent
335
405
 
336
406
  Use the **Agent tool** to spawn an evaluator subagent.
337
407
 
@@ -349,20 +419,16 @@ NOTE: The evaluator has read + bash access but NO write/edit tools (enforced by
349
419
 
350
420
  **Build the evaluator prompt:**
351
421
 
422
+ IMPORTANT: Do NOT paste the full handoff or contract JSON inline. Reference file paths instead — this keeps the orchestrator's context lean. Only include the generator's completion report and minimal context identifiers.
423
+
352
424
  ```
353
425
  You are the Bober Evaluator subagent. You have been spawned by the orchestrator to evaluate a sprint.
354
426
 
355
427
  ## Sprint Contract
356
- <paste the full SprintContract JSON>
428
+ Read from: .bober/contracts/<contractId>.json
357
429
 
358
430
  ## Generator's Completion Report
359
- <paste the generator's completion report JSON>
360
-
361
- ## Project Configuration
362
- <paste relevant sections of bober.config.json: commands, evaluator>
363
-
364
- ## Project Principles
365
- <paste full text of .bober/principles.md or "No principles file found.">
431
+ <paste the generator's completion report JSON — this is small and needed for context>
366
432
 
367
433
  ## Context
368
434
  - Contract ID: <contractId>
@@ -375,10 +441,10 @@ You are the Bober Evaluator subagent. You have been spawned by the orchestrator
375
441
  ## Instructions
376
442
  1. Read the SprintContract at .bober/contracts/<contractId>.json
377
443
  2. Read bober.config.json for configured eval strategies and commands
378
- 3. Run each configured evaluation strategy (typecheck, lint, build, unit-test, playwright, api-check) using the commands from config
379
- 4. Verify EVERY success criterion in the contract one by one
380
- 5. Check for regressions (pre-existing tests still passing, build stability)
381
- 6. Check adherence to project principles
444
+ 3. Read .bober/principles.md if it exists check adherence
445
+ 4. Run each configured evaluation strategy (typecheck, lint, build, unit-test, playwright, api-check) using the commands from config
446
+ 5. Verify EVERY success criterion in the contract one by one
447
+ 6. Check for regressions (pre-existing tests still passing, build stability)
382
448
  7. Produce a structured EvalResult
383
449
 
384
450
  IMPORTANT: You do NOT have Write or Edit tools. Output the EvalResult JSON in your response, and the orchestrator will save it to disk.
@@ -432,7 +498,7 @@ When done, respond with EXACTLY this JSON structure (no other text):
432
498
  2. Save the EvalResult to `.bober/eval-results/eval-<contractId>-<iteration>.json` (the evaluator cannot write files).
433
499
  3. Determine pass/fail from the `overallResult` field.
434
500
 
435
- ### 3f. Process the Evaluation Result
501
+ ### 3g. Process the Evaluation Result
436
502
 
437
503
  **On PASS:**
438
504
  1. Update contract status to `completed` and save to `.bober/contracts/`.
@@ -477,14 +543,14 @@ When done, respond with EXACTLY this JSON structure (no other text):
477
543
  - If the failure blocks subsequent sprints, stop the pipeline.
478
544
  4. Print failure report with full context.
479
545
 
480
- ### 3g. Context Reset
546
+ ### 3h. Context Reset
481
547
 
482
548
  After each sprint completes (pass or fail), check `pipeline.contextReset` from config:
483
549
  - `always`: Fresh context for the next sprint. The next sprint's Generator receives only its handoff document. (This is the default with subagent architecture — each spawn IS a fresh context.)
484
550
  - `on-threshold`: Same as `always` with subagents, since each subagent is already isolated.
485
551
  - `never`: Carry summary forward in the handoff. Still a fresh subagent, but with richer handoff.
486
552
 
487
- ### 3h. Iteration Budget
553
+ ### 3i. Iteration Budget
488
554
 
489
555
  Track total Generator-Evaluator iterations across all sprints:
490
556
  - Each Generator+Evaluator cycle counts as 1 iteration.