forge-cc 1.0.0 → 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 (142) hide show
  1. package/package.json +3 -2
  2. package/dist/gates/codex-gate.d.ts +0 -51
  3. package/dist/gates/codex-gate.js +0 -121
  4. package/dist/gates/codex-gate.js.map +0 -1
  5. package/dist/gates/prd-gate.d.ts +0 -7
  6. package/dist/gates/prd-gate.js +0 -193
  7. package/dist/gates/prd-gate.js.map +0 -1
  8. package/dist/gates/remediation.d.ts +0 -46
  9. package/dist/gates/remediation.js +0 -423
  10. package/dist/gates/remediation.js.map +0 -1
  11. package/dist/gates/review-gate.d.ts +0 -16
  12. package/dist/gates/review-gate.js +0 -479
  13. package/dist/gates/review-gate.js.map +0 -1
  14. package/dist/gates/runtime-gate.d.ts +0 -5
  15. package/dist/gates/runtime-gate.js +0 -99
  16. package/dist/gates/runtime-gate.js.map +0 -1
  17. package/dist/gates/test-analysis.d.ts +0 -21
  18. package/dist/gates/test-analysis.js +0 -394
  19. package/dist/gates/test-analysis.js.map +0 -1
  20. package/dist/gates/visual-capture.d.ts +0 -24
  21. package/dist/gates/visual-capture.js +0 -144
  22. package/dist/gates/visual-capture.js.map +0 -1
  23. package/dist/gates/visual-gate.d.ts +0 -18
  24. package/dist/gates/visual-gate.js +0 -234
  25. package/dist/gates/visual-gate.js.map +0 -1
  26. package/dist/gates/visual-reviewer.d.ts +0 -11
  27. package/dist/gates/visual-reviewer.js +0 -211
  28. package/dist/gates/visual-reviewer.js.map +0 -1
  29. package/dist/go/auto-chain.d.ts +0 -136
  30. package/dist/go/auto-chain.js +0 -389
  31. package/dist/go/auto-chain.js.map +0 -1
  32. package/dist/go/executor.d.ts +0 -137
  33. package/dist/go/executor.js +0 -447
  34. package/dist/go/executor.js.map +0 -1
  35. package/dist/go/finalize.d.ts +0 -108
  36. package/dist/go/finalize.js +0 -331
  37. package/dist/go/finalize.js.map +0 -1
  38. package/dist/go/linear-sync-cli.d.ts +0 -55
  39. package/dist/go/linear-sync-cli.js +0 -192
  40. package/dist/go/linear-sync-cli.js.map +0 -1
  41. package/dist/go/linear-sync.d.ts +0 -112
  42. package/dist/go/linear-sync.js +0 -375
  43. package/dist/go/linear-sync.js.map +0 -1
  44. package/dist/go/prd-queue.d.ts +0 -43
  45. package/dist/go/prd-queue.js +0 -67
  46. package/dist/go/prd-queue.js.map +0 -1
  47. package/dist/go/prd-selector.d.ts +0 -57
  48. package/dist/go/prd-selector.js +0 -101
  49. package/dist/go/prd-selector.js.map +0 -1
  50. package/dist/go/verify-loop.d.ts +0 -64
  51. package/dist/go/verify-loop.js +0 -327
  52. package/dist/go/verify-loop.js.map +0 -1
  53. package/dist/hooks/pre-commit.d.ts +0 -5
  54. package/dist/hooks/pre-commit.js +0 -75
  55. package/dist/hooks/pre-commit.js.map +0 -1
  56. package/dist/linear/issues.d.ts +0 -22
  57. package/dist/linear/issues.js +0 -51
  58. package/dist/linear/issues.js.map +0 -1
  59. package/dist/linear/milestones.d.ts +0 -11
  60. package/dist/linear/milestones.js +0 -32
  61. package/dist/linear/milestones.js.map +0 -1
  62. package/dist/linear/projects.d.ts +0 -16
  63. package/dist/linear/projects.js +0 -51
  64. package/dist/linear/projects.js.map +0 -1
  65. package/dist/reporter/human.d.ts +0 -7
  66. package/dist/reporter/human.js +0 -93
  67. package/dist/reporter/human.js.map +0 -1
  68. package/dist/reporter/json.d.ts +0 -2
  69. package/dist/reporter/json.js +0 -4
  70. package/dist/reporter/json.js.map +0 -1
  71. package/dist/setup/structural-templates.d.ts +0 -12
  72. package/dist/setup/structural-templates.js +0 -288
  73. package/dist/setup/structural-templates.js.map +0 -1
  74. package/dist/setup/templates.d.ts +0 -17
  75. package/dist/setup/templates.js +0 -109
  76. package/dist/setup/templates.js.map +0 -1
  77. package/dist/setup/test-planner.d.ts +0 -38
  78. package/dist/setup/test-planner.js +0 -91
  79. package/dist/setup/test-planner.js.map +0 -1
  80. package/dist/setup/test-scaffold.d.ts +0 -31
  81. package/dist/setup/test-scaffold.js +0 -209
  82. package/dist/setup/test-scaffold.js.map +0 -1
  83. package/dist/setup/test-templates.d.ts +0 -37
  84. package/dist/setup/test-templates.js +0 -313
  85. package/dist/setup/test-templates.js.map +0 -1
  86. package/dist/spec/generator.d.ts +0 -34
  87. package/dist/spec/generator.js +0 -227
  88. package/dist/spec/generator.js.map +0 -1
  89. package/dist/spec/interview.d.ts +0 -142
  90. package/dist/spec/interview.js +0 -287
  91. package/dist/spec/interview.js.map +0 -1
  92. package/dist/spec/linear-sync.d.ts +0 -48
  93. package/dist/spec/linear-sync.js +0 -125
  94. package/dist/spec/linear-sync.js.map +0 -1
  95. package/dist/spec/scanner.d.ts +0 -79
  96. package/dist/spec/scanner.js +0 -566
  97. package/dist/spec/scanner.js.map +0 -1
  98. package/dist/spec/templates.d.ts +0 -375
  99. package/dist/spec/templates.js +0 -95
  100. package/dist/spec/templates.js.map +0 -1
  101. package/dist/state/prd-status.d.ts +0 -62
  102. package/dist/state/prd-status.js +0 -122
  103. package/dist/state/prd-status.js.map +0 -1
  104. package/dist/state/reader.d.ts +0 -7
  105. package/dist/state/reader.js +0 -43
  106. package/dist/state/reader.js.map +0 -1
  107. package/dist/state/writer.d.ts +0 -21
  108. package/dist/state/writer.js +0 -106
  109. package/dist/state/writer.js.map +0 -1
  110. package/dist/team/consensus.d.ts +0 -28
  111. package/dist/team/consensus.js +0 -130
  112. package/dist/team/consensus.js.map +0 -1
  113. package/dist/team/index.d.ts +0 -4
  114. package/dist/team/index.js +0 -5
  115. package/dist/team/index.js.map +0 -1
  116. package/dist/team/lifecycle.d.ts +0 -37
  117. package/dist/team/lifecycle.js +0 -92
  118. package/dist/team/lifecycle.js.map +0 -1
  119. package/dist/team/reviewer.d.ts +0 -10
  120. package/dist/team/reviewer.js +0 -345
  121. package/dist/team/reviewer.js.map +0 -1
  122. package/dist/team/types.d.ts +0 -269
  123. package/dist/team/types.js +0 -70
  124. package/dist/team/types.js.map +0 -1
  125. package/dist/utils/browser.d.ts +0 -10
  126. package/dist/utils/browser.js +0 -96
  127. package/dist/utils/browser.js.map +0 -1
  128. package/dist/utils/platform.d.ts +0 -29
  129. package/dist/utils/platform.js +0 -90
  130. package/dist/utils/platform.js.map +0 -1
  131. package/dist/worktree/identity.d.ts +0 -9
  132. package/dist/worktree/identity.js +0 -32
  133. package/dist/worktree/identity.js.map +0 -1
  134. package/dist/worktree/parallel.d.ts +0 -87
  135. package/dist/worktree/parallel.js +0 -328
  136. package/dist/worktree/parallel.js.map +0 -1
  137. package/dist/worktree/session.d.ts +0 -67
  138. package/dist/worktree/session.js +0 -194
  139. package/dist/worktree/session.js.map +0 -1
  140. package/dist/worktree/state-merge.d.ts +0 -43
  141. package/dist/worktree/state-merge.js +0 -162
  142. 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":"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"}
@@ -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 };