@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,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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"}