@mandible-ai/mandible 0.3.5 → 0.3.7

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/README.md +46 -22
  2. package/dist/examples/code-pipeline/index.js +2 -12
  3. package/dist/examples/code-pipeline/index.js.map +1 -1
  4. package/dist/examples/code-pipeline/with-providers.js +45 -100
  5. package/dist/examples/code-pipeline/with-providers.js.map +1 -1
  6. package/dist/src/cli/index.js +24 -2
  7. package/dist/src/cli/index.js.map +1 -1
  8. package/dist/src/cli/server.d.ts +58 -13
  9. package/dist/src/cli/server.d.ts.map +1 -1
  10. package/dist/src/cli/server.js +90 -256
  11. package/dist/src/cli/server.js.map +1 -1
  12. package/dist/src/environments/github/adapter.d.ts +15 -1
  13. package/dist/src/environments/github/adapter.d.ts.map +1 -1
  14. package/dist/src/environments/github/adapter.js +178 -47
  15. package/dist/src/environments/github/adapter.js.map +1 -1
  16. package/dist/src/environments/github/client.d.ts +18 -1
  17. package/dist/src/environments/github/client.d.ts.map +1 -1
  18. package/dist/src/environments/github/client.js +124 -0
  19. package/dist/src/environments/github/client.js.map +1 -1
  20. package/dist/src/environments/github/index.d.ts +2 -2
  21. package/dist/src/environments/github/index.d.ts.map +1 -1
  22. package/dist/src/environments/github/index.js +1 -1
  23. package/dist/src/environments/github/index.js.map +1 -1
  24. package/dist/src/environments/github/mapper.d.ts +47 -1
  25. package/dist/src/environments/github/mapper.d.ts.map +1 -1
  26. package/dist/src/environments/github/mapper.js +176 -1
  27. package/dist/src/environments/github/mapper.js.map +1 -1
  28. package/dist/src/environments/github/types.d.ts +100 -0
  29. package/dist/src/environments/github/types.d.ts.map +1 -1
  30. package/dist/src/hosts/docker.d.ts.map +1 -1
  31. package/dist/src/hosts/docker.js +22 -4
  32. package/dist/src/hosts/docker.js.map +1 -1
  33. package/dist/src/hosts/local.d.ts +3 -0
  34. package/dist/src/hosts/local.d.ts.map +1 -1
  35. package/dist/src/hosts/local.js +20 -4
  36. package/dist/src/hosts/local.js.map +1 -1
  37. package/dist/src/index.d.ts +4 -0
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +3 -0
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/patterns/debug-bridge.d.ts +48 -0
  42. package/dist/src/patterns/debug-bridge.d.ts.map +1 -0
  43. package/dist/src/patterns/debug-bridge.js +216 -0
  44. package/dist/src/patterns/debug-bridge.js.map +1 -0
  45. package/dist/src/patterns/index.d.ts +2 -0
  46. package/dist/src/patterns/index.d.ts.map +1 -1
  47. package/dist/src/patterns/index.js +1 -0
  48. package/dist/src/patterns/index.js.map +1 -1
  49. package/package.json +1 -1
package/README.md CHANGED
@@ -86,7 +86,7 @@ await host.stop();
86
86
 
87
87
  #### Docker
88
88
 
89
- Runs each colony as a Docker container via the Mandible Cloud API:
89
+ Runs each colony in a Docker container. Same colony definitions, but the runtime boundary is containers instead of running in-process:
90
90
 
91
91
  ```typescript
92
92
  import { mandible, FilesystemEnvironment, docker } from '@mandible-ai/mandible';
@@ -95,23 +95,19 @@ const env = new FilesystemEnvironment({ root: './.mandible/signals' });
95
95
 
96
96
  const host = await mandible('code-pipeline')
97
97
  .environment(env)
98
- .host(docker({
99
- apiUrl: process.env.MANDIBLE_API_URL!,
100
- apiKey: process.env.MANDIBLE_API_KEY!,
101
- image: 'mandible-colony:latest',
102
- }))
98
+ .host(docker({ image: 'mandible-colony:latest' }))
103
99
  .colony('shaper', shaper)
104
100
  .colony('critic', critic)
105
101
  .colony('keeper', keeper)
106
102
  .start();
107
103
 
108
- console.log(host.metadata.projectId);
104
+ await host.dashboard(); // signal snapshots + colony names from containers
109
105
  await host.stop();
110
106
  ```
