forge-cc 0.1.40 → 1.0.0
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 +454 -338
- package/dist/cli.js +194 -906
- package/dist/cli.js.map +1 -1
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.js +49 -56
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +37 -125
- package/dist/config/schema.js +13 -28
- package/dist/config/schema.js.map +1 -1
- package/dist/doctor.d.ts +10 -0
- package/dist/doctor.js +148 -0
- package/dist/doctor.js.map +1 -0
- package/dist/gates/index.d.ts +14 -12
- package/dist/gates/index.js +53 -105
- package/dist/gates/index.js.map +1 -1
- package/dist/gates/lint-gate.d.ts +2 -2
- package/dist/gates/lint-gate.js +60 -66
- package/dist/gates/lint-gate.js.map +1 -1
- package/dist/gates/tests-gate.d.ts +2 -4
- package/dist/gates/tests-gate.js +75 -203
- package/dist/gates/tests-gate.js.map +1 -1
- package/dist/gates/types-gate.d.ts +2 -2
- package/dist/gates/types-gate.js +53 -59
- package/dist/gates/types-gate.js.map +1 -1
- package/dist/go/linear-sync-cli.js +13 -4
- package/dist/go/linear-sync-cli.js.map +1 -1
- package/dist/go/linear-sync.d.ts +1 -0
- package/dist/go/linear-sync.js +67 -4
- package/dist/go/linear-sync.js.map +1 -1
- package/dist/linear/client.d.ts +34 -105
- package/dist/linear/client.js +85 -365
- package/dist/linear/client.js.map +1 -1
- package/dist/linear/issues.d.ts +3 -1
- package/dist/linear/issues.js +14 -2
- package/dist/linear/issues.js.map +1 -1
- package/dist/linear/projects.js +3 -2
- package/dist/linear/projects.js.map +1 -1
- package/dist/linear/sync.d.ts +15 -0
- package/dist/linear/sync.js +102 -0
- package/dist/linear/sync.js.map +1 -0
- package/dist/runner/loop.d.ts +4 -0
- package/dist/runner/loop.js +168 -0
- package/dist/runner/loop.js.map +1 -0
- package/dist/runner/prompt.d.ts +14 -0
- package/dist/runner/prompt.js +59 -0
- package/dist/runner/prompt.js.map +1 -0
- package/dist/runner/update.d.ts +1 -0
- package/dist/runner/update.js +72 -0
- package/dist/runner/update.js.map +1 -0
- package/dist/server.d.ts +6 -2
- package/dist/server.js +43 -101
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts +5 -0
- package/dist/setup.js +208 -0
- package/dist/setup.js.map +1 -0
- package/dist/state/cache.d.ts +3 -0
- package/dist/state/cache.js +23 -0
- package/dist/state/cache.js.map +1 -0
- package/dist/state/status.d.ts +66 -0
- package/dist/state/status.js +96 -0
- package/dist/state/status.js.map +1 -0
- package/dist/types.d.ts +46 -114
- package/dist/worktree/manager.d.ts +6 -103
- package/dist/worktree/manager.js +25 -296
- package/dist/worktree/manager.js.map +1 -1
- package/hooks/pre-commit-verify.js +109 -109
- package/package.json +3 -2
- package/skills/forge-go.md +583 -575
- package/skills/forge-setup.md +149 -388
- package/skills/forge-spec.md +367 -342
- package/skills/forge-triage.md +179 -133
- package/skills/forge-update.md +87 -93
package/dist/go/linear-sync.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { LinearClient, LinearClientError } from "../linear/client.js";
|
|
16
16
|
import { transitionProject } from "../linear/projects.js";
|
|
17
|
-
import { transitionMilestoneIssues } from "../linear/issues.js";
|
|
17
|
+
import { transitionMilestoneIssues, resolveStateId } from "../linear/issues.js";
|
|
18
18
|
import { findMilestoneByName } from "../linear/milestones.js";
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
// Safe Wrapper
|
|
@@ -99,8 +99,34 @@ export async function syncMilestoneStart(options) {
|
|
|
99
99
|
projectUpdated,
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
+
// Derive teamId from options or from milestone issues
|
|
103
|
+
let teamId = options.teamId;
|
|
104
|
+
if (!teamId) {
|
|
105
|
+
const milestoneIssues = await client.listIssues({
|
|
106
|
+
projectId: options.projectId,
|
|
107
|
+
milestoneId: milestone.id,
|
|
108
|
+
});
|
|
109
|
+
teamId = milestoneIssues[0]?.teamId;
|
|
110
|
+
}
|
|
111
|
+
if (!teamId) {
|
|
112
|
+
console.warn(`[linear-sync] No teamId available — cannot resolve state UUIDs. Skipping issue transitions.`);
|
|
113
|
+
// Still try to transition the project
|
|
114
|
+
let projectUpdated = false;
|
|
115
|
+
try {
|
|
116
|
+
await transitionProject(client, options.projectId, "In Progress");
|
|
117
|
+
projectUpdated = true;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Project may already be In Progress or beyond — that's fine
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
linearMilestoneId: milestone.id,
|
|
124
|
+
issuesUpdated: 0,
|
|
125
|
+
projectUpdated,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
102
128
|
// Transition milestone issues to In Progress
|
|
103
|
-
const { updated } = await transitionMilestoneIssues(client, options.projectId, milestone.id, "In Progress");
|
|
129
|
+
const { updated } = await transitionMilestoneIssues(client, options.projectId, milestone.id, "In Progress", teamId);
|
|
104
130
|
// Transition project to In Progress
|
|
105
131
|
let projectUpdated = false;
|
|
106
132
|
try {
|
|
@@ -169,11 +195,34 @@ export async function syncMilestoneComplete(options) {
|
|
|
169
195
|
const allIssues = await client.listIssues({
|
|
170
196
|
projectId: options.projectId,
|
|
171
197
|
});
|
|
198
|
+
// Resolve state UUIDs per team (state IDs are team-scoped)
|
|
199
|
+
const stateIdByTeam = new Map();
|
|
200
|
+
if (options.teamId) {
|
|
201
|
+
try {
|
|
202
|
+
const id = await resolveStateId(client, options.teamId, "In Review");
|
|
203
|
+
stateIdByTeam.set(options.teamId, id);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// State resolution failed for this team
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
for (const issue of allIssues) {
|
|
210
|
+
if (issue.teamId && !stateIdByTeam.has(issue.teamId)) {
|
|
211
|
+
try {
|
|
212
|
+
const id = await resolveStateId(client, issue.teamId, "In Review");
|
|
213
|
+
stateIdByTeam.set(issue.teamId, id);
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
// State resolution failed for this team — will fall back to name
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
172
220
|
let updatedCount = 0;
|
|
173
221
|
for (const issue of allIssues) {
|
|
174
222
|
if (issue.state !== "In Review" && issue.state !== "Done") {
|
|
175
223
|
try {
|
|
176
|
-
|
|
224
|
+
const issueStateId = issue.teamId ? stateIdByTeam.get(issue.teamId) : undefined;
|
|
225
|
+
await client.updateIssue(issue.id, issueStateId ? { stateId: issueStateId } : { state: "In Review" });
|
|
177
226
|
updatedCount++;
|
|
178
227
|
}
|
|
179
228
|
catch {
|
|
@@ -285,11 +334,25 @@ export async function syncProjectDone(options) {
|
|
|
285
334
|
const allIssues = await client.listIssues({
|
|
286
335
|
projectId: options.projectId,
|
|
287
336
|
});
|
|
337
|
+
// Resolve state UUIDs per team (state IDs are team-scoped)
|
|
338
|
+
const stateIdByTeam = new Map();
|
|
339
|
+
for (const issue of allIssues) {
|
|
340
|
+
if (issue.teamId && !stateIdByTeam.has(issue.teamId)) {
|
|
341
|
+
try {
|
|
342
|
+
const id = await resolveStateId(client, issue.teamId, "Done");
|
|
343
|
+
stateIdByTeam.set(issue.teamId, id);
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// State resolution failed for this team — will fall back to name
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
288
350
|
let updatedCount = 0;
|
|
289
351
|
for (const issue of allIssues) {
|
|
290
352
|
if (issue.state !== "Done" && issue.state !== "Canceled") {
|
|
291
353
|
try {
|
|
292
|
-
|
|
354
|
+
const issueStateId = issue.teamId ? stateIdByTeam.get(issue.teamId) : undefined;
|
|
355
|
+
await client.updateIssue(issue.id, issueStateId ? { stateId: issueStateId } : { state: "Done" });
|
|
293
356
|
updatedCount++;
|
|
294
357
|
}
|
|
295
358
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear-sync.js","sourceRoot":"","sources":["../../src/go/linear-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"linear-sync.js","sourceRoot":"","sources":["../../src/go/linear-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/linear/client.d.ts
CHANGED
|
@@ -1,108 +1,37 @@
|
|
|
1
|
+
export interface ForgeLinearClientOptions {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
teamId?: string;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* and the execution engine for programmatic Linear management.
|
|
6
|
+
* Thin wrapper around @linear/sdk's LinearClient, scoped to a team.
|
|
7
|
+
* All public methods degrade gracefully on API errors (warn, don't crash).
|
|
5
8
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
state
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
identifier
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
export interface CreateProjectInput {
|
|
36
|
-
name: string;
|
|
37
|
-
description?: string;
|
|
38
|
-
teamIds: string[];
|
|
39
|
-
state?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface UpdateProjectInput {
|
|
42
|
-
name?: string;
|
|
43
|
-
description?: string;
|
|
44
|
-
state?: string;
|
|
45
|
-
}
|
|
46
|
-
export interface CreateMilestoneInput {
|
|
47
|
-
projectId: string;
|
|
48
|
-
name: string;
|
|
49
|
-
description?: string;
|
|
50
|
-
targetDate?: string;
|
|
51
|
-
}
|
|
52
|
-
export interface CreateIssueInput {
|
|
53
|
-
title: string;
|
|
54
|
-
description?: string;
|
|
55
|
-
teamId: string;
|
|
56
|
-
projectId?: string;
|
|
57
|
-
milestoneId?: string;
|
|
58
|
-
priority?: number;
|
|
59
|
-
state?: string;
|
|
60
|
-
}
|
|
61
|
-
export interface UpdateIssueInput {
|
|
62
|
-
title?: string;
|
|
63
|
-
description?: string;
|
|
64
|
-
state?: string;
|
|
65
|
-
milestoneId?: string;
|
|
66
|
-
priority?: number;
|
|
67
|
-
}
|
|
68
|
-
export declare class LinearClientError extends Error {
|
|
69
|
-
readonly statusCode?: number | undefined;
|
|
70
|
-
readonly errors?: Array<{
|
|
71
|
-
message: string;
|
|
72
|
-
}> | undefined;
|
|
73
|
-
constructor(message: string, statusCode?: number | undefined, errors?: Array<{
|
|
74
|
-
message: string;
|
|
75
|
-
}> | undefined);
|
|
76
|
-
}
|
|
77
|
-
export declare class LinearClient {
|
|
78
|
-
private readonly apiKey;
|
|
79
|
-
constructor(apiKey?: string);
|
|
80
|
-
listProjects(opts?: {
|
|
81
|
-
query?: string;
|
|
82
|
-
state?: string;
|
|
83
|
-
}): Promise<LinearProject[]>;
|
|
84
|
-
createProject(input: CreateProjectInput): Promise<LinearProject>;
|
|
85
|
-
updateProject(id: string, input: UpdateProjectInput): Promise<LinearProject>;
|
|
86
|
-
listMilestones(projectId: string): Promise<LinearMilestone[]>;
|
|
87
|
-
createMilestone(input: CreateMilestoneInput): Promise<LinearMilestone>;
|
|
88
|
-
listIssues(opts?: {
|
|
89
|
-
projectId?: string;
|
|
90
|
-
milestoneId?: string;
|
|
91
|
-
state?: string;
|
|
92
|
-
}): Promise<LinearIssue[]>;
|
|
93
|
-
createIssue(input: CreateIssueInput): Promise<LinearIssue>;
|
|
94
|
-
updateIssue(id: string, input: UpdateIssueInput): Promise<LinearIssue>;
|
|
95
|
-
createComment(issueId: string, body: string): Promise<void>;
|
|
96
|
-
listTeams(): Promise<LinearTeam[]>;
|
|
97
|
-
/**
|
|
98
|
-
* Execute a GraphQL request against the Linear API with retry + backoff.
|
|
99
|
-
*/
|
|
100
|
-
private request;
|
|
101
|
-
/**
|
|
102
|
-
* Auto-paginate a connection query. The query MUST accept `$after: String`
|
|
103
|
-
* and the root field must return `{ pageInfo { hasNextPage endCursor } nodes { ... } }`.
|
|
104
|
-
*/
|
|
105
|
-
private paginate;
|
|
106
|
-
/** Normalize a raw issue node from GraphQL into our flat LinearIssue shape. */
|
|
107
|
-
private mapIssue;
|
|
9
|
+
export declare class ForgeLinearClient {
|
|
10
|
+
private readonly client;
|
|
11
|
+
private readonly teamId;
|
|
12
|
+
constructor(opts: ForgeLinearClientOptions);
|
|
13
|
+
/** Resolve a workflow state UUID by its display name for a given team. */
|
|
14
|
+
resolveStateId(teamId: string, stateName: string): Promise<string>;
|
|
15
|
+
/** Update an issue's workflow state. */
|
|
16
|
+
updateIssueState(issueId: string, stateId: string): Promise<void>;
|
|
17
|
+
/** Update a project's status (state name in Linear projects). */
|
|
18
|
+
updateProjectState(projectId: string, stateId: string): Promise<void>;
|
|
19
|
+
/** List all teams visible to the authenticated user. */
|
|
20
|
+
listTeams(): Promise<Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
key: string;
|
|
24
|
+
}>>;
|
|
25
|
+
/** List issues belonging to a project. Returns identifier (e.g. "MSIG-123") and title. */
|
|
26
|
+
listIssuesByProject(projectId: string): Promise<Array<{
|
|
27
|
+
id: string;
|
|
28
|
+
identifier: string;
|
|
29
|
+
title: string;
|
|
30
|
+
}>>;
|
|
31
|
+
/** List projects filtered by team. */
|
|
32
|
+
listProjects(teamId: string): Promise<Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
state: string;
|
|
36
|
+
}>>;
|
|
108
37
|
}
|