@namzu/cli 0.5.1 → 0.7.0

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 (218) hide show
  1. package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts +31 -0
  2. package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts.map +1 -0
  3. package/dist/__tests__/permission-rules-reach-the-turn.test.js +132 -0
  4. package/dist/__tests__/permission-rules-reach-the-turn.test.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +16 -3
  7. package/dist/cli.js.map +1 -1
  8. package/dist/cli.test.js +7 -1
  9. package/dist/cli.test.js.map +1 -1
  10. package/dist/commands/__tests__/resume.test.d.ts +15 -0
  11. package/dist/commands/__tests__/resume.test.d.ts.map +1 -0
  12. package/dist/commands/__tests__/resume.test.js +116 -0
  13. package/dist/commands/__tests__/resume.test.js.map +1 -0
  14. package/dist/commands/__tests__/run-flags.test.d.ts +11 -0
  15. package/dist/commands/__tests__/run-flags.test.d.ts.map +1 -0
  16. package/dist/commands/__tests__/run-flags.test.js +189 -0
  17. package/dist/commands/__tests__/run-flags.test.js.map +1 -0
  18. package/dist/commands/__tests__/run-stream-flags.test.js +160 -11
  19. package/dist/commands/__tests__/run-stream-flags.test.js.map +1 -1
  20. package/dist/commands/doctor.js.map +1 -1
  21. package/dist/commands/resume.d.ts +60 -0
  22. package/dist/commands/resume.d.ts.map +1 -0
  23. package/dist/commands/resume.js +107 -0
  24. package/dist/commands/resume.js.map +1 -0
  25. package/dist/commands/run-flags.d.ts +76 -0
  26. package/dist/commands/run-flags.d.ts.map +1 -0
  27. package/dist/commands/run-flags.js +163 -0
  28. package/dist/commands/run-flags.js.map +1 -0
  29. package/dist/commands/run-stream.d.ts +3 -39
  30. package/dist/commands/run-stream.d.ts.map +1 -1
  31. package/dist/commands/run-stream.js +74 -101
  32. package/dist/commands/run-stream.js.map +1 -1
  33. package/dist/commands/run.d.ts +25 -0
  34. package/dist/commands/run.d.ts.map +1 -1
  35. package/dist/commands/run.js +189 -16
  36. package/dist/commands/run.js.map +1 -1
  37. package/dist/commands/stubs.d.ts +10 -0
  38. package/dist/commands/stubs.d.ts.map +1 -1
  39. package/dist/commands/stubs.js +12 -2
  40. package/dist/commands/stubs.js.map +1 -1
  41. package/dist/config/load.d.ts.map +1 -1
  42. package/dist/config/load.js +20 -4
  43. package/dist/config/load.js.map +1 -1
  44. package/dist/config/schema.d.ts +9 -12
  45. package/dist/config/schema.d.ts.map +1 -1
  46. package/dist/config/schema.js.map +1 -1
  47. package/dist/doctor/checks/credentials.d.ts +20 -0
  48. package/dist/doctor/checks/credentials.d.ts.map +1 -0
  49. package/dist/doctor/checks/credentials.js +58 -0
  50. package/dist/doctor/checks/credentials.js.map +1 -0
  51. package/dist/doctor/checks/credentials.test.d.ts +10 -0
  52. package/dist/doctor/checks/credentials.test.d.ts.map +1 -0
  53. package/dist/doctor/checks/credentials.test.js +47 -0
  54. package/dist/doctor/checks/credentials.test.js.map +1 -0
  55. package/dist/doctor/checks/index.d.ts +2 -1
  56. package/dist/doctor/checks/index.d.ts.map +1 -1
  57. package/dist/doctor/checks/index.js +3 -1
  58. package/dist/doctor/checks/index.js.map +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/integrations/providers/discover.d.ts +3 -8
  64. package/dist/integrations/providers/discover.d.ts.map +1 -1
  65. package/dist/integrations/providers/discover.js +2 -12
  66. package/dist/integrations/providers/discover.js.map +1 -1
  67. package/dist/integrations/providers/discover.test.js +1 -28
  68. package/dist/integrations/providers/discover.test.js.map +1 -1
  69. package/dist/integrations/providers/index.d.ts +0 -1
  70. package/dist/integrations/providers/index.d.ts.map +1 -1
  71. package/dist/integrations/providers/index.js +0 -1
  72. package/dist/integrations/providers/index.js.map +1 -1
  73. package/dist/integrations/providers/oauth.d.ts +1 -1
  74. package/dist/integrations/providers/oauth.js +1 -1
  75. package/dist/integrations/providers/preferences.d.ts +2 -2
  76. package/dist/integrations/providers/preferences.js +2 -2
  77. package/dist/integrations/sessions/store.js +1 -1
  78. package/dist/integrations/sessions/store.js.map +1 -1
  79. package/dist/integrations/updates.d.ts +4 -12
  80. package/dist/integrations/updates.d.ts.map +1 -1
  81. package/dist/integrations/updates.js +6 -53
  82. package/dist/integrations/updates.js.map +1 -1
  83. package/dist/permissions/__tests__/mode.test.d.ts +10 -0
  84. package/dist/permissions/__tests__/mode.test.d.ts.map +1 -0
  85. package/dist/permissions/__tests__/mode.test.js +115 -0
  86. package/dist/permissions/__tests__/mode.test.js.map +1 -0
  87. package/dist/permissions/__tests__/rules.test.d.ts +10 -0
  88. package/dist/permissions/__tests__/rules.test.d.ts.map +1 -0
  89. package/dist/permissions/__tests__/rules.test.js +196 -0
  90. package/dist/permissions/__tests__/rules.test.js.map +1 -0
  91. package/dist/permissions/mode.d.ts +64 -0
  92. package/dist/permissions/mode.d.ts.map +1 -0
  93. package/dist/permissions/mode.js +32 -0
  94. package/dist/permissions/mode.js.map +1 -0
  95. package/dist/permissions/rules.d.ts +105 -0
  96. package/dist/permissions/rules.d.ts.map +1 -0
  97. package/dist/permissions/rules.js +163 -0
  98. package/dist/permissions/rules.js.map +1 -0
  99. package/dist/tui/App.d.ts.map +1 -1
  100. package/dist/tui/App.js +29 -133
  101. package/dist/tui/App.js.map +1 -1
  102. package/dist/tui/Picker.d.ts +4 -4
  103. package/dist/tui/Picker.d.ts.map +1 -1
  104. package/dist/tui/Picker.js +6 -8
  105. package/dist/tui/Picker.js.map +1 -1
  106. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts +24 -0
  107. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts.map +1 -0
  108. package/dist/tui/__tests__/deferred-tool-discovery.test.js +111 -0
  109. package/dist/tui/__tests__/deferred-tool-discovery.test.js.map +1 -0
  110. package/dist/tui/__tests__/to-agent-event.test.js +88 -0
  111. package/dist/tui/__tests__/to-agent-event.test.js.map +1 -1
  112. package/dist/tui/__tests__/working-directory.test.d.ts +13 -0
  113. package/dist/tui/__tests__/working-directory.test.d.ts.map +1 -0
  114. package/dist/tui/__tests__/working-directory.test.js +109 -0
  115. package/dist/tui/__tests__/working-directory.test.js.map +1 -0
  116. package/dist/tui/agent.d.ts +46 -5
  117. package/dist/tui/agent.d.ts.map +1 -1
  118. package/dist/tui/agent.js +140 -43
  119. package/dist/tui/agent.js.map +1 -1
  120. package/dist/tui/slashCommands.d.ts +0 -6
  121. package/dist/tui/slashCommands.d.ts.map +1 -1
  122. package/dist/tui/slashCommands.js +1 -21
  123. package/dist/tui/slashCommands.js.map +1 -1
  124. package/dist/tui/types.d.ts +12 -0
  125. package/dist/tui/types.d.ts.map +1 -1
  126. package/package.json +4 -5
  127. package/dist/commands/tools.d.ts +0 -16
  128. package/dist/commands/tools.d.ts.map +0 -1
  129. package/dist/commands/tools.js +0 -161
  130. package/dist/commands/tools.js.map +0 -1
  131. package/dist/integrations/clawtool/agents.d.ts +0 -31
  132. package/dist/integrations/clawtool/agents.d.ts.map +0 -1
  133. package/dist/integrations/clawtool/agents.js +0 -30
  134. package/dist/integrations/clawtool/agents.js.map +0 -1
  135. package/dist/integrations/clawtool/agents.test.d.ts +0 -2
  136. package/dist/integrations/clawtool/agents.test.d.ts.map +0 -1
  137. package/dist/integrations/clawtool/agents.test.js +0 -79
  138. package/dist/integrations/clawtool/agents.test.js.map +0 -1
  139. package/dist/integrations/clawtool/auth.d.ts +0 -26
  140. package/dist/integrations/clawtool/auth.d.ts.map +0 -1
  141. package/dist/integrations/clawtool/auth.js +0 -56
  142. package/dist/integrations/clawtool/auth.js.map +0 -1
  143. package/dist/integrations/clawtool/auth.test.d.ts +0 -2
  144. package/dist/integrations/clawtool/auth.test.d.ts.map +0 -1
  145. package/dist/integrations/clawtool/auth.test.js +0 -40
  146. package/dist/integrations/clawtool/auth.test.js.map +0 -1
  147. package/dist/integrations/clawtool/binary.d.ts +0 -25
  148. package/dist/integrations/clawtool/binary.d.ts.map +0 -1
  149. package/dist/integrations/clawtool/binary.js +0 -50
  150. package/dist/integrations/clawtool/binary.js.map +0 -1
  151. package/dist/integrations/clawtool/binary.test.d.ts +0 -2
  152. package/dist/integrations/clawtool/binary.test.d.ts.map +0 -1
  153. package/dist/integrations/clawtool/binary.test.js +0 -50
  154. package/dist/integrations/clawtool/binary.test.js.map +0 -1
  155. package/dist/integrations/clawtool/daemon.d.ts +0 -37
  156. package/dist/integrations/clawtool/daemon.d.ts.map +0 -1
  157. package/dist/integrations/clawtool/daemon.js +0 -109
  158. package/dist/integrations/clawtool/daemon.js.map +0 -1
  159. package/dist/integrations/clawtool/daemon.test.d.ts +0 -11
  160. package/dist/integrations/clawtool/daemon.test.d.ts.map +0 -1
  161. package/dist/integrations/clawtool/daemon.test.js +0 -118
  162. package/dist/integrations/clawtool/daemon.test.js.map +0 -1
  163. package/dist/integrations/clawtool/dispatch.d.ts +0 -33
  164. package/dist/integrations/clawtool/dispatch.d.ts.map +0 -1
  165. package/dist/integrations/clawtool/dispatch.js +0 -155
  166. package/dist/integrations/clawtool/dispatch.js.map +0 -1
  167. package/dist/integrations/clawtool/dispatch.test.d.ts +0 -2
  168. package/dist/integrations/clawtool/dispatch.test.d.ts.map +0 -1
  169. package/dist/integrations/clawtool/dispatch.test.js +0 -138
  170. package/dist/integrations/clawtool/dispatch.test.js.map +0 -1
  171. package/dist/integrations/clawtool/index.d.ts +0 -11
  172. package/dist/integrations/clawtool/index.d.ts.map +0 -1
  173. package/dist/integrations/clawtool/index.js +0 -10
  174. package/dist/integrations/clawtool/index.js.map +0 -1
  175. package/dist/integrations/clawtool/mcp.d.ts +0 -51
  176. package/dist/integrations/clawtool/mcp.d.ts.map +0 -1
  177. package/dist/integrations/clawtool/mcp.js +0 -174
  178. package/dist/integrations/clawtool/mcp.js.map +0 -1
  179. package/dist/integrations/clawtool/mcp.test.d.ts +0 -2
  180. package/dist/integrations/clawtool/mcp.test.d.ts.map +0 -1
  181. package/dist/integrations/clawtool/mcp.test.js +0 -126
  182. package/dist/integrations/clawtool/mcp.test.js.map +0 -1
  183. package/dist/integrations/clawtool/paths.d.ts +0 -8
  184. package/dist/integrations/clawtool/paths.d.ts.map +0 -1
  185. package/dist/integrations/clawtool/paths.js +0 -19
  186. package/dist/integrations/clawtool/paths.js.map +0 -1
  187. package/dist/integrations/clawtool/peers.d.ts +0 -67
  188. package/dist/integrations/clawtool/peers.d.ts.map +0 -1
  189. package/dist/integrations/clawtool/peers.js +0 -150
  190. package/dist/integrations/clawtool/peers.js.map +0 -1
  191. package/dist/integrations/clawtool/plugin.d.ts +0 -42
  192. package/dist/integrations/clawtool/plugin.d.ts.map +0 -1
  193. package/dist/integrations/clawtool/plugin.js +0 -38
  194. package/dist/integrations/clawtool/plugin.js.map +0 -1
  195. package/dist/integrations/clawtool/state.d.ts +0 -11
  196. package/dist/integrations/clawtool/state.d.ts.map +0 -1
  197. package/dist/integrations/clawtool/state.js +0 -41
  198. package/dist/integrations/clawtool/state.js.map +0 -1
  199. package/dist/integrations/clawtool/state.test.d.ts +0 -2
  200. package/dist/integrations/clawtool/state.test.d.ts.map +0 -1
  201. package/dist/integrations/clawtool/state.test.js +0 -38
  202. package/dist/integrations/clawtool/state.test.js.map +0 -1
  203. package/dist/integrations/clawtool/tooling.d.ts +0 -52
  204. package/dist/integrations/clawtool/tooling.d.ts.map +0 -1
  205. package/dist/integrations/clawtool/tooling.js +0 -91
  206. package/dist/integrations/clawtool/tooling.js.map +0 -1
  207. package/dist/integrations/clawtool/tooling.test.d.ts +0 -2
  208. package/dist/integrations/clawtool/tooling.test.d.ts.map +0 -1
  209. package/dist/integrations/clawtool/tooling.test.js +0 -58
  210. package/dist/integrations/clawtool/tooling.test.js.map +0 -1
  211. package/dist/integrations/clawtool/types.d.ts +0 -41
  212. package/dist/integrations/clawtool/types.d.ts.map +0 -1
  213. package/dist/integrations/clawtool/types.js +0 -9
  214. package/dist/integrations/clawtool/types.js.map +0 -1
  215. package/dist/integrations/providers/secrets.d.ts +0 -37
  216. package/dist/integrations/providers/secrets.d.ts.map +0 -1
  217. package/dist/integrations/providers/secrets.js +0 -69
  218. package/dist/integrations/providers/secrets.js.map +0 -1