111
107
 
112
- #### Cloud (Edera microVMs)
108
+ #### Cloud (microVMs)
113
109
 
114
- For production workloads, run colonies in isolated Edera zones via [Mandible Cloud](https://mandible.dev):
110
+ For production workloads, run colonies in isolated zones via [Mandible Cloud](https://mandible.cloud):
115
111
 
116
112
  ```typescript
117
113
  import { mandible, FilesystemEnvironment } from '@mandible-ai/mandible';
@@ -162,7 +158,7 @@ mandible dev mandible.config.ts --port 8080 # custom port
162
158
  mandible dev mandible.config.ts --no-open # skip auto-opening browser
163
159
  ```
164
160
 
165
- *Dashboard GIF coming soon*
161
+ ![Dashboard](docs/dashboard.png)
166
162
 
167
163
  ## Architecture
168
164
 
@@ -175,7 +171,7 @@ Every concept maps to a biological analogy:
175
171
  | Mandible | Biology | Description |
176
172
  |----------|---------|-------------|
177
173
  | **Signal** | Pheromone | A typed marker deposited in the environment with a payload, concentration, and TTL. |
178
- | **Environment** | Substrate | The shared medium agents read from and write to. Filesystem, GitHub, Remote, Dolt. |
174
+ | **Environment** | Substrate | The shared medium agents read from and write to. Filesystem, GitHub, Dolt. |
179
175
  | **Colony** | Ant caste | A group of identical agents with shared sensors, rules, and claim strategy. |
180
176
  | **Sensor** | Antennae | How a colony perceives signals. A query pattern like `task:ready` or `review:*`. |
181
177
  | **Rule** | Instinct | A stimulus→response mapping: "when I sense X, do Y and deposit Z." |
@@ -221,17 +217,45 @@ const host = await mandible('my-swarm')
221
217
 
222
218
  ### Colony builder
223
219
 
224
- For lower-level control, use the `colony()` builder directly:
220
+ Colony definitions are typically written as standalone configurator functions that return a `ColonyBuilder` callback. This keeps colony logic in its own module, reusable across hosts:
225
221
 
226
222
  ```typescript
227
- colony('name')
228
- .in(env) // which environment
223
+ // colonies/worker.ts
224
+ import type { ColonyBuilder } from '@mandible-ai/mandible';
225
+
226
+ export function configureWorker() {
227
+ return (c: ColonyBuilder) => c
228
+ .sense('task:ready', { unclaimed: true })
229
+ .do('process', async (signal, ctx) => {
230
+ ctx.log(`processing ${signal.id}`);
231
+ await ctx.deposit('task:done', signal.payload, {
232
+ causedBy: [signal.id],
233
+ });
234
+ await ctx.withdraw(signal.id);
235
+ })
236
+ .concurrency(1)
237
+ .claim('exclusive');
238
+ }
239
+ ```
240
+
241
+ Then wire it into a mandible system:
242
+
243
+ ```typescript
244
+ import { configureWorker } from './colonies/worker.js';
245
+
246
+ const host = await mandible('my-system')
247
+ .environment(env)
248
+ .colony('worker', configureWorker())
249
+ .start();
250
+ ```
251
+
252
+ The builder supports the full range of colony configuration:
253
+
254
+ ```typescript
255
+ (c: ColonyBuilder) => c
229
256
  .sense('type:pattern', { unclaimed: true }) // what to watch for
230
257
  .when(signal => signal.payload.priority > 0) // optional guard
231
- .do('shape', withClaudeCode({ // action provider
232
- prompt: signal => `Implement: ${signal.payload.name}`,
233
- allowedTools: ['Read', 'Write'],
234
- }))
258
+ .do('shape', handler) // action handler
235
259
  .concurrency(3) // max parallel agents
236
260
  .claim('lease', 30_000) // claim strategy
237
261
  .poll(2000) // sensor poll interval (ms)
@@ -239,7 +263,6 @@ colony('name')
239
263
  .autoWithdraw() // auto-remove processed signals
240
264
  .timeout(60_000) // action timeout
241
265
  .retry(3, 1000) // retry with backoff
242
- .build();
243
266
  ```
244
267
 
245
268
  **Claim strategies:**
@@ -400,7 +423,7 @@ src/
400
423
  server.ts Dashboard HTTP + WebSocket server
401
424
  dashboard.html Live dashboard UI
402
425
  cloud/
403
- index.ts Cloud client for hosted observability
426
+ index.ts Cloud client for deploy + bundle upload
404
427
  core/
405
428
  types.ts Core type system (Signal, Environment, Colony, Trust)
406
429
  signal.ts Signal creation, matching, decay, priority sorting
@@ -426,6 +449,7 @@ src/
426
449
  sentinel.ts Sentinel — trust monitoring and violation reporting
427
450
 
428
451
  tests/
452
+ cli/ Dashboard server, resolveEnvironments tests
429
453
  core/ Signal, runtime, attestation tests
430
454
  environments/ Filesystem, GitHub adapter tests
431
455
  dsl/ DSL and mandible() builder tests
@@ -484,11 +508,11 @@ Both colonies are wired to real Claude agents via `withClaudeCode`. The dashboar
484
508
 
485
509
  - [x] `mandible dev` CLI + live dashboard
486
510
  - [x] `withClaudeCode` wired to Claude Code SDK
487
- - [x] Test suite (378 tests, 95%+ coverage)
511
+ - [x] Test suite (462 tests, 95%+ coverage)
488
512
  - [x] GitHub environment adapter
489
513
  - [x] `mandible()` DSL with Host/Environment separation
490
514
  - [x] `local()` and `docker()` host implementations
491
- - [ ] `@mandible-ai/cloud` — run colonies in Edera microVMs via Mandible Cloud
515
+ - [x] `@mandible-ai/cloud` — run colonies in isolation using microVMs via Mandible Cloud
492
516
  - [ ] `create-mandible` starter template
493
517
  - [ ] Dashboard GIF + landing page
494
518
  - [ ] Dolt full implementation
@@ -40,16 +40,6 @@ for (const task of SEED_TASKS) {
40
40
  });
41
41
  console.log(` seeded: task:ready "${task.name}"`);
42
42
  }
