@nwire/mcp 0.8.0 → 0.8.17

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/README.md CHANGED
@@ -24,7 +24,7 @@ import { createKernel } from "@nwire/kernel";
24
24
 
25
25
  const kernel = createKernel();
26
26
  kernel.router.register("dev", devHandler);
27
- kernel.router.register("ls", listHandler);
27
+ kernel.router.register("ls", listHandler);
28
28
 
29
29
  await serveMcp({ kernel, serverName: "my-app" });
30
30
  // Process now speaks MCP over stdin/stdout; stderr is for logs.
@@ -38,10 +38,10 @@ Then point Claude Desktop at the binary in `claude_desktop_config.json`:
38
38
 
39
39
  ## Surface
40
40
 
41
- | Export | Role |
42
- | ------------------------------------------------------- | ------------------------------------------------------------- |
43
- | `serveMcp({ kernel?, serverName?, serverVersion?, stdin?, stdout? })` | Boot the server on stdio; resolves when stdin closes. |
44
- | `JsonRpcRequest` / `JsonRpcResponse` / `JsonRpcNotification` | JSON-RPC types for callers writing alternative transports (WebSocket, etc.). |
41
+ | Export | Role |
42
+ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
43
+ | `serveMcp({ kernel?, serverName?, serverVersion?, stdin?, stdout? })` | Boot the server on stdio; resolves when stdin closes. |
44
+ | `JsonRpcRequest` / `JsonRpcResponse` / `JsonRpcNotification` | JSON-RPC types for callers writing alternative transports (WebSocket, etc.). |
45
45
 
46
46
  ### Built-in tools
47
47
 
@@ -49,23 +49,23 @@ Beyond the kernel's CommandRouter, the server exposes these tools:
49
49
 
50
50
  **Inspect (read-only)** — proxy `/__nwire/*` on a running wire, fall back to `.nwire/*.json` on disk:
51
51
 
52
- | Tool | Reads |
53
- | ------------------- | ---------------------------------------------------- |
54
- | `manifest` | `.nwire/manifest.json` |
55
- | `list_actions` | `.nwire/actions.json` |
56
- | `list_events` | `.nwire/events.json` |
57
- | `list_hooks` | `.nwire/hooks.json` |
58
- | `list_plugins` | `.nwire/plugins.json` |
59
- | `recent_events` | Live `/__nwire/events/recent` |
60
- | `recent_telemetry` | Live `/__nwire/telemetry/recent` |
52
+ | Tool | Reads |
53
+ | ------------------ | -------------------------------- |
54
+ | `manifest` | `.nwire/manifest.json` |
55
+ | `list_actions` | `.nwire/actions.json` |
56
+ | `list_events` | `.nwire/events.json` |
57
+ | `list_hooks` | `.nwire/hooks.json` |
58
+ | `list_plugins` | `.nwire/plugins.json` |
59
+ | `recent_events` | Live `/__nwire/events/recent` |
60
+ | `recent_telemetry` | Live `/__nwire/telemetry/recent` |
61
61
 
62
62
  **Write (mutating)** — POST to a live wire:
63
63
 
64
- | Tool | Posts to |
65
- | ---------------- | --------------------------------------------------------- |
66
- | `dispatch_action`| `/__nwire/dispatch` — fire any registered action. |
67
- | `run_command` | `/__nwire/commands/run` — invoke a `defineCommand`. |
68
- | `replay_trace` | `/__nwire/replay` — replay a recording against the wire. |
64
+ | Tool | Posts to |
65
+ | ----------------- | -------------------------------------------------------- |
66
+ | `dispatch_action` | `/__nwire/dispatch` — fire any registered action. |
67
+ | `run_command` | `/__nwire/commands/run` — invoke a `defineCommand`. |
68
+ | `replay_trace` | `/__nwire/replay` — replay a recording against the wire. |
69
69
 
70
70
  Write tools gracefully gap-flag when the target endpoint isn't mounted
71
71
  (e.g., MCP running standalone with no wire up).
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAM9E,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACpE;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AASD,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAG,MAAM,CAAC,cAAc,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3E;AAoND,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAM9E,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACpE;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AASD,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3E;AAoND,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAwB7D,MAAM,SAAS,GAAY,CAAC,KAAK,CAAC;AAClC,MAAM,aAAa,GAAQ,CAAC,KAAK,CAAC;AAClC,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC;AAClC,MAAM,YAAY,GAAS,CAAC,KAAK,CAAC;AAyBlC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAA2B,EAAE;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC;IACvD,MAAM,KAAK,GAAI,OAAO,CAAC,KAAK,IAAK,OAAO,CAAC,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAEhD,MAAM,IAAI,GAAG,CAAC,GAA0C,EAAQ,EAAE;QAChE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAQ,EAAE;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAE5E,MAAM,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QACzB,IAAI,OAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE;aAC5D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,+BAA+B,CAAC,CAAC;AACvC,CAAC;AASD,KAAK,UAAU,MAAM,CAAC,GAAmB,EAAE,GAAkB;IAC3D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,YAAY;gBACf,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,MAAM,EAAE;wBACN,eAAe,EAAE,YAAY;wBAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE;wBAChE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;qBAChD;iBACF,CAAC,CAAC;gBACH,OAAO;YAET,KAAK,YAAY;gBACf,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,MAAM,EAAE;wBACN,KAAK,EAAE;4BACL,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACzC,IAAI;gCACJ,WAAW,EAAE,kBAAkB,IAAI,GAAG;gCACtC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE;6BAC5D,CAAC,CAAC;4BACH,yDAAyD;4BACzD,wCAAwC;4BACxC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC1B,IAAI,EAAS,CAAC,CAAC,IAAI;gCACnB,WAAW,EAAE,CAAC,CAAC,WAAW;gCAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;6BAC3B,CAAC,CAAC;4BACH,yDAAyD;4BACzD,yDAAyD;4BACzD,4CAA4C;4BAC5C,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCACxB,IAAI,EAAS,CAAC,CAAC,IAAI;gCACnB,WAAW,EAAE,CAAC,CAAC,WAAW;gCAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;6BAC3B,CAAC,CAAC;yBACJ;qBACF;iBACF,CAAC,CAAC;gBACH,OAAO;YAET,KAAK,YAAY;gBACf,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7B,OAAO;YAET;gBACE,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE;iBAC1E,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE;YACF,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE;SAC/D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,GAAmB,EACnB,EAA0B,EAC1B,GAAkB;IAElB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAA0B,CAAC;IACpD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAA4B,CAAC;IACtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE;YACF,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,4BAA4B,EAAE;SAC3E,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,oEAAoE;IACpE,oEAAoE;IACpE,kEAAkE;IAClE,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;oBACzD,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE;YACF,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE;SACvE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,kEAAkE;IAClE,MAAM,MAAM,GAAkB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE;oBACN,aAAa,EAAE,MAAM,CAAC,SAAS;oBAC/B,OAAO,EAAE,KAAK,CAAC,IAAI;oBACnB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB;aACF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE;oBACN,aAAa,EAAE,MAAM,CAAC,SAAS;oBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;iBACf;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE;YACF,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE;YACF,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;gBACzD,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAChB,MAA6B,EAC7B,MAAuC;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAsB,EAAE,EAAE;YACjD,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrE,iEAAiE;YACjE,qEAAqE;YACrE,sDAAsD;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAyBH,kEAAkE;AAClE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAetE;AAgFD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAS,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AA8BD,eAAO,MAAM,YAAY,EAAE,SAAS,cAAc,EA2HjD,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAExE"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBH,kEAAkE;AAClE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAetE;AAoGD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AA8BD,eAAO,MAAM,YAAY,EAAE,SAAS,cAAc,EAsHjD,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAExE"}
package/dist/inspect.js CHANGED
@@ -27,8 +27,7 @@ import { existsSync, readFileSync } from "node:fs";
27
27
  import { resolve } from "node:path";
