@supaku/agentfactory-linear 0.7.47 → 0.7.49
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.
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { AgentWorkType, SubIssueStatus } from '../types.js';
|
|
8
8
|
export declare const WORK_RESULT_MARKER_INSTRUCTION = "\n\nMANDATORY \u2014 Structured Result Marker:\nYou MUST include exactly one of these HTML comment markers in your final output:\n- On pass: <!-- WORK_RESULT:passed -->\n- On fail: <!-- WORK_RESULT:failed -->\nWithout this marker, the orchestrator CANNOT detect your result and the issue status will NOT be updated. Even if you encounter errors, always emit <!-- WORK_RESULT:failed -->.";
|
|
9
|
+
export declare const READ_ONLY_CONSTRAINT = "\n\nCRITICAL CONSTRAINT \u2014 READ-ONLY ROLE:\nYou are a VALIDATION agent, NOT a development agent. You MUST NOT modify any source code, configuration files, migration files, or project files. Your role is strictly to READ, VALIDATE, and REPORT.\nFORBIDDEN actions: creating files, editing files, writing code, committing changes, patching snapshots, fixing bugs, resolving errors in code.\nALLOWED actions: reading files, running tests, running builds, checking CI status, posting comments, merging PRs (acceptance only), updating Linear status.\nIf you discover issues (missing files, broken builds, failing tests), REPORT them in your result comment and emit WORK_RESULT:failed. Do NOT attempt to fix them.";
|
|
9
10
|
export declare const PR_SELECTION_GUIDANCE = "\n\nPR Selection (Multi-PR Handling):\nIssues may have multiple PRs. Select the correct one:\n1. Check linked PRs in the issue attachments/links for GitHub PR URLs\n2. Filter by state \u2014 prefer OPEN over MERGED over CLOSED: gh pr view NNN --json state\n3. If multiple OPEN PRs, pick the most recently created one\n4. Fallback search by branch: gh pr list --head \"$(git branch --show-current)\" --state open\n5. Last resort search by issue ID: gh pr list --state open --search \"[issue-id]\"\n6. If no PR found, emit WORK_RESULT:failed with explanation";
|
|
10
11
|
/**
|
|
11
12
|
* Context from the workflow state machine for retry enrichment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/defaults/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAahE,eAAO,MAAM,8BAA8B,uYAMsI,CAAA;AAEjL,eAAO,MAAM,qBAAqB,ijBAS0B,CAAA;AAE5D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,eAAe,GACvB,MAAM,CA0DR;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,eAAe,GAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/defaults/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAahE,eAAO,MAAM,8BAA8B,uYAMsI,CAAA;AAEjL,eAAO,MAAM,oBAAoB,2sBAMiI,CAAA;AAElK,eAAO,MAAM,qBAAqB,ijBAS0B,CAAA;AAE5D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,eAAe,GACvB,MAAM,CA0DR;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,eAAe,GAChC,MAAM,CAiJR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,cAAc,EAAE,GACjC,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,cAAc,EAAE,GACjC,MAAM,CAmBR"}
|
|
@@ -21,6 +21,13 @@ You MUST include exactly one of these HTML comment markers in your final output:
|
|
|
21
21
|
- On pass: <!-- WORK_RESULT:passed -->
|
|
22
22
|
- On fail: <!-- WORK_RESULT:failed -->
|
|
23
23
|
Without this marker, the orchestrator CANNOT detect your result and the issue status will NOT be updated. Even if you encounter errors, always emit <!-- WORK_RESULT:failed -->.`;
|
|
24
|
+
export const READ_ONLY_CONSTRAINT = `
|
|
25
|
+
|
|
26
|
+
CRITICAL CONSTRAINT — READ-ONLY ROLE:
|
|
27
|
+
You are a VALIDATION agent, NOT a development agent. You MUST NOT modify any source code, configuration files, migration files, or project files. Your role is strictly to READ, VALIDATE, and REPORT.
|
|
28
|
+
FORBIDDEN actions: creating files, editing files, writing code, committing changes, patching snapshots, fixing bugs, resolving errors in code.
|
|
29
|
+
ALLOWED actions: reading files, running tests, running builds, checking CI status, posting comments, merging PRs (acceptance only), updating Linear status.
|
|
30
|
+
If you discover issues (missing files, broken builds, failing tests), REPORT them in your result comment and emit WORK_RESULT:failed. Do NOT attempt to fix them.`;
|
|
24
31
|
export const PR_SELECTION_GUIDANCE = `
|
|
25
32
|
|
|
26
33
|
PR Selection (Multi-PR Handling):
|
|
@@ -123,6 +130,7 @@ Do NOT wait for user approval - create issues automatically.`;
|
|
|
123
130
|
break;
|
|
124
131
|
case 'qa':
|
|
125
132
|
basePrompt = `QA ${identifier}. Validate the implementation against acceptance criteria.
|
|
133
|
+
${READ_ONLY_CONSTRAINT}
|
|
126
134
|
${WORK_RESULT_MARKER_INSTRUCTION}
|
|
127
135
|
${PR_SELECTION_GUIDANCE}
|
|
128
136
|
|
|
@@ -136,6 +144,7 @@ Validation Steps:
|
|
|
136
144
|
break;
|
|
137
145
|
case 'acceptance':
|
|
138
146
|
basePrompt = `Process acceptance for ${identifier}. Validate development and QA work is complete, verify PR is ready to merge (CI passing, no conflicts), merge the PR, and clean up local resources.
|
|
147
|
+
${READ_ONLY_CONSTRAINT}
|
|
139
148
|
${WORK_RESULT_MARKER_INSTRUCTION}
|
|
140
149
|
${PR_SELECTION_GUIDANCE}
|
|
141
150
|
|
|
@@ -150,8 +159,32 @@ Acceptance Steps:
|
|
|
150
159
|
case 'refinement':
|
|
151
160
|
basePrompt = `Refine ${identifier} based on rejection feedback. Read comments, update requirements, then return to Backlog.`;
|
|
152
161
|
break;
|
|
153
|
-
case 'coordination':
|
|
154
|
-
|
|
162
|
+
case 'coordination': {
|
|
163
|
+
const isRetry = workflowContext && workflowContext.cycleCount > 0;
|
|
164
|
+
if (isRetry) {
|
|
165
|
+
basePrompt = `Fix issues found during QA for parent issue ${identifier}.
|
|
166
|
+
|
|
167
|
+
REWORK MODE — DO NOT re-coordinate sub-issues from scratch.
|
|
168
|
+
All sub-issues are already Finished and a PR already exists. QA failed and specific fixes are needed.
|
|
169
|
+
|
|
170
|
+
MANDATORY FIRST STEPS:
|
|
171
|
+
1. Read the most recent QA failure comments: pnpm af-linear list-comments ${identifier}
|
|
172
|
+
2. Identify the SPECIFIC fixes needed from the QA failure details below
|
|
173
|
+
3. Apply fixes directly — do NOT re-spawn sub-agents for already-complete work
|
|
174
|
+
4. Commit fixes, push to the existing PR branch
|
|
175
|
+
5. Run full validation: pnpm typecheck && pnpm build && pnpm test
|
|
176
|
+
6. Update parent issue status to Finished
|
|
177
|
+
|
|
178
|
+
COMMON REWORK FIXES:
|
|
179
|
+
- Missing migration .json snapshots: Find .ts migrations without .json, patch the latest snapshot
|
|
180
|
+
- TypeScript errors: Read the error details, fix the type issues
|
|
181
|
+
- Missing API fields: Update route handlers to include missing fields
|
|
182
|
+
- Build failures: Run pnpm build, diagnose, fix
|
|
183
|
+
|
|
184
|
+
If the existing PR branch is checked out, work directly on it. Do not create a new branch or PR.`;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
basePrompt = `Coordinate sub-issue execution for parent issue ${identifier}. Fetch sub-issues with dependency graph, create tasks mapping to each sub-issue, spawn sub-agents for unblocked sub-issues in parallel, monitor completion, and create a single PR with all changes when done.
|
|
155
188
|
|
|
156
189
|
SUB-ISSUE STATUS MANAGEMENT:
|
|
157
190
|
Update sub-issue statuses in Linear as work progresses:
|
|
@@ -162,14 +195,47 @@ Update sub-issue statuses in Linear as work progresses:
|
|
|
162
195
|
COMPLETION VERIFICATION:
|
|
163
196
|
Before marking the parent issue as complete, verify ALL sub-issues are in Finished status.
|
|
164
197
|
If any sub-issue is not Finished, report the failure and do not mark the parent as complete.`;
|
|
198
|
+
}
|
|
165
199
|
break;
|
|
200
|
+
}
|
|
166
201
|
case 'qa-coordination':
|
|
167
|
-
basePrompt = `Coordinate QA across sub-issues for parent issue ${identifier}. Fetch sub-issues,
|
|
168
|
-
${
|
|
202
|
+
basePrompt = `Coordinate QA across sub-issues for parent issue ${identifier}. Fetch sub-issues, validate each against acceptance criteria, collect pass/fail results, and roll up to parent.
|
|
203
|
+
${READ_ONLY_CONSTRAINT}
|
|
204
|
+
${WORK_RESULT_MARKER_INSTRUCTION}
|
|
205
|
+
${PR_SELECTION_GUIDANCE}
|
|
206
|
+
|
|
207
|
+
QA Coordination Steps:
|
|
208
|
+
1. Find and validate the correct PR (see PR selection above)
|
|
209
|
+
2. Fetch all sub-issues and verify each is in Finished or later status
|
|
210
|
+
3. Run tests scoped to the affected packages
|
|
211
|
+
4. Verify the build passes (pnpm typecheck && pnpm build)
|
|
212
|
+
5. Review changes against each sub-issue's acceptance criteria
|
|
213
|
+
6. Verify cross-cutting concerns: shared types, API contracts, data flow between sub-issues
|
|
214
|
+
7. Check deployment status (CI checks on the PR)
|
|
215
|
+
|
|
216
|
+
Pass/Fail:
|
|
217
|
+
- PASS (emit <!-- WORK_RESULT:passed -->): ALL tests pass, build succeeds, all sub-issues implemented, deployment healthy
|
|
218
|
+
- FAIL (emit <!-- WORK_RESULT:failed -->): ANY test failure, build error, missing implementation, deployment failure
|
|
219
|
+
Post a result comment listing per-sub-issue findings, then emit the marker.`;
|
|
169
220
|
break;
|
|
170
221
|
case 'acceptance-coordination':
|
|
171
|
-
basePrompt = `Coordinate acceptance across sub-issues for parent issue ${identifier}. Verify all sub-issues are Delivered, validate the PR
|
|
172
|
-
${
|
|
222
|
+
basePrompt = `Coordinate acceptance across sub-issues for parent issue ${identifier}. Verify all sub-issues are Delivered, validate the PR, merge it, and bulk-update sub-issues to Accepted.
|
|
223
|
+
${READ_ONLY_CONSTRAINT}
|
|
224
|
+
${WORK_RESULT_MARKER_INSTRUCTION}
|
|
225
|
+
${PR_SELECTION_GUIDANCE}
|
|
226
|
+
|
|
227
|
+
Acceptance Coordination Steps:
|
|
228
|
+
1. Find and validate the correct PR (see PR selection above)
|
|
229
|
+
2. Verify ALL sub-issues are in Delivered or Accepted status
|
|
230
|
+
3. Verify CI is passing and there are no merge conflicts
|
|
231
|
+
4. Merge the PR
|
|
232
|
+
5. Delete the remote branch after successful merge
|
|
233
|
+
6. Post result comment with per-sub-issue status, then emit the marker
|
|
234
|
+
|
|
235
|
+
Pass/Fail:
|
|
236
|
+
- PASS (emit <!-- WORK_RESULT:passed -->): All sub-issues Delivered, CI passing, PR merged successfully
|
|
237
|
+
- FAIL (emit <!-- WORK_RESULT:failed -->): Incomplete sub-issues, CI failure, merge conflicts, merge failed
|
|
238
|
+
If ANY issue prevents merging, do NOT attempt to fix it — emit WORK_RESULT:failed with details.`;
|
|
173
239
|
break;
|
|
174
240
|
}
|
|
175
241
|
basePrompt += HUMAN_BLOCKER_INSTRUCTION;
|
|
@@ -52,6 +52,16 @@ describe('buildFailureContextBlock', () => {
|
|
|
52
52
|
expect(result).toContain('retry #2');
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
|
+
describe('qa-coordination work type', () => {
|
|
56
|
+
it('returns empty string when no failure summary', () => {
|
|
57
|
+
expect(buildFailureContextBlock('qa-coordination', { ...baseContext, failureSummary: null })).toBe('');
|
|
58
|
+
});
|
|
59
|
+
it('includes previous QA results when failure summary exists', () => {
|
|
60
|
+
const result = buildFailureContextBlock('qa-coordination', baseContext);
|
|
61
|
+
expect(result).toContain('Previous QA Results');
|
|
62
|
+
expect(result).toContain('TypeError in UserService');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
55
65
|
describe('qa work type', () => {
|
|
56
66
|
it('returns empty string when no failure summary', () => {
|
|
57
67
|
expect(buildFailureContextBlock('qa', { ...baseContext, failureSummary: null })).toBe('');
|
|
@@ -128,3 +138,126 @@ describe('defaultGeneratePrompt with workflowContext', () => {
|
|
|
128
138
|
expect(result).toContain('Please focus on the API layer');
|
|
129
139
|
});
|
|
130
140
|
});
|
|
141
|
+
describe('defaultGeneratePrompt read-only constraint', () => {
|
|
142
|
+
const readOnlyWorkTypes = ['qa', 'acceptance', 'qa-coordination', 'acceptance-coordination'];
|
|
143
|
+
for (const workType of readOnlyWorkTypes) {
|
|
144
|
+
it(`includes READ-ONLY constraint for ${workType}`, () => {
|
|
145
|
+
const result = defaultGeneratePrompt('PROJ-123', workType);
|
|
146
|
+
expect(result).toContain('READ-ONLY ROLE');
|
|
147
|
+
expect(result).toContain('MUST NOT modify any source code');
|
|
148
|
+
expect(result).toContain('WORK_RESULT:failed');
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const writableWorkTypes = ['development', 'coordination', 'refinement', 'research', 'backlog-creation', 'inflight'];
|
|
152
|
+
for (const workType of writableWorkTypes) {
|
|
153
|
+
it(`does NOT include READ-ONLY constraint for ${workType}`, () => {
|
|
154
|
+
const result = defaultGeneratePrompt('PROJ-123', workType);
|
|
155
|
+
expect(result).not.toContain('READ-ONLY ROLE');
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
describe('defaultGeneratePrompt coordination prompts have steps', () => {
|
|
160
|
+
it('qa-coordination includes numbered steps and pass/fail criteria', () => {
|
|
161
|
+
const result = defaultGeneratePrompt('PROJ-100', 'qa-coordination');
|
|
162
|
+
expect(result).toContain('QA Coordination Steps:');
|
|
163
|
+
expect(result).toContain('1. Find and validate the correct PR');
|
|
164
|
+
expect(result).toContain('Pass/Fail:');
|
|
165
|
+
expect(result).toContain('WORK_RESULT:passed');
|
|
166
|
+
expect(result).toContain('WORK_RESULT:failed');
|
|
167
|
+
expect(result).toContain('PR Selection');
|
|
168
|
+
});
|
|
169
|
+
it('acceptance-coordination includes numbered steps and pass/fail criteria', () => {
|
|
170
|
+
const result = defaultGeneratePrompt('PROJ-100', 'acceptance-coordination');
|
|
171
|
+
expect(result).toContain('Acceptance Coordination Steps:');
|
|
172
|
+
expect(result).toContain('1. Find and validate the correct PR');
|
|
173
|
+
expect(result).toContain('Merge the PR');
|
|
174
|
+
expect(result).toContain('Pass/Fail:');
|
|
175
|
+
expect(result).toContain('WORK_RESULT:passed');
|
|
176
|
+
expect(result).toContain('WORK_RESULT:failed');
|
|
177
|
+
expect(result).toContain('do NOT attempt to fix it');
|
|
178
|
+
expect(result).toContain('PR Selection');
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('defaultGeneratePrompt coordination retry', () => {
|
|
182
|
+
it('uses fresh coordination prompt when no workflowContext', () => {
|
|
183
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination');
|
|
184
|
+
expect(result).toContain('Coordinate sub-issue execution for parent issue PROJ-100');
|
|
185
|
+
expect(result).toContain('Fetch sub-issues with dependency graph');
|
|
186
|
+
expect(result).not.toContain('REWORK MODE');
|
|
187
|
+
});
|
|
188
|
+
it('uses fresh coordination prompt when cycleCount is 0', () => {
|
|
189
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
190
|
+
cycleCount: 0,
|
|
191
|
+
strategy: 'normal',
|
|
192
|
+
failureSummary: null,
|
|
193
|
+
});
|
|
194
|
+
expect(result).toContain('Coordinate sub-issue execution for parent issue PROJ-100');
|
|
195
|
+
expect(result).not.toContain('REWORK MODE');
|
|
196
|
+
});
|
|
197
|
+
it('switches to rework mode when cycleCount > 0', () => {
|
|
198
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
199
|
+
cycleCount: 1,
|
|
200
|
+
strategy: 'context-enriched',
|
|
201
|
+
failureSummary: '2 migrations missing .json snapshots',
|
|
202
|
+
});
|
|
203
|
+
expect(result).toContain('REWORK MODE');
|
|
204
|
+
expect(result).toContain('Fix issues found during QA for parent issue PROJ-100');
|
|
205
|
+
expect(result).toContain('DO NOT re-coordinate sub-issues from scratch');
|
|
206
|
+
expect(result).toContain('pnpm af-linear list-comments PROJ-100');
|
|
207
|
+
expect(result).not.toContain('Fetch sub-issues with dependency graph');
|
|
208
|
+
});
|
|
209
|
+
it('includes common rework fixes in rework mode', () => {
|
|
210
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
211
|
+
cycleCount: 2,
|
|
212
|
+
strategy: 'context-enriched',
|
|
213
|
+
failureSummary: 'Build failed',
|
|
214
|
+
});
|
|
215
|
+
expect(result).toContain('Missing migration .json snapshots');
|
|
216
|
+
expect(result).toContain('TypeScript errors');
|
|
217
|
+
expect(result).toContain('Missing API fields');
|
|
218
|
+
expect(result).toContain('Build failures');
|
|
219
|
+
});
|
|
220
|
+
it('appends failure context block in rework mode', () => {
|
|
221
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
222
|
+
cycleCount: 2,
|
|
223
|
+
strategy: 'context-enriched',
|
|
224
|
+
failureSummary: 'Tests failed: missing snapshot for 20260308_migration.ts',
|
|
225
|
+
});
|
|
226
|
+
expect(result).toContain('REWORK MODE');
|
|
227
|
+
expect(result).toContain('Retry Context');
|
|
228
|
+
expect(result).toContain('retry #2');
|
|
229
|
+
expect(result).toContain('missing snapshot for 20260308_migration.ts');
|
|
230
|
+
});
|
|
231
|
+
it('includes mention context alongside rework mode', () => {
|
|
232
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', 'Focus on the migration snapshots', {
|
|
233
|
+
cycleCount: 1,
|
|
234
|
+
strategy: 'normal',
|
|
235
|
+
failureSummary: 'Missing .json snapshots',
|
|
236
|
+
});
|
|
237
|
+
expect(result).toContain('REWORK MODE');
|
|
238
|
+
expect(result).toContain('Focus on the migration snapshots');
|
|
239
|
+
});
|
|
240
|
+
it('instructs agent to use existing PR branch', () => {
|
|
241
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
242
|
+
cycleCount: 1,
|
|
243
|
+
strategy: 'normal',
|
|
244
|
+
failureSummary: null,
|
|
245
|
+
});
|
|
246
|
+
expect(result).toContain('Do not create a new branch or PR');
|
|
247
|
+
expect(result).toContain('push to the existing PR branch');
|
|
248
|
+
});
|
|
249
|
+
it('includes sub-issue status management in fresh coordination', () => {
|
|
250
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination');
|
|
251
|
+
expect(result).toContain('SUB-ISSUE STATUS MANAGEMENT');
|
|
252
|
+
expect(result).toContain('COMPLETION VERIFICATION');
|
|
253
|
+
});
|
|
254
|
+
it('does not include sub-issue status management in rework mode', () => {
|
|
255
|
+
const result = defaultGeneratePrompt('PROJ-100', 'coordination', undefined, {
|
|
256
|
+
cycleCount: 1,
|
|
257
|
+
strategy: 'normal',
|
|
258
|
+
failureSummary: 'QA failed',
|
|
259
|
+
});
|
|
260
|
+
expect(result).not.toContain('SUB-ISSUE STATUS MANAGEMENT');
|
|
261
|
+
expect(result).not.toContain('COMPLETION VERIFICATION');
|
|
262
|
+
});
|
|
263
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supaku/agentfactory-linear",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.49",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Linear issue tracker integration for AgentFactory — status transitions, agent sessions, work routing",
|
|
6
6
|
"author": "Supaku (https://supaku.com)",
|