43
- console.log('\nColonies are self-organizing. Watch signals:');
44
- console.log(` watch -n 0.5 'ls ${ENV_ROOT}/signals/'\n`);
45
- // Let colonies work
46
- await new Promise(r => setTimeout(r, 20_000));
47
- // Report
48
- const snapshot = await env.snapshot();
49
- console.log(`\nActive signals: ${snapshot.length}`);
50
- for (const s of snapshot) {
51
- console.log(` [${s.type}] ${s.payload.task ?? s.payload.name ?? '?'}`);
52
- }
53
- await host.stop();
54
- console.log('Stopped.');
43
+ console.log('\nColonies are self-organizing. Watch the dashboard.\n');
44
+ await host.dashboard({ port: 4040 });
55
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../examples/code-pipeline/index.ts"],"names":[],"mappings":";AACA,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,4DAA4D;AAC5D,4DAA4D;AAC5D,+BAA+B;AAC/B,EAAE;AACF,+BAA+B;AAC/B,uDAAuD;AACvD,+BAA+B;AAC/B,EAAE;AACF,UAAU;AACV,4CAA4C;AAC5C,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE/C,cAAc;AACd,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,eAAe,EAAE,CAAC,CAAC;AAEjF,qEAAqE;AACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;KACzC,WAAW,CAAC,GAAG,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,KAAK,EAAE,CAAC;AAEX,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,gBAAgB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,IAAI,CAAC,CAAC;AAE1C,kCAAkC;AAClC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAC9B,MAAM,GAAG,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;KACtD,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;AAC9D,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,cAAc,CAAC,CAAC;AAE1D,oBAAoB;AACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9C,SAAS;AACT,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../examples/code-pipeline/index.ts"],"names":[],"mappings":";AACA,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,4DAA4D;AAC5D,4DAA4D;AAC5D,+BAA+B;AAC/B,EAAE;AACF,+BAA+B;AAC/B,uDAAuD;AACvD,+BAA+B;AAC/B,EAAE;AACF,UAAU;AACV,4CAA4C;AAC5C,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE/C,cAAc;AACd,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,eAAe,EAAE,CAAC,CAAC;AAEjF,qEAAqE;AACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;KACzC,WAAW,CAAC,GAAG,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxB,KAAK,EAAE,CAAC;AAEX,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,gBAAgB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,IAAI,CAAC,CAAC;AAE1C,kCAAkC;AAClC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAC9B,MAAM,GAAG,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;KACtD,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;AAEtE,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC"}
@@ -18,30 +18,20 @@
18
18
  // ============================================================
