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.
- package/package.json +3 -2
- package/dist/gates/codex-gate.d.ts +0 -51
- package/dist/gates/codex-gate.js +0 -121
- package/dist/gates/codex-gate.js.map +0 -1
- package/dist/gates/prd-gate.d.ts +0 -7
- package/dist/gates/prd-gate.js +0 -193
- package/dist/gates/prd-gate.js.map +0 -1
- package/dist/gates/remediation.d.ts +0 -46
- package/dist/gates/remediation.js +0 -423
- package/dist/gates/remediation.js.map +0 -1
- package/dist/gates/review-gate.d.ts +0 -16
- package/dist/gates/review-gate.js +0 -479
- package/dist/gates/review-gate.js.map +0 -1
- package/dist/gates/runtime-gate.d.ts +0 -5
- package/dist/gates/runtime-gate.js +0 -99
- package/dist/gates/runtime-gate.js.map +0 -1
- package/dist/gates/test-analysis.d.ts +0 -21
- package/dist/gates/test-analysis.js +0 -394
- package/dist/gates/test-analysis.js.map +0 -1
- package/dist/gates/visual-capture.d.ts +0 -24
- package/dist/gates/visual-capture.js +0 -144
- package/dist/gates/visual-capture.js.map +0 -1
- package/dist/gates/visual-gate.d.ts +0 -18
- package/dist/gates/visual-gate.js +0 -234
- package/dist/gates/visual-gate.js.map +0 -1
- package/dist/gates/visual-reviewer.d.ts +0 -11
- package/dist/gates/visual-reviewer.js +0 -211
- package/dist/gates/visual-reviewer.js.map +0 -1
- package/dist/go/auto-chain.d.ts +0 -136
- package/dist/go/auto-chain.js +0 -389
- package/dist/go/auto-chain.js.map +0 -1
- package/dist/go/executor.d.ts +0 -137
- package/dist/go/executor.js +0 -447
- package/dist/go/executor.js.map +0 -1
- package/dist/go/finalize.d.ts +0 -108
- package/dist/go/finalize.js +0 -331
- package/dist/go/finalize.js.map +0 -1
- package/dist/go/linear-sync-cli.d.ts +0 -55
- package/dist/go/linear-sync-cli.js +0 -192
- package/dist/go/linear-sync-cli.js.map +0 -1
- package/dist/go/linear-sync.d.ts +0 -112
- package/dist/go/linear-sync.js +0 -375
- package/dist/go/linear-sync.js.map +0 -1
- package/dist/go/prd-queue.d.ts +0 -43
- package/dist/go/prd-queue.js +0 -67
- package/dist/go/prd-queue.js.map +0 -1
- package/dist/go/prd-selector.d.ts +0 -57
- package/dist/go/prd-selector.js +0 -101
- package/dist/go/prd-selector.js.map +0 -1
- package/dist/go/verify-loop.d.ts +0 -64
- package/dist/go/verify-loop.js +0 -327
- package/dist/go/verify-loop.js.map +0 -1
- package/dist/hooks/pre-commit.d.ts +0 -5
- package/dist/hooks/pre-commit.js +0 -75
- package/dist/hooks/pre-commit.js.map +0 -1
- package/dist/linear/issues.d.ts +0 -22
- package/dist/linear/issues.js +0 -51
- package/dist/linear/issues.js.map +0 -1
- package/dist/linear/milestones.d.ts +0 -11
- package/dist/linear/milestones.js +0 -32
- package/dist/linear/milestones.js.map +0 -1
- package/dist/linear/projects.d.ts +0 -16
- package/dist/linear/projects.js +0 -51
- package/dist/linear/projects.js.map +0 -1
- package/dist/reporter/human.d.ts +0 -7
- package/dist/reporter/human.js +0 -93
- package/dist/reporter/human.js.map +0 -1
- package/dist/reporter/json.d.ts +0 -2
- package/dist/reporter/json.js +0 -4
- package/dist/reporter/json.js.map +0 -1
- package/dist/setup/structural-templates.d.ts +0 -12
- package/dist/setup/structural-templates.js +0 -288
- package/dist/setup/structural-templates.js.map +0 -1
- package/dist/setup/templates.d.ts +0 -17
- package/dist/setup/templates.js +0 -109
- package/dist/setup/templates.js.map +0 -1
- package/dist/setup/test-planner.d.ts +0 -38
- package/dist/setup/test-planner.js +0 -91
- package/dist/setup/test-planner.js.map +0 -1
- package/dist/setup/test-scaffold.d.ts +0 -31
- package/dist/setup/test-scaffold.js +0 -209
- package/dist/setup/test-scaffold.js.map +0 -1
- package/dist/setup/test-templates.d.ts +0 -37
- package/dist/setup/test-templates.js +0 -313
- package/dist/setup/test-templates.js.map +0 -1
- package/dist/spec/generator.d.ts +0 -34
- package/dist/spec/generator.js +0 -227
- package/dist/spec/generator.js.map +0 -1
- package/dist/spec/interview.d.ts +0 -142
- package/dist/spec/interview.js +0 -287
- package/dist/spec/interview.js.map +0 -1
- package/dist/spec/linear-sync.d.ts +0 -48
- package/dist/spec/linear-sync.js +0 -125
- package/dist/spec/linear-sync.js.map +0 -1
- package/dist/spec/scanner.d.ts +0 -79
- package/dist/spec/scanner.js +0 -566
- package/dist/spec/scanner.js.map +0 -1
- package/dist/spec/templates.d.ts +0 -375
- package/dist/spec/templates.js +0 -95
- package/dist/spec/templates.js.map +0 -1
- package/dist/state/prd-status.d.ts +0 -62
- package/dist/state/prd-status.js +0 -122
- package/dist/state/prd-status.js.map +0 -1
- package/dist/state/reader.d.ts +0 -7
- package/dist/state/reader.js +0 -43
- package/dist/state/reader.js.map +0 -1
- package/dist/state/writer.d.ts +0 -21
- package/dist/state/writer.js +0 -106
- package/dist/state/writer.js.map +0 -1
- package/dist/team/consensus.d.ts +0 -28
- package/dist/team/consensus.js +0 -130
- package/dist/team/consensus.js.map +0 -1
- package/dist/team/index.d.ts +0 -4
- package/dist/team/index.js +0 -5
- package/dist/team/index.js.map +0 -1
- package/dist/team/lifecycle.d.ts +0 -37
- package/dist/team/lifecycle.js +0 -92
- package/dist/team/lifecycle.js.map +0 -1
- package/dist/team/reviewer.d.ts +0 -10
- package/dist/team/reviewer.js +0 -345
- package/dist/team/reviewer.js.map +0 -1
- package/dist/team/types.d.ts +0 -269
- package/dist/team/types.js +0 -70
- package/dist/team/types.js.map +0 -1
- package/dist/utils/browser.d.ts +0 -10
- package/dist/utils/browser.js +0 -96
- package/dist/utils/browser.js.map +0 -1
- package/dist/utils/platform.d.ts +0 -29
- package/dist/utils/platform.js +0 -90
- package/dist/utils/platform.js.map +0 -1
- package/dist/worktree/identity.d.ts +0 -9
- package/dist/worktree/identity.js +0 -32
- package/dist/worktree/identity.js.map +0 -1
- package/dist/worktree/parallel.d.ts +0 -87
- package/dist/worktree/parallel.js +0 -328
- package/dist/worktree/parallel.js.map +0 -1
- package/dist/worktree/session.d.ts +0 -67
- package/dist/worktree/session.js +0 -194
- package/dist/worktree/session.js.map +0 -1
- package/dist/worktree/state-merge.d.ts +0 -43
- package/dist/worktree/state-merge.js +0 -162
- package/dist/worktree/state-merge.js.map +0 -1
package/dist/state/reader.js
DELETED
|
@@ -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
|
package/dist/state/reader.js.map
DELETED
|
@@ -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"}
|
package/dist/state/writer.d.ts
DELETED
|
@@ -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>;
|
package/dist/state/writer.js
DELETED
|
@@ -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
|
package/dist/state/writer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/state/writer.ts"],"names":[],"mappings":"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"}
|
package/dist/team/consensus.d.ts
DELETED
|
@@ -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;
|
package/dist/team/consensus.js
DELETED
|
@@ -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":"AA0BA,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,YAAoB,CAAC;IAErB,OAAO;QACL,OAAO;QACP,MAAM,EAAE,EAAE;QACV,SAAS;QACT,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CACnC,KAAqB,EACrB,QAAyB;IAEzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAmB;QACrC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAC3B,KAAK;QACL,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;KAClD,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEpD,mDAAmD;IACnD,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,kEAAkE;IAClE,iFAAiF;IACjF,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,QAAQ,KAAK,aAAa,CAAC;AACnF,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CACjC,KAAqB,EACrB,QAA4B;IAE5B,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAE/D,OAAO;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE;YACN,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,UAAU;YACV,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,aAAa,EAAE,QAAQ,CAAC,QAAQ;SACjC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAClC,QAAmB,EACnB,SAAyC;IAEzC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,cAAc,GAAc,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAEzD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,QAAQ;gBAAE,MAAM;QAC5B,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,QAAQ,GACZ,OAAO,CAAC,IAAI,IAAI,IAAI;QAClB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACpE,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAEnF,OAAO;QACL,MAAM,OAAO,CAAC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;QAC9C,YAAY;QACZ,kBAAkB,OAAO,CAAC,WAAW,EAAE;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,OAAgB;IAEhB,MAAM,KAAK,GAAG;QACZ,YAAY,OAAO,CAAC,OAAO,EAAE;QAC7B,eAAe,MAAM,CAAC,UAAU,EAAE;QAClC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;KAClC,CAAC;IAEF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/team/index.d.ts
DELETED
package/dist/team/index.js
DELETED
package/dist/team/index.js.map
DELETED
|
@@ -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"}
|
package/dist/team/lifecycle.d.ts
DELETED
|
@@ -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;
|
package/dist/team/lifecycle.js
DELETED
|
@@ -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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"}
|
package/dist/team/reviewer.d.ts
DELETED
|
@@ -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 };
|