@@ -1,150 +0,0 @@
1
- /**
2
- * Client for clawtool's BIAM peer registry (`/v1/peers`) — the canonical
3
- * cross-terminal / cross-host agent coordination layer. namzu registers
4
- * itself here as a peer so any orchestrator (clawtool's dashboard, another
5
- * namzu's `/agents`) can see it, and messages it via the same registry.
6
- *
7
- * namzu does NOT run its own session daemon for this — clawtool already owns
8
- * peer presence, heartbeats, messaging, broadcast, mDNS LAN discovery, and a
9
- * dashboard. We just register + list + send through it.
10
- *
11
- * Every call is best-effort: with no reachable clawtool daemon the helpers
12
- * return null / [] / false so the TUI works the same with or without it.
13
- */
14
- import { ensureDaemon } from './daemon.js';
15
- async function endpoint(opts) {
16
- try {
17
- return await ensureDaemon(opts);
18
- }
19
- catch {
20
- return null;
21
- }
22
- }
23
- function authHeaders(token, withBody) {
24
- const h = {};
25
- if (token.length > 0)
26
- h.Authorization = `Bearer ${token}`;
27
- if (withBody)
28
- h['content-type'] = 'application/json';
29
- return h;
30
- }
31
- /** Register (or refresh) this process as a BIAM peer; returns its peer_id. */
32
- export async function registerPeer(input, opts = {}) {
33
- const ep = await endpoint(opts);
34
- if (!ep)
35
- return null;
36
- const fetchFn = opts.fetch ?? globalThis.fetch;
37
- try {
38
- const res = await fetchFn(new URL('/v1/peers/register', ep.baseUrl).toString(), {
39
- method: 'POST',
40
- headers: authHeaders(ep.token, true),
41
- body: JSON.stringify(input),
42
- });
43
- if (!res.ok)
44
- return null;
45
- const peer = (await res.json());
46
- return typeof peer.peer_id === 'string' ? peer.peer_id : null;
47
- }
48
- catch {
49
- return null;
50
- }
51
- }
52
- export async function heartbeatPeer(peerId, opts = {}) {
53
- const ep = await endpoint(opts);
54
- if (!ep)
55
- return;
56
- const fetchFn = opts.fetch ?? globalThis.fetch;
57
- try {
58
- await fetchFn(new URL(`/v1/peers/${encodeURIComponent(peerId)}/heartbeat`, ep.baseUrl).toString(), {
59
- method: 'POST',
60
- headers: authHeaders(ep.token, false),
61
- });
62
- }
63
- catch {
64
- // best-effort
65
- }
66
- }
67
- export async function deregisterPeer(peerId, opts = {}) {
68
- const ep = await endpoint(opts);
69
- if (!ep)
70
- return;
71
- const fetchFn = opts.fetch ?? globalThis.fetch;
72
- try {
73
- await fetchFn(new URL(`/v1/peers/${encodeURIComponent(peerId)}`, ep.baseUrl).toString(), {
74
- method: 'DELETE',
75
- headers: authHeaders(ep.token, false),
76
- });
77
- }
78
- catch {
79
- // best-effort
80
- }
81
- }
82
- export async function listPeers(opts = {}) {
83
- const ep = await endpoint(opts);
84
- if (!ep)
85
- return [];
86
- const fetchFn = opts.fetch ?? globalThis.fetch;
87
- try {
88
- const res = await fetchFn(new URL('/v1/peers', ep.baseUrl).toString(), {
89
- method: 'GET',
90
- headers: authHeaders(ep.token, false),
91
- });
92
- if (!res.ok)
93
- return [];
94
- const data = (await res.json());
95
- const peers = Array.isArray(data) ? data : data.peers;
96
- return Array.isArray(peers) ? peers : [];
97
- }
98
- catch {
99
- return [];
100
- }
101
- }
102
- /**
103
- * Drain this peer's inbox — returns + clears pending messages other agents
104
- * sent to us. namzu polls this so clawtool / another agent can talk TO it,
105
- * not just be listed. (`peek` leaves messages in place; default drains.)
106
- */
107
- export async function drainInbox(peerId, opts = {}) {
108
- const ep = await endpoint(opts);
109
- if (!ep)
110
- return [];
111
- const fetchFn = opts.fetch ?? globalThis.fetch;
112
- try {
113
- const url = new URL(`/v1/peers/${encodeURIComponent(peerId)}/messages`, ep.baseUrl);
114
- if (opts.peek)
115
- url.searchParams.set('peek', '1');
116
- const res = await fetchFn(url.toString(), {
117
- method: 'GET',
118
- headers: authHeaders(ep.token, false),
119
- });
120
- if (!res.ok)
121
- return [];
122
- const data = (await res.json());
123
- return Array.isArray(data.messages) ? data.messages : [];
124
- }
125
- catch {
126
- return [];
127
- }
128
- }
129
- /**
130
- * Send a message to another peer's BIAM inbox. `from` is our own peer id so
131
- * the recipient knows who sent it (and can reply) — clawtool stamps it as the
132
- * message's `from_peer`.
133
- */
134
- export async function sendPeerMessage(peerId, text, opts = {}) {
135
- const ep = await endpoint(opts);
136
- if (!ep)
137
- return false;
138
- const fetchFn = opts.fetch ?? globalThis.fetch;
139
- const body = { text };
140
- if (opts.from)
141
- body.from_peer = opts.from;
142
- try {
143
- const res = await fetchFn(new URL(`/v1/peers/${encodeURIComponent(peerId)}/messages`, ep.baseUrl).toString(), { method: 'POST', headers: authHeaders(ep.token, true), body: JSON.stringify(body) });
144
- return res.ok;
145
- }
146
- catch {
147
- return false;
148
- }
149
- }
150
- //# sourceMappingURL=peers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/peers.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Clawtool default plugin.
3
- *
4
- * Connects to the local clawtool daemon (spawning it if necessary),
5
- * discovers its tool catalog via MCP `tools/list`, and adapts each tool
6
- * into the shape namzu's CLI consumes. The result is a proxy-tool list
7
- * that the agent surfaces through `namzu tools ls/run` and (later) the
8
- * M3 TUI's tool registry.
9
- *
10
- * Adapter contract is intentionally minimal — clawtool already enforces
11
- * the per-tool schema, sandboxing, and timeouts server-side. We do not
12
- * duplicate validation in TS; we forward the JSON Schema as-is so callers
13
- * (and future codegen via `sync-types`) can render it.
14
- */
15
- import { type EnsureDaemonOptions } from './daemon.js';
16
- import { ClawtoolMcpClient } from './mcp.js';
17
- import type { DaemonEndpoint, McpCallResult } from './types.js';
18
- export interface ClawtoolProxyTool {
19
- /** Tool name as advertised by clawtool (e.g. `Bash`, `Read`). */
20
- readonly name: string;
21
- readonly description: string;
22
- readonly inputSchema: Record<string, unknown>;
23
- readonly source: 'clawtool';
24
- /** Invoke the tool via clawtool's MCP `tools/call`. */
25
- call(args: Record<string, unknown>): Promise<McpCallResult>;
26
- }
27
- export interface ClawtoolPlugin {
28
- readonly name: 'clawtool';
29
- readonly endpoint: DaemonEndpoint;
30
- readonly tools: readonly ClawtoolProxyTool[];
31
- /** Underlying client, exposed for diagnostics (do not use in CLI commands). */
32
- readonly client: ClawtoolMcpClient;
33
- }
34
- export interface CreateClawtoolPluginOptions extends EnsureDaemonOptions {
35
- /** clientInfo sent on `initialize`; default `{ name: 'namzu', version: '0.0.0' }`. */
36
- readonly clientInfo?: {
37
- name: string;
38
- version: string;
39
- };
40
- }
41
- export declare function createClawtoolPlugin(opts?: CreateClawtoolPluginOptions): Promise<ClawtoolPlugin>;
42
- //# sourceMappingURL=plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAElF,MAAM,WAAW,iBAAiB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,uDAAuD;IACvD,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACvE,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD;AAED,wBAAsB,oBAAoB,CACzC,IAAI,GAAE,2BAAgC,GACpC,OAAO,CAAC,cAAc,CAAC,CAWzB"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Clawtool default plugin.
3
- *
4
- * Connects to the local clawtool daemon (spawning it if necessary),
5
- * discovers its tool catalog via MCP `tools/list`, and adapts each tool
6
- * into the shape namzu's CLI consumes. The result is a proxy-tool list
7
- * that the agent surfaces through `namzu tools ls/run` and (later) the
8
- * M3 TUI's tool registry.
9
- *
10
- * Adapter contract is intentionally minimal — clawtool already enforces
11
- * the per-tool schema, sandboxing, and timeouts server-side. We do not
12
- * duplicate validation in TS; we forward the JSON Schema as-is so callers
13
- * (and future codegen via `sync-types`) can render it.
14
- */
15
- import { ensureDaemon } from './daemon.js';
16
- import { ClawtoolMcpClient } from './mcp.js';
17
- export async function createClawtoolPlugin(opts = {}) {
18
- const endpoint = await ensureDaemon(opts);
19
- const client = new ClawtoolMcpClient({
20
- endpoint: endpoint.baseUrl,
21
- token: endpoint.token,
22
- clientInfo: opts.clientInfo,
23
- fetch: opts.fetch,
24
- });
25
- const descriptors = await client.listTools();
26
- const tools = descriptors.map((d) => toProxyTool(d, client));
27
- return { name: 'clawtool', endpoint, tools, client };
28
- }
29
- function toProxyTool(d, client) {
30
- return {
31
- name: d.name,
32
- description: d.description,
33
- inputSchema: d.inputSchema,
34
- source: 'clawtool',
35
- call: (args) => client.callTool(d.name, args),
36
- };
37
- }
38
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AA0B5C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAoC,EAAE;IAEtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACpC,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,CAAoB,EAAE,MAAyB;IACnE,OAAO;QACN,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;KAC7C,CAAA;AACF,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { DaemonState } from './types.js';
2
- /**
3
- * Read clawtool's daemon state file. Returns `null` if the file is missing
4
- * (daemon not yet started) or unparseable (corrupt state — caller decides
5
- * whether to overwrite via auto-spawn).
6
- *
7
- * Path defaults to `${XDG_CONFIG_HOME:-~/.config}/clawtool/daemon.json`;
8
- * override `path` for tests.
9
- */
10
- export declare function readDaemonState(path?: string): DaemonState | null;
11
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAejE"}
@@ -1,41 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { daemonStatePath } from './paths.js';
3
- /**
4
- * Read clawtool's daemon state file. Returns `null` if the file is missing
5
- * (daemon not yet started) or unparseable (corrupt state — caller decides
6
- * whether to overwrite via auto-spawn).
7
- *
8
- * Path defaults to `${XDG_CONFIG_HOME:-~/.config}/clawtool/daemon.json`;
9
- * override `path` for tests.
10
- */
11
- export function readDaemonState(path) {
12
- const target = path ?? daemonStatePath();
13
- let raw;
14
- try {
15
- raw = readFileSync(target, 'utf8');
16
- }
17
- catch {
18
- return null;
19
- }
20
- try {
21
- const parsed = JSON.parse(raw);
22
- if (!isValidState(parsed))
23
- return null;
24
- return parsed;
25
- }
26
- catch {
27
- return null;
28
- }
29
- }
30
- function isValidState(value) {
31
- if (typeof value !== 'object' || value === null)
32
- return false;
33
- const v = value;
34
- return (typeof v.version === 'number' &&
35
- typeof v.pid === 'number' &&
36
- typeof v.port === 'number' &&
37
- typeof v.started_at === 'string' &&
38
- typeof v.token_file === 'string' &&
39
- typeof v.log_file === 'string');
40
- }
41
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,eAAe,EAAE,CAAA;IACxC,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACJ,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QACtC,OAAO,MAAM,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,OAAO,CACN,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC9B,CAAA;AACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=state.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { mkdtempSync, writeFileSync } from 'node:fs';
2
- import { tmpdir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { describe, expect, it } from 'vitest';
5
- import { readDaemonState } from './state.js';
6
- describe('readDaemonState', () => {
7
- it('returns null when the file is missing', () => {
8
- const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
9
- expect(readDaemonState(join(dir, 'nope.json'))).toBeNull();
10
- });
11
- it('returns null on malformed JSON', () => {
12
- const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
13
- const path = join(dir, 'daemon.json');
14
- writeFileSync(path, '{not json}');
15
- expect(readDaemonState(path)).toBeNull();
16
- });
17
- it('returns null when required fields are missing', () => {
18
- const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
19
- const path = join(dir, 'daemon.json');
20
- writeFileSync(path, JSON.stringify({ pid: 1, port: 2 }));
21
- expect(readDaemonState(path)).toBeNull();
22
- });
23
- it('parses a valid state file', () => {
24
- const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
25
- const path = join(dir, 'daemon.json');
26
- const state = {
27
- version: 1,
28
- pid: 1234,
29
- port: 65432,
30
- started_at: '2026-05-24T12:00:00Z',
31
- token_file: '/tmp/token',
32
- log_file: '/tmp/log',
33
- };
34
- writeFileSync(path, JSON.stringify(state));
35
- expect(readDaemonState(path)).toEqual(state);
36
- });
37
- });
38
- //# sourceMappingURL=state.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACjC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG;YACb,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,sBAAsB;YAClC,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;SACpB,CAAA;QACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Adapt clawtool's MCP tool catalog into SDK `ToolDefinition`s so the
3
- * agent loop can call clawtool's tools alongside the SDK builtins.
4
- *
5
- * The cli's `ClawtoolMcpClient` is not the SDK's `MCPClient`, so the SDK's
6
- * `mcpToolToToolDefinition` can't be used directly — but its building
7
- * blocks (`mcpJsonSchemaToZod`, `mcpToolResultToToolResult`) are public and
8
- * the MCP wire shapes already match, so the adapter is a thin wrapper.
9
- *
10
- * Loading is best-effort: clawtool may be absent, down, or slow to spawn.
11
- * `loadClawtoolToolDefinitions` never throws and never blocks longer than
12
- * its timeout — on any failure it yields zero tools and the session runs on
13
- * builtins alone.
14
- */
15
- import { type ToolDefinition } from '@namzu/sdk';
16
- import { type CreateClawtoolPluginOptions } from './plugin.js';
17
- import type { ClawtoolProxyTool } from './plugin.js';
18
- /** Bridged clawtool tools are namespaced under this prefix. */
19
- export declare const CLAWTOOL_TOOL_PREFIX = "clawtool_";
20
- /**
21
- * clawtool tools namzu never bridges (bare lowercased names).
22
- *
23
- * The `Agent*` family is clawtool's on-disk persona manager. It writes
24
- * agent definitions into a third-party tool's configuration directory —
25
- * a mechanism namzu neither owns nor reads, and one that is redundant with
26
- * (and confusing alongside) namzu's own in-memory dynamic sub-agents.
27
- * namzu defines and dispatches sub-agents natively, so these are dropped
28
- * before they reach the model.
29
- */
30
- export declare const EXCLUDED_CLAWTOOL_TOOLS: Set<string>;
31
- /** Whether a bridged clawtool tool (by its bare name) is excluded from namzu. */
32
- export declare function isExcludedClawtoolTool(bareName: string): boolean;
33
- /**
34
- * Convert one clawtool proxy tool into an SDK `ToolDefinition`. Pure.
35
- * Bridged tools are flagged destructive (clawtool's MCP descriptors carry
36
- * no read-only hint, so they're treated as needing consent) and run by
37
- * forwarding to clawtool's `tools/call`.
38
- */
39
- export declare function clawtoolToolToDefinition(proxy: ClawtoolProxyTool): ToolDefinition;
40
- export interface LoadClawtoolToolsOptions extends CreateClawtoolPluginOptions {
41
- /** Tool names already provided by builtins; clawtool dupes of these are skipped. */
42
- readonly skipNames?: readonly string[];
43
- /** Hard cap on how long to wait for the daemon before giving up. */
44
- readonly timeoutMs?: number;
45
- }
46
- /**
47
- * Connect to clawtool (spawning the daemon if needed) and adapt its tool
48
- * catalog, skipping any tool whose bare lowercased name duplicates a
49
- * builtin. Best-effort: returns `[]` on timeout or any error.
50
- */
51
- export declare function loadClawtoolToolDefinitions(opts?: LoadClawtoolToolsOptions): Promise<ToolDefinition[]>;
52
- //# sourceMappingURL=tooling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,KAAK,cAAc,EAInB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,KAAK,2BAA2B,EAAwB,MAAM,aAAa,CAAA;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAIpD,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,aAAoD,CAAA;AAExF,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAkBjF;AAED,MAAM,WAAW,wBAAyB,SAAQ,2BAA2B;IAC5E,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAChD,IAAI,GAAE,wBAA6B,GACjC,OAAO,CAAC,cAAc,EAAE,CAAC,CAc3B"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Adapt clawtool's MCP tool catalog into SDK `ToolDefinition`s so the
3
- * agent loop can call clawtool's tools alongside the SDK builtins.
4
- *
5
- * The cli's `ClawtoolMcpClient` is not the SDK's `MCPClient`, so the SDK's
6
- * `mcpToolToToolDefinition` can't be used directly — but its building
7
- * blocks (`mcpJsonSchemaToZod`, `mcpToolResultToToolResult`) are public and
8
- * the MCP wire shapes already match, so the adapter is a thin wrapper.
9
- *
10
- * Loading is best-effort: clawtool may be absent, down, or slow to spawn.
11
- * `loadClawtoolToolDefinitions` never throws and never blocks longer than
12
- * its timeout — on any failure it yields zero tools and the session runs on
13
- * builtins alone.
14
- */
15
- import { defineTool, mcpJsonSchemaToZod, mcpToolResultToToolResult, } from '@namzu/sdk';
16
- import { createClawtoolPlugin } from './plugin.js';
17
- const DEFAULT_LOAD_TIMEOUT_MS = 5_000;
18
- /** Bridged clawtool tools are namespaced under this prefix. */
19
- export const CLAWTOOL_TOOL_PREFIX = 'clawtool_';
20
- /**
21
- * clawtool tools namzu never bridges (bare lowercased names).
22
- *
23
- * The `Agent*` family is clawtool's on-disk persona manager. It writes
24
- * agent definitions into a third-party tool's configuration directory —
25
- * a mechanism namzu neither owns nor reads, and one that is redundant with
26
- * (and confusing alongside) namzu's own in-memory dynamic sub-agents.
27
- * namzu defines and dispatches sub-agents natively, so these are dropped
28
- * before they reach the model.
29
- */
30
- export const EXCLUDED_CLAWTOOL_TOOLS = new Set(['agentnew', 'agentlist', 'agentdetect']);
31
- /** Whether a bridged clawtool tool (by its bare name) is excluded from namzu. */
32
- export function isExcludedClawtoolTool(bareName) {
33
- return EXCLUDED_CLAWTOOL_TOOLS.has(bareName.toLowerCase());
34
- }
35
- /**
36
- * Convert one clawtool proxy tool into an SDK `ToolDefinition`. Pure.
37
- * Bridged tools are flagged destructive (clawtool's MCP descriptors carry
38
- * no read-only hint, so they're treated as needing consent) and run by
39
- * forwarding to clawtool's `tools/call`.
40
- */
41
- export function clawtoolToolToDefinition(proxy) {
42
- const inputSchema = mcpJsonSchemaToZod(proxy.inputSchema);
43
- return defineTool({
44
- name: `${CLAWTOOL_TOOL_PREFIX}${proxy.name}`,
45
- description: proxy.description ? `[clawtool] ${proxy.description}` : `[clawtool] ${proxy.name}`,
46
- inputSchema,
47
- category: 'custom',
48
- permissions: [],
49
- readOnly: false,
50
- destructive: true,
51
- concurrencySafe: false,
52
- execute: async (input) => {
53
- const result = await proxy.call((input ?? {}));
54
- return mcpToolResultToToolResult(result);
55
- },
56
- });
57
- }
58
- /**
59
- * Connect to clawtool (spawning the daemon if needed) and adapt its tool
60
- * catalog, skipping any tool whose bare lowercased name duplicates a
61
- * builtin. Best-effort: returns `[]` on timeout or any error.
62
- */
63
- export async function loadClawtoolToolDefinitions(opts = {}) {
64
- const { skipNames = [], timeoutMs = DEFAULT_LOAD_TIMEOUT_MS, ...pluginOpts } = opts;
65
- const skip = new Set(skipNames.map((n) => n.toLowerCase()));
66
- try {
67
- const plugin = await withTimeout(createClawtoolPlugin(pluginOpts), timeoutMs);
68
- return plugin.tools
69
- .filter((t) => {
70
- const bare = t.name.toLowerCase();
71
- return !skip.has(bare) && !EXCLUDED_CLAWTOOL_TOOLS.has(bare);
72
- })
73
- .map(clawtoolToolToDefinition);
74
- }
75
- catch {
76
- return [];
77
- }
78
- }
79
- function withTimeout(promise, ms) {
80
- return new Promise((resolve, reject) => {
81
- const timer = setTimeout(() => reject(new Error('clawtool connect timed out')), ms);
82
- promise.then((value) => {
83
- clearTimeout(timer);
84
- resolve(value);
85
- }, (err) => {
86
- clearTimeout(timer);
87
- reject(err);
88
- });
89
- });
90
- }
91
- //# sourceMappingURL=tooling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tooling.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooling.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.test.ts"],"names":[],"mappings":""}
@@ -1,58 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { CLAWTOOL_TOOL_PREFIX, clawtoolToolToDefinition } from './tooling.js';
3
- function proxy(over = {}) {
4
- return {
5
- name: 'WebSearch',
6
- description: 'Search the web',
7
- inputSchema: {
8
- type: 'object',
9
- properties: { query: { type: 'string' } },
10
- required: ['query'],
11
- },
12
- source: 'clawtool',
13
- call: vi.fn(async () => ({ content: [{ type: 'text', text: 'ok' }], isError: false })),
14
- ...over,
15
- };
16
- }
17
- describe('clawtoolToolToDefinition', () => {
18
- it('namespaces the name and tags the description', () => {
19
- const def = clawtoolToolToDefinition(proxy());
20
- expect(def.name).toBe(`${CLAWTOOL_TOOL_PREFIX}WebSearch`);
21
- expect(def.description).toBe('[clawtool] Search the web');
22
- });
23
- it('builds a zod schema that accepts the declared input', () => {
24
- const def = clawtoolToolToDefinition(proxy());
25
- expect(def.inputSchema.safeParse({ query: 'hi' }).success).toBe(true);
26
- });
27
- it('flags bridged tools destructive (always prompt)', () => {
28
- const def = clawtoolToolToDefinition(proxy());
29
- expect(def.isDestructive?.({})).toBe(true);
30
- expect(def.isReadOnly?.({})).toBe(false);
31
- });
32
- it('forwards execution to clawtool and maps the text result', async () => {
33
- const call = vi.fn(async () => ({
34
- content: [{ type: 'text', text: 'search results' }],
35
- isError: false,
36
- }));
37
- const def = clawtoolToolToDefinition(proxy({ call }));
38
- const result = await def.execute({ query: 'hi' }, {});
39
- expect(call).toHaveBeenCalledWith({ query: 'hi' });
40
- expect(result.success).toBe(true);
41
- expect(result.output).toBe('search results');
42
- });
43
- it('maps an MCP error result to an unsuccessful ToolResult', async () => {
44
- const call = vi.fn(async () => ({
45
- content: [{ type: 'text', text: 'boom' }],
46
- isError: true,
47
- }));
48
- const def = clawtoolToolToDefinition(proxy({ call }));
49
- const result = await def.execute({ query: 'hi' }, {});
50
- expect(result.success).toBe(false);
51
- expect(result.error).toBe('boom');
52
- });
53
- it('falls back to the tool name when no description', () => {
54
- const def = clawtoolToolToDefinition(proxy({ description: '' }));
55
- expect(def.description).toBe('[clawtool] WebSearch');
56
- });
57
- });
58
- //# sourceMappingURL=tooling.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooling.test.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.test.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Shared types for the clawtool integration.
3
- *
4
- * Wire shapes mirror clawtool's Go source (cogitave/clawtool) verbatim so
5
- * upgrades on the clawtool side stay backwards-compatible without TS
6
- * changes. The source of truth for each shape is cited inline.
7
- */
8
- /**
9
- * `~/.config/clawtool/daemon.json` schema. Matches the Go struct at
10
- * `internal/daemon/daemon.go:41-48`. Written atomically by `daemon.Ensure`.
11
- */
12
- export interface DaemonState {
13
- readonly version: number;
14
- readonly pid: number;
15
- readonly port: number;
16
- readonly started_at: string;
17
- readonly token_file: string;
18
- readonly log_file: string;
19
- }
20
- /** Per-tool descriptor returned by MCP `tools/list`. */
21
- export interface McpToolDescriptor {
22
- readonly name: string;
23
- readonly description: string;
24
- readonly inputSchema: Record<string, unknown>;
25
- }
26
- /** Single text-content element returned in a `tools/call` result. */
27
- export interface McpTextContent {
28
- readonly type: 'text';
29
- readonly text: string;
30
- }
31
- /** Result envelope of a `tools/call` request. */
32
- export interface McpCallResult {
33
- readonly content: readonly McpTextContent[];
34
- readonly isError?: boolean;
35
- }
36
- /** Discovered + connected clawtool endpoint, returned by `ensureDaemon`. */
37
- export interface DaemonEndpoint {
38
- readonly baseUrl: string;
39
- readonly token: string;
40
- }
41
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7C;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB"}