19
19
  import { resolve } from 'node:path';
20
20
  import { rm, mkdir } from 'node:fs/promises';
21
- import { FilesystemEnvironment } from '../../src/environments/filesystem/index.js';
22
- import { colony } from '../../src/dsl/index.js';
23
- import { createRuntime } from '../../src/core/runtime.js';
24
- import { withClaudeCode } from '../../src/providers/claude-code.js';
25
- import { withStructuredOutput } from '../../src/providers/structured-output.js';
26
- import { withBash } from '../../src/providers/bash.js';
27
- import { assembleContext } from '../../src/providers/context.js';
21
+ import { mandible, FilesystemEnvironment, withClaudeCode, withStructuredOutput, withBash, assembleContext, } from '../../src/index.js';
28
22
  const ENV_ROOT = resolve('/tmp/stigmergy-demo-providers');
29
23
  const WORKSPACE = resolve('/tmp/stigmergy-workspace');
30
- async function setup() {
31
- await rm(ENV_ROOT, { recursive: true, force: true });
32
- await rm(WORKSPACE, { recursive: true, force: true });
33
- await mkdir(ENV_ROOT, { recursive: true });
34
- await mkdir(WORKSPACE, { recursive: true });
35
- console.log(`\n🌿 Environment: ${ENV_ROOT}`);
36
- console.log(`📁 Workspace: ${WORKSPACE}\n`);
37
- }
24
+ // Clean slate
25
+ await rm(ENV_ROOT, { recursive: true, force: true });
26
+ await rm(WORKSPACE, { recursive: true, force: true });
27
+ await mkdir(ENV_ROOT, { recursive: true });
28
+ await mkdir(WORKSPACE, { recursive: true });
29
+ const env = new FilesystemEnvironment({ root: ENV_ROOT, name: 'code-pipeline' });
38
30
  // ----------------------------------------------------------
39
- // Colony definitions using real providers
31
+ // Colony configurators using real providers
40
32
  // ----------------------------------------------------------
