forge-cc 0.1.41 → 1.0.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 (203) hide show
  1. package/README.md +454 -338
  2. package/dist/cli.js +194 -935
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/loader.d.ts +1 -1
  5. package/dist/config/loader.js +49 -56
  6. package/dist/config/loader.js.map +1 -1
  7. package/dist/config/schema.d.ts +37 -125
  8. package/dist/config/schema.js +13 -28
  9. package/dist/config/schema.js.map +1 -1
  10. package/dist/doctor.d.ts +10 -0
  11. package/dist/doctor.js +148 -0
  12. package/dist/doctor.js.map +1 -0
  13. package/dist/gates/index.d.ts +14 -12
  14. package/dist/gates/index.js +53 -105
  15. package/dist/gates/index.js.map +1 -1
  16. package/dist/gates/lint-gate.d.ts +2 -2
  17. package/dist/gates/lint-gate.js +60 -66
  18. package/dist/gates/lint-gate.js.map +1 -1
  19. package/dist/gates/tests-gate.d.ts +2 -4
  20. package/dist/gates/tests-gate.js +75 -203
  21. package/dist/gates/tests-gate.js.map +1 -1
  22. package/dist/gates/types-gate.d.ts +2 -2
  23. package/dist/gates/types-gate.js +53 -59
  24. package/dist/gates/types-gate.js.map +1 -1
  25. package/dist/linear/client.d.ts +31 -108
  26. package/dist/linear/client.js +88 -388
  27. package/dist/linear/client.js.map +1 -1
  28. package/dist/linear/sync.d.ts +15 -0
  29. package/dist/linear/sync.js +102 -0
  30. package/dist/linear/sync.js.map +1 -0
  31. package/dist/runner/loop.d.ts +4 -0
  32. package/dist/runner/loop.js +168 -0
  33. package/dist/runner/loop.js.map +1 -0
  34. package/dist/runner/prompt.d.ts +14 -0
  35. package/dist/runner/prompt.js +59 -0
  36. package/dist/runner/prompt.js.map +1 -0
  37. package/dist/runner/update.d.ts +1 -0
  38. package/dist/runner/update.js +72 -0
  39. package/dist/runner/update.js.map +1 -0
  40. package/dist/server.d.ts +6 -2
  41. package/dist/server.js +43 -101
  42. package/dist/server.js.map +1 -1
  43. package/dist/setup.d.ts +5 -0
  44. package/dist/setup.js +208 -0
  45. package/dist/setup.js.map +1 -0
  46. package/dist/state/cache.d.ts +3 -0
  47. package/dist/state/cache.js +23 -0
  48. package/dist/state/cache.js.map +1 -0
  49. package/dist/state/status.d.ts +66 -0
  50. package/dist/state/status.js +96 -0
  51. package/dist/state/status.js.map +1 -0
  52. package/dist/types.d.ts +46 -114
  53. package/dist/worktree/manager.d.ts +6 -103
  54. package/dist/worktree/manager.js +25 -296
  55. package/dist/worktree/manager.js.map +1 -1
  56. package/hooks/pre-commit-verify.js +109 -109
  57. package/package.json +5 -3
  58. package/skills/forge-go.md +20 -13
  59. package/skills/forge-setup.md +149 -388
  60. package/skills/forge-spec.md +367 -342
  61. package/skills/forge-triage.md +179 -133
  62. package/skills/forge-update.md +87 -93
  63. package/dist/gates/codex-gate.d.ts +0 -51
  64. package/dist/gates/codex-gate.js +0 -121
  65. package/dist/gates/codex-gate.js.map +0 -1
  66. package/dist/gates/prd-gate.d.ts +0 -7
  67. package/dist/gates/prd-gate.js +0 -193
  68. package/dist/gates/prd-gate.js.map +0 -1
  69. package/dist/gates/remediation.d.ts +0 -46
  70. package/dist/gates/remediation.js +0 -423
  71. package/dist/gates/remediation.js.map +0 -1
  72. package/dist/gates/review-gate.d.ts +0 -16
  73. package/dist/gates/review-gate.js +0 -479
  74. package/dist/gates/review-gate.js.map +0 -1
  75. package/dist/gates/runtime-gate.d.ts +0 -5
  76. package/dist/gates/runtime-gate.js +0 -99
  77. package/dist/gates/runtime-gate.js.map +0 -1
  78. package/dist/gates/test-analysis.d.ts +0 -21
  79. package/dist/gates/test-analysis.js +0 -394
  80. package/dist/gates/test-analysis.js.map +0 -1
  81. package/dist/gates/visual-capture.d.ts +0 -24
  82. package/dist/gates/visual-capture.js +0 -144
  83. package/dist/gates/visual-capture.js.map +0 -1
  84. package/dist/gates/visual-gate.d.ts +0 -18
  85. package/dist/gates/visual-gate.js +0 -234
  86. package/dist/gates/visual-gate.js.map +0 -1
  87. package/dist/gates/visual-reviewer.d.ts +0 -11
  88. package/dist/gates/visual-reviewer.js +0 -211
  89. package/dist/gates/visual-reviewer.js.map +0 -1
  90. package/dist/go/auto-chain.d.ts +0 -136
  91. package/dist/go/auto-chain.js +0 -389
  92. package/dist/go/auto-chain.js.map +0 -1
  93. package/dist/go/executor.d.ts +0 -137
  94. package/dist/go/executor.js +0 -447
  95. package/dist/go/executor.js.map +0 -1
  96. package/dist/go/finalize.d.ts +0 -108
  97. package/dist/go/finalize.js +0 -331
  98. package/dist/go/finalize.js.map +0 -1
  99. package/dist/go/linear-sync-cli.d.ts +0 -55
  100. package/dist/go/linear-sync-cli.js +0 -192
  101. package/dist/go/linear-sync-cli.js.map +0 -1
  102. package/dist/go/linear-sync.d.ts +0 -112
  103. package/dist/go/linear-sync.js +0 -375
  104. package/dist/go/linear-sync.js.map +0 -1
  105. package/dist/go/prd-queue.d.ts +0 -43
  106. package/dist/go/prd-queue.js +0 -67
  107. package/dist/go/prd-queue.js.map +0 -1
  108. package/dist/go/prd-selector.d.ts +0 -57
  109. package/dist/go/prd-selector.js +0 -101
  110. package/dist/go/prd-selector.js.map +0 -1
  111. package/dist/go/verify-loop.d.ts +0 -64
  112. package/dist/go/verify-loop.js +0 -327
  113. package/dist/go/verify-loop.js.map +0 -1
  114. package/dist/hooks/pre-commit.d.ts +0 -5
  115. package/dist/hooks/pre-commit.js +0 -75
  116. package/dist/hooks/pre-commit.js.map +0 -1
  117. package/dist/linear/issues.d.ts +0 -22
  118. package/dist/linear/issues.js +0 -51
  119. package/dist/linear/issues.js.map +0 -1
  120. package/dist/linear/milestones.d.ts +0 -11
  121. package/dist/linear/milestones.js +0 -32
  122. package/dist/linear/milestones.js.map +0 -1
  123. package/dist/linear/projects.d.ts +0 -16
  124. package/dist/linear/projects.js +0 -51
  125. package/dist/linear/projects.js.map +0 -1
  126. package/dist/reporter/human.d.ts +0 -7
  127. package/dist/reporter/human.js +0 -93
  128. package/dist/reporter/human.js.map +0 -1
  129. package/dist/reporter/json.d.ts +0 -2
  130. package/dist/reporter/json.js +0 -4
  131. package/dist/reporter/json.js.map +0 -1
  132. package/dist/setup/structural-templates.d.ts +0 -12
  133. package/dist/setup/structural-templates.js +0 -288
  134. package/dist/setup/structural-templates.js.map +0 -1
  135. package/dist/setup/templates.d.ts +0 -17
  136. package/dist/setup/templates.js +0 -109
  137. package/dist/setup/templates.js.map +0 -1
  138. package/dist/setup/test-planner.d.ts +0 -38
  139. package/dist/setup/test-planner.js +0 -91
  140. package/dist/setup/test-planner.js.map +0 -1
  141. package/dist/setup/test-scaffold.d.ts +0 -31
  142. package/dist/setup/test-scaffold.js +0 -209
  143. package/dist/setup/test-scaffold.js.map +0 -1
  144. package/dist/setup/test-templates.d.ts +0 -37
  145. package/dist/setup/test-templates.js +0 -313
  146. package/dist/setup/test-templates.js.map +0 -1
  147. package/dist/spec/generator.d.ts +0 -34
  148. package/dist/spec/generator.js +0 -227
  149. package/dist/spec/generator.js.map +0 -1
  150. package/dist/spec/interview.d.ts +0 -142
  151. package/dist/spec/interview.js +0 -287
  152. package/dist/spec/interview.js.map +0 -1
  153. package/dist/spec/linear-sync.d.ts +0 -48
  154. package/dist/spec/linear-sync.js +0 -125
  155. package/dist/spec/linear-sync.js.map +0 -1
  156. package/dist/spec/scanner.d.ts +0 -79
  157. package/dist/spec/scanner.js +0 -566
  158. package/dist/spec/scanner.js.map +0 -1
  159. package/dist/spec/templates.d.ts +0 -375
  160. package/dist/spec/templates.js +0 -95
  161. package/dist/spec/templates.js.map +0 -1
  162. package/dist/state/prd-status.d.ts +0 -62
  163. package/dist/state/prd-status.js +0 -122
  164. package/dist/state/prd-status.js.map +0 -1
  165. package/dist/state/reader.d.ts +0 -7
  166. package/dist/state/reader.js +0 -43
  167. package/dist/state/reader.js.map +0 -1
  168. package/dist/state/writer.d.ts +0 -21
  169. package/dist/state/writer.js +0 -106
  170. package/dist/state/writer.js.map +0 -1
  171. package/dist/team/consensus.d.ts +0 -28
  172. package/dist/team/consensus.js +0 -130
  173. package/dist/team/consensus.js.map +0 -1
  174. package/dist/team/index.d.ts +0 -4
  175. package/dist/team/index.js +0 -5
  176. package/dist/team/index.js.map +0 -1
  177. package/dist/team/lifecycle.d.ts +0 -37
  178. package/dist/team/lifecycle.js +0 -92
  179. package/dist/team/lifecycle.js.map +0 -1
  180. package/dist/team/reviewer.d.ts +0 -10
  181. package/dist/team/reviewer.js +0 -345
  182. package/dist/team/reviewer.js.map +0 -1
  183. package/dist/team/types.d.ts +0 -269
  184. package/dist/team/types.js +0 -70
  185. package/dist/team/types.js.map +0 -1
  186. package/dist/utils/browser.d.ts +0 -10
  187. package/dist/utils/browser.js +0 -96
  188. package/dist/utils/browser.js.map +0 -1
  189. package/dist/utils/platform.d.ts +0 -29
  190. package/dist/utils/platform.js +0 -90
  191. package/dist/utils/platform.js.map +0 -1
  192. package/dist/worktree/identity.d.ts +0 -9
  193. package/dist/worktree/identity.js +0 -32
  194. package/dist/worktree/identity.js.map +0 -1
  195. package/dist/worktree/parallel.d.ts +0 -87
  196. package/dist/worktree/parallel.js +0 -328
  197. package/dist/worktree/parallel.js.map +0 -1
  198. package/dist/worktree/session.d.ts +0 -67
  199. package/dist/worktree/session.js +0 -194
  200. package/dist/worktree/session.js.map +0 -1
  201. package/dist/worktree/state-merge.d.ts +0 -43
  202. package/dist/worktree/state-merge.js +0 -162
  203. package/dist/worktree/state-merge.js.map +0 -1
