@mandible-ai/mandible 0.3.8 → 0.3.10

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.
Files changed (49) hide show
  1. package/dist/src/environments/network/index.d.ts +61 -0
  2. package/dist/src/environments/network/index.d.ts.map +1 -0
  3. package/dist/src/environments/network/index.js +317 -0
  4. package/dist/src/environments/network/index.js.map +1 -0
  5. package/dist/src/hosts/docker.d.ts +5 -0
  6. package/dist/src/hosts/docker.d.ts.map +1 -1
  7. package/dist/src/hosts/docker.js +37 -0
  8. package/dist/src/hosts/docker.js.map +1 -1
  9. package/dist/src/index.d.ts +2 -0
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +1 -0
  12. package/dist/src/index.js.map +1 -1
  13. package/package.json +1 -1
  14. package/dist/examples/code-pipeline/colonies.d.ts +0 -10
  15. package/dist/examples/code-pipeline/colonies.d.ts.map +0 -1
  16. package/dist/examples/code-pipeline/colonies.js +0 -112
  17. package/dist/examples/code-pipeline/colonies.js.map +0 -1
  18. package/dist/examples/code-pipeline/docker.d.ts +0 -3
  19. package/dist/examples/code-pipeline/docker.d.ts.map +0 -1
  20. package/dist/examples/code-pipeline/docker.js +0 -63
  21. package/dist/examples/code-pipeline/docker.js.map +0 -1
  22. package/dist/examples/code-pipeline/index.d.ts +0 -3
  23. package/dist/examples/code-pipeline/index.d.ts.map +0 -1
  24. package/dist/examples/code-pipeline/index.js +0 -45
  25. package/dist/examples/code-pipeline/index.js.map +0 -1
  26. package/dist/examples/code-pipeline/with-providers.d.ts +0 -3
  27. package/dist/examples/code-pipeline/with-providers.d.ts.map +0 -1
  28. package/dist/examples/code-pipeline/with-providers.js +0 -190
  29. package/dist/examples/code-pipeline/with-providers.js.map +0 -1
  30. package/dist/examples/github-colony/mandible.config.d.ts +0 -2
  31. package/dist/examples/github-colony/mandible.config.d.ts.map +0 -1
  32. package/dist/examples/github-colony/mandible.config.js +0 -55
  33. package/dist/examples/github-colony/mandible.config.js.map +0 -1
  34. package/dist/examples/repo-maintenance/fixer.d.ts +0 -87
  35. package/dist/examples/repo-maintenance/fixer.d.ts.map +0 -1
  36. package/dist/examples/repo-maintenance/fixer.js +0 -224
  37. package/dist/examples/repo-maintenance/fixer.js.map +0 -1
  38. package/dist/examples/repo-maintenance/mandible.config.d.ts +0 -2
  39. package/dist/examples/repo-maintenance/mandible.config.d.ts.map +0 -1
  40. package/dist/examples/repo-maintenance/mandible.config.js +0 -34
  41. package/dist/examples/repo-maintenance/mandible.config.js.map +0 -1
  42. package/dist/examples/repo-maintenance/scout.d.ts +0 -46
  43. package/dist/examples/repo-maintenance/scout.d.ts.map +0 -1
  44. package/dist/examples/repo-maintenance/scout.js +0 -170
  45. package/dist/examples/repo-maintenance/scout.js.map +0 -1
  46. package/dist/examples/repo-maintenance/seed.d.ts +0 -3
  47. package/dist/examples/repo-maintenance/seed.d.ts.map +0 -1
  48. package/dist/examples/repo-maintenance/seed.js +0 -151
  49. package/dist/examples/repo-maintenance/seed.js.map +0 -1