41
- function defineColonies(env) {
42
- // ── SHAPER — Full coding agent via Claude Code SDK ─────
43
- const shaperDef = colony('shaper')
44
- .in(env)
33
+ function shaper(c) {
34
+ return c
45
35
  .sense('task:ready', { unclaimed: true, minConcentration: 0.1 })
46
36
  .do('shape-code', withClaudeCode({
47
37
  model: 'claude-sonnet-4-5-20250929',
@@ -53,7 +43,6 @@ function defineColonies(env) {
53
43
  'Be concise — implement exactly what is asked, nothing more.',
54
44
  ].join('\n'),
55
45
  prompt: async (signal) => {
56
- // Assemble context from signal lineage
57
46
  const context = await assembleContext(signal, env, {
58
47
  includeLineage: true,
59
48
  includeRelated: ['review:changes-needed'],
@@ -76,12 +65,11 @@ function defineColonies(env) {
76
65
  },
77
66
  }))
78
67
  .concurrency(2)
79
- .claim('lease', 120_000) // 2 min lease for agent work
80
- .poll(2000)
81
- .build();
82
- // ── CRITIC — Structured output via Anthropic SDK ───────
83
- const criticDef = colony('critic')
84
- .in(env)
68
+ .claim('lease', 120_000)
69
+ .poll(2000);
70
+ }
71
+ function critic(c) {
72
+ return c
85
73
  .sense('artifact:shaped', { unclaimed: true, minConcentration: 0.1 })
86
74
  .do('review-code', withStructuredOutput({
87
75
  model: 'claude-sonnet-4-5-20250929',
@@ -112,13 +100,6 @@ function defineColonies(env) {
112
100
  'Review this artifact and provide your assessment.',
113
101
  ].join('\n');
114
102
  },
115
- // Schema would be a Zod object in real usage:
116
- // schema: z.object({
117
- // approved: z.boolean(),
118
- // feedback: z.string(),
119
- // severity: z.enum(['minor', 'major', 'blocking']),
120
- // suggestions: z.array(z.string()).optional(),
121
- // }),
122
103
  route: (result, signal) => {
123
104
  if (result.approved) {
124
105
  return {
@@ -137,19 +118,15 @@ function defineColonies(env) {
137
118
  }))
138
119
  .concurrency(2)
139
120
  .claim('lease', 60_000)
140
- .poll(2000)
141
- .build();
142
- // ── KEEPER — Bash commands for mechanical merge ────────
143
- const keeperDef = colony('keeper')
144
- .in(env)
121
+ .poll(2000);
122
+ }
123
+ function keeper(c) {
124
+ return c
145
125
  .sense('review:approved', { unclaimed: true, minConcentration: 0.1 })
146
126
  .do('merge-artifact', withBash({
147
127
  command: (signal) => {
148
128
  const artifact = signal.payload.artifact ?? {};
149
129
  const task = artifact.task ?? artifact.name ?? 'unknown';
150
- // In a real setup this would be:
151
- // git merge feature/${task} --no-ff -m "Merge: ${task}"
152
- // For the demo, we just echo success
153
130
  return `echo "Merged artifact: ${task}" && date`;
154
131
  },
155
132
  cwd: WORKSPACE,
@@ -180,66 +157,34 @@ function defineColonies(env) {
180
157
  }))
181
158
  .concurrency(1)
182
159
  .claim('exclusive')
183
- .poll(2000)
184
- .build();
185
- return { shaperDef, criticDef, keeperDef };
160
+ .poll(2000);
186
161
  }
187
162
  // ----------------------------------------------------------
188
- // Main
163
+ // Start via mandible DSL
189
164
  // ----------------------------------------------------------
190
- async function main() {
191
- await setup();
192
- const env = new FilesystemEnvironment({ root: ENV_ROOT, name: 'code-pipeline' });
193
- const { shaperDef, criticDef, keeperDef } = defineColonies(env);
194
- const shaperRuntime = createRuntime(shaperDef, { rate: 0.002, interval: 15_000 });
195
- const criticRuntime = createRuntime(criticDef, { rate: 0.002, interval: 15_000 });
196
- const keeperRuntime = createRuntime(keeperDef, { rate: 0.002, interval: 15_000 });
197
- console.log('🚀 Starting colonies with LLM providers...\n');
198
- await Promise.all([
199
- shaperRuntime.start(),
200
- criticRuntime.start(),
201
- keeperRuntime.start(),
202
- ]);
203
- // Seed tasks
204
- console.log('📋 Seeding tasks...\n');
205
- const tasks = [
206
- { name: 'auth-middleware', priority: 'high', description: 'Add JWT authentication middleware for Express' },
207
- { name: 'rate-limiter', priority: 'medium', description: 'Implement sliding window rate limiter' },
208
- ];
209
- for (const task of tasks) {
210
- const signal = await env.deposit({
211
- type: 'task:ready',
212
- payload: task,
213
- meta: { deposited_by: 'orchestrator', tags: [task.priority] },
214
- });
215
- console.log(` → task:ready "${task.name}" (${signal.id})`);
216
- }
217
- console.log('\n' + '─'.repeat(60));
218
- console.log(' Colonies self-organizing with real LLM providers.');
219
- console.log(' Shaper: Claude Code SDK | Critic: Anthropic | Keeper: Bash');
220
- console.log('─'.repeat(60) + '\n');
221
- // Let colonies work
222
- await sleep(60_000);
223
- // Report
224
- console.log('\n' + '═'.repeat(60));
225
- const snapshot = await env.snapshot();
226
- console.log(`\n Active signals: ${snapshot.length}`);
227
- for (const s of snapshot) {
228
- console.log(` [${s.type}] ${JSON.stringify(s.payload).slice(0, 80)}`);
229
- }
230
- console.log('\n Colony stats:');
231
- console.log(` Shaper: ${shaperRuntime.stats.signalsProcessed} processed`);
232
- console.log(` Critic: ${criticRuntime.stats.signalsProcessed} processed`);
233
- console.log(` Keeper: ${keeperRuntime.stats.signalsProcessed} processed`);
234
- await Promise.all([
235
- shaperRuntime.stop(),
236
- criticRuntime.stop(),
237
- keeperRuntime.stop(),
238
- ]);
239
- console.log('\n✅ Done.\n');
240
- }
241
- function sleep(ms) {
242
- return new Promise(resolve => setTimeout(resolve, ms));
165
+ const host = await mandible('code-pipeline-providers')
166
+ .environment(env)
167
+ .colony('shaper', shaper)
168
+ .colony('critic', critic)
169
+ .colony('keeper', keeper)
170
+ .start();
171
+ console.log(`Started ${host.colonies.length} colonies on ${host.name} host`);
172
+ console.log(`Environment: ${ENV_ROOT}`);
173
+ console.log(`Workspace: ${WORKSPACE}\n`);
174
+ // Seed tasks
175
+ const tasks = [
176
+ { name: 'auth-middleware', priority: 'high', description: 'Add JWT authentication middleware for Express' },
177
+ { name: 'rate-limiter', priority: 'medium', description: 'Implement sliding window rate limiter' },
178
+ ];
179
+ for (const task of tasks) {
180
+ await env.deposit({
181
+ type: 'task:ready',
182
+ payload: task,
183
+ meta: { deposited_by: 'seed', tags: [task.priority] },
184
+ });
185
+ console.log(` seeded: task:ready "${task.name}"`);
243
186
  }
244
- main().catch(console.error);
187
+ console.log('\nColonies self-organizing with real LLM providers.');
188
+ console.log('Shaper: Claude Code SDK | Critic: Anthropic | Keeper: Bash\n');
189
+ await host.dashboard({ port: 4040 });
245
190
  //# sourceMappingURL=with-providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-providers.js","sourceRoot":"","sources":["../../../examples/code-pipeline/with-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"with-providers.js","sourceRoot":"","sources":["../../../examples/code-pipeline/with-providers.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,30 @@ async function runDev(devArgs) {
106
106
  process.exit(1);
107
107
  }
108
108
  }
109
- const { startDevServer } = await import('./server.js');
110
- await startDevServer(config, { port, open: openBrowser });
109
+ const { startDashboard, LocalDashboardSource, resolveEnvironments } = await import('./server.js');
110
+ const { createRuntime, ColonyRuntime } = await import('../core/runtime.js');
111
+ const { EventBus } = await import('../core/events.js');
112
+ const environments = resolveEnvironments(config);
113
+ if (environments.length === 0) {
114
+ console.error('Config requires at least one environment or colonies with environments');
115
+ process.exit(1);
116
+ }
117
+ const eventBus = new EventBus();
118
+ const runtimes = config.colonies.map((def) => createRuntime(def, { eventBus }));
119
+ console.log(` starting ${runtimes.length} colonies...`);
120
+ for (const rt of runtimes) {
121
+ await rt.start();
122
+ console.log(` + ${rt.name} [running]`);
123
+ }
124
+ console.log('');
125
+ const source = new LocalDashboardSource(eventBus, environments, () => runtimes.map(rt => ({
126
+ name: rt.name,
127
+ state: rt.state,
128
+ activeCount: rt.activeCount,
129
+ concurrency: rt.concurrency,
130
+ stats: rt.stats,
131
+ })));
132
+ await startDashboard(source, { port, open: openBrowser });
111
133
  }
112
134
  main().catch((err) => {
113
135
  console.error(err);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,66 @@
1
- import type { ColonyDefinition, Environment } from '../core/types.js';
2
- export interface SignalServerConfig {
3
- url: string;
4
- apiKey: string;
5
- project: string;
1
+ import type { RuntimeEventData } from '../core/events.js';
2
+ import { EventBus } from '../core/events.js';
3
+ import type { ColonyDefinition, Environment, Signal } from '../core/types.js';
4
+ export interface ColonyInfo {
5
+ name: string;
6
+ state: string;
7
+ activeCount: number;
8
+ concurrency: number;
9
+ stats: {
10
+ signalsSensed: number;
11
+ signalsClaimed: number;
12
+ signalsProcessed: number;
13
+ signalsDeposited: number;
14
+ claimConflicts: number;
15
+ errors: number;
16
+ avgProcessingMs: number;
17
+ };
18
+ }
19
+ export interface DashboardSource {
20
+ /** Subscribe to runtime events */
21
+ onEvent(callback: (event: RuntimeEventData) => void): void;
22
+ /** Get current signal snapshot across all environments */
23
+ snapshot(): Promise<Signal[]>;
24
+ /** Get colony info */
25
+ colonies(): ColonyInfo[];
26
+ /** Get environment names */
27
+ environments(): string[];
28
+ /** Deposit a signal from the dashboard inspector */
29
+ deposit(type: string, payload: Record<string, unknown>, env?: string, tags?: string[]): Promise<Signal>;
30
+ /** Events buffered before dashboard started */
31
+ readonly bufferedEvents: RuntimeEventData[];
32
+ /** Cleanup */
33
+ close(): void;
6
34
  }
7
- export interface MandibleConfig {
35
+ export declare class LocalDashboardSource implements DashboardSource {
36
+ private eventBus;
37
+ private envs;
38
+ private colonyInfoFn;
39
+ private _bufferedEvents;
40
+ constructor(eventBus: EventBus, envs: Environment[], colonyInfoFn: () => ColonyInfo[], _bufferedEvents?: RuntimeEventData[]);
41
+ onEvent(cb: (event: RuntimeEventData) => void): void;
42
+ snapshot(): Promise<Signal[]>;
43
+ colonies(): ColonyInfo[];
44
+ environments(): string[];
45
+ deposit(type: string, payload: Record<string, unknown>, env?: string, tags?: string[]): Promise<Signal>;
46
+ get bufferedEvents(): RuntimeEventData[];
47
+ close(): void;
48
+ }
49
+ export interface SimpleConfig {
8
50
  environment?: Environment;
9
- signalServer?: SignalServerConfig;
51
+ environments?: Environment[];
10
52
  colonies: ColonyDefinition[];
11
- dashboard?: {
12
- port?: number;
13
- open?: boolean;
14
- };
15
53
  }
16
- export interface DevServerOptions {
54
+ /**
55
+ * Resolve environments from config with 3-tier fallback:
56
+ * 1. Explicit environments[] array
57
+ * 2. Singular environment field
58
+ * 3. Auto-discover from colony definitions (deduplicated by name)
59
+ */
60
+ export declare function resolveEnvironments(config: SimpleConfig): Environment[];
61
+ export interface DashboardOptions {
17
62
  port: number;
18
63
  open: boolean;
19
64
  }
20
- export declare function startDevServer(config: MandibleConfig, options: DevServerOptions): Promise<void>;
65
+ export declare function startDashboard(source: DashboardSource, options: DashboardOptions): Promise<void>;
21
66
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAU,MAAM,kBAAkB,CAAC;AAI9E,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAgID,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAsPf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,0DAA0D;IAC1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,IAAI,UAAU,EAAE,CAAC;IACzB,4BAA4B;IAC5B,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,oDAAoD;IACpD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxG,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC5C,cAAc;IACd,KAAK,IAAI,IAAI,CAAC;CACf;AAID,qBAAa,oBAAqB,YAAW,eAAe;IAExD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAHf,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EAAE,EACnB,YAAY,EAAE,MAAM,UAAU,EAAE,EAChC,eAAe,GAAE,gBAAgB,EAAO;IAGlD,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAI9C,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYnC,QAAQ,IAAI,UAAU,EAAE;IAIxB,YAAY,IAAI,MAAM,EAAE;IAIlB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7G,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAEvC;IAED,KAAK,IAAI,IAAI;CAGd;AAID,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAavE;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAuHf"}