@@ -1,43 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- // ---------------------------------------------------------------------------
3
- // Helpers
4
- // ---------------------------------------------------------------------------
5
- async function safeRead(filePath) {
6
- try {
7
- return await readFile(filePath, "utf-8");
8
- }
9
- catch {
10
- return null;
11
- }
12
- }
13
- function estimateTokens(...texts) {
14
- let chars = 0;
15
- for (const t of texts) {
16
- if (t)
17
- chars += t.length;
18
- }
19
- return Math.ceil(chars / 4);
20
- }
21
- // ---------------------------------------------------------------------------
22
- // readCurrentMilestone
23
- // ---------------------------------------------------------------------------
24
- export async function readCurrentMilestone(prdPath, milestoneNumber) {
25
- const raw = await safeRead(prdPath);
26
- if (raw === null)
27
- return null;
28
- // Look for "### Milestone {n}:" header and extract until next milestone or separator
29
- const pattern = new RegExp(`(###\\s*Milestone\\s+${milestoneNumber}\\s*[:\\—–-][\\s\\S]*?)(?=\\n###\\s*Milestone\\s+\\d|\\n---|$)`);
30
- const match = raw.match(pattern);
31
- if (!match)
32
- return null;
33
- return match[1].trim();
34
- }
35
- // ---------------------------------------------------------------------------
36
- // readSessionContext
37
- // ---------------------------------------------------------------------------
38
- export async function readSessionContext(prdPath, milestoneNumber, prdSlug) {
39
- const currentMilestoneSection = await readCurrentMilestone(prdPath, milestoneNumber);
40
- const estimatedTokens = estimateTokens(currentMilestoneSection);
41
- return { prdSlug, currentMilestoneSection, estimatedTokens };
42
- }
43
- //# sourceMappingURL=reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/state/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAY5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,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,SAAS,cAAc,CAAC,GAAG,KAAoC;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,eAAuB;IAEvB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,qFAAqF;IACrF,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,wBAAwB,eAAe,gEAAgE,CACxG,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,eAAuB,EACvB,OAAe;IAEf,MAAM,uBAAuB,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACrF,MAAM,eAAe,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAEhE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,CAAC;AAC/D,CAAC"}
@@ -1,21 +0,0 @@
1
- export interface CommitOptions {
2
- projectDir: string;
3
- milestoneNumber: number;
4
- milestoneName: string;
5
- filesToStage: string[];
6
- push?: boolean;
7
- branch?: string;
8
- }
9
- export interface CommitResult {
10
- commitSha: string;
11
- pushed: boolean;
12
- }
13
- export interface MilestoneUpdateOptions {
14
- projectDir: string;
15
- prdSlug: string;
16
- milestoneNumber: number;
17
- milestoneName: string;
18
- }
19
- export declare function commitMilestoneWork(options: CommitOptions): CommitResult;
20
- export declare function isLastMilestone(projectDir: string, prdSlug: string, milestoneNumber: number): Promise<boolean>;
21
- export declare function updateMilestoneProgress(options: MilestoneUpdateOptions): Promise<void>;
@@ -1,106 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { readPRDStatus, updateMilestoneStatus } from "./prd-status.js";
3
- // ---------------------------------------------------------------------------
4
- // commitMilestoneWork — commits and optionally pushes milestone work
5
- // ---------------------------------------------------------------------------
6
- export function commitMilestoneWork(options) {
7
- const { projectDir, milestoneNumber, milestoneName, filesToStage, push, branch, } = options;
8
- if (filesToStage.length === 0) {
9
- throw new Error("filesToStage must contain at least one file — never use git add .");
10
- }
11
- // Check if git is available
12
- try {
13
- execSync("git --version", { cwd: projectDir, stdio: "pipe" });
14
- }
15
- catch {
16
- throw new Error("git is not available on this system. Cannot commit milestone work.");
17
- }
18
- // Check for detached HEAD
19
- try {
20
- const headRef = execSync("git symbolic-ref HEAD", {
21
- cwd: projectDir,
22
- encoding: "utf-8",
23
- stdio: "pipe",
24
- }).trim();
25
- if (!headRef) {
26
- throw new Error("Detached HEAD detected — cannot commit. Check out a branch first.");
27
- }
28
- }
29
- catch (err) {
30
- if (err instanceof Error && err.message.includes("Detached HEAD")) {
31
- throw err;
32
- }
33
- // git symbolic-ref fails on detached HEAD with exit code 128
34
- throw new Error("Detached HEAD detected — cannot commit. Check out a branch first.");
35
- }
36
- // Stage only the specified files, skipping files that don't exist
37
- for (const file of filesToStage) {
38
- try {
39
- execSync(`git add ${JSON.stringify(file)}`, {
40
- cwd: projectDir,
41
- stdio: "pipe",
42
- });
43
- }
44
- catch {
45
- // File may not exist or be outside the repo — skip and continue
46
- console.warn(`Warning: Could not stage file "${file}" — skipping.`);
47
- }
48
- }
49
- // Commit with a descriptive message
50
- const commitMessage = `feat: ${milestoneName} (Milestone ${milestoneNumber})`;
51
- try {
52
- execSync(`git commit -m ${JSON.stringify(commitMessage)}`, {
53
- cwd: projectDir,
54
- stdio: "pipe",
55
- });
56
- }
57
- catch (err) {
58
- const msg = err instanceof Error ? err.message : String(err);
59
- throw new Error(`git commit failed: ${msg}`);
60
- }
61
- // Read back the commit SHA
62
- const commitSha = execSync("git rev-parse HEAD", {
63
- cwd: projectDir,
64
- encoding: "utf-8",
65
- }).trim();
66
- // Optionally push to remote
67
- let pushed = false;
68
- if (push && branch) {
69
- try {
70
- execSync(`git push origin ${branch}`, {
71
- cwd: projectDir,
72
- stdio: "pipe",
73
- });
74
- pushed = true;
75
- }
76
- catch (err) {
77
- const msg = err instanceof Error ? err.message : String(err);
78
- console.warn(`Warning: git push failed: ${msg}. Commit was created locally.`);
79
- }
80
- }
81
- return { commitSha, pushed };
82
- }
83
- // ---------------------------------------------------------------------------
84
- // isLastMilestone — detects if this is the final pending milestone
85
- // ---------------------------------------------------------------------------
86
- export async function isLastMilestone(projectDir, prdSlug, milestoneNumber) {
87
- const status = await readPRDStatus(projectDir, prdSlug);
88
- if (!status)
89
- return true;
90
- const milestoneNumbers = Object.keys(status.milestones).map((k) => parseInt(k, 10));
91
- const maxMilestone = Math.max(...milestoneNumbers);
92
- if (milestoneNumber >= maxMilestone)
93
- return true;
94
- // Check if all milestones after this one are complete
95
- const remaining = milestoneNumbers.filter((n) => n > milestoneNumber &&
96
- status.milestones[String(n)].status !== "complete");
97
- return remaining.length === 0;
98
- }
99
- // ---------------------------------------------------------------------------
100
- // updateMilestoneProgress — marks a milestone as complete in PRD status
101
- // ---------------------------------------------------------------------------
102
- export async function updateMilestoneProgress(options) {
103
- const { projectDir, prdSlug, milestoneNumber } = options;
104
- await updateMilestoneStatus(projectDir, prdSlug, milestoneNumber, "complete");
105
- }
106
- //# sourceMappingURL=writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/state/writer.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import type { Finding, ConsensusRound, ConsensusResult } from "./types.js";
2
- export interface ConsensusState {
3
- finding: Finding;
4
- rounds: ConsensusRound[];
5
- maxRounds: number;
6
- resolved: boolean;
7
- result: ConsensusResult | null;
8
- }
9
- export interface BuilderResponse {
10
- builderName: string;
11
- response: "agree" | "disagree" | "alternative";
12
- reason?: string;
13
- alternativeProposal?: string;
14
- }
15
- export interface EscalationDecision {
16
- decision: string;
17
- accepted: boolean;
18
- }
19
- export declare function createConsensusState(finding: Finding, maxRounds?: number): ConsensusState;
20
- export declare function recordBuilderResponse(state: ConsensusState, response: BuilderResponse): ConsensusState;
21
- export declare function needsEscalation(state: ConsensusState): boolean;
22
- export declare function escalateToExecutive(state: ConsensusState, decision: EscalationDecision): ConsensusState;
23
- export declare function runConsensusProtocol(findings: Finding[], responses: Map<string, BuilderResponse[]>): {
24
- results: ConsensusResult[];
25
- needsEscalation: Finding[];
26
- };
27
- export declare function formatFindingForReview(finding: Finding): string;
28
- export declare function formatConsensusResult(result: ConsensusResult, finding: Finding): string;
@@ -1,130 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // createConsensusState — initializes tracking state for a single finding
3
- // ---------------------------------------------------------------------------
4
- export function createConsensusState(finding, maxRounds = 2) {
5
- return {
6
- finding,
7
- rounds: [],
8
- maxRounds,
9
- resolved: false,
10
- result: null,
11
- };
12
- }
13
- // ---------------------------------------------------------------------------
14
- // recordBuilderResponse — records a builder's response and advances state
15
- // ---------------------------------------------------------------------------
16
- export function recordBuilderResponse(state, response) {
17
- const round = state.rounds.length + 1;
18
- const consensusRound = {
19
- findingId: state.finding.id,
20
- round,
21
- builderName: response.builderName,
22
- response: response.response,
23
- reason: response.reason,
24
- alternativeProposal: response.alternativeProposal,
25
- };
26
- const newRounds = [...state.rounds, consensusRound];
27
- // Builder agrees — resolve immediately as accepted
28
- if (response.response === "agree") {
29
- return {
30
- ...state,
31
- rounds: newRounds,
32
- resolved: true,
33
- result: {
34
- findingId: state.finding.id,
35
- resolution: "accepted",
36
- rounds: newRounds,
37
- },
38
- };
39
- }
40
- // Builder disagrees or proposes alternative
41
- // If we haven't exhausted rounds, leave unresolved for next round
42
- // If rounds exhausted, still leave unresolved — escalateToExecutive will resolve
43
- return {
44
- ...state,
45
- rounds: newRounds,
46
- resolved: false,
47
- result: null,
48
- };
49
- }
50
- // ---------------------------------------------------------------------------
51
- // needsEscalation — true when rounds are exhausted without agreement
52
- // ---------------------------------------------------------------------------
53
- export function needsEscalation(state) {
54
- if (state.resolved)
55
- return false;
56
- if (state.rounds.length < state.maxRounds)
57
- return false;
58
- const lastRound = state.rounds[state.rounds.length - 1];
59
- if (!lastRound)
60
- return false;
61
- return lastRound.response === "disagree" || lastRound.response === "alternative";
62
- }
63
- // ---------------------------------------------------------------------------
64
- // escalateToExecutive — resolves a deadlocked finding via executive decision
65
- // ---------------------------------------------------------------------------
66
- export function escalateToExecutive(state, decision) {
67
- const resolution = decision.accepted ? "accepted" : "rejected";
68
- return {
69
- ...state,
70
- resolved: true,
71
- result: {
72
- findingId: state.finding.id,
73
- resolution,
74
- rounds: [...state.rounds],
75
- finalDecision: decision.decision,
76
- },
77
- };
78
- }
79
- // ---------------------------------------------------------------------------
80
- // runConsensusProtocol — batch-processes multiple findings with responses
81
- // ---------------------------------------------------------------------------
82
- export function runConsensusProtocol(findings, responses) {
83
- const results = [];
84
- const escalationList = [];
85
- for (const finding of findings) {
86
- let state = createConsensusState(finding);
87
- const findingResponses = responses.get(finding.id) ?? [];
88
- for (const response of findingResponses) {
89
- state = recordBuilderResponse(state, response);
90
- if (state.resolved)
91
- break;
92
- }
93
- if (state.resolved && state.result) {
94
- results.push(state.result);
95
- }
96
- else if (needsEscalation(state)) {
97
- escalationList.push(finding);
98
- }
99
- }
100
- return { results, needsEscalation: escalationList };
101
- }
102
- // ---------------------------------------------------------------------------
103
- // formatFindingForReview — human-readable finding string for messages
104
- // ---------------------------------------------------------------------------
105
- export function formatFindingForReview(finding) {
106
- const location = finding.file != null
107
- ? `${finding.file}${finding.line != null ? `:${finding.line}` : ""}`
108
- : undefined;
109
- const locationLine = location ? `${location} — ${finding.source}` : finding.source;
110
- return [
111
- `**[${finding.severity}]** ${finding.message}`,
112
- locationLine,
113
- `> Remediation: ${finding.remediation}`,
114
- ].join("\n");
115
- }
116
- // ---------------------------------------------------------------------------
117
- // formatConsensusResult — human-readable consensus outcome
118
- // ---------------------------------------------------------------------------
119
- export function formatConsensusResult(result, finding) {
120
- const lines = [
121
- `Finding: ${finding.message}`,
122
- `Resolution: ${result.resolution}`,
123
- `Rounds: ${result.rounds.length}`,
124
- ];
125
- if (result.finalDecision) {
126
- lines.push(`Executive decision: ${result.finalDecision}`);
127
- }
128
- return lines.join("\n");
129
- }
130
- //# sourceMappingURL=consensus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consensus.js","sourceRoot":"","sources":["../../src/team/consensus.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from "./types.js";
2
- export * from "./lifecycle.js";
3
- export * from "./reviewer.js";
4
- export * from "./consensus.js";
@@ -1,5 +0,0 @@
1
- export * from "./types.js";
2
- export * from "./lifecycle.js";
3
- export * from "./reviewer.js";
4
- export * from "./consensus.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -1,37 +0,0 @@
1
- import type { TeamConfig } from "./types.js";
2
- export declare function createTeamConfig(options: {
3
- prdSlug: string;
4
- milestoneNumber: number;
5
- builderCount: number;
6
- includeNotetaker?: boolean;
7
- }): TeamConfig;
8
- export declare function buildTeamCreateParams(config: TeamConfig): {
9
- team_name: string;
10
- description: string;
11
- };
12
- export declare function buildAgentSpawnConfig(config: TeamConfig, agentName: string, prompt: string): {
13
- team_name: string;
14
- name: string;
15
- prompt: string;
16
- subagent_type: string;
17
- mode: string;
18
- run_in_background: boolean;
19
- };
20
- export declare function buildShutdownMessage(agentName: string): {
21
- type: "shutdown_request";
22
- recipient: string;
23
- content: string;
24
- };
25
- export declare function buildMessage(recipient: string, content: string, summary: string): {
26
- type: "message";
27
- recipient: string;
28
- content: string;
29
- summary: string;
30
- };
31
- export declare function buildBroadcast(content: string, summary: string): {
32
- type: "broadcast";
33
- content: string;
34
- summary: string;
35
- };
36
- export declare function getBuilderNames(config: TeamConfig): string[];
37
- export declare function shouldIncludeNotetaker(waveCount: number, maxAgentsPerWave: number): boolean;
@@ -1,92 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // createTeamConfig — builds a TeamConfig for a milestone execution
3
- // ---------------------------------------------------------------------------
4
- export function createTeamConfig(options) {
5
- const { prdSlug, milestoneNumber, builderCount, includeNotetaker } = options;
6
- const roles = {
7
- executive: "executive",
8
- };
9
- for (let i = 1; i <= builderCount; i++) {
10
- roles[`builder-${i}`] = "builder";
11
- }
12
- roles["reviewer"] = "reviewer";
13
- if (includeNotetaker) {
14
- roles["notetaker"] = "notetaker";
15
- }
16
- return {
17
- teamName: `m${milestoneNumber}-${prdSlug}`,
18
- prdSlug,
19
- milestoneNumber,
20
- roles,
21
- };
22
- }
23
- // ---------------------------------------------------------------------------
24
- // buildTeamCreateParams — returns params the skill passes to TeamCreate
25
- // ---------------------------------------------------------------------------
26
- export function buildTeamCreateParams(config) {
27
- return {
28
- team_name: config.teamName,
29
- description: `Milestone ${config.milestoneNumber} execution for ${config.prdSlug}`,
30
- };
31
- }
32
- // ---------------------------------------------------------------------------
33
- // buildAgentSpawnConfig — returns config for spawning an agent via Task tool
34
- // ---------------------------------------------------------------------------
35
- export function buildAgentSpawnConfig(config, agentName, prompt) {
36
- // Look up role to validate agent name exists in config
37
- const _role = config.roles[agentName];
38
- return {
39
- team_name: config.teamName,
40
- name: agentName,
41
- prompt,
42
- subagent_type: "general-purpose",
43
- mode: "bypassPermissions",
44
- run_in_background: true,
45
- };
46
- }
47
- // ---------------------------------------------------------------------------
48
- // buildShutdownMessage — returns SendMessage params for shutdown request
49
- // ---------------------------------------------------------------------------
50
- export function buildShutdownMessage(agentName) {
51
- return {
52
- type: "shutdown_request",
53
- recipient: agentName,
54
- content: `Task complete, shutting down ${agentName}`,
55
- };
56
- }
57
- // ---------------------------------------------------------------------------
58
- // buildMessage — returns SendMessage params for a direct message
59
- // ---------------------------------------------------------------------------
60
- export function buildMessage(recipient, content, summary) {
61
- return {
62
- type: "message",
63
- recipient,
64
- content,
65
- summary,
66
- };
67
- }
68
- // ---------------------------------------------------------------------------
69
- // buildBroadcast — returns SendMessage params for broadcast
70
- // ---------------------------------------------------------------------------
71
- export function buildBroadcast(content, summary) {
72
- return {
73
- type: "broadcast",
74
- content,
75
- summary,
76
- };
77
- }
78
- // ---------------------------------------------------------------------------
79
- // getBuilderNames — returns array of builder agent names from config
80
- // ---------------------------------------------------------------------------
81
- export function getBuilderNames(config) {
82
- return Object.entries(config.roles)
83
- .filter(([, role]) => role === "builder")
84
- .map(([name]) => name);
85
- }
86
- // ---------------------------------------------------------------------------
87
- // shouldIncludeNotetaker — decision logic per PRD
88
- // ---------------------------------------------------------------------------
89
- export function shouldIncludeNotetaker(waveCount, maxAgentsPerWave) {
90
- return waveCount >= 3 || maxAgentsPerWave >= 4;
91
- }
92
- //# sourceMappingURL=lifecycle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/team/lifecycle.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,OAKhC;IACC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAE7E,MAAM,KAAK,GAA8B;QACvC,SAAS,EAAE,WAAW;KACvB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAE/B,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI,eAAe,IAAI,OAAO,EAAE;QAC1C,OAAO;QACP,eAAe;QACf,KAAK;KACN,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IAItD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,WAAW,EAAE,aAAa,MAAM,CAAC,eAAe,kBAAkB,MAAM,CAAC,OAAO,EAAE;KACnF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CACnC,MAAkB,EAClB,SAAiB,EACjB,MAAc;IASd,uDAAuD;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEtC,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,IAAI,EAAE,SAAS;QACf,MAAM;QACN,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,mBAAmB;QACzB,iBAAiB,EAAE,IAAI;KACxB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IAKpD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,gCAAgC,SAAS,EAAE;KACrD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,OAAe,EACf,OAAe;IAOf,OAAO;QACL,IAAI,EAAE,SAAS;QACf,SAAS;QACT,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAAe;IAMf,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,gBAAwB;IAExB,OAAO,SAAS,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,CAAC;AACjD,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Finding } from "./types.js";
2
- interface ReviewWaveDiffOptions {
3
- projectDir: string;
4
- prdPath?: string;
5
- claudeMdPath?: string;
6
- baseBranch?: string;
7
- }
8
- declare function reviewWaveDiff(options: ReviewWaveDiffOptions): Finding[];
9
- export { reviewWaveDiff };
10
- export type { ReviewWaveDiffOptions };