@@ -1,224 +0,0 @@
1
- // PURPOSE: Fixer colony — claims issue:detected signals and attempts to fix them using a Claude agent.
2
- // PURPOSE: Deposits fix:proposed on success or fix:failed on failure.
3
- import { withClaudeCode } from '../../src/providers/claude-code.js';
4
- // ----------------------------------------------------------
5
- // Fixer colony configurator
6
- // ----------------------------------------------------------
7
- /**
8
- * Returns a colony configurator for use with the mandible() DSL.
9
- *
10
- * @example
11
- * await mandible('repo-maintenance')
12
- * .environment(env)
13
- * .colony('fixer', configureFixer(repoRoot))
14
- * .start();
15
- */
16
- export function configureFixer(repoRoot, options = {}) {
17
- const { senseTypes = 'issue:detected', model = 'claude-sonnet-4-5-20250929', maxBudgetUsd = 3.00, maxTurns = 80, allowedTools = ['Read', 'Edit', 'Write', 'Bash', 'Glob', 'Grep'], disallowedTools = [], concurrency = 2, claimLeaseDuration = 600_000, bedrock, } = options;
18
- const types = Array.isArray(senseTypes) ? senseTypes : [senseTypes];
19
- return (c) => {
20
- for (const t of types) {
21
- c = c.sense(t, { unclaimed: true });
22
- }
23
- return c
24
- .do('fix-issue', withClaudeCode({
25
- model,
26
- systemPrompt: [
27
- 'You are a Fixer agent in a repo-maintenance colony.',
28
- 'Your job is to claim a detected issue and produce a minimal, correct fix.',
29
- '',
30
- 'Workflow:',
31
- '1. Create a branch named `mandible/fix-{category}-{short-hash}` from the current HEAD.',
32
- ' Use the first 6 chars of a random hex string for the short hash.',
33
- '2. Analyze the issue description and affected files.',
34
- '3. Make the MINIMAL change needed to resolve the issue.',
35
- '4. Run tests (`npm test` or `npx vitest run`) to verify the fix does not break anything.',
36
- '5. Output a JSON result block (see below).',
37
- '',
38
- 'Constraints:',
39
- '- Do NOT merge to main. Only work on the fix branch.',
40
- '- Do NOT make changes beyond what is needed for this specific issue.',
41
- '- If a previous_feedback field is present, it means a prior fix attempt was rejected.',
42
- ' Use that feedback to improve your approach.',
43
- '- If you cannot fix the issue, output a failure result instead.',
44
- '',
45
- 'Output format — wrap in a ```json code block:',
46
- '```json',
47
- '{',
48
- ' "status": "success",',
49
- ' "issue_title": "Short title of the issue",',
50
- ' "branch": "mandible/fix-category-abc123",',
51
- ' "diff_summary": "What changed and why",',
52
- ' "files_changed": ["file1.ts", "file2.ts"],',
53
- ' "tests_passed": true,',
54
- ' "confidence": "high"',
55
- '}',
56
- '```',
57
- '',
58
- 'On failure:',
59
- '```json',
60
- '{',
61
- ' "status": "failure",',
62
- ' "issue_title": "Short title of the issue",',
63
- ' "reason": "Why the fix could not be applied",',
64
- ' "attempted_approach": "What was tried"',
65
- '}',
66
- '```',
67
- ].join('\n'),
68
- prompt: (signal) => {
69
- const p = signal.payload;
70
- const lines = [
71
- '## Fix Request',
72
- '',
73
- `**Category:** ${p.category ?? 'unknown'}`,
74
- `**Severity:** ${p.severity ?? 'medium'}`,
75
- `**Title:** ${p.title ?? 'Untitled issue'}`,
76
- '',
77
- '### Description',
78
- String(p.description ?? 'No description provided.'),
79
- '',
80
- ];
81
- const files = p.files;
82
- if (files && files.length > 0) {
83
- lines.push('### Affected Files');
84
- for (const f of files) {
85
- lines.push(`- ${f}`);
86
- }
87
- lines.push('');
88
- }
89
- if (p.suggested_fix) {
90
- lines.push('### Suggested Fix');
91
- lines.push(String(p.suggested_fix));
92
- lines.push('');
93
- }
94
- if (p.previous_feedback) {
95
- lines.push('### Previous Feedback (from rejected attempt)');
96
- lines.push(String(p.previous_feedback));
97
- lines.push('');
98
- lines.push('Use this feedback to improve your fix approach.');
99
- lines.push('');
100
- }
101
- lines.push('Apply the fix, run tests, and output the JSON result block.');
102
- return lines.join('\n');
103
- },
104
- allowedTools,
105
- disallowedTools,
106
- workingDirectory: repoRoot,
107
- maxBudgetUsd,
108
- maxTurns,
109
- bedrock,
110
- output: (result, signal) => {
111
- const parsed = parseFixerOutput(result.text);
112
- const issuePayload = signal.payload;
113
- const issueTitle = String(issuePayload.title ?? 'Unknown issue');
114
- if (parsed.status === 'failure') {
115
- return [{
116
- type: 'fix:failed',
117
- payload: {
118
- issue_title: parsed.issue_title || issueTitle,
119
- reason: parsed.reason || 'Agent did not produce a valid result',
120
- attempted_approach: parsed.attempted_approach,
121
- costUsd: result.costUsd,
122
- durationMs: result.durationMs,
123
- },
124
- tags: ['failure'],
125
- }];
126
- }
127
- return [{
128
- type: 'fix:proposed',
129
- payload: {
130
- issue_title: parsed.issue_title || issueTitle,
131
- branch: parsed.branch || 'unknown',
132
- diff_summary: parsed.diff_summary || '',
133
- files_changed: parsed.files_changed || [],
134
- tests_passed: parsed.tests_passed ?? false,
135
- confidence: parsed.confidence || 'low',
136
- costUsd: result.costUsd,
137
- durationMs: result.durationMs,
138
- },
139
- tags: [parsed.confidence || 'low', parsed.tests_passed ? 'tests-pass' : 'tests-fail'],
140
- }];
141
- },
142
- autoWithdraw: true,
143
- }))
144
- .concurrency(concurrency)
145
- .claim('lease', claimLeaseDuration)
146
- .poll(3000);
147
- };
148
- }
149
- /**
150
- * Extracts JSON result from the agent's markdown-formatted output.
151
- * Looks for a ```json code block, parses it, and validates the shape.
152
- */
153
- export function parseFixerOutput(text) {
154
- if (!text) {
155
- return {
156
- status: 'failure',
157
- issue_title: '',
158
- reason: 'Empty agent output',
159
- };
160
- }
161
- // Try to find a JSON code block
162
- const codeBlockMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
163
- const jsonStr = codeBlockMatch ? codeBlockMatch[1].trim() : text.trim();
164
- let parsed;
165
- try {
166
- parsed = JSON.parse(jsonStr);
167
- }
168
- catch {
169
- // Try to find an object in the text
170
- const objectMatch = jsonStr.match(/\{[\s\S]*\}/);
171
- if (objectMatch) {
172
- try {
173
- parsed = JSON.parse(objectMatch[0]);
174
- }
175
- catch {
176
- return {
177
- status: 'failure',
178
- issue_title: '',
179
- reason: 'Could not parse agent output as JSON',
180
- };
181
- }
182
- }
183
- else {
184
- return {
185
- status: 'failure',
186
- issue_title: '',
187
- reason: 'Could not parse agent output as JSON',
188
- };
189
- }
190
- }
191
- if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
192
- return {
193
- status: 'failure',
194
- issue_title: '',
195
- reason: 'Agent output is not a JSON object',
196
- };
197
- }
198
- const obj = parsed;
199
- // Check for explicit failure
200
- if (obj.status === 'failure') {
201
- return {
202
- status: 'failure',
203
- issue_title: typeof obj.issue_title === 'string' ? obj.issue_title : '',
204
- reason: typeof obj.reason === 'string' ? obj.reason : 'Unknown failure',
205
- ...(typeof obj.attempted_approach === 'string' ? { attempted_approach: obj.attempted_approach } : {}),
206
- };
207
- }
208
- // Treat as success — validate and normalize
209
- const validConfidences = new Set(['high', 'medium', 'low']);
210
- return {
211
- status: 'success',
212
- issue_title: typeof obj.issue_title === 'string' ? obj.issue_title : '',
213
- branch: typeof obj.branch === 'string' ? obj.branch : '',
214
- diff_summary: typeof obj.diff_summary === 'string' ? obj.diff_summary : '',
215
- files_changed: Array.isArray(obj.files_changed)
216
- ? obj.files_changed.filter((f) => typeof f === 'string')
217
- : [],
218
- tests_passed: typeof obj.tests_passed === 'boolean' ? obj.tests_passed : false,
219
- confidence: validConfidences.has(obj.confidence)
220
- ? obj.confidence
221
- : 'low',
222
- };
223
- }
224
- //# sourceMappingURL=fixer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixer.js","sourceRoot":"","sources":["../../../examples/repo-maintenance/fixer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mandible.config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mandible.config.d.ts","sourceRoot":"","sources":["../../../examples/repo-maintenance/mandible.config.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- // PURPOSE: Repo-maintenance example — Scout + Fixer colonies.
2
- // PURPOSE: Run: npx tsx examples/repo-maintenance/mandible.config.ts
3
- import { resolve } from 'node:path';
4
- import { rm, mkdir } from 'node:fs/promises';
5
- import { mandible } from '../../src/dsl/mandible.js';
6
- import { FilesystemEnvironment } from '../../src/environments/filesystem/index.js';
7
- import { configureScout } from './scout.js';
8
- import { configureFixer } from './fixer.js';
9
- const ENV_ROOT = resolve('/tmp/mandible-repo-maintenance');
10
- const TARGET_REPO = resolve(process.env.TARGET_REPO ?? process.cwd());
11
- // Clean slate on startup
12
- await rm(ENV_ROOT, { recursive: true, force: true });
13
- await mkdir(ENV_ROOT, { recursive: true });
14
- const env = new FilesystemEnvironment({ root: ENV_ROOT, name: 'repo-maintenance' });
15
- // ── Start colonies via mandible DSL ───────────────────────
16
- const host = await mandible('repo-maintenance')
17
- .environment(env)
18
- .colony('scout', configureScout(TARGET_REPO))
19
- .colony('fixer', configureFixer(TARGET_REPO))
20
- .start();
21
- console.log(`Started ${host.colonies.length} colonies (id: ${host.metadata.id})`);
22
- // ── Seed scan trigger after a short delay ─────────────────
23
- setTimeout(async () => {
24
- await env.deposit({
25
- type: 'scan:trigger',
26
- payload: {
27
- scope: 'full',
28
- triggered_by: 'dashboard',
29
- },
30
- meta: { deposited_by: 'seed', ttl: 10 * 60_000 },
31
- });
32
- }, 2000);
33
- await host.dashboard({ port: 4040 });
34
- //# sourceMappingURL=mandible.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mandible.config.js","sourceRoot":"","sources":["../../../examples/repo-maintenance/mandible.config.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,qEAAqE;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;AAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtE,yBAAyB;AACzB,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3C,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEpF,6DAA6D;AAE7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC;KAC5C,WAAW,CAAC,GAAG,CAAC;KAChB,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;KAC5C,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;KAC5C,KAAK,EAAE,CAAC;AAEX,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,kBAAkB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;AAElF,6DAA6D;AAE7D,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,GAAG,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE;YACP,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,WAAW;SAC1B;QACD,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE;KACjD,CAAC,CAAC;AACL,CAAC,EAAE,IAAI,CAAC,CAAC;AAET,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC"}
@@ -1,46 +0,0 @@
1
- import type { BedrockConfig } from '../../src/providers/types.js';
2
- import type { ColonyBuilder } from '../../src/dsl/builder.js';
3
- export interface ScanTriggerPayload {
4
- scope: 'full' | 'incremental';
5
- triggered_by: string;
6
- }
7
- export interface IssueDetectedPayload {
8
- category: 'dependency' | 'dead-code' | 'test-coverage' | 'security' | 'style' | 'stale-todo' | 'other';
9
- severity: 'low' | 'medium' | 'high' | 'critical';
10
- title: string;
11
- description: string;
12
- files: string[];
13
- suggested_fix?: string;
14
- }
15
- export interface ScoutColonyOptions {
16
- /** Signal types to sense. Defaults to ['scan:trigger']. */
17
- senseTypes?: string | string[];
18
- /** Model to use. Defaults to 'claude-sonnet-4-5-20250929'. */
19
- model?: string;
20
- /** Max budget per scan in USD. Defaults to 0.50. */
21
- maxBudgetUsd?: number;
22
- /** Max conversation turns. Defaults to 50. */
23
- maxTurns?: number;
24
- /** Allowed tools. Defaults to read-only tools. */
25
- allowedTools?: string[];
26
- /** Disallowed tools. Defaults to ['Edit', 'Write']. */
27
- disallowedTools?: string[];
28
- /** Route through AWS Bedrock instead of direct Anthropic API. */
29
- bedrock?: BedrockConfig;
30
- }
31
- /**
32
- * Returns a colony configurator for use with the mandible() DSL.
33
- *
34
- * @example
35
- * await mandible('repo-maintenance')
36
- * .environment(env)
37
- * .colony('scout', configureScout(repoRoot))
38
- * .start();
39
- */
40
- export declare function configureScout(repoRoot: string, options?: ScoutColonyOptions): (c: ColonyBuilder) => ColonyBuilder<Record<string, unknown>>;
41
- /**
42
- * Extracts JSON issue array from the agent's markdown-formatted output.
43
- * Looks for a ```json code block, parses it, and validates the shape.
44
- */
45
- export declare function parseScoutOutput(text: string): IssueDetectedPayload[];
46
- //# sourceMappingURL=scout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../../examples/repo-maintenance/scout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA8B,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO9D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,CAAC;IACvG,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAuB,IAcxB,GAAG,aAAa,4CAsGzB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAkDrE"}
@@ -1,170 +0,0 @@
1
- // PURPOSE: Scout colony — scans a repository for issues using a Claude agent.
2
- // PURPOSE: Deposits one `issue:detected` signal per issue found, plus a `scan:completed` summary.
3
- import { withClaudeCode } from '../../src/providers/claude-code.js';
4
- // ----------------------------------------------------------
5
- // Scout colony configurator
6
- // ----------------------------------------------------------
7
- /**
8
- * Returns a colony configurator for use with the mandible() DSL.
9
- *
10
- * @example
11
- * await mandible('repo-maintenance')
12
- * .environment(env)
13
- * .colony('scout', configureScout(repoRoot))
14
- * .start();
15
- */
16
- export function configureScout(repoRoot, options = {}) {
17
- const { senseTypes = 'scan:trigger', model = 'claude-sonnet-4-5-20250929', maxBudgetUsd = 0.50, maxTurns = 50, allowedTools = ['Read', 'Glob', 'Grep', 'Bash'], disallowedTools = ['Edit', 'Write'], bedrock, } = options;
18
- const types = Array.isArray(senseTypes) ? senseTypes : [senseTypes];
19
- return (c) => {
20
- for (const t of types) {
21
- c = c.sense(t, { unclaimed: true });
22
- }
23
- return c
24
- .do('scan-repo', withClaudeCode({
25
- model,
26
- systemPrompt: [
27
- 'You are a Scout agent in a repo-maintenance colony.',
28
- 'Your job is to scan a repository and identify issues.',
29
- '',
30
- 'Categories to check:',
31
- '- dependency: outdated or vulnerable dependencies',
32
- '- dead-code: unused exports, unreachable code, unused files',
33
- '- test-coverage: untested code paths, missing edge cases',
34
- '- security: potential vulnerabilities (injection, secrets, etc.)',
35
- '- style: inconsistent formatting, naming, or patterns',
36
- '- stale-todo: TODO/FIXME/HACK comments that should be addressed',
37
- '',
38
- 'For each issue found, include:',
39
- '- category (one of the above)',
40
- '- severity: low, medium, high, or critical',
41
- '- title: short one-line summary',
42
- '- description: what the issue is and why it matters',
43
- '- files: which files are affected',
44
- '- suggested_fix: optional fix suggestion',
45
- '',
46
- 'IMPORTANT: Output your findings as a JSON array inside a ```json code block.',
47
- 'Each element must match the schema above. Example:',
48
- '```json',
49
- '[',
50
- ' {',
51
- ' "category": "stale-todo",',
52
- ' "severity": "low",',
53
- ' "title": "Stale TODO in auth.ts",',
54
- ' "description": "TODO comment from 6 months ago about refactoring auth flow",',
55
- ' "files": ["src/auth.ts"],',
56
- ' "suggested_fix": "Either implement the refactor or remove the TODO"',
57
- ' }',
58
- ']',
59
- '```',
60
- '',
61
- 'If no issues are found, output an empty array: ```json\n[]\n```',
62
- ].join('\n'),
63
- prompt: (signal) => {
64
- const p = signal.payload;
65
- const scope = p.scope ?? 'full';
66
- return [
67
- `## Repository Scan Request`,
68
- '',
69
- `**Scope:** ${scope}`,
70
- `**Triggered by:** ${p.triggered_by ?? 'manual'}`,
71
- '',
72
- 'Scan this repository for issues across all categories.',
73
- 'Focus on actionable findings — skip minor style nitpicks unless they indicate a pattern.',
74
- 'Use the Glob, Grep, and Read tools to explore the codebase.',
75
- 'Do NOT modify any files.',
76
- ].join('\n');
77
- },
78
- allowedTools,
79
- disallowedTools,
80
- workingDirectory: repoRoot,
81
- maxBudgetUsd,
82
- maxTurns,
83
- bedrock,
84
- output: (result, signal) => {
85
- const issues = parseScoutOutput(result.text);
86
- const deposits = [];
87
- for (const issue of issues) {
88
- deposits.push({
89
- type: 'issue:detected',
90
- payload: issue,
91
- tags: [issue.category, issue.severity],
92
- ttl: 60 * 60_000, // 60 min — survive long enough for fixer to work the backlog
93
- });
94
- }
95
- deposits.push({
96
- type: 'scan:completed',
97
- payload: {
98
- scope: signal.payload.scope ?? 'full',
99
- issueCount: issues.length,
100
- costUsd: result.costUsd,
101
- durationMs: result.durationMs,
102
- },
103
- tags: ['summary'],
104
- });
105
- return deposits;
106
- },
107
- autoWithdraw: true,
108
- }))
109
- .concurrency(1)
110
- .claim('none')
111
- .poll(3000);
112
- };
113
- }
114
- // ----------------------------------------------------------
115
- // Output parser
116
- // ----------------------------------------------------------
117
- /**
118
- * Extracts JSON issue array from the agent's markdown-formatted output.
119
- * Looks for a ```json code block, parses it, and validates the shape.
120
- */
121
- export function parseScoutOutput(text) {
122
- if (!text)
123
- return [];
124
- // Try to find a JSON code block
125
- const codeBlockMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
126
- const jsonStr = codeBlockMatch ? codeBlockMatch[1].trim() : text.trim();
127
- let parsed;
128
- try {
129
- parsed = JSON.parse(jsonStr);
130
- }
131
- catch {
132
- // If the whole text isn't valid JSON, try to find an array in it
133
- const arrayMatch = jsonStr.match(/\[[\s\S]*\]/);
134
- if (arrayMatch) {
135
- try {
136
- parsed = JSON.parse(arrayMatch[0]);
137
- }
138
- catch {
139
- return [];
140
- }
141
- }
142
- else {
143
- return [];
144
- }
145
- }
146
- if (!Array.isArray(parsed))
147
- return [];
148
- // Validate and normalize each issue
149
- const validCategories = new Set(['dependency', 'dead-code', 'test-coverage', 'security', 'style', 'stale-todo', 'other']);
150
- const validSeverities = new Set(['low', 'medium', 'high', 'critical']);
151
- return parsed
152
- .filter((item) => typeof item === 'object' && item !== null &&
153
- typeof item.title === 'string' &&
154
- typeof item.description === 'string')
155
- .map((item) => ({
156
- category: validCategories.has(item.category)
157
- ? item.category
158
- : 'other',
159
- severity: validSeverities.has(item.severity)
160
- ? item.severity
161
- : 'medium',
162
- title: item.title,
163
- description: item.description,
164
- files: Array.isArray(item.files)
165
- ? item.files.filter(f => typeof f === 'string')
166
- : [],
167
- ...(typeof item.suggested_fix === 'string' ? { suggested_fix: item.suggested_fix } : {}),
168
- }));
169
- }
170
- //# sourceMappingURL=scout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../../examples/repo-maintenance/scout.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env tsx
2
- export {};
3
- //# sourceMappingURL=seed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../examples/repo-maintenance/seed.ts"],"names":[],"mappings":""}