@mandible-ai/mandible 0.3.9 → 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 (41) hide show
  1. package/dist/src/hosts/docker.d.ts +5 -0
  2. package/dist/src/hosts/docker.d.ts.map +1 -1
  3. package/dist/src/hosts/docker.js +37 -0
  4. package/dist/src/hosts/docker.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/examples/code-pipeline/colonies.d.ts +0 -10
  7. package/dist/examples/code-pipeline/colonies.d.ts.map +0 -1
  8. package/dist/examples/code-pipeline/colonies.js +0 -112
  9. package/dist/examples/code-pipeline/colonies.js.map +0 -1
  10. package/dist/examples/code-pipeline/docker.d.ts +0 -3
  11. package/dist/examples/code-pipeline/docker.d.ts.map +0 -1
  12. package/dist/examples/code-pipeline/docker.js +0 -63
  13. package/dist/examples/code-pipeline/docker.js.map +0 -1
  14. package/dist/examples/code-pipeline/index.d.ts +0 -3
  15. package/dist/examples/code-pipeline/index.d.ts.map +0 -1
  16. package/dist/examples/code-pipeline/index.js +0 -45
  17. package/dist/examples/code-pipeline/index.js.map +0 -1
  18. package/dist/examples/code-pipeline/with-providers.d.ts +0 -3
  19. package/dist/examples/code-pipeline/with-providers.d.ts.map +0 -1
  20. package/dist/examples/code-pipeline/with-providers.js +0 -190
  21. package/dist/examples/code-pipeline/with-providers.js.map +0 -1
  22. package/dist/examples/github-colony/mandible.config.d.ts +0 -2
  23. package/dist/examples/github-colony/mandible.config.d.ts.map +0 -1
  24. package/dist/examples/github-colony/mandible.config.js +0 -55
  25. package/dist/examples/github-colony/mandible.config.js.map +0 -1
  26. package/dist/examples/repo-maintenance/fixer.d.ts +0 -87
  27. package/dist/examples/repo-maintenance/fixer.d.ts.map +0 -1
  28. package/dist/examples/repo-maintenance/fixer.js +0 -224
  29. package/dist/examples/repo-maintenance/fixer.js.map +0 -1
  30. package/dist/examples/repo-maintenance/mandible.config.d.ts +0 -2
  31. package/dist/examples/repo-maintenance/mandible.config.d.ts.map +0 -1
  32. package/dist/examples/repo-maintenance/mandible.config.js +0 -34
  33. package/dist/examples/repo-maintenance/mandible.config.js.map +0 -1
  34. package/dist/examples/repo-maintenance/scout.d.ts +0 -46
  35. package/dist/examples/repo-maintenance/scout.d.ts.map +0 -1
  36. package/dist/examples/repo-maintenance/scout.js +0 -170
  37. package/dist/examples/repo-maintenance/scout.js.map +0 -1
  38. package/dist/examples/repo-maintenance/seed.d.ts +0 -3
  39. package/dist/examples/repo-maintenance/seed.d.ts.map +0 -1
  40. package/dist/examples/repo-maintenance/seed.js +0 -151
  41. package/dist/examples/repo-maintenance/seed.js.map +0 -1
