@renseiai/agentfactory 0.8.16 → 0.8.18
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/dist/src/merge-queue/adapters/github-native.d.ts +8 -0
- package/dist/src/merge-queue/adapters/github-native.d.ts.map +1 -1
- package/dist/src/merge-queue/adapters/github-native.js +37 -7
- package/dist/src/merge-queue/adapters/github-native.test.js +71 -42
- package/dist/src/orchestrator/activity-emitter.d.ts +7 -0
- package/dist/src/orchestrator/activity-emitter.d.ts.map +1 -1
- package/dist/src/orchestrator/activity-emitter.js +19 -1
- package/dist/src/orchestrator/api-activity-emitter.d.ts +6 -0
- package/dist/src/orchestrator/api-activity-emitter.d.ts.map +1 -1
- package/dist/src/orchestrator/api-activity-emitter.js +35 -0
- package/dist/src/orchestrator/completion-contracts.js +1 -1
- package/dist/src/orchestrator/completion-contracts.test.js +3 -3
- package/dist/src/orchestrator/index.d.ts +2 -0
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +1 -0
- package/dist/src/orchestrator/issue-tracker-client.d.ts +2 -1
- package/dist/src/orchestrator/issue-tracker-client.d.ts.map +1 -1
- package/dist/src/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/src/orchestrator/orchestrator.js +42 -0
- package/dist/src/orchestrator/security-scan-event.d.ts +57 -0
- package/dist/src/orchestrator/security-scan-event.d.ts.map +1 -0
- package/dist/src/orchestrator/security-scan-event.js +192 -0
- package/dist/src/orchestrator/security-scan-event.test.d.ts +2 -0
- package/dist/src/orchestrator/security-scan-event.test.d.ts.map +1 -0
- package/dist/src/orchestrator/security-scan-event.test.js +219 -0
- package/dist/src/orchestrator/session-backstop.d.ts.map +1 -1
- package/dist/src/orchestrator/session-backstop.js +73 -0
- package/dist/src/orchestrator/session-backstop.test.js +65 -0
- package/dist/src/orchestrator/state-recovery.d.ts.map +1 -1
- package/dist/src/orchestrator/state-recovery.js +1 -0
- package/dist/src/orchestrator/work-types.d.ts +1 -1
- package/dist/src/orchestrator/work-types.d.ts.map +1 -1
- package/dist/src/providers/types.d.ts +1 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/templates/registry.test.js +3 -2
- package/dist/src/templates/types.d.ts +2 -0
- package/dist/src/templates/types.d.ts.map +1 -1
- package/dist/src/templates/types.js +1 -0
- package/dist/src/tools/index.d.ts +2 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +1 -0
- package/dist/src/tools/tool-category.d.ts +16 -0
- package/dist/src/tools/tool-category.d.ts.map +1 -0
- package/dist/src/tools/tool-category.js +58 -0
- package/package.json +2 -2
|
@@ -12,6 +12,14 @@ export declare class GitHubNativeMergeQueueAdapter implements MergeQueueAdapter
|
|
|
12
12
|
getStatus(owner: string, repo: string, prNumber: number): Promise<MergeQueueStatus>;
|
|
13
13
|
dequeue(owner: string, repo: string, prNumber: number): Promise<void>;
|
|
14
14
|
isEnabled(owner: string, repo: string): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Check if merge queue is enabled via GitHub Rulesets (the modern replacement
|
|
17
|
+
* for legacy branch protection rules).
|
|
18
|
+
*
|
|
19
|
+
* Queries the REST API for active rules on the default branch and checks
|
|
20
|
+
* for a 'merge_queue' rule type.
|
|
21
|
+
*/
|
|
22
|
+
private checkRulesetsMergeQueue;
|
|
15
23
|
/** Get the GraphQL node ID for a PR */
|
|
16
24
|
private getPRNodeId;
|
|
17
25
|
/** Execute a GraphQL query/mutation via gh CLI with retry */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-native.d.ts","sourceRoot":"","sources":["../../../../src/merge-queue/adapters/github-native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAatE,qBAAa,6BAA8B,YAAW,iBAAiB;IACrE,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;IAElC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"github-native.d.ts","sourceRoot":"","sources":["../../../../src/merge-queue/adapters/github-native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAatE,qBAAa,6BAA8B,YAAW,iBAAiB;IACrE,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;IAElC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC3E,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCjF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+FnF,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC9D;;;;;;OAMG;YACW,uBAAuB;IAwBrC,uCAAuC;YACzB,WAAW;IAiBzB,6DAA6D;YAC/C,OAAO;IAgCrB,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;CAgBzB"}
|
|
@@ -24,11 +24,6 @@ export class GitHubNativeMergeQueueAdapter {
|
|
|
24
24
|
mergeable
|
|
25
25
|
reviewDecision
|
|
26
26
|
mergeQueueEntry { state }
|
|
27
|
-
baseRef {
|
|
28
|
-
branchProtectionRule {
|
|
29
|
-
requiresStatusChecks
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
29
|
}
|
|
@@ -156,6 +151,18 @@ export class GitHubNativeMergeQueueAdapter {
|
|
|
156
151
|
await this.graphql(mutation, { prId });
|
|
157
152
|
}
|
|
158
153
|
async isEnabled(owner, repo) {
|
|
154
|
+
// Check rulesets first (modern path), then fall back to legacy branch protection.
|
|
155
|
+
// GitHub is deprecating legacy branch protection rules in favor of rulesets.
|
|
156
|
+
// 1. Check rulesets via REST API — look for merge_queue rule on the default branch
|
|
157
|
+
try {
|
|
158
|
+
const rulesEnabled = await this.checkRulesetsMergeQueue(owner, repo);
|
|
159
|
+
if (rulesEnabled)
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Rulesets API may not be available (older GHES), fall through to legacy
|
|
164
|
+
}
|
|
165
|
+
// 2. Fall back to legacy branch protection GraphQL query
|
|
159
166
|
try {
|
|
160
167
|
const query = `
|
|
161
168
|
query($owner: String!, $repo: String!) {
|
|
@@ -168,8 +175,6 @@ export class GitHubNativeMergeQueueAdapter {
|
|
|
168
175
|
}
|
|
169
176
|
}
|
|
170
177
|
`;
|
|
171
|
-
// Note: requiresMergeQueue might not be available in all GitHub API versions.
|
|
172
|
-
// Fallback: check if merge queue entries exist
|
|
173
178
|
const result = await this.graphql(query, { owner, repo });
|
|
174
179
|
return result.repository.defaultBranchRef?.branchProtectionRule?.requiresMergeQueue ?? false;
|
|
175
180
|
}
|
|
@@ -177,6 +182,31 @@ export class GitHubNativeMergeQueueAdapter {
|
|
|
177
182
|
return false;
|
|
178
183
|
}
|
|
179
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Check if merge queue is enabled via GitHub Rulesets (the modern replacement
|
|
187
|
+
* for legacy branch protection rules).
|
|
188
|
+
*
|
|
189
|
+
* Queries the REST API for active rules on the default branch and checks
|
|
190
|
+
* for a 'merge_queue' rule type.
|
|
191
|
+
*/
|
|
192
|
+
async checkRulesetsMergeQueue(owner, repo) {
|
|
193
|
+
const command = `gh api repos/${owner}/${repo}/rules/branches/main --jq '[.[] | select(.type == "merge_queue")] | length'`;
|
|
194
|
+
let lastError = null;
|
|
195
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
196
|
+
try {
|
|
197
|
+
const { stdout } = await execAsync(command, { timeout: GH_API_TIMEOUT });
|
|
198
|
+
const count = parseInt(stdout.trim(), 10);
|
|
199
|
+
return count > 0;
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
203
|
+
if (attempt < MAX_RETRIES) {
|
|
204
|
+
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY * (attempt + 1)));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
throw lastError;
|
|
209
|
+
}
|
|
180
210
|
// ---------------------------------------------------------------------------
|
|
181
211
|
// Private helpers
|
|
182
212
|
// ---------------------------------------------------------------------------
|
|
@@ -44,9 +44,6 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
44
44
|
mergeable: 'MERGEABLE',
|
|
45
45
|
reviewDecision: 'APPROVED',
|
|
46
46
|
mergeQueueEntry: null,
|
|
47
|
-
baseRef: {
|
|
48
|
-
branchProtectionRule: { requiresStatusChecks: true },
|
|
49
|
-
},
|
|
50
47
|
},
|
|
51
48
|
},
|
|
52
49
|
});
|
|
@@ -60,9 +57,6 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
60
57
|
mergeable: 'MERGEABLE',
|
|
61
58
|
reviewDecision: 'APPROVED',
|
|
62
59
|
mergeQueueEntry: { state: 'QUEUED' },
|
|
63
|
-
baseRef: {
|
|
64
|
-
branchProtectionRule: { requiresStatusChecks: true },
|
|
65
|
-
},
|
|
66
60
|
},
|
|
67
61
|
},
|
|
68
62
|
});
|
|
@@ -76,9 +70,6 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
76
70
|
mergeable: 'CONFLICTING',
|
|
77
71
|
reviewDecision: 'APPROVED',
|
|
78
72
|
mergeQueueEntry: null,
|
|
79
|
-
baseRef: {
|
|
80
|
-
branchProtectionRule: { requiresStatusChecks: true },
|
|
81
|
-
},
|
|
82
73
|
},
|
|
83
74
|
},
|
|
84
75
|
});
|
|
@@ -92,9 +83,6 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
92
83
|
mergeable: 'MERGEABLE',
|
|
93
84
|
reviewDecision: 'CHANGES_REQUESTED',
|
|
94
85
|
mergeQueueEntry: null,
|
|
95
|
-
baseRef: {
|
|
96
|
-
branchProtectionRule: { requiresStatusChecks: true },
|
|
97
|
-
},
|
|
98
86
|
},
|
|
99
87
|
},
|
|
100
88
|
});
|
|
@@ -108,9 +96,6 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
108
96
|
mergeable: 'MERGEABLE',
|
|
109
97
|
reviewDecision: null,
|
|
110
98
|
mergeQueueEntry: null,
|
|
111
|
-
baseRef: {
|
|
112
|
-
branchProtectionRule: null,
|
|
113
|
-
},
|
|
114
99
|
},
|
|
115
100
|
},
|
|
116
101
|
});
|
|
@@ -300,47 +285,89 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
300
285
|
});
|
|
301
286
|
});
|
|
302
287
|
describe('isEnabled', () => {
|
|
303
|
-
it('returns true when merge queue is
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
},
|
|
288
|
+
it('returns true when merge queue is enabled via rulesets', async () => {
|
|
289
|
+
// First call: rulesets REST API check (returns merge_queue rule count)
|
|
290
|
+
mockExec.mockImplementationOnce((_cmd, _opts, callback) => {
|
|
291
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
292
|
+
cb?.(null, { stdout: '1\n' });
|
|
293
|
+
return {};
|
|
310
294
|
});
|
|
311
295
|
const result = await adapter.isEnabled('owner', 'repo');
|
|
312
296
|
expect(result).toBe(true);
|
|
313
297
|
});
|
|
314
|
-
it('
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
298
|
+
it('falls back to legacy branch protection when rulesets API fails', async () => {
|
|
299
|
+
// First call: rulesets check fails
|
|
300
|
+
mockExec.mockImplementationOnce((_cmd, _opts, callback) => {
|
|
301
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
302
|
+
cb?.(new Error('Not found'), { stdout: '' });
|
|
303
|
+
return {};
|
|
304
|
+
});
|
|
305
|
+
// Retry 1 for rulesets
|
|
306
|
+
mockExec.mockImplementationOnce((_cmd, _opts, callback) => {
|
|
307
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
308
|
+
cb?.(new Error('Not found'), { stdout: '' });
|
|
309
|
+
return {};
|
|
310
|
+
});
|
|
311
|
+
// Retry 2 for rulesets
|
|
312
|
+
mockExec.mockImplementationOnce((_cmd, _opts, callback) => {
|
|
313
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
314
|
+
cb?.(new Error('Not found'), { stdout: '' });
|
|
315
|
+
return {};
|
|
316
|
+
});
|
|
317
|
+
// Legacy GraphQL check succeeds
|
|
318
|
+
mockExec.mockImplementation((_cmd, _opts, callback) => {
|
|
319
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
320
|
+
cb?.(null, {
|
|
321
|
+
stdout: JSON.stringify({
|
|
322
|
+
data: {
|
|
323
|
+
repository: {
|
|
324
|
+
defaultBranchRef: {
|
|
325
|
+
branchProtectionRule: { requiresMergeQueue: true },
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
}),
|
|
330
|
+
});
|
|
331
|
+
return {};
|
|
321
332
|
});
|
|
322
333
|
const result = await adapter.isEnabled('owner', 'repo');
|
|
323
|
-
expect(result).toBe(
|
|
334
|
+
expect(result).toBe(true);
|
|
324
335
|
});
|
|
325
|
-
it('returns false when no branch protection', async () => {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
336
|
+
it('returns false when no rulesets and no legacy branch protection', async () => {
|
|
337
|
+
// Rulesets check returns 0
|
|
338
|
+
mockExec.mockImplementationOnce((_cmd, _opts, callback) => {
|
|
339
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
340
|
+
cb?.(null, { stdout: '0\n' });
|
|
341
|
+
return {};
|
|
342
|
+
});
|
|
343
|
+
// Legacy check returns no merge queue
|
|
344
|
+
mockExec.mockImplementation((_cmd, _opts, callback) => {
|
|
345
|
+
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
346
|
+
cb?.(null, {
|
|
347
|
+
stdout: JSON.stringify({
|
|
348
|
+
data: {
|
|
349
|
+
repository: {
|
|
350
|
+
defaultBranchRef: {
|
|
351
|
+
branchProtectionRule: null,
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
}),
|
|
356
|
+
});
|
|
357
|
+
return {};
|
|
332
358
|
});
|
|
333
359
|
const result = await adapter.isEnabled('owner', 'repo');
|
|
334
360
|
expect(result).toBe(false);
|
|
335
361
|
});
|
|
336
|
-
it('returns false on API
|
|
362
|
+
it('returns false on all API errors', async () => {
|
|
337
363
|
mockGraphQLError('Not found');
|
|
338
364
|
const result = await adapter.isEnabled('owner', 'repo');
|
|
339
365
|
expect(result).toBe(false);
|
|
340
|
-
});
|
|
366
|
+
}, 15000);
|
|
341
367
|
});
|
|
342
368
|
describe('graphql retry logic', () => {
|
|
343
369
|
it('retries on transient failure then succeeds', async () => {
|
|
370
|
+
// Test retry logic via canEnqueue (simpler path — no rulesets fallback)
|
|
344
371
|
let callCount = 0;
|
|
345
372
|
mockExec.mockImplementation((_cmd, _opts, callback) => {
|
|
346
373
|
const cb = typeof _opts === 'function' ? _opts : callback;
|
|
@@ -353,8 +380,10 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
353
380
|
stdout: JSON.stringify({
|
|
354
381
|
data: {
|
|
355
382
|
repository: {
|
|
356
|
-
|
|
357
|
-
|
|
383
|
+
pullRequest: {
|
|
384
|
+
mergeable: 'MERGEABLE',
|
|
385
|
+
reviewDecision: 'APPROVED',
|
|
386
|
+
mergeQueueEntry: null,
|
|
358
387
|
},
|
|
359
388
|
},
|
|
360
389
|
},
|
|
@@ -363,7 +392,7 @@ describe('GitHubNativeMergeQueueAdapter', () => {
|
|
|
363
392
|
}
|
|
364
393
|
return {};
|
|
365
394
|
});
|
|
366
|
-
const result = await adapter.
|
|
395
|
+
const result = await adapter.canEnqueue('owner', 'repo', 1);
|
|
367
396
|
expect(result).toBe(true);
|
|
368
397
|
expect(callCount).toBe(2);
|
|
369
398
|
});
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* - error → error (persisted)
|
|
14
14
|
*/
|
|
15
15
|
import type { IssueTrackerSession } from './issue-tracker-client.js';
|
|
16
|
+
import type { SecurityScanEvent } from './security-scan-event.js';
|
|
16
17
|
/** Configuration for the activity emitter */
|
|
17
18
|
export interface ActivityEmitterConfig {
|
|
18
19
|
/** Issue tracker session to emit activities to */
|
|
@@ -62,6 +63,12 @@ export declare class ActivityEmitter {
|
|
|
62
63
|
* Emit an error activity (persisted)
|
|
63
64
|
*/
|
|
64
65
|
emitError(error: Error | string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Emit a security scan event.
|
|
68
|
+
* For direct-to-Linear emitters, this emits as a persistent thought activity
|
|
69
|
+
* containing the structured scan data.
|
|
70
|
+
*/
|
|
71
|
+
emitSecurityScan(event: SecurityScanEvent): Promise<void>;
|
|
65
72
|
/**
|
|
66
73
|
* Report a tool error as a Linear issue for tracking and improvement.
|
|
67
74
|
* Creates a bug in the Agent project backlog.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-emitter.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/activity-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"activity-emitter.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/activity-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAIjE,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,mBAAmB,CAAA;IAC5B,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3D,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9D;AAeD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAyC;IAC5E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAyC;IAE9E,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;gBAEhD,MAAM,EAAE,qBAAqB;IASzC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,UAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAahB;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD;;;;OAIG;IACG,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;;;;;;;OAQG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC5C,GACA,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA2BlE;;OAEG;YACW,aAAa;IAe3B;;OAEG;YACW,YAAY;IA+B1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;OAEG;YACW,YAAY;IA8C1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAEjB"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* - error → error (persisted)
|
|
14
14
|
*/
|
|
15
15
|
import { ENVIRONMENT_ISSUE_TYPES } from './work-types.js';
|
|
16
|
+
import { classifyTool } from '../tools/tool-category.js';
|
|
16
17
|
const DEFAULT_MIN_INTERVAL = 500;
|
|
17
18
|
const DEFAULT_MAX_OUTPUT_LENGTH = 2000;
|
|
18
19
|
/**
|
|
@@ -56,12 +57,14 @@ export class ActivityEmitter {
|
|
|
56
57
|
*/
|
|
57
58
|
async emitToolUse(tool, input, ephemeral = true) {
|
|
58
59
|
const inputSummary = this.summarizeToolInput(tool, input);
|
|
60
|
+
const category = classifyTool(tool);
|
|
59
61
|
await this.queueActivity({
|
|
60
62
|
type: 'action',
|
|
61
63
|
content: `${tool}: ${inputSummary}`,
|
|
62
64
|
ephemeral,
|
|
63
65
|
toolName: tool,
|
|
64
66
|
toolInput: input,
|
|
67
|
+
toolCategory: category,
|
|
65
68
|
});
|
|
66
69
|
}
|
|
67
70
|
/**
|
|
@@ -85,6 +88,21 @@ export class ActivityEmitter {
|
|
|
85
88
|
ephemeral: false,
|
|
86
89
|
});
|
|
87
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Emit a security scan event.
|
|
93
|
+
* For direct-to-Linear emitters, this emits as a persistent thought activity
|
|
94
|
+
* containing the structured scan data.
|
|
95
|
+
*/
|
|
96
|
+
async emitSecurityScan(event) {
|
|
97
|
+
const summary = `Security scan (${event.scanner}): ${event.totalFindings} findings — ` +
|
|
98
|
+
`critical: ${event.severityCounts.critical}, high: ${event.severityCounts.high}, ` +
|
|
99
|
+
`medium: ${event.severityCounts.medium}, low: ${event.severityCounts.low}`;
|
|
100
|
+
await this.queueActivity({
|
|
101
|
+
type: 'response',
|
|
102
|
+
content: summary,
|
|
103
|
+
ephemeral: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
88
106
|
/**
|
|
89
107
|
* Report a tool error as a Linear issue for tracking and improvement.
|
|
90
108
|
* Creates a bug in the Agent project backlog.
|
|
@@ -216,7 +234,7 @@ export class ActivityEmitter {
|
|
|
216
234
|
break;
|
|
217
235
|
case 'action':
|
|
218
236
|
if (activity.toolName && activity.toolInput) {
|
|
219
|
-
await this.session.emitAction(activity.toolName, activity.toolInput, activity.ephemeral);
|
|
237
|
+
await this.session.emitAction(activity.toolName, activity.toolInput, activity.ephemeral, activity.toolCategory);
|
|
220
238
|
}
|
|
221
239
|
else if (activity.toolName && activity.toolOutput) {
|
|
222
240
|
await this.session.emitToolResult(activity.toolName, activity.toolOutput, activity.ephemeral);
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - result → response (persisted)
|
|
17
17
|
* - error → error (persisted)
|
|
18
18
|
*/
|
|
19
|
+
import type { SecurityScanEvent } from './security-scan-event.js';
|
|
19
20
|
/** Configuration for the API activity emitter */
|
|
20
21
|
export interface ApiActivityEmitterConfig {
|
|
21
22
|
/** Linear session ID */
|
|
@@ -101,6 +102,11 @@ export declare class ApiActivityEmitter {
|
|
|
101
102
|
* Emit an error activity (persisted)
|
|
102
103
|
*/
|
|
103
104
|
emitError(error: Error | string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Emit a security scan event to the API for storage and downstream consumption.
|
|
107
|
+
* Posts to `/api/sessions/[id]/security-scan`.
|
|
108
|
+
*/
|
|
109
|
+
emitSecurityScan(event: SecurityScanEvent): Promise<void>;
|
|
104
110
|
/**
|
|
105
111
|
* Post a progress update comment to the Linear issue thread.
|
|
106
112
|
* Unlike activities which are ephemeral, progress updates are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-activity-emitter.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/api-activity-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3D,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7D,4CAA4C;IAC5C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACtD,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/D,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAED,+BAA+B;AAC/B,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,UAAU,GACV,SAAS,GACT,SAAS,GACT,OAAO,GACP,IAAI,GACJ,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"api-activity-emitter.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/api-activity-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - result → response (persisted)
|
|
17
17
|
* - error → error (persisted)
|
|
18
18
|
*/
|
|
19
|
+
import { classifyTool } from '../tools/tool-category.js';
|
|
19
20
|
const DEFAULT_MIN_INTERVAL = 500;
|
|
20
21
|
const DEFAULT_MAX_OUTPUT_LENGTH = 2000;
|
|
21
22
|
/**
|
|
@@ -93,12 +94,14 @@ export class ApiActivityEmitter {
|
|
|
93
94
|
*/
|
|
94
95
|
async emitToolUse(tool, input, ephemeral = true) {
|
|
95
96
|
const inputSummary = this.summarizeToolInput(tool, input);
|
|
97
|
+
const category = classifyTool(tool);
|
|
96
98
|
await this.queueActivity({
|
|
97
99
|
type: 'action',
|
|
98
100
|
content: `${tool}: ${inputSummary}`,
|
|
99
101
|
ephemeral,
|
|
100
102
|
toolName: tool,
|
|
101
103
|
toolInput: input,
|
|
104
|
+
toolCategory: category,
|
|
102
105
|
});
|
|
103
106
|
}
|
|
104
107
|
/**
|
|
@@ -122,6 +125,37 @@ export class ApiActivityEmitter {
|
|
|
122
125
|
ephemeral: false,
|
|
123
126
|
});
|
|
124
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Emit a security scan event to the API for storage and downstream consumption.
|
|
130
|
+
* Posts to `/api/sessions/[id]/security-scan`.
|
|
131
|
+
*/
|
|
132
|
+
async emitSecurityScan(event) {
|
|
133
|
+
if (this.ownershipRevoked)
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
const response = await fetch(`${this.apiBaseUrl}/api/sessions/${this.sessionId}/security-scan`, {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: {
|
|
139
|
+
'Content-Type': 'application/json',
|
|
140
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
141
|
+
},
|
|
142
|
+
body: JSON.stringify({
|
|
143
|
+
workerId: this.workerId,
|
|
144
|
+
event,
|
|
145
|
+
}),
|
|
146
|
+
});
|
|
147
|
+
if (!response.ok) {
|
|
148
|
+
const errorText = await response.text();
|
|
149
|
+
throw new Error(`API error ${response.status}: ${errorText}`);
|
|
150
|
+
}
|
|
151
|
+
this.onActivityEmitted?.('security-scan', event.scanner);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
155
|
+
console.error('[ApiActivityEmitter] Failed to emit security scan event:', err);
|
|
156
|
+
this.onActivityError?.('security-scan', err);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
125
159
|
/**
|
|
126
160
|
* Post a progress update comment to the Linear issue thread.
|
|
127
161
|
* Unlike activities which are ephemeral, progress updates are
|
|
@@ -324,6 +358,7 @@ export class ApiActivityEmitter {
|
|
|
324
358
|
content,
|
|
325
359
|
toolName: activity.toolName,
|
|
326
360
|
toolInput: activity.toolInput,
|
|
361
|
+
toolCategory: activity.toolCategory,
|
|
327
362
|
},
|
|
328
363
|
}),
|
|
329
364
|
});
|
|
@@ -89,7 +89,7 @@ describe('validateCompletion', () => {
|
|
|
89
89
|
expect(result.missingFields).toContain('branch_pushed');
|
|
90
90
|
expect(result.backstopRecoverable).toContain('branch_pushed');
|
|
91
91
|
});
|
|
92
|
-
it('marks commits_present as
|
|
92
|
+
it('marks commits_present as backstop-capable', () => {
|
|
93
93
|
const contract = getCompletionContract('development');
|
|
94
94
|
const outputs = {
|
|
95
95
|
prUrl: 'https://github.com/org/repo/pull/1',
|
|
@@ -98,8 +98,8 @@ describe('validateCompletion', () => {
|
|
|
98
98
|
};
|
|
99
99
|
const result = validateCompletion(contract, outputs);
|
|
100
100
|
expect(result.satisfied).toBe(false);
|
|
101
|
-
expect(result.
|
|
102
|
-
expect(result.
|
|
101
|
+
expect(result.backstopRecoverable).toContain('commits_present');
|
|
102
|
+
expect(result.manualRequired).not.toContain('commits_present');
|
|
103
103
|
});
|
|
104
104
|
it('marks satisfied for QA with work result passed', () => {
|
|
105
105
|
const contract = getCompletionContract('qa');
|
|
@@ -21,6 +21,8 @@ export { getAgentDir, getStatePath, getHeartbeatPath, getTodosPath, isHeartbeatF
|
|
|
21
21
|
export { getLogAnalysisConfig, isSessionLoggingEnabled, isAutoAnalyzeEnabled, } from './log-config.js';
|
|
22
22
|
export { SessionLogger, createSessionLogger, readSessionMetadata, readSessionEvents, } from './session-logger.js';
|
|
23
23
|
export { parseWorkResult } from './parse-work-result.js';
|
|
24
|
+
export type { SecurityScanEvent } from './security-scan-event.js';
|
|
25
|
+
export { SecurityScanEventSchema, parseSecurityScanOutput, parseSemgrepOutput, parseNpmAuditOutput, } from './security-scan-event.js';
|
|
24
26
|
export { getCompletionContract, validateCompletion, formatMissingFields, } from './completion-contracts.js';
|
|
25
27
|
export type { CompletionContract, CompletionField, CompletionFieldType, CompletionValidationResult, SessionOutputs, BackstopAction, BackstopResult, } from './completion-contracts.js';
|
|
26
28
|
export { runBackstop, collectSessionOutputs, formatBackstopComment, } from './session-backstop.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export { getLogAnalysisConfig, isSessionLoggingEnabled, isAutoAnalyzeEnabled, }
|
|
|
20
20
|
export { SessionLogger, createSessionLogger, readSessionMetadata, readSessionEvents, } from './session-logger.js';
|
|
21
21
|
// Work Result Parser (for QA/acceptance pass/fail detection)
|
|
22
22
|
export { parseWorkResult } from './parse-work-result.js';
|
|
23
|
+
export { SecurityScanEventSchema, parseSecurityScanOutput, parseSemgrepOutput, parseNpmAuditOutput, } from './security-scan-event.js';
|
|
23
24
|
// Completion Contracts & Session Backstop
|
|
24
25
|
export { getCompletionContract, validateCompletion, formatMissingFields, } from './completion-contracts.js';
|
|
25
26
|
export { runBackstop, collectSessionOutputs, formatBackstopComment, } from './session-backstop.js';
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Concrete implementations (e.g., LinearIssueTrackerClient) are injected at construction time,
|
|
6
6
|
* decoupling core from any specific issue tracker SDK.
|
|
7
7
|
*/
|
|
8
|
+
import type { ToolCategory } from '../tools/tool-category.js';
|
|
8
9
|
/**
|
|
9
10
|
* Platform-agnostic issue representation.
|
|
10
11
|
* All async relations (team, labels, project) are pre-resolved.
|
|
@@ -37,7 +38,7 @@ export interface SessionConfig {
|
|
|
37
38
|
*/
|
|
38
39
|
export interface IssueTrackerSession {
|
|
39
40
|
emitThought(content: string, ephemeral?: boolean): Promise<void>;
|
|
40
|
-
emitAction(tool: string, input: Record<string, unknown>, ephemeral?: boolean): Promise<void>;
|
|
41
|
+
emitAction(tool: string, input: Record<string, unknown>, ephemeral?: boolean, toolCategory?: ToolCategory): Promise<void>;
|
|
41
42
|
emitToolResult(tool: string, output: string, ephemeral?: boolean): Promise<void>;
|
|
42
43
|
emitResponse(content: string): Promise<void>;
|
|
43
44
|
emitError(error: Error): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-tracker-client.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/issue-tracker-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"issue-tracker-client.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/issue-tracker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmCH,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|