forge-cc 2.0.1 → 2.0.2
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/README.md +42 -9
- package/dist/cli.js +127 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex-poll.d.ts +17 -1
- package/dist/codex-poll.js +3 -7
- package/dist/codex-poll.js.map +1 -1
- package/dist/linear/client.d.ts +9 -0
- package/dist/linear/client.js +50 -0
- package/dist/linear/client.js.map +1 -1
- package/dist/linear/sync.d.ts +23 -4
- package/dist/linear/sync.js +66 -30
- package/dist/linear/sync.js.map +1 -1
- package/dist/runner/loop.js +34 -23
- package/dist/runner/loop.js.map +1 -1
- package/dist/setup.js +107 -3
- package/dist/setup.js.map +1 -1
- package/hooks/linear-branch-enforce.js +395 -0
- package/hooks/linear-post-action.js +331 -0
- package/hooks/linear-worktree-create.js +337 -0
- package/package.json +1 -1
- package/skills/forge-build.md +97 -49
- package/skills/forge-capture.md +6 -6
- package/skills/forge-fix.md +5 -0
- package/skills/forge-plan.md +16 -4
- package/skills/forge-quick.md +4 -0
- package/skills/ref/codex-review.md +158 -0
package/dist/linear/sync.js
CHANGED
|
@@ -1,10 +1,48 @@
|
|
|
1
|
+
import { discoverGraphs, loadIndex } from "../graph/reader.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a requirement's context from the project directory and reqId.
|
|
4
|
+
*
|
|
5
|
+
* Scans all graphs in `.planning/graph/` to find the requirement, then
|
|
6
|
+
* optionally resolves the Linear issue identifier via the API client.
|
|
7
|
+
*
|
|
8
|
+
* Shared by WorktreeCreate and PreToolUse hooks.
|
|
9
|
+
*/
|
|
10
|
+
export async function resolveRequirementContext(projectDir, reqId, client) {
|
|
11
|
+
const slugs = await discoverGraphs(projectDir);
|
|
12
|
+
for (const slug of slugs) {
|
|
13
|
+
let index;
|
|
14
|
+
try {
|
|
15
|
+
index = await loadIndex(projectDir, slug);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const meta = index.requirements[reqId];
|
|
21
|
+
if (!meta)
|
|
22
|
+
continue;
|
|
23
|
+
let issueIdentifier = null;
|
|
24
|
+
if (meta.linearIssueId && client) {
|
|
25
|
+
try {
|
|
26
|
+
const result = await client.getIssueIdentifier(meta.linearIssueId);
|
|
27
|
+
if (result.success) {
|
|
28
|
+
issueIdentifier = result.data;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Degrade gracefully — identifier is optional
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return { index, meta, issueIdentifier };
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
1
39
|
function emptySyncResult() {
|
|
2
40
|
return { issuesTransitioned: 0, issuesFailed: [], projectUpdated: false };
|
|
3
41
|
}
|
|
4
42
|
/** Resolve + update project status, mutating result in place. */
|
|
5
43
|
async function transitionProject(client, result, projectId, category, label) {
|
|
6
|
-
const statusId = await client.resolveProjectStatusByCategory(category);
|
|
7
|
-
console.log(`[forge] Updating project ${projectId} to "${label}"`);
|
|
44
|
+
const statusId = await client.resolveProjectStatusByCategory(category, label);
|
|
45
|
+
console.log(`[forge] Updating project ${projectId} to "${label ?? category}"`);
|
|
8
46
|
const r = await client.updateProjectState(projectId, statusId);
|
|
9
47
|
if (r.success) {
|
|
10
48
|
result.projectUpdated = true;
|
|
@@ -15,7 +53,7 @@ async function transitionProject(client, result, projectId, category, label) {
|
|
|
15
53
|
}
|
|
16
54
|
}
|
|
17
55
|
/** Transition a single requirement's issue to "started" and project to "started". */
|
|
18
|
-
export async function syncRequirementStart(client, index, requirementId) {
|
|
56
|
+
export async function syncRequirementStart(client, index, requirementId, _branchName) {
|
|
19
57
|
const meta = index.requirements[requirementId];
|
|
20
58
|
const result = emptySyncResult();
|
|
21
59
|
if (!meta?.linearIssueId) {
|
|
@@ -44,38 +82,36 @@ export async function syncRequirementStart(client, index, requirementId) {
|
|
|
44
82
|
}
|
|
45
83
|
return result;
|
|
46
84
|
}
|
|
47
|
-
/** Transition
|
|
48
|
-
export async function
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
|
|
85
|
+
/** Transition project to In Review when a PR is opened (ship step). */
|
|
86
|
+
export async function syncGraphProjectReview(client, index) {
|
|
87
|
+
const result = emptySyncResult();
|
|
88
|
+
if (index.linear?.projectId) {
|
|
89
|
+
await transitionProject(client, result, index.linear.projectId, "started", "In Review");
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.warn("[forge] No Linear projectId in graph index, skipping review transition");
|
|
53
93
|
}
|
|
54
|
-
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
/** Transition project to Completed after the linked PR is merged. */
|
|
97
|
+
export async function syncGraphProjectCompleted(client, index) {
|
|
55
98
|
const result = emptySyncResult();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (meta.linearIssueId) {
|
|
59
|
-
allIssueIds.push(meta.linearIssueId);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
console.warn(`[forge] No linearIssueId for requirement "${id}" — skipping`);
|
|
63
|
-
}
|
|
99
|
+
if (index.linear?.projectId) {
|
|
100
|
+
await transitionProject(client, result, index.linear.projectId, "completed");
|
|
64
101
|
}
|
|
65
|
-
|
|
66
|
-
console.
|
|
67
|
-
const batchResult = await client.updateIssueBatch(allIssueIds, { stateId: doneStateId });
|
|
68
|
-
if (batchResult.success) {
|
|
69
|
-
result.issuesTransitioned = batchResult.data.updated;
|
|
70
|
-
result.issuesFailed = batchResult.data.failed;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
console.warn(`[forge] Batch update failed: ${batchResult.error}`);
|
|
74
|
-
result.issuesFailed = allIssueIds;
|
|
75
|
-
}
|
|
102
|
+
else {
|
|
103
|
+
console.warn("[forge] No Linear projectId in graph index, skipping completed transition");
|
|
76
104
|
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
/** Transition project to "Planned" after planning phase completes. */
|
|
108
|
+
export async function syncGraphProjectPlanned(client, index) {
|
|
109
|
+
const result = emptySyncResult();
|
|
77
110
|
if (index.linear?.projectId) {
|
|
78
|
-
await transitionProject(client, result, index.linear.projectId, "
|
|
111
|
+
await transitionProject(client, result, index.linear.projectId, "planned", "Planned");
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.warn("[forge] No Linear projectId in graph index, skipping planned transition");
|
|
79
115
|
}
|
|
80
116
|
return result;
|
|
81
117
|
}
|
package/dist/linear/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/linear/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/linear/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/runner/loop.js
CHANGED
|
@@ -6,7 +6,7 @@ import { loadConfig } from "../config/loader.js";
|
|
|
6
6
|
import { buildRequirementPrompt } from "./prompt.js";
|
|
7
7
|
import { createWorktree, mergeWorktree, removeWorktree, } from "../worktree/manager.js";
|
|
8
8
|
import { ForgeLinearClient } from "../linear/client.js";
|
|
9
|
-
import { syncRequirementStart
|
|
9
|
+
import { syncRequirementStart } from "../linear/sync.js";
|
|
10
10
|
import { loadIndex, loadOverview, loadRequirement, loadRequirements } from "../graph/reader.js";
|
|
11
11
|
import { updateRequirementStatus } from "../graph/writer.js";
|
|
12
12
|
import { findReady, isProjectComplete, buildRequirementContext, getTransitiveDeps } from "../graph/query.js";
|
|
@@ -75,17 +75,7 @@ export async function runGraphLoop(opts) {
|
|
|
75
75
|
console.log(`\n[forge] Starting requirement ${reqId}`);
|
|
76
76
|
// Mark in_progress
|
|
77
77
|
index = await updateRequirementStatus(projectDir, slug, reqId, "in_progress");
|
|
78
|
-
// Linear sync: start requirement
|
|
79
78
|
const apiKey = process.env.LINEAR_API_KEY;
|
|
80
|
-
if (apiKey && index.linear?.teamId) {
|
|
81
|
-
try {
|
|
82
|
-
const client = new ForgeLinearClient({ apiKey, teamId: index.linear.teamId });
|
|
83
|
-
await syncRequirementStart(client, index, reqId);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// Linear sync is best-effort
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
79
|
// Load requirement content + overview + dependency context
|
|
90
80
|
const req = await loadRequirement(projectDir, slug, reqId);
|
|
91
81
|
if (!req) {
|
|
@@ -100,10 +90,42 @@ export async function runGraphLoop(opts) {
|
|
|
100
90
|
allReqs.set(reqId, req);
|
|
101
91
|
const depContext = buildRequirementContext(index, allReqs, reqId)
|
|
102
92
|
.filter(r => r.id !== reqId); // exclude self from deps
|
|
93
|
+
// Resolve Linear identifier for branch naming
|
|
94
|
+
let issueIdentifier = null;
|
|
95
|
+
const meta = index.requirements[reqId];
|
|
96
|
+
if (apiKey && meta?.linearIssueId && index.linear?.teamId) {
|
|
97
|
+
try {
|
|
98
|
+
const client = new ForgeLinearClient({ apiKey, teamId: index.linear.teamId });
|
|
99
|
+
const result = await client.getIssueIdentifier(meta.linearIssueId);
|
|
100
|
+
if (result.success) {
|
|
101
|
+
issueIdentifier = result.data;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Best-effort — fall back to reqId-only branch
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!issueIdentifier && meta?.linearIssueId) {
|
|
109
|
+
console.warn(`[forge] Could not resolve Linear identifier for ${reqId} — using reqId-only branch name`);
|
|
110
|
+
}
|
|
111
|
+
else if (!meta?.linearIssueId) {
|
|
112
|
+
console.warn(`[forge] No linearIssueId for ${reqId} — using reqId-only branch name`);
|
|
113
|
+
}
|
|
103
114
|
// Create worktree
|
|
104
115
|
const wtPath = resolve(projectDir, "..", ".forge-wt", repoName(projectDir), `${slug}-${reqId}`);
|
|
105
|
-
const
|
|
116
|
+
const branchSuffix = issueIdentifier ? `${issueIdentifier}-${reqId}` : reqId;
|
|
117
|
+
const wtBranch = `${baseBranch}/${branchSuffix}`;
|
|
106
118
|
await createWorktree(wtPath, wtBranch, baseBranch, projectDir);
|
|
119
|
+
// Linear sync: start requirement
|
|
120
|
+
if (apiKey && index.linear?.teamId) {
|
|
121
|
+
try {
|
|
122
|
+
const client = new ForgeLinearClient({ apiKey, teamId: index.linear.teamId });
|
|
123
|
+
await syncRequirementStart(client, index, reqId, wtBranch);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Linear sync is best-effort
|
|
127
|
+
}
|
|
128
|
+
}
|
|
107
129
|
let passed = false;
|
|
108
130
|
let verifyErrors = null;
|
|
109
131
|
for (let iteration = 1; iteration <= maxIterations; iteration++) {
|
|
@@ -145,17 +167,6 @@ export async function runGraphLoop(opts) {
|
|
|
145
167
|
// Reload index to recompute ready set
|
|
146
168
|
index = await loadIndex(projectDir, slug);
|
|
147
169
|
}
|
|
148
|
-
// Linear sync: mark project done (best-effort)
|
|
149
|
-
const apiKey = process.env.LINEAR_API_KEY;
|
|
150
|
-
if (apiKey && index.linear?.teamId) {
|
|
151
|
-
try {
|
|
152
|
-
const client = new ForgeLinearClient({ apiKey, teamId: index.linear.teamId });
|
|
153
|
-
await syncGraphProjectDone(client, index);
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
// Linear sync is best-effort
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
170
|
console.log(`\n[forge] All requirements for "${slug}" complete.`);
|
|
160
171
|
}
|
|
161
172
|
//# sourceMappingURL=loop.js.map
|
package/dist/runner/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/runner/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/runner/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.js
CHANGED
|
@@ -38,12 +38,14 @@ async function installSkills() {
|
|
|
38
38
|
return [];
|
|
39
39
|
}
|
|
40
40
|
const installed = [];
|
|
41
|
+
const expectedFiles = new Set();
|
|
41
42
|
for (const file of files) {
|
|
42
43
|
if (!file.endsWith(".md") || file === "README.md")
|
|
43
44
|
continue;
|
|
44
45
|
// Strip "forge-" prefix so forge-go.md → go.md (shows as forge:go)
|
|
45
46
|
const targetName = file.replace(/^forge-/, "");
|
|
46
47
|
await copyFile(join(skillsSource, file), join(targetDir, targetName));
|
|
48
|
+
expectedFiles.add(targetName);
|
|
47
49
|
// Clean up old prefixed copy if it exists (prevents duplicates)
|
|
48
50
|
if (targetName !== file) {
|
|
49
51
|
try {
|
|
@@ -53,20 +55,43 @@ async function installSkills() {
|
|
|
53
55
|
}
|
|
54
56
|
installed.push(targetName);
|
|
55
57
|
}
|
|
58
|
+
// Remove stale skill files that no longer exist in the source
|
|
59
|
+
try {
|
|
60
|
+
const existingFiles = await readdir(targetDir);
|
|
61
|
+
for (const file of existingFiles) {
|
|
62
|
+
if (!file.endsWith(".md"))
|
|
63
|
+
continue;
|
|
64
|
+
if (!expectedFiles.has(file)) {
|
|
65
|
+
await unlink(join(targetDir, file));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch { /* target dir read failed — skip cleanup */ }
|
|
56
70
|
// Copy ref/ subdirectory (adversarial-review.md, requirement-sizing.md, etc.)
|
|
57
71
|
const refSource = join(skillsSource, "ref");
|
|
58
72
|
const refTarget = join(targetDir, "ref");
|
|
59
73
|
try {
|
|
60
74
|
const refFiles = await readdir(refSource);
|
|
61
75
|
await mkdir(refTarget, { recursive: true });
|
|
76
|
+
const expectedRefFiles = new Set();
|
|
62
77
|
for (const file of refFiles) {
|
|
63
78
|
if (!file.endsWith(".md"))
|
|
64
79
|
continue;
|
|
65
80
|
await copyFile(join(refSource, file), join(refTarget, file));
|
|
81
|
+
expectedRefFiles.add(file);
|
|
66
82
|
installed.push(`ref/${file}`);
|
|
67
83
|
}
|
|
84
|
+
// Remove stale ref files (only after successful source scan)
|
|
85
|
+
const existingRefFiles = await readdir(refTarget);
|
|
86
|
+
for (const file of existingRefFiles) {
|
|
87
|
+
if (!file.endsWith(".md"))
|
|
88
|
+
continue;
|
|
89
|
+
if (!expectedRefFiles.has(file)) {
|
|
90
|
+
await unlink(join(refTarget, file));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
68
93
|
}
|
|
69
|
-
catch { /* ref/ doesn't exist — skip */ }
|
|
94
|
+
catch { /* ref/ doesn't exist or read failed — skip */ }
|
|
70
95
|
return installed;
|
|
71
96
|
}
|
|
72
97
|
/** Generate .forge.json with auto-detected gates if it doesn't already exist. */
|
|
@@ -175,6 +200,80 @@ async function updateClaudeMd(projectDir) {
|
|
|
175
200
|
await writeFile(claudeMdPath, content.trimEnd() + "\n" + FORGE_CLAUDE_SECTION, "utf-8");
|
|
176
201
|
return true;
|
|
177
202
|
}
|
|
203
|
+
/** Install Linear lifecycle hooks into .claude/settings.json. */
|
|
204
|
+
async function installLinearHooks(projectDir) {
|
|
205
|
+
const settingsDir = join(projectDir, ".claude");
|
|
206
|
+
const settingsPath = join(settingsDir, "settings.json");
|
|
207
|
+
await mkdir(settingsDir, { recursive: true });
|
|
208
|
+
// Read existing settings or start fresh
|
|
209
|
+
let settings = {};
|
|
210
|
+
try {
|
|
211
|
+
const raw = await readFile(settingsPath, "utf-8");
|
|
212
|
+
const parsed = JSON.parse(raw);
|
|
213
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
214
|
+
settings = parsed;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// File doesn't exist or is malformed — start fresh
|
|
219
|
+
}
|
|
220
|
+
// Ensure hooks object exists
|
|
221
|
+
if (!settings.hooks || typeof settings.hooks !== "object" || Array.isArray(settings.hooks)) {
|
|
222
|
+
settings.hooks = {};
|
|
223
|
+
}
|
|
224
|
+
const hooks = settings.hooks;
|
|
225
|
+
// Resolve the actual hook script paths from the installed forge-cc package.
|
|
226
|
+
// packageRoot is the forge-cc install dir (works for both local and global installs).
|
|
227
|
+
const hooksDir = join(packageRoot, "hooks").replace(/\\/g, "/");
|
|
228
|
+
const forgeHooks = {
|
|
229
|
+
WorktreeCreate: {
|
|
230
|
+
hooks: [{
|
|
231
|
+
type: "command",
|
|
232
|
+
command: `node "${hooksDir}/linear-worktree-create.js"`,
|
|
233
|
+
}],
|
|
234
|
+
},
|
|
235
|
+
PreToolUse: {
|
|
236
|
+
matcher: "Bash",
|
|
237
|
+
hooks: [{
|
|
238
|
+
type: "command",
|
|
239
|
+
command: `node "${hooksDir}/linear-branch-enforce.js"`,
|
|
240
|
+
}],
|
|
241
|
+
},
|
|
242
|
+
PostToolUse: {
|
|
243
|
+
matcher: "Bash",
|
|
244
|
+
hooks: [{
|
|
245
|
+
type: "command",
|
|
246
|
+
command: `node "${hooksDir}/linear-post-action.js"`,
|
|
247
|
+
async: true,
|
|
248
|
+
}],
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
let changed = false;
|
|
252
|
+
for (const [hookType, entry] of Object.entries(forgeHooks)) {
|
|
253
|
+
if (!Array.isArray(hooks[hookType])) {
|
|
254
|
+
hooks[hookType] = [];
|
|
255
|
+
}
|
|
256
|
+
const existing = hooks[hookType];
|
|
257
|
+
// Extract the command string from our entry for idempotency check
|
|
258
|
+
const entryHooks = entry.hooks;
|
|
259
|
+
const cmdString = entryHooks[0].command;
|
|
260
|
+
// Check if an entry with this command already exists
|
|
261
|
+
const alreadyPresent = existing.some((e) => {
|
|
262
|
+
const eHooks = e.hooks;
|
|
263
|
+
if (!Array.isArray(eHooks))
|
|
264
|
+
return false;
|
|
265
|
+
return eHooks.some((h) => h.command === cmdString);
|
|
266
|
+
});
|
|
267
|
+
if (!alreadyPresent) {
|
|
268
|
+
existing.push(entry);
|
|
269
|
+
changed = true;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (!changed)
|
|
273
|
+
return false;
|
|
274
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf-8");
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
178
277
|
/** Validate Linear connection if API key is set. */
|
|
179
278
|
async function validateLinear() {
|
|
180
279
|
const apiKey = process.env.LINEAR_API_KEY;
|
|
@@ -219,12 +318,17 @@ export async function runSetup(opts) {
|
|
|
219
318
|
console.log("Pre-commit hook installed at .forge/hooks/pre-commit-verify.js");
|
|
220
319
|
console.log("Add to .claude/settings.json hooks to activate");
|
|
221
320
|
}
|
|
222
|
-
// Step 4:
|
|
321
|
+
// Step 4: Install Linear lifecycle hooks into .claude/settings.json
|
|
322
|
+
const hooksInstalled = await installLinearHooks(projectDir);
|
|
323
|
+
if (hooksInstalled) {
|
|
324
|
+
console.log("Linear hooks installed in .claude/settings.json");
|
|
325
|
+
}
|
|
326
|
+
// Step 5: Update CLAUDE.md
|
|
223
327
|
const claudeUpdated = await updateClaudeMd(projectDir);
|
|
224
328
|
if (claudeUpdated) {
|
|
225
329
|
console.log("Forge section added to CLAUDE.md");
|
|
226
330
|
}
|
|
227
|
-
// Step
|
|
331
|
+
// Step 6: Validate Linear
|
|
228
332
|
await validateLinear();
|
|
229
333
|
console.log("\nSetup complete. Run 'npx forge doctor' to verify your environment.");
|
|
230
334
|
}
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|