@@ -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":""}
@@ -1,151 +0,0 @@
1
- #!/usr/bin/env tsx
2
- // PURPOSE: Seed script for Scout + Fixer colonies — deposits a scan:trigger and runs the pipeline.
3
- // PURPOSE: Usage: npx tsx examples/repo-maintenance/seed.ts [/path/to/repo] [--fix]
4
- import { resolve } from 'node:path';
5
- import { rm, mkdir } from 'node:fs/promises';
6
- import { mandible } from '../../src/dsl/mandible.js';
7
- import { FilesystemEnvironment } from '../../src/environments/filesystem/index.js';
8
- import { configureScout } from './scout.js';
9
- import { configureFixer } from './fixer.js';
10
- const ENV_ROOT = resolve('/tmp/mandible-repo-maintenance');
11
- const args = process.argv.slice(2);
12
- const FIX_MODE = args.includes('--fix');
13
- const TARGET_REPO = resolve(args.find(a => !a.startsWith('--')) ?? process.cwd());
14
- async function main() {
15
- // 1. Set up fresh environment
16
- await rm(ENV_ROOT, { recursive: true, force: true });
17
- await mkdir(ENV_ROOT, { recursive: true });
18
- console.log(`\n${FIX_MODE ? 'Scout + Fixer' : 'Scout'} Colony — Repo Maintenance`);
19
- console.log(`${'─'.repeat(50)}`);
20
- console.log(` Environment: ${ENV_ROOT}`);
21
- console.log(` Target repo: ${TARGET_REPO}`);
22
- console.log(` Fix mode: ${FIX_MODE ? 'ON' : 'OFF (use --fix to enable)'}`);
23
- console.log(`${'─'.repeat(50)}\n`);
24
- const env = new FilesystemEnvironment({ root: ENV_ROOT, name: 'repo-maintenance' });
25
- // 2. Build and start colonies via mandible DSL
26
- const builder = mandible('repo-maintenance')
27
- .environment(env)
28
- .colony('scout', configureScout(TARGET_REPO));
29
- if (FIX_MODE) {
30
- builder.colony('fixer', configureFixer(TARGET_REPO));
31
- }
32
- const host = await builder.start();
33
- console.log(`Started ${host.colonies.length} colony(s) (id: ${host.metadata.id})\n`);
34
- // 3. Deposit scan trigger
35
- console.log('Depositing scan:trigger signal...');
36
- const trigger = await env.deposit({
37
- type: 'scan:trigger',
38
- payload: {
39
- scope: 'full',
40
- triggered_by: 'seed-script',
41
- },
42
- meta: { deposited_by: 'seed' },
43
- });
44
- console.log(` -> ${trigger.type} (${trigger.id})\n`);
45
- // 4. Wait for scan to complete
46
- const maxWaitMs = 5 * 60_000; // 5 minutes max
47
- const pollMs = 2_000;
48
- const deadline = Date.now() + maxWaitMs;
49
- while (Date.now() < deadline) {
50
- const signals = await env.observe({ type: 'scan:completed' });
51
- if (signals.length > 0) {
52
- console.log('\nScan completed!');
53
- break;
54
- }
55
- // Also check for errors
56
- const errors = await env.observe({ type: 'scan:error' });
57
- if (errors.length > 0) {
58
- console.error('\nScan encountered an error:');
59
- for (const e of errors) {
60
- console.error(JSON.stringify(e.payload, null, 2));
61
- }
62
- break;
63
- }
64
- await sleep(pollMs);
65
- }
66
- // 5. Report results
67
- console.log('\n' + '='.repeat(50));
68
- console.log(' Results');
69
- console.log('='.repeat(50) + '\n');
70
- const issues = await env.observe({ type: 'issue:detected' });
71
- if (issues.length === 0) {
72
- console.log(' No issues detected.\n');
73
- }
74
- else {
75
- console.log(` Found ${issues.length} issue(s):\n`);
76
- for (const issue of issues) {
77
- const p = issue.payload;
78
- const severity = String(p.severity ?? 'unknown').toUpperCase();
79
- console.log(` [${severity}] ${p.title}`);
80
- console.log(` Category: ${p.category}`);
81
- console.log(` Files: ${p.files?.join(', ') || 'n/a'}`);
82
- console.log(` ${p.description}`);
83
- if (p.suggested_fix)
84
- console.log(` Fix: ${p.suggested_fix}`);
85
- console.log('');
86
- }
87
- }
88
- const summaries = await env.observe({ type: 'scan:completed' });
89
- if (summaries.length > 0) {
90
- const summary = summaries[0].payload;
91
- console.log(` Cost: $${Number(summary.costUsd ?? 0).toFixed(4)}`);
92
- console.log(` Duration: ${Number(summary.durationMs ?? 0)}ms`);
93
- console.log(` Issues found: ${summary.issueCount}`);
94
- }
95
- // 5b. If fix mode, wait for fixes to complete
96
- if (FIX_MODE) {
97
- const issueCount = issues.length;
98
- if (issueCount > 0) {
99
- console.log(`\nWaiting for Fixer colony to process ${issueCount} issue(s)...`);
100
- const fixDeadline = Date.now() + 5 * 60_000;
101
- while (Date.now() < fixDeadline) {
102
- const proposed = await env.observe({ type: 'fix:proposed' });
103
- const failed = await env.observe({ type: 'fix:failed' });
104
- const total = proposed.length + failed.length;
105
- if (total >= issueCount)
106
- break;
107
- await sleep(pollMs);
108
- }
109
- console.log('\n' + '='.repeat(50));
110
- console.log(' Fix Results');
111
- console.log('='.repeat(50) + '\n');
112
- const proposed = await env.observe({ type: 'fix:proposed' });
113
- for (const fix of proposed) {
114
- const p = fix.payload;
115
- const conf = String(p.confidence ?? 'unknown').toUpperCase();
116
- console.log(` [${conf}] ${p.issue_title}`);
117
- console.log(` Branch: ${p.branch}`);
118
- console.log(` Files: ${p.files_changed?.join(', ') || 'n/a'}`);
119
- console.log(` Tests: ${p.tests_passed ? 'PASS' : 'FAIL'}`);
120
- console.log(` ${p.diff_summary}`);
121
- console.log('');
122
- }
123
- const failed = await env.observe({ type: 'fix:failed' });
124
- for (const fix of failed) {
125
- const p = fix.payload;
126
- console.log(` [FAILED] ${p.issue_title}`);
127
- console.log(` Reason: ${p.reason}`);
128
- if (p.attempted_approach)
129
- console.log(` Approach: ${p.attempted_approach}`);
130
- console.log('');
131
- }
132
- console.log(` Proposed: ${proposed.length}, Failed: ${failed.length}`);
133
- }
134
- }
135
- // 6. Report colony status from host metadata
136
- console.log('\n Colony status:');
137
- for (const col of host.colonies) {
138
- console.log(` ${col.name}: ${col.state}`);
139
- }
140
- // 7. Stop
141
- await host.stop();
142
- console.log('\nDone.\n');
143
- }
144
- function sleep(ms) {
145
- return new Promise(r => setTimeout(r, ms));
146
- }
147
- main().catch((err) => {
148
- console.error('Fatal error:', err);
149
- process.exit(1);
150
- });
151
- //# sourceMappingURL=seed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../examples/repo-maintenance/seed.ts"],"names":[],"mappings":"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"}