28
28
  // ─── Port discovery ────────────────────────────────────────────────
29
29
  const DEFAULT_PROBE_PORTS = [
30
- 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010,
31
- 3030, 3040, 3050, 4000, 8080,
30
+ 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3030, 3040, 3050, 4000, 8080,
32
31
  ];
33
32
  const PROBE_TIMEOUT_MS = 150;
34
33
  const CACHE_TTL_MS = 5_000;
@@ -63,7 +62,10 @@ export async function discoverInspectUrl() {
63
62
  function parsePorts(raw) {
64
63
  if (!raw)
65
64
  return undefined;
66
- const ports = raw.split(",").map((s) => Number(s.trim())).filter((n) => n > 0);
65
+ const ports = raw
66
+ .split(",")
67
+ .map((s) => Number(s.trim()))
68
+ .filter((n) => n > 0);
67
69
  return ports.length > 0 ? ports : undefined;
68
70
  }
69
71
  /**
@@ -74,7 +76,10 @@ function parsePorts(raw) {
74
76
  function isNwireWire(port, timeoutMs) {
75
77
  return new Promise((resolveProbe) => {
76
78
  const sock = createConnection({ host: "127.0.0.1", port });
77
- sock.setTimeout(timeoutMs, () => { sock.destroy(); resolveProbe(false); });
79
+ sock.setTimeout(timeoutMs, () => {
80
+ sock.destroy();
81
+ resolveProbe(false);
82
+ });
78
83
  sock.once("error", () => resolveProbe(false));
79
84
  sock.once("connect", () => {
80
85
  sock.destroy();
@@ -85,11 +90,17 @@ function isNwireWire(port, timeoutMs) {
85
90
  }
86
91
  let buf = "";
87
92
  res.setEncoding("utf8");
88
- res.on("data", (c) => { buf += c; if (buf.length > 1024)
89
- res.destroy(); });
93
+ res.on("data", (c) => {
94
+ buf += c;
95
+ if (buf.length > 1024)
96
+ res.destroy();
97
+ });
90
98
  res.on("end", () => resolveProbe(buf.trimStart().startsWith("[")));
91
99
  });
92
- req.setTimeout(timeoutMs, () => { req.destroy(); resolveProbe(false); });
100
+ req.setTimeout(timeoutMs, () => {
101
+ req.destroy();
102
+ resolveProbe(false);
103
+ });
93
104
  req.once("error", () => resolveProbe(false));
94
105
  req.end();
95
106
  });
@@ -102,7 +113,9 @@ async function httpGetJson(url) {
102
113
  const req = httpRequest({ host: u.hostname, port: u.port || 80, path: u.pathname + u.search, method: "GET" }, (res) => {
103
114
  let buf = "";
104
115
  res.setEncoding("utf8");
105
- res.on("data", (c) => { buf += c; });
116
+ res.on("data", (c) => {
117
+ buf += c;
118
+ });
106
119
  res.on("end", () => {
107
120
  if ((res.statusCode ?? 0) >= 400) {
108
121
  return rejectGet(new Error(`GET ${url} → ${res.statusCode}`));
@@ -115,7 +128,10 @@ async function httpGetJson(url) {
115
128
  }
116
129
  });
117
130
  });
118
- req.setTimeout(5_000, () => { req.destroy(); rejectGet(new Error(`GET ${url} timed out`)); });
131
+ req.setTimeout(5_000, () => {
132
+ req.destroy();
133
+ rejectGet(new Error(`GET ${url} timed out`));
134
+ });
119
135
  req.once("error", rejectGet);
120
136
  req.end();
121
137
  });
@@ -167,7 +183,7 @@ export const inspectTools = [
167
183
  },
168
184
  {
169
185
  name: "list_actions",
170
- description: "List actions exposed by the wire. Optional `module` filter (e.g. \"submissions\").",
186
+ description: 'List actions exposed by the wire. Optional `module` filter (e.g. "submissions").',
171
187
  inputSchema: {
172
188
  type: "object",
173
189
  additionalProperties: false,
@@ -215,7 +231,7 @@ export const inspectTools = [
215
231
  },
216
232
  {
217
233
  name: "list_plugins",
218
- description: "List discovered plugins (reads .nwire/plugins.json). Optional `kind` filter: \"plugin\" | \"module\".",
234
+ description: 'List discovered plugins (reads .nwire/plugins.json). Optional `kind` filter: "plugin" | "module".',
219
235
  inputSchema: {
220
236
  type: "object",
221
237
  additionalProperties: false,
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-tools.d.ts","sourceRoot":"","sources":["../src/write-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AA4MvE,eAAO,MAAM,UAAU,EAAE,SAAS,cAAc,EAI/C,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
1
+ {"version":3,"file":"write-tools.d.ts","sourceRoot":"","sources":["../src/write-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AA+MvE,eAAO,MAAM,UAAU,EAAE,SAAS,cAAc,EAA8C,CAAC;AAE/F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
@@ -44,7 +44,9 @@ async function httpPostJson(url, payload) {
44
44
  }, (res) => {
45
45
  let buf = "";
46
46
  res.setEncoding("utf8");
47
- res.on("data", (c) => { buf += c; });
47
+ res.on("data", (c) => {
48
+ buf += c;
49
+ });
48
50
  res.on("end", () => {
49
51
  const status = res.statusCode ?? 0;
50
52
  if (buf.length === 0)
@@ -201,11 +203,7 @@ const replayTrace = {
201
203
  return body;
202
204
  },
203
205
  };
204
- export const writeTools = [
205
- dispatchAction,
206
- runCommand,
207
- replayTrace,
208
- ];
206
+ export const writeTools = [dispatchAction, runCommand, replayTrace];
209
207
  export function findWriteTool(name) {
210
208
  return writeTools.find((t) => t.name === name);
211
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write-tools.js","sourceRoot":"","sources":["../src/write-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-tools.js","sourceRoot":"","sources":["../src/write-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nwire/mcp",
3
- "version": "0.8.0",
3
+ "version": "0.8.17",
4
4
  "private": false,
5
5
  "description": "Nwire MCP (Model Context Protocol) server — exposes the kernel's CommandRouter as MCP tools over stdio. AI clients (Claude, Cursor, …) drive nwire commands the same way the CLI and Studio do.",
6
6
  "license": "MIT",
@@ -22,7 +22,7 @@
22
22
  "access": "public"
23
23
  },
24
24
  "dependencies": {
25
- "@nwire/kernel": "0.8.0"
25
+ "@nwire/kernel": "0.8.17"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.9",
@@ -21,23 +21,25 @@ import { createKernel, type Kernel } from "@nwire/kernel";
21
21
  import { serveMcp } from "../index";
22
22
  import { resetInspectDiscoveryCache } from "../inspect";
23
23
 
24
- interface PendingResponse { resolve: (value: any) => void }
24
+ interface PendingResponse {
25
+ resolve: (value: any) => void;
26
+ }
25
27
 
26
28
  class StdioHarness {
27
- readonly stdin = new PassThrough();
29
+ readonly stdin = new PassThrough();
28
30
  readonly stdout = new PassThrough();
29
- private buffer = "";
31
+ private buffer = "";
30
32
  private pending = new Map<string | number, PendingResponse>();
31
33
  readonly notifications: Array<{ method: string; params?: any }> = [];
32
- readonly served: Promise<void>;
34
+ readonly served: Promise<void>;
33
35
  private id = 0;
34
36
 
35
37
  constructor(kernel: Kernel) {
36
38
  this.served = serveMcp({
37
39
  kernel,
38
- stdin: this.stdin,
40
+ stdin: this.stdin,
39
41
  stdout: this.stdout,
40
- serverName: "nwire-test",
42
+ serverName: "nwire-test",
41
43
  serverVersion: "0.0.0-test",
42
44
  });
43
45
  this.stdout.setEncoding("utf8");
@@ -74,22 +76,22 @@ class StdioHarness {
74
76
  }
75
77
 
76
78
  interface StubWire {
77
- readonly url: string;
79
+ readonly url: string;
78
80
  readonly server: Server;
79
- manifest: Record<string, unknown>;
80
- events: unknown[];
81
- telemetry: unknown[];
82
- requests: Array<{ method: string; url: string }>;
81
+ manifest: Record<string, unknown>;
82
+ events: unknown[];
83
+ telemetry: unknown[];
84
+ requests: Array<{ method: string; url: string }>;
83
85
  }
84
86
 
85
87
  async function startStubWire(): Promise<StubWire> {
86
88
  const stub: StubWire = {
87
- url: "",
88
- server: null as unknown as Server,
89
- manifest: {},
90
- events: [],
89
+ url: "",
90
+ server: null as unknown as Server,
91
+ manifest: {},
92
+ events: [],
91
93
  telemetry: [],
92
- requests: [],
94
+ requests: [],
93
95
  };
94
96
  const server = createServer((req, res) => {
95
97
  stub.requests.push({ method: req.method ?? "?", url: req.url ?? "" });
@@ -123,10 +125,10 @@ function parseToolResult(res: any): unknown {
123
125
  }
124
126
 
125
127
  describe("@nwire/mcp — inspect tools", () => {
126
- let kernel: Kernel;
128
+ let kernel: Kernel;
127
129
  let harness: StdioHarness;
128
- let stub: StubWire | undefined;
129
- let tmpDir: string | undefined;
130
+ let stub: StubWire | undefined;
131
+ let tmpDir: string | undefined;
130
132
  let prevCwd: string | undefined;
131
133
  let prevInspectUrl: string | undefined;
132
134
 
@@ -171,7 +173,11 @@ describe("@nwire/mcp — inspect tools", () => {
171
173
 
172
174
  it("manifest returns the live wire's manifest body", async () => {
173
175
  stub = await startStubWire();
174
- stub.manifest = { actions: [{ name: "a.do", module: "alpha" }], events: [], generatedAt: "now" };
176
+ stub.manifest = {
177
+ actions: [{ name: "a.do", module: "alpha" }],
178
+ events: [],
179
+ generatedAt: "now",
180
+ };
175
181
  process.env.NWIRE_INSPECT_URL = stub.url;
176
182
  harness = new StdioHarness(kernel);
177
183
 
@@ -186,21 +192,21 @@ describe("@nwire/mcp — inspect tools", () => {
186
192
  stub.manifest = {
187
193
  actions: [
188
194
  { name: "submit", module: "submissions" },
189
- { name: "grade", module: "submissions" },
190
- { name: "enrol", module: "roster" },
195
+ { name: "grade", module: "submissions" },
196
+ { name: "enrol", module: "roster" },
191
197
  ],
192
198
  };
193
199
  process.env.NWIRE_INSPECT_URL = stub.url;
194
200
  harness = new StdioHarness(kernel);
195
201
 
196
202
  const unfiltered = await harness.request("tools/call", {
197
- name: "list_actions",
203
+ name: "list_actions",
198
204
  arguments: {},
199
205
  });
200
206
  expect((parseToolResult(unfiltered) as unknown[]).length).toBe(3);
201
207
 
202
208
  const filtered = await harness.request("tools/call", {
203
- name: "list_actions",
209
+ name: "list_actions",
204
210
  arguments: { module: "submissions" },
205
211
  });
206
212
  const actions = parseToolResult(filtered) as Array<{ name: string }>;
@@ -212,15 +218,15 @@ describe("@nwire/mcp — inspect tools", () => {
212
218
  stub.manifest = {
213
219
  events: [
214
220
  { name: "Submitted", module: "submissions" },
215
- { name: "Graded", module: "submissions" },
216
- { name: "Enrolled", module: "roster" },
221
+ { name: "Graded", module: "submissions" },
222
+ { name: "Enrolled", module: "roster" },
217
223
  ],
218
224
  };
219
225
  process.env.NWIRE_INSPECT_URL = stub.url;
220
226
  harness = new StdioHarness(kernel);
221
227
 
222
228
  const res = await harness.request("tools/call", {
223
- name: "list_events",
229
+ name: "list_events",
224
230
  arguments: { module: "roster" },
225
231
  });
226
232
  const events = parseToolResult(res) as Array<{ name: string }>;
@@ -229,7 +235,7 @@ describe("@nwire/mcp — inspect tools", () => {
229
235
  });
230
236
 
231
237
  it("list_hooks reads .nwire/hooks.json from disk", async () => {
232
- tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-hooks-"));
238
+ tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-hooks-"));
233
239
  prevCwd = process.cwd();
234
240
  mkdirSync(join(tmpDir, ".nwire"), { recursive: true });
235
241
  const hooks = [{ name: "tracing", phase: "before" }];
@@ -246,12 +252,12 @@ describe("@nwire/mcp — inspect tools", () => {
246
252
  });
247
253
 
248
254
  it("list_plugins reads .nwire/plugins.json from disk and supports kind filter", async () => {
249
- tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-plugins-"));
255
+ tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-plugins-"));
250
256
  prevCwd = process.cwd();
251
257
  mkdirSync(join(tmpDir, ".nwire"), { recursive: true });
252
258
  const plugins = [
253
- { name: "rbac", kind: "plugin" },
254
- { name: "identity", kind: "plugin" },
259
+ { name: "rbac", kind: "plugin" },
260
+ { name: "identity", kind: "plugin" },
255
261
  { name: "submissions", kind: "module" },
256
262
  ];
257
263
  writeFileSync(join(tmpDir, ".nwire", "plugins.json"), JSON.stringify(plugins));
@@ -261,13 +267,13 @@ describe("@nwire/mcp — inspect tools", () => {
261
267
  harness = new StdioHarness(kernel);
262
268
 
263
269
  const all = await harness.request("tools/call", {
264
- name: "list_plugins",
270
+ name: "list_plugins",
265
271
  arguments: {},
266
272
  });
267
273
  expect((parseToolResult(all) as unknown[]).length).toBe(3);
268
274
 
269
275
  const onlyPlugins = await harness.request("tools/call", {
270
- name: "list_plugins",
276
+ name: "list_plugins",
271
277
  arguments: { kind: "plugin" },
272
278
  });
273
279
  expect((parseToolResult(onlyPlugins) as Array<{ name: string }>).map((p) => p.name)).toEqual([
@@ -278,12 +284,15 @@ describe("@nwire/mcp — inspect tools", () => {
278
284
 
279
285
  it("recent_events passes the limit param through to the wire", async () => {
280
286
  stub = await startStubWire();
281
- stub.events = [{ name: "Submitted", t: 1 }, { name: "Graded", t: 2 }];
287
+ stub.events = [
288
+ { name: "Submitted", t: 1 },
289
+ { name: "Graded", t: 2 },
290
+ ];
282
291
  process.env.NWIRE_INSPECT_URL = stub.url;
283
292
  harness = new StdioHarness(kernel);
284
293
 
285
294
  const res = await harness.request("tools/call", {
286
- name: "recent_events",
295
+ name: "recent_events",
287
296
  arguments: { limit: 42 },
288
297
  });
289
298
  expect(res.result.isError).toBe(false);
@@ -299,7 +308,7 @@ describe("@nwire/mcp — inspect tools", () => {
299
308
  harness = new StdioHarness(kernel);
300
309
 
301
310
  const res = await harness.request("tools/call", {
302
- name: "recent_telemetry",
311
+ name: "recent_telemetry",
303
312
  arguments: {},
304
313
  });
305
314
  expect(res.result.isError).toBe(false);
@@ -310,7 +319,7 @@ describe("@nwire/mcp — inspect tools", () => {
310
319
 
311
320
  it("manifest gracefully fails when no wire and no cache are available", async () => {
312
321
  // Point at an empty tmp dir with no .nwire/ AND no live wire URL.
313
- tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-empty-"));
322
+ tmpDir = mkdtempSync(join(tmpdir(), "nwire-mcp-empty-"));
314
323
  prevCwd = process.cwd();
315
324
  process.chdir(tmpDir);
316
325
  // Force discovery to find nothing: set a deliberately-empty probe list
@@ -10,23 +10,25 @@ import { PassThrough } from "node:stream";
10
10
  import { createKernel, type Kernel } from "@nwire/kernel";
11
11
  import { serveMcp } from "../index";
12
12
 
13
- interface PendingResponse { resolve: (value: any) => void }
13
+ interface PendingResponse {
14
+ resolve: (value: any) => void;
15
+ }
14
16
 
15
17
  class StdioHarness {
16
- readonly stdin = new PassThrough();
18
+ readonly stdin = new PassThrough();
17
19
  readonly stdout = new PassThrough();
18
- private buffer = "";
20
+ private buffer = "";
19
21
  private pending = new Map<string | number, PendingResponse>();
20
22
  readonly notifications: Array<{ method: string; params?: any }> = [];
21
- readonly served: Promise<void>;
23
+ readonly served: Promise<void>;
22
24
  private id = 0;
23
25
 
24
26
  constructor(kernel: Kernel) {
25
27
  this.served = serveMcp({
26
28
  kernel,
27
- stdin: this.stdin,
29
+ stdin: this.stdin,
28
30
  stdout: this.stdout,
29
- serverName: "nwire-test",
31
+ serverName: "nwire-test",
30
32
  serverVersion: "0.0.0-test",
31
33
  });
32
34
  this.stdout.setEncoding("utf8");
@@ -63,7 +65,7 @@ class StdioHarness {
63
65
  }
64
66
 
65
67
  describe("@nwire/mcp — JSON-RPC over stdio", () => {
66
- let kernel: Kernel;
68
+ let kernel: Kernel;
67
69
  let harness: StdioHarness;
68
70
 
69
71
  beforeEach(() => {
@@ -83,13 +85,13 @@ describe("@nwire/mcp — JSON-RPC over stdio", () => {
83
85
  });
84
86
 
85
87
  it("tools/list returns every registered command", async () => {
86
- kernel.router.register("greet", async () => "hi");
88
+ kernel.router.register("greet", async () => "hi");
87
89
  kernel.router.register("double", async (_ctx, a: { n: number }) => a.n * 2);
88
90
  harness = new StdioHarness(kernel);
89
91
 
90
92
  const res = await harness.request("tools/list", {});
91
93
  const tools = res.result.tools as Array<{
92
- name: string;
94
+ name: string;
93
95
  description: string;
94
96
  inputSchema: { type: string };
95
97
  }>;
@@ -109,7 +111,7 @@ describe("@nwire/mcp — JSON-RPC over stdio", () => {
109
111
  harness = new StdioHarness(kernel);
110
112
 
111
113
  const res = await harness.request("tools/call", {
112
- name: "double",
114
+ name: "double",
113
115
  arguments: { n: 21 },
114
116
  });
115
117
  expect(res.result.isError).toBe(false);
@@ -15,23 +15,25 @@ import { createKernel, type Kernel } from "@nwire/kernel";
15
15
  import { serveMcp } from "../index";
16
16
  import { resetInspectDiscoveryCache } from "../inspect";
17
17
 
18
- interface PendingResponse { resolve: (value: any) => void }
18
+ interface PendingResponse {
19
+ resolve: (value: any) => void;
20
+ }
19
21
 
20
22
  class StdioHarness {
21
- readonly stdin = new PassThrough();
23
+ readonly stdin = new PassThrough();
22
24
  readonly stdout = new PassThrough();
23
- private buffer = "";
25
+ private buffer = "";
24
26
  private pending = new Map<string | number, PendingResponse>();
25
27
  readonly notifications: Array<{ method: string; params?: any }> = [];
26
- readonly served: Promise<void>;
28
+ readonly served: Promise<void>;
27
29
  private id = 0;
28
30
 
29
31
  constructor(kernel: Kernel) {
30
32
  this.served = serveMcp({
31
33
  kernel,
32
- stdin: this.stdin,
34
+ stdin: this.stdin,
33
35
  stdout: this.stdout,
34
- serverName: "nwire-test",
36
+ serverName: "nwire-test",
35
37
  serverVersion: "0.0.0-test",
36
38
  });
37
39
  this.stdout.setEncoding("utf8");
@@ -69,12 +71,12 @@ class StdioHarness {
69
71
 
70
72
  interface CapturedRequest {
71
73
  readonly method: string;
72
- readonly url: string;
73
- readonly body: unknown;
74
+ readonly url: string;
75
+ readonly body: unknown;
74
76
  }
75
77
 
76
78
  interface StubWire {
77
- readonly url: string;
79
+ readonly url: string;
78
80
  readonly server: Server;
79
81
  readonly requests: CapturedRequest[];
80
82
  /** Override per-path responses. Default → 404 so gap-flag tests fire. */
@@ -85,8 +87,10 @@ async function readBody(req: IncomingMessage): Promise<unknown> {
85
87
  return new Promise((resolveBody) => {
86
88
  let raw = "";
87
89
  req.setEncoding("utf8");
88
- req.on("data", (c: string) => { raw += c; });
89
- req.on("end", () => {
90
+ req.on("data", (c: string) => {
91
+ raw += c;
92
+ });
93
+ req.on("end", () => {
90
94
  if (raw.length === 0) return resolveBody(undefined);
91
95
  try {
92
96
  resolveBody(JSON.parse(raw));
@@ -99,15 +103,15 @@ async function readBody(req: IncomingMessage): Promise<unknown> {
99
103
 
100
104
  async function startStubWire(): Promise<StubWire> {
101
105
  const stub: StubWire = {
102
- url: "",
103
- server: null as unknown as Server,
106
+ url: "",
107
+ server: null as unknown as Server,
104
108
  requests: [],
105
- routes: new Map(),
109
+ routes: new Map(),
106
110
  };
107
111
  const server = createServer(async (req, res) => {
108
- const url = req.url ?? "";
112
+ const url = req.url ?? "";
109
113
  const method = req.method ?? "?";
110
- const body = method === "POST" ? await readBody(req) : undefined;
114
+ const body = method === "POST" ? await readBody(req) : undefined;
111
115
  stub.requests.push({ method, url, body });
112
116
 
113
117
  // The discovery probe hits GET /_nwire/events/recent — always 200 [].
@@ -148,9 +152,9 @@ function parseToolResult(res: any): unknown {
148
152
  }
149
153
 
150
154
  describe("@nwire/mcp — write tools", () => {
151
- let kernel: Kernel;
155
+ let kernel: Kernel;
152
156
  let harness: StdioHarness;
153
- let stub: StubWire | undefined;
157
+ let stub: StubWire | undefined;
154
158
  let prevInspectUrl: string | undefined;
155
159
  let prevProbePorts: string | undefined;
156
160
 
@@ -188,14 +192,14 @@ describe("@nwire/mcp — write tools", () => {
188
192
  stub.routes.set("POST /_nwire/dispatch", (body) => {
189
193
  expect(body).toEqual({
190
194
  action: "submissions.submit",
191
- input: { studentId: "alice", answer: "42" },
195
+ input: { studentId: "alice", answer: "42" },
192
196
  userId: "u-1",
193
197
  });
194
198
  return {
195
199
  status: 200,
196
- body: {
197
- ok: true,
198
- result: { events: [{ name: "Submitted" }] },
200
+ body: {
201
+ ok: true,
202
+ result: { events: [{ name: "Submitted" }] },
199
203
  envelope: { messageId: "m-1", correlationId: "c-1" },
200
204
  },
201
205
  };
@@ -204,11 +208,11 @@ describe("@nwire/mcp — write tools", () => {
204
208
  harness = new StdioHarness(kernel);
205
209
 
206
210
  const res = await harness.request("tools/call", {
207
- name: "dispatch_action",
211
+ name: "dispatch_action",
208
212
  arguments: {
209
213
  action: "submissions.submit",
210
- input: { studentId: "alice", answer: "42" },
211
- user: { id: "u-1", roles: ["student"] },
214
+ input: { studentId: "alice", answer: "42" },
215
+ user: { id: "u-1", roles: ["student"] },
212
216
  },
213
217
  });
214
218
  expect(res.result.isError).toBe(false);
@@ -226,7 +230,7 @@ describe("@nwire/mcp — write tools", () => {
226
230
  harness = new StdioHarness(kernel);
227
231
 
228
232
  const res = await harness.request("tools/call", {
229
- name: "dispatch_action",
233
+ name: "dispatch_action",
230
234
  arguments: { action: "x", input: {} },
231
235
  });
232
236
  expect(res.result.isError).toBe(true);
@@ -242,7 +246,7 @@ describe("@nwire/mcp — write tools", () => {
242
246
  harness = new StdioHarness(kernel);
243
247
 
244
248
  const res = await harness.request("tools/call", {
245
- name: "run_command",
249
+ name: "run_command",
246
250
  arguments: { name: "dev", args: {} },
247
251
  });
248
252
  expect(res.result.isError).toBe(true);
@@ -267,7 +271,7 @@ describe("@nwire/mcp — write tools", () => {
267
271
  harness = new StdioHarness(kernel);
268
272
 
269
273
  const res = await harness.request("tools/call", {
270
- name: "run_command",
274
+ name: "run_command",
271
275
  arguments: { name: "dev", args: { wire: "main" } },
272
276
  });
273
277
  expect(res.result.isError).toBe(false);
@@ -283,7 +287,7 @@ describe("@nwire/mcp — write tools", () => {
283
287
  harness = new StdioHarness(kernel);
284
288
 
285
289
  const res = await harness.request("tools/call", {
286
- name: "run_command",
290
+ name: "run_command",
287
291
  arguments: { name: "dev", args: {} },
288
292
  });
289
293
  expect(res.result.isError).toBe(true);
@@ -298,12 +302,12 @@ describe("@nwire/mcp — write tools", () => {
298
302
  harness = new StdioHarness(kernel);
299
303
 
300
304
  const recording = {
301
- ctxIn: {},
305
+ ctxIn: {},
302
306
  outcome: "ok",
303
- steps: [{ stepKind: "branch", stepName: "guard", phase: "enter" }],
307
+ steps: [{ stepKind: "branch", stepName: "guard", phase: "enter" }],
304
308
  };
305
309
  const res = await harness.request("tools/call", {
306
- name: "replay_trace",
310
+ name: "replay_trace",
307
311
  arguments: { recording },
308
312
  });
309
313
  expect(res.result.isError).toBe(true);
@@ -319,13 +323,13 @@ describe("@nwire/mcp — write tools", () => {
319
323
  stub = await startStubWire();
320
324
  stub.routes.set("POST /_nwire/replay", () => ({
321
325
  status: 200,
322
- body: { ok: true, drift: [], stepsCompared: 1 },
326
+ body: { ok: true, drift: [], stepsCompared: 1 },
323
327
  }));
324
328
  process.env.NWIRE_INSPECT_URL = stub.url;
325
329
  harness = new StdioHarness(kernel);
326
330
 
327
331
  const res = await harness.request("tools/call", {
328
- name: "replay_trace",
332
+ name: "replay_trace",
329
333
  arguments: { recording: { ctxIn: {}, outcome: "ok", steps: [] } },
330
334
  });
331
335
  expect(res.result.isError).toBe(false);
@@ -341,7 +345,7 @@ describe("@nwire/mcp — write tools", () => {
341
345
  harness = new StdioHarness(kernel);
342
346
 
343
347
  const res = await harness.request("tools/call", {
344
- name: "replay_trace",
348
+ name: "replay_trace",
345
349
  arguments: { recording: { ctxIn: {}, outcome: "ok", steps: [] } },
346
350
  });
347
351
  expect(res.result.isError).toBe(true);
package/src/index.ts CHANGED
@@ -50,10 +50,10 @@ interface JsonRpcNotification {
50
50
  readonly params?: Record<string, unknown>;
51
51
  }
52
52
 
53
- const ERR_PARSE = -32700;
54
- const ERR_NOT_FOUND = -32601;
53
+ const ERR_PARSE = -32700;
54
+ const ERR_NOT_FOUND = -32601;
55
55
  const ERR_INVALID_PARAMS = -32602;
56
- const ERR_INTERNAL = -32603;
56
+ const ERR_INTERNAL = -32603;
57
57
 
58
58
  // ─── Server ────────────────────────────────────────────────────────
59
59
 
@@ -69,7 +69,7 @@ export interface ServeMcpOptions {
69
69
  * Defaults to `process.stdin`. Tests supply a PassThrough; foreign
70
70
  * transports (websocket, http) can adapt to this same shape.
71
71
  */
72
- readonly stdin?: NodeJS.ReadableStream;
72
+ readonly stdin?: NodeJS.ReadableStream;
73
73
  /**
74
74
  * Output stream the server writes responses + notifications to.
75
75
  * Defaults to `process.stdout`. Stderr is always used for server
@@ -91,7 +91,7 @@ export async function serveMcp(options: ServeMcpOptions = {}): Promise<void> {
91
91
  const kernel = options.kernel ?? createKernel();
92
92
  const serverName = options.serverName ?? "nwire";
93
93
  const serverVersion = options.serverVersion ?? "0.1.0";
94
- const stdin = options.stdin ?? process.stdin;
94
+ const stdin = options.stdin ?? process.stdin;
95
95
  const stdout = options.stdout ?? process.stdout;
96
96
 
97
97
  const send = (msg: JsonRpcResponse | JsonRpcNotification): void => {
@@ -159,7 +159,7 @@ async function handle(req: JsonRpcRequest, ctx: HandleContext): Promise<void> {
159
159
  // Read-only introspection tools that proxy /_nwire/* (or
160
160
  // fall back to the .nwire/ disk cache).
161
161
  ...inspectTools.map((t) => ({
162
- name: t.name,
162
+ name: t.name,
163
163
  description: t.description,
164
164
  inputSchema: t.inputSchema,
165
165
  })),
@@ -167,7 +167,7 @@ async function handle(req: JsonRpcRequest, ctx: HandleContext): Promise<void> {
167
167
  // Some target endpoints aren't mounted yet — those tools
168
168
  // gracefully gap-flag (see write-tools.ts).
169
169
  ...writeTools.map((t) => ({
170
- name: t.name,
170
+ name: t.name,
171
171
  description: t.description,
172
172
  inputSchema: t.inputSchema,
173
173
  })),
package/src/inspect.ts CHANGED
@@ -30,8 +30,7 @@ import { resolve } from "node:path";
30
30
  // ─── Port discovery ────────────────────────────────────────────────
31
31
 
32
32
  const DEFAULT_PROBE_PORTS: readonly number[] = [
33
- 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010,
34
- 3030, 3040, 3050, 4000, 8080,
33
+ 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3030, 3040, 3050, 4000, 8080,
35
34
  ];
36
35
 
37
36
  const PROBE_TIMEOUT_MS = 150;
@@ -39,7 +38,7 @@ const CACHE_TTL_MS = 5_000;
39
38
  const NEGATIVE_CACHE_TTL_MS = 1_500;
40
39
 
41
40
  interface DiscoveredUrl {
42
- readonly url: string | undefined;
41
+ readonly url: string | undefined;
43
42
  readonly expires: number;
44
43
  }
45
44
 
@@ -74,7 +73,10 @@ export async function discoverInspectUrl(): Promise<string | undefined> {
74
73
 
75
74
  function parsePorts(raw: string | undefined): readonly number[] | undefined {
76
75
  if (!raw) return undefined;
77
- const ports = raw.split(",").map((s) => Number(s.trim())).filter((n) => n > 0);
76
+ const ports = raw
77
+ .split(",")
78
+ .map((s) => Number(s.trim()))
79
+ .filter((n) => n > 0);
78
80
  return ports.length > 0 ? ports : undefined;
79
81
  }
80
82
 
@@ -86,21 +88,33 @@ function parsePorts(raw: string | undefined): readonly number[] | undefined {
86
88
  function isNwireWire(port: number, timeoutMs: number): Promise<boolean> {
87
89
  return new Promise((resolveProbe) => {
88
90
  const sock = createConnection({ host: "127.0.0.1", port });
89
- sock.setTimeout(timeoutMs, () => { sock.destroy(); resolveProbe(false); });
90
- sock.once("error", () => resolveProbe(false));
91
+ sock.setTimeout(timeoutMs, () => {
92
+ sock.destroy();
93
+ resolveProbe(false);
94
+ });
95
+ sock.once("error", () => resolveProbe(false));
91
96
  sock.once("connect", () => {
92
97
  sock.destroy();
93
98
  const req = httpRequest(
94
99
  { host: "127.0.0.1", port, path: "/_nwire/events/recent?limit=1", method: "GET" },
95
100
  (res) => {
96
- if (res.statusCode !== 200) { res.resume(); return resolveProbe(false); }
101
+ if (res.statusCode !== 200) {
102
+ res.resume();
103
+ return resolveProbe(false);
104
+ }
97
105
  let buf = "";
98
106
  res.setEncoding("utf8");
99
- res.on("data", (c: string) => { buf += c; if (buf.length > 1024) res.destroy(); });
100
- res.on("end", () => resolveProbe(buf.trimStart().startsWith("[")));
107
+ res.on("data", (c: string) => {
108
+ buf += c;
109
+ if (buf.length > 1024) res.destroy();
110
+ });
111
+ res.on("end", () => resolveProbe(buf.trimStart().startsWith("[")));
101
112
  },
102
113
  );
103
- req.setTimeout(timeoutMs, () => { req.destroy(); resolveProbe(false); });
114
+ req.setTimeout(timeoutMs, () => {
115
+ req.destroy();
116
+ resolveProbe(false);
117
+ });
104
118
  req.once("error", () => resolveProbe(false));
105
119
  req.end();
106
120
  });
@@ -117,8 +131,10 @@ async function httpGetJson(url: string): Promise<unknown> {
117
131
  (res) => {
118
132
  let buf = "";
119
133
  res.setEncoding("utf8");
120
- res.on("data", (c: string) => { buf += c; });
121
- res.on("end", () => {
134
+ res.on("data", (c: string) => {
135
+ buf += c;
136
+ });
137
+ res.on("end", () => {
122
138
  if ((res.statusCode ?? 0) >= 400) {
123
139
  return rejectGet(new Error(`GET ${url} → ${res.statusCode}`));
124
140
  }
@@ -130,7 +146,10 @@ async function httpGetJson(url: string): Promise<unknown> {
130
146
  });
131
147
  },
132
148
  );
133
- req.setTimeout(5_000, () => { req.destroy(); rejectGet(new Error(`GET ${url} timed out`)); });
149
+ req.setTimeout(5_000, () => {
150
+ req.destroy();
151
+ rejectGet(new Error(`GET ${url} timed out`));
152
+ });
134
153
  req.once("error", rejectGet);
135
154
  req.end();
136
155
  });
@@ -151,10 +170,10 @@ function readDiskCache(file: string): unknown | undefined {
151
170
  // ─── Tool registry ─────────────────────────────────────────────────
152
171
 
153
172
  export interface InspectToolDef {
154
- readonly name: string;
173
+ readonly name: string;
155
174
  readonly description: string;
156
175
  readonly inputSchema: Record<string, unknown>;
157
- readonly run: (args: Record<string, unknown>) => Promise<unknown>;
176
+ readonly run: (args: Record<string, unknown>) => Promise<unknown>;
158
177
  }
159
178
 
160
179
  /**
@@ -197,8 +216,7 @@ export const inspectTools: readonly InspectToolDef[] = [
197
216
  },
198
217
  {
199
218
  name: "list_actions",
200
- description:
201
- "List actions exposed by the wire. Optional `module` filter (e.g. \"submissions\").",
219
+ description: 'List actions exposed by the wire. Optional `module` filter (e.g. "submissions").',
202
220
  inputSchema: {
203
221
  type: "object",
204
222
  additionalProperties: false,
@@ -214,8 +232,7 @@ export const inspectTools: readonly InspectToolDef[] = [
214
232
  },
215
233
  {
216
234
  name: "list_events",
217
- description:
218
- "List events declared by the wire. Optional `module` filter.",
235
+ description: "List events declared by the wire. Optional `module` filter.",
219
236
  inputSchema: {
220
237
  type: "object",
221
238
  additionalProperties: false,
@@ -250,16 +267,14 @@ export const inspectTools: readonly InspectToolDef[] = [
250
267
  {
251
268
  name: "list_plugins",
252
269
  description:
253
- "List discovered plugins (reads .nwire/plugins.json). Optional `kind` filter: \"plugin\" | \"module\".",
270
+ 'List discovered plugins (reads .nwire/plugins.json). Optional `kind` filter: "plugin" | "module".',
254
271
  inputSchema: {
255
272
  type: "object",
256
273
  additionalProperties: false,
257
274
  properties: { kind: { type: "string", enum: ["plugin", "module"] } },
258
275
  },
259
276
  async run(args) {
260
- let plugins = readDiskCache("plugins.json") as
261
- | Array<{ kind?: string }>
262
- | undefined;
277
+ let plugins = readDiskCache("plugins.json") as Array<{ kind?: string }> | undefined;
263
278
  if (!plugins) {
264
279
  try {
265
280
  const manifest = await getManifest();
@@ -276,8 +291,7 @@ export const inspectTools: readonly InspectToolDef[] = [
276
291
  },
277
292
  {
278
293
  name: "recent_events",
279
- description:
280
- "GET /_nwire/events/recent?limit=N from the running wire. Requires a live wire.",
294
+ description: "GET /_nwire/events/recent?limit=N from the running wire. Requires a live wire.",
281
295
  inputSchema: {
282
296
  type: "object",
283
297
  additionalProperties: false,
@@ -29,7 +29,7 @@ import { discoverInspectUrl, type InspectToolDef } from "./inspect.js";
29
29
 
30
30
  interface HttpResult {
31
31
  readonly status: number;
32
- readonly body: unknown;
32
+ readonly body: unknown;
33
33
  }
34
34
 
35
35
  /**
@@ -39,24 +39,26 @@ interface HttpResult {
39
39
  */
40
40
  async function httpPostJson(url: string, payload: unknown): Promise<HttpResult> {
41
41
  return new Promise((resolvePost, rejectPost) => {
42
- const u = new URL(url);
42
+ const u = new URL(url);
43
43
  const data = JSON.stringify(payload ?? {});
44
44
  const req = httpRequest(
45
45
  {
46
- host: u.hostname,
47
- port: u.port || 80,
48
- path: u.pathname + u.search,
49
- method: "POST",
46
+ host: u.hostname,
47
+ port: u.port || 80,
48
+ path: u.pathname + u.search,
49
+ method: "POST",
50
50
  headers: {
51
- "Content-Type": "application/json",
51
+ "Content-Type": "application/json",
52
52
  "Content-Length": Buffer.byteLength(data).toString(),
53
53
  },
54
54
  },
55
55
  (res) => {
56
56
  let buf = "";
57
57
  res.setEncoding("utf8");
58
- res.on("data", (c: string) => { buf += c; });
59
- res.on("end", () => {
58
+ res.on("data", (c: string) => {
59
+ buf += c;
60
+ });
61
+ res.on("end", () => {
60
62
  const status = res.statusCode ?? 0;
61
63
  if (buf.length === 0) return resolvePost({ status, body: undefined });
62
64
  try {
@@ -80,7 +82,8 @@ async function httpPostJson(url: string, payload: unknown): Promise<HttpResult>
80
82
 
81
83
  // ─── Tools ─────────────────────────────────────────────────────────
82
84
 
83
- const NO_WIRE = "no running wire detected; this tool requires a live wire (set NWIRE_INSPECT_URL or start one).";
85
+ const NO_WIRE =
86
+ "no running wire detected; this tool requires a live wire (set NWIRE_INSPECT_URL or start one).";
84
87
 
85
88
  /**
86
89
  * Invoke a registered action via `POST /_nwire/dispatch`. Returns the
@@ -99,12 +102,12 @@ const dispatchAction: InspectToolDef = {
99
102
  required: ["action"],
100
103
  properties: {
101
104
  action: { type: "string" },
102
- input: { type: "object", additionalProperties: true },
103
- user: {
105
+ input: { type: "object", additionalProperties: true },
106
+ user: {
104
107
  type: "object",
105
108
  additionalProperties: false,
106
109
  properties: {
107
- id: { type: "string" },
110
+ id: { type: "string" },
108
111
  roles: { type: "array", items: { type: "string" } },
109
112
  },
110
113
  },
@@ -116,13 +119,13 @@ const dispatchAction: InspectToolDef = {
116
119
  if (!url) throw new Error(NO_WIRE);
117
120
  const action = args.action as string | undefined;
118
121
  if (!action) throw new Error("dispatch_action requires `action`");
119
- const user = args.user as { id?: string; roles?: string[] } | undefined;
122
+ const user = args.user as { id?: string; roles?: string[] } | undefined;
120
123
  const tenant = args.tenant as string | undefined;
121
124
  const payload = {
122
125
  action,
123
- input: args.input ?? {},
126
+ input: args.input ?? {},
124
127
  ...(user?.id !== undefined && { userId: user.id }),
125
- ...(tenant !== undefined && { tenant }),
128
+ ...(tenant !== undefined && { tenant }),
126
129
  };
127
130
  const { status, body } = await httpPostJson(`${url}/_nwire/dispatch`, payload);
128
131
  if (status >= 400) {
@@ -227,11 +230,7 @@ const replayTrace: InspectToolDef = {
227
230
  },
228
231
  };
229
232
 
230
- export const writeTools: readonly InspectToolDef[] = [
231
- dispatchAction,
232
- runCommand,
233
- replayTrace,
234
- ];
233
+ export const writeTools: readonly InspectToolDef[] = [dispatchAction, runCommand, replayTrace];
235
234
 
236
235
  export function findWriteTool(name: string): InspectToolDef | undefined {
237
236
  return writeTools.find((t) => t.name === name);