@namzu/cli 0.6.0 → 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 (182) 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__/run-flags.test.js +0 -1
  11. package/dist/commands/__tests__/run-flags.test.js.map +1 -1
  12. package/dist/commands/__tests__/run-stream-flags.test.js +0 -1
  13. package/dist/commands/__tests__/run-stream-flags.test.js.map +1 -1
  14. package/dist/commands/run-stream.d.ts +3 -3
  15. package/dist/commands/run-stream.js +3 -3
  16. package/dist/commands/run.d.ts.map +1 -1
  17. package/dist/commands/run.js +4 -0
  18. package/dist/commands/run.js.map +1 -1
  19. package/dist/commands/stubs.d.ts +10 -0
  20. package/dist/commands/stubs.d.ts.map +1 -1
  21. package/dist/commands/stubs.js +12 -2
  22. package/dist/commands/stubs.js.map +1 -1
  23. package/dist/config/load.d.ts.map +1 -1
  24. package/dist/config/load.js +20 -4
  25. package/dist/config/load.js.map +1 -1
  26. package/dist/config/schema.d.ts +0 -12
  27. package/dist/config/schema.d.ts.map +1 -1
  28. package/dist/config/schema.js.map +1 -1
  29. package/dist/doctor/checks/credentials.d.ts +20 -0
  30. package/dist/doctor/checks/credentials.d.ts.map +1 -0
  31. package/dist/doctor/checks/credentials.js +58 -0
  32. package/dist/doctor/checks/credentials.js.map +1 -0
  33. package/dist/doctor/checks/credentials.test.d.ts +10 -0
  34. package/dist/doctor/checks/credentials.test.d.ts.map +1 -0
  35. package/dist/doctor/checks/credentials.test.js +47 -0
  36. package/dist/doctor/checks/credentials.test.js.map +1 -0
  37. package/dist/doctor/checks/index.d.ts +2 -1
  38. package/dist/doctor/checks/index.d.ts.map +1 -1
  39. package/dist/doctor/checks/index.js +3 -1
  40. package/dist/doctor/checks/index.js.map +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/integrations/providers/discover.d.ts +3 -8
  46. package/dist/integrations/providers/discover.d.ts.map +1 -1
  47. package/dist/integrations/providers/discover.js +2 -12
  48. package/dist/integrations/providers/discover.js.map +1 -1
  49. package/dist/integrations/providers/discover.test.js +1 -28
  50. package/dist/integrations/providers/discover.test.js.map +1 -1
  51. package/dist/integrations/providers/index.d.ts +0 -1
  52. package/dist/integrations/providers/index.d.ts.map +1 -1
  53. package/dist/integrations/providers/index.js +0 -1
  54. package/dist/integrations/providers/index.js.map +1 -1
  55. package/dist/integrations/providers/oauth.d.ts +1 -1
  56. package/dist/integrations/providers/oauth.js +1 -1
  57. package/dist/integrations/providers/preferences.d.ts +2 -2
  58. package/dist/integrations/providers/preferences.js +2 -2
  59. package/dist/integrations/sessions/store.js +1 -1
  60. package/dist/integrations/sessions/store.js.map +1 -1
  61. package/dist/integrations/updates.d.ts +4 -12
  62. package/dist/integrations/updates.d.ts.map +1 -1
  63. package/dist/integrations/updates.js +6 -53
  64. package/dist/integrations/updates.js.map +1 -1
  65. package/dist/tui/App.d.ts.map +1 -1
  66. package/dist/tui/App.js +23 -131
  67. package/dist/tui/App.js.map +1 -1
  68. package/dist/tui/Picker.d.ts +4 -4
  69. package/dist/tui/Picker.d.ts.map +1 -1
  70. package/dist/tui/Picker.js +6 -8
  71. package/dist/tui/Picker.js.map +1 -1
  72. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts +24 -0
  73. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts.map +1 -0
  74. package/dist/tui/__tests__/deferred-tool-discovery.test.js +111 -0
  75. package/dist/tui/__tests__/deferred-tool-discovery.test.js.map +1 -0
  76. package/dist/tui/__tests__/to-agent-event.test.js +88 -0
  77. package/dist/tui/__tests__/to-agent-event.test.js.map +1 -1
  78. package/dist/tui/__tests__/working-directory.test.js +0 -6
  79. package/dist/tui/__tests__/working-directory.test.js.map +1 -1
  80. package/dist/tui/agent.d.ts +16 -2
  81. package/dist/tui/agent.d.ts.map +1 -1
  82. package/dist/tui/agent.js +83 -30
  83. package/dist/tui/agent.js.map +1 -1
  84. package/dist/tui/slashCommands.d.ts +0 -6
  85. package/dist/tui/slashCommands.d.ts.map +1 -1
  86. package/dist/tui/slashCommands.js +1 -21
  87. package/dist/tui/slashCommands.js.map +1 -1
  88. package/dist/tui/types.d.ts +12 -0
  89. package/dist/tui/types.d.ts.map +1 -1
  90. package/package.json +4 -5
  91. package/dist/commands/tools.d.ts +0 -16
  92. package/dist/commands/tools.d.ts.map +0 -1
  93. package/dist/commands/tools.js +0 -161
  94. package/dist/commands/tools.js.map +0 -1
  95. package/dist/integrations/clawtool/agents.d.ts +0 -31
  96. package/dist/integrations/clawtool/agents.d.ts.map +0 -1
  97. package/dist/integrations/clawtool/agents.js +0 -30
  98. package/dist/integrations/clawtool/agents.js.map +0 -1
  99. package/dist/integrations/clawtool/agents.test.d.ts +0 -2
  100. package/dist/integrations/clawtool/agents.test.d.ts.map +0 -1
  101. package/dist/integrations/clawtool/agents.test.js +0 -79
  102. package/dist/integrations/clawtool/agents.test.js.map +0 -1
  103. package/dist/integrations/clawtool/auth.d.ts +0 -26
  104. package/dist/integrations/clawtool/auth.d.ts.map +0 -1
  105. package/dist/integrations/clawtool/auth.js +0 -56
  106. package/dist/integrations/clawtool/auth.js.map +0 -1
  107. package/dist/integrations/clawtool/auth.test.d.ts +0 -2
  108. package/dist/integrations/clawtool/auth.test.d.ts.map +0 -1
  109. package/dist/integrations/clawtool/auth.test.js +0 -40
  110. package/dist/integrations/clawtool/auth.test.js.map +0 -1
  111. package/dist/integrations/clawtool/binary.d.ts +0 -25
  112. package/dist/integrations/clawtool/binary.d.ts.map +0 -1
  113. package/dist/integrations/clawtool/binary.js +0 -50
  114. package/dist/integrations/clawtool/binary.js.map +0 -1
  115. package/dist/integrations/clawtool/binary.test.d.ts +0 -2
  116. package/dist/integrations/clawtool/binary.test.d.ts.map +0 -1
  117. package/dist/integrations/clawtool/binary.test.js +0 -50
  118. package/dist/integrations/clawtool/binary.test.js.map +0 -1
  119. package/dist/integrations/clawtool/daemon.d.ts +0 -37
  120. package/dist/integrations/clawtool/daemon.d.ts.map +0 -1
  121. package/dist/integrations/clawtool/daemon.js +0 -109
  122. package/dist/integrations/clawtool/daemon.js.map +0 -1
  123. package/dist/integrations/clawtool/daemon.test.d.ts +0 -11
  124. package/dist/integrations/clawtool/daemon.test.d.ts.map +0 -1
  125. package/dist/integrations/clawtool/daemon.test.js +0 -118
  126. package/dist/integrations/clawtool/daemon.test.js.map +0 -1
  127. package/dist/integrations/clawtool/dispatch.d.ts +0 -33
  128. package/dist/integrations/clawtool/dispatch.d.ts.map +0 -1
  129. package/dist/integrations/clawtool/dispatch.js +0 -155
  130. package/dist/integrations/clawtool/dispatch.js.map +0 -1
  131. package/dist/integrations/clawtool/dispatch.test.d.ts +0 -2
  132. package/dist/integrations/clawtool/dispatch.test.d.ts.map +0 -1
  133. package/dist/integrations/clawtool/dispatch.test.js +0 -138
  134. package/dist/integrations/clawtool/dispatch.test.js.map +0 -1
  135. package/dist/integrations/clawtool/index.d.ts +0 -11
  136. package/dist/integrations/clawtool/index.d.ts.map +0 -1
  137. package/dist/integrations/clawtool/index.js +0 -10
  138. package/dist/integrations/clawtool/index.js.map +0 -1
  139. package/dist/integrations/clawtool/mcp.d.ts +0 -51
  140. package/dist/integrations/clawtool/mcp.d.ts.map +0 -1
  141. package/dist/integrations/clawtool/mcp.js +0 -174
  142. package/dist/integrations/clawtool/mcp.js.map +0 -1
  143. package/dist/integrations/clawtool/mcp.test.d.ts +0 -2
  144. package/dist/integrations/clawtool/mcp.test.d.ts.map +0 -1
  145. package/dist/integrations/clawtool/mcp.test.js +0 -126
  146. package/dist/integrations/clawtool/mcp.test.js.map +0 -1
  147. package/dist/integrations/clawtool/paths.d.ts +0 -8
  148. package/dist/integrations/clawtool/paths.d.ts.map +0 -1
  149. package/dist/integrations/clawtool/paths.js +0 -19
  150. package/dist/integrations/clawtool/paths.js.map +0 -1
  151. package/dist/integrations/clawtool/peers.d.ts +0 -67
  152. package/dist/integrations/clawtool/peers.d.ts.map +0 -1
  153. package/dist/integrations/clawtool/peers.js +0 -150
  154. package/dist/integrations/clawtool/peers.js.map +0 -1
  155. package/dist/integrations/clawtool/plugin.d.ts +0 -42
  156. package/dist/integrations/clawtool/plugin.d.ts.map +0 -1
  157. package/dist/integrations/clawtool/plugin.js +0 -38
  158. package/dist/integrations/clawtool/plugin.js.map +0 -1
  159. package/dist/integrations/clawtool/state.d.ts +0 -11
  160. package/dist/integrations/clawtool/state.d.ts.map +0 -1
  161. package/dist/integrations/clawtool/state.js +0 -41
  162. package/dist/integrations/clawtool/state.js.map +0 -1
  163. package/dist/integrations/clawtool/state.test.d.ts +0 -2
  164. package/dist/integrations/clawtool/state.test.d.ts.map +0 -1
  165. package/dist/integrations/clawtool/state.test.js +0 -38
  166. package/dist/integrations/clawtool/state.test.js.map +0 -1
  167. package/dist/integrations/clawtool/tooling.d.ts +0 -52
  168. package/dist/integrations/clawtool/tooling.d.ts.map +0 -1
  169. package/dist/integrations/clawtool/tooling.js +0 -91
  170. package/dist/integrations/clawtool/tooling.js.map +0 -1
  171. package/dist/integrations/clawtool/tooling.test.d.ts +0 -2
  172. package/dist/integrations/clawtool/tooling.test.d.ts.map +0 -1
  173. package/dist/integrations/clawtool/tooling.test.js +0 -58
  174. package/dist/integrations/clawtool/tooling.test.js.map +0 -1
  175. package/dist/integrations/clawtool/types.d.ts +0 -41
  176. package/dist/integrations/clawtool/types.d.ts.map +0 -1
  177. package/dist/integrations/clawtool/types.js +0 -9
  178. package/dist/integrations/clawtool/types.js.map +0 -1
  179. package/dist/integrations/providers/secrets.d.ts +0 -37
  180. package/dist/integrations/providers/secrets.d.ts.map +0 -1
  181. package/dist/integrations/providers/secrets.js +0 -69
  182. package/dist/integrations/providers/secrets.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAA;AAEpE,MAAM,MAAM,aAAa,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,wBAAuB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,CAwFzF"}
@@ -1,155 +0,0 @@
1
- /**
2
- * Client for clawtool's `POST /v1/send_message` — the canonical agent
3
- * dispatcher. Returns an async iterable of normalized text frames so the
4
- * TUI can stream tokens into the transcript without caring about the
5
- * upstream CLI's exact wire format.
6
- *
7
- * The clawtool server passes through the upstream agent's NDJSON frames
8
- * verbatim, and each upstream family emits a different shape. We do
9
- * **best-effort normalization**: extract any `text` /
10
- * `content` string fields as visible deltas; collapse `error` lines into
11
- * error events; everything else (tool_use, tool_result, ping, message
12
- * envelopes) is silently consumed for now — tool-call surfacing lands
13
- * with the tool permission overlay.
14
- */
15
- import { ensureDaemon } from './daemon.js';
16
- export async function* sendMessage(opts) {
17
- const endpoint = await ensureDaemon(opts);
18
- const fetchFn = opts.fetch ?? globalThis.fetch;
19
- const headers = { 'Content-Type': 'application/json' };
20
- if (endpoint.token.length > 0) {
21
- headers.Authorization = `Bearer ${endpoint.token}`;
22
- }
23
- const body = {
24
- instance: opts.instance,
25
- prompt: opts.prompt,
26
- };
27
- if (opts.opts)
28
- body.opts = opts.opts;
29
- let res;
30
- try {
31
- res = await fetchFn(`${endpoint.baseUrl}/v1/send_message`, {
32
- method: 'POST',
33
- headers,
34
- body: JSON.stringify(body),
35
- signal: opts.signal,
36
- });
37
- }
38
- catch (err) {
39
- yield {
40
- kind: 'error',
41
- message: `clawtool /v1/send_message request failed: ${err instanceof Error ? err.message : String(err)}`,
42
- };
43
- return;
44
- }
45
- if (!res.ok) {
46
- // Best-effort: server may have returned a JSON error body.
47
- let detail = `HTTP ${res.status}`;
48
- try {
49
- const errBody = (await res.json());
50
- if (errBody?.error)
51
- detail += `: ${errBody.error}`;
52
- }
53
- catch {
54
- // non-JSON body, ignore
55
- }
56
- yield { kind: 'error', message: `clawtool /v1/send_message ${detail}` };
57
- return;
58
- }
59
- if (!res.body) {
60
- yield { kind: 'error', message: 'clawtool /v1/send_message returned no body' };
61
- return;
62
- }
63
- const reader = res.body.getReader();
64
- const decoder = new TextDecoder();
65
- let buffer = '';
66
- try {
67
- while (true) {
68
- const { done, value } = await reader.read();
69
- if (done)
70
- break;
71
- buffer += decoder.decode(value, { stream: true });
72
- let nl = buffer.indexOf('\n');
73
- while (nl !== -1) {
74
- const line = buffer.slice(0, nl).trim();
75
- buffer = buffer.slice(nl + 1);
76
- const event = parseFrame(line);
77
- if (event)
78
- yield event;
79
- nl = buffer.indexOf('\n');
80
- }
81
- }
82
- const tail = buffer.trim();
83
- if (tail.length > 0) {
84
- const event = parseFrame(tail);
85
- if (event)
86
- yield event;
87
- }
88
- yield { kind: 'done' };
89
- }
90
- catch (err) {
91
- if (err.name === 'AbortError') {
92
- yield { kind: 'error', message: 'aborted' };
93
- return;
94
- }
95
- yield {
96
- kind: 'error',
97
- message: `dispatch stream failed: ${err instanceof Error ? err.message : String(err)}`,
98
- };
99
- }
100
- finally {
101
- try {
102
- await reader.cancel();
103
- }
104
- catch {
105
- // reader already closed by the runtime — ignore
106
- }
107
- }
108
- }
109
- function parseFrame(line) {
110
- if (line.length === 0)
111
- return null;
112
- let frame;
113
- try {
114
- frame = JSON.parse(line);
115
- }
116
- catch {
117
- // Some upstreams emit plain-text lines; treat them as deltas.
118
- return { kind: 'delta', text: `${line}\n` };
119
- }
120
- if (typeof frame.error === 'string' && frame.error.length > 0) {
121
- return { kind: 'error', message: frame.error };
122
- }
123
- // Best-effort text extraction across known frame shapes (text_delta,
124
- // content_block_delta, message_start, etc.). Tool-call / tool-result
125
- // frames are silently dropped here; the tool permission overlay
126
- // will surface them when it lands.
127
- const text = extractText(frame);
128
- if (text !== null && text.length > 0) {
129
- return { kind: 'delta', text };
130
- }
131
- return null;
132
- }
133
- function extractText(frame) {
134
- if (typeof frame.text === 'string')
135
- return frame.text;
136
- if (typeof frame.content === 'string')
137
- return frame.content;
138
- // Block-delta shape: { type: 'content_block_delta', delta: { text: '...' } }
139
- if (frame.delta && typeof frame.delta === 'object') {
140
- const delta = frame.delta;
141
- if (typeof delta.text === 'string')
142
- return delta.text;
143
- if (typeof delta.content === 'string')
144
- return delta.content;
145
- }
146
- // Choice-delta shape: { choices: [{ delta: { content: '...' } }] }
147
- const choices = frame.choices;
148
- if (Array.isArray(choices) && choices[0]?.delta?.content) {
149
- const v = choices[0].delta.content;
150
- if (typeof v === 'string')
151
- return v;
152
- }
153
- return null;
154
- }
155
- //# sourceMappingURL=dispatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dispatch.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/dispatch.test.ts"],"names":[],"mappings":""}
@@ -1,138 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { sendMessage } from './dispatch.js';
3
- /** Build a Response that streams `lines` as NDJSON. */
4
- function ndjsonResponse(lines) {
5
- const body = `${lines.join('\n')}\n`;
6
- return new Response(body, {
7
- status: 200,
8
- headers: { 'content-type': 'application/x-ndjson' },
9
- });
10
- }
11
- async function collect(it) {
12
- const out = [];
13
- for await (const ev of it)
14
- out.push(ev);
15
- return out;
16
- }
17
- describe('sendMessage', () => {
18
- it('issues POST /v1/send_message with the right body + headers', async () => {
19
- const fetchMock = vi.fn().mockResolvedValue(ndjsonResponse(['{"text":"hi"}']));
20
- await collect(sendMessage({
21
- endpoint: 'http://localhost:9999',
22
- token: 'tok',
23
- instance: 'claude',
24
- prompt: 'hello',
25
- fetch: fetchMock,
26
- }));
27
- const call = fetchMock.mock.calls[0];
28
- expect(call?.[0]).toBe('http://localhost:9999/v1/send_message');
29
- expect(call?.[1]?.method).toBe('POST');
30
- const headers = call?.[1]?.headers;
31
- expect(headers['Content-Type']).toBe('application/json');
32
- expect(headers.Authorization).toBe('Bearer tok');
33
- expect(JSON.parse(String(call?.[1]?.body))).toEqual({
34
- instance: 'claude',
35
- prompt: 'hello',
36
- });
37
- });
38
- it('extracts `text` from each NDJSON line and ends with done', async () => {
39
- const fetchMock = vi
40
- .fn()
41
- .mockResolvedValue(ndjsonResponse(['{"text":"hel"}', '{"text":"lo"}']));
42
- const events = await collect(sendMessage({
43
- endpoint: 'http://localhost:9999',
44
- token: '',
45
- instance: 'claude',
46
- prompt: 'x',
47
- fetch: fetchMock,
48
- }));
49
- expect(events).toEqual([
50
- { kind: 'delta', text: 'hel' },
51
- { kind: 'delta', text: 'lo' },
52
- { kind: 'done' },
53
- ]);
54
- });
55
- it('handles Anthropic-shaped content_block_delta frames', async () => {
56
- const fetchMock = vi
57
- .fn()
58
- .mockResolvedValue(ndjsonResponse([
59
- '{"type":"content_block_delta","delta":{"text":"foo"}}',
60
- '{"type":"message_stop"}',
61
- ]));
62
- const events = await collect(sendMessage({
63
- endpoint: 'http://localhost:9999',
64
- token: '',
65
- instance: 'claude',
66
- prompt: 'x',
67
- fetch: fetchMock,
68
- }));
69
- expect(events).toEqual([{ kind: 'delta', text: 'foo' }, { kind: 'done' }]);
70
- });
71
- it('handles OpenAI-shaped choices[0].delta.content frames', async () => {
72
- const fetchMock = vi
73
- .fn()
74
- .mockResolvedValue(ndjsonResponse(['{"choices":[{"delta":{"content":"hi"}}]}']));
75
- const events = await collect(sendMessage({
76
- endpoint: 'http://localhost:9999',
77
- token: '',
78
- instance: 'codex',
79
- prompt: 'x',
80
- fetch: fetchMock,
81
- }));
82
- expect(events[0]).toEqual({ kind: 'delta', text: 'hi' });
83
- });
84
- it('falls back to plain-text passthrough for non-JSON lines', async () => {
85
- const fetchMock = vi.fn().mockResolvedValue(ndjsonResponse(['raw text line']));
86
- const events = await collect(sendMessage({
87
- endpoint: 'http://localhost:9999',
88
- token: '',
89
- instance: 'aider',
90
- prompt: 'x',
91
- fetch: fetchMock,
92
- }));
93
- expect(events[0]).toEqual({ kind: 'delta', text: 'raw text line\n' });
94
- });
95
- it('surfaces an in-band `error` field as an error event', async () => {
96
- const fetchMock = vi
97
- .fn()
98
- .mockResolvedValue(ndjsonResponse(['{"error":"upstream crashed"}']));
99
- const events = await collect(sendMessage({
100
- endpoint: 'http://localhost:9999',
101
- token: '',
102
- instance: 'claude',
103
- prompt: 'x',
104
- fetch: fetchMock,
105
- }));
106
- expect(events[0]).toEqual({ kind: 'error', message: 'upstream crashed' });
107
- });
108
- it('translates non-2xx into an error event including HTTP code', async () => {
109
- const fetchMock = vi.fn().mockResolvedValue(new Response(JSON.stringify({ error: 'instance not callable' }), {
110
- status: 400,
111
- headers: { 'content-type': 'application/json' },
112
- }));
113
- const events = await collect(sendMessage({
114
- endpoint: 'http://localhost:9999',
115
- token: '',
116
- instance: 'aider',
117
- prompt: 'x',
118
- fetch: fetchMock,
119
- }));
120
- expect(events[0]).toEqual({
121
- kind: 'error',
122
- message: 'clawtool /v1/send_message HTTP 400: instance not callable',
123
- });
124
- });
125
- it('omits the Bearer header when the token is empty', async () => {
126
- const fetchMock = vi.fn().mockResolvedValue(ndjsonResponse([]));
127
- await collect(sendMessage({
128
- endpoint: 'http://localhost:9999',
129
- token: '',
130
- instance: 'claude',
131
- prompt: 'x',
132
- fetch: fetchMock,
133
- }));
134
- const headers = fetchMock.mock.calls[0]?.[1]?.headers;
135
- expect(headers.Authorization).toBeUndefined();
136
- });
137
- });
138
- //# sourceMappingURL=dispatch.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.test.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/dispatch.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export { type Agent, listAgents, type ListAgentsOptions } from './agents.js';
2
- export { ClawtoolAuthError, readToken, tryReadToken } from './auth.js';
3
- export { ClawtoolBinaryError, findBinary, type FindBinaryOptions } from './binary.js';
4
- export { ensureDaemon, ClawtoolDaemonError, type EnsureDaemonOptions } from './daemon.js';
5
- export { type DispatchEvent, sendMessage, type SendMessageOptions } from './dispatch.js';
6
- export { ClawtoolMcpClient, MCP_PROTOCOL_VERSION, McpProtocolError, type McpClientOptions, } from './mcp.js';
7
- export { clawtoolConfigDir, daemonStatePath, listenerTokenPath, } from './paths.js';
8
- export { createClawtoolPlugin, type ClawtoolPlugin, type ClawtoolProxyTool, type CreateClawtoolPluginOptions, } from './plugin.js';
9
- export { readDaemonState } from './state.js';
10
- export type { DaemonEndpoint, DaemonState, McpCallResult, McpTextContent, McpToolDescriptor, } from './types.js';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,KAAK,aAAa,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACxF,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,gBAAgB,GACrB,MAAM,UAAU,CAAA;AACjB,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,GAChC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,GACjB,MAAM,YAAY,CAAA"}
@@ -1,10 +0,0 @@
1
- export { listAgents } from './agents.js';
2
- export { ClawtoolAuthError, readToken, tryReadToken } from './auth.js';
3
- export { ClawtoolBinaryError, findBinary } from './binary.js';
4
- export { ensureDaemon, ClawtoolDaemonError } from './daemon.js';
5
- export { sendMessage } from './dispatch.js';
6
- export { ClawtoolMcpClient, MCP_PROTOCOL_VERSION, McpProtocolError, } from './mcp.js';
7
- export { clawtoolConfigDir, daemonStatePath, listenerTokenPath, } from './paths.js';
8
- export { createClawtoolPlugin, } from './plugin.js';
9
- export { readDaemonState } from './state.js';
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAA0B,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAA4B,MAAM,aAAa,CAAA;AACzF,OAAO,EAAsB,WAAW,EAA2B,MAAM,eAAe,CAAA;AACxF,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GAEhB,MAAM,UAAU,CAAA;AACjB,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,oBAAoB,GAIpB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Minimal MCP-over-Streamable-HTTP client for clawtool's `/mcp` endpoint.
3
- *
4
- * We deliberately do not reuse `@namzu/sdk`'s `MCPClient` http-sse
5
- * transport — that implementation targets the older MCP HTTP+SSE
6
- * transport (separate /sse + /message channels), whereas clawtool uses
7
- * the newer **Streamable HTTP** transport (single POST that may return
8
- * a chunked SSE response with one or more `data:` events). Wire details
9
- * verified against clawtool/internal/server/{http.go,mcp_headers.go}.
10
- *
11
- * Scope: `initialize` → `notifications/initialized` handshake, then
12
- * `tools/list` and `tools/call`. Streaming multi-event responses are
13
- * read fully before resolving (clawtool's current handlers return a
14
- * single event per call).
15
- */
16
- import type { McpCallResult, McpToolDescriptor } from './types.js';
17
- export declare const MCP_PROTOCOL_VERSION = "2024-11-05";
18
- export declare class McpProtocolError extends Error {
19
- readonly code?: number | undefined;
20
- constructor(message: string, code?: number | undefined);
21
- }
22
- export interface McpClientOptions {
23
- readonly endpoint: string;
24
- readonly token: string;
25
- readonly clientInfo?: {
26
- name: string;
27
- version: string;
28
- };
29
- /** Override `fetch` for tests. */
30
- readonly fetch?: typeof fetch;
31
- /** Per-request timeout in ms. Default 30s. */
32
- readonly timeoutMs?: number;
33
- }
34
- export declare class ClawtoolMcpClient {
35
- private readonly opts;
36
- private id;
37
- private initialized;
38
- private sessionId;
39
- private readonly fetchFn;
40
- private readonly timeoutMs;
41
- constructor(opts: McpClientOptions);
42
- initialize(): Promise<void>;
43
- listTools(): Promise<McpToolDescriptor[]>;
44
- callTool(name: string, args: Record<string, unknown>): Promise<McpCallResult>;
45
- private rpc;
46
- private notify;
47
- private captureSessionId;
48
- private headers;
49
- private readEnvelope;
50
- }
51
- //# sourceMappingURL=mcp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAKlE,eAAO,MAAM,oBAAoB,eAAe,CAAA;AAEhD,qBAAa,gBAAiB,SAAQ,KAAK;IAGzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;gBADtB,OAAO,EAAE,MAAM,EACN,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,kCAAkC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B;AAsBD,qBAAa,iBAAiB;IAOjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,EAAE,CAAI;IACd,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEL,IAAI,EAAE,gBAAgB;IAK7C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2BzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;YAKrE,GAAG;YAqCH,MAAM;IAWpB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,OAAO;YAoBD,YAAY;CAQ1B"}
@@ -1,174 +0,0 @@
1
- /**
2
- * Minimal MCP-over-Streamable-HTTP client for clawtool's `/mcp` endpoint.
3
- *
4
- * We deliberately do not reuse `@namzu/sdk`'s `MCPClient` http-sse
5
- * transport — that implementation targets the older MCP HTTP+SSE
6
- * transport (separate /sse + /message channels), whereas clawtool uses
7
- * the newer **Streamable HTTP** transport (single POST that may return
8
- * a chunked SSE response with one or more `data:` events). Wire details
9
- * verified against clawtool/internal/server/{http.go,mcp_headers.go}.
10
- *
11
- * Scope: `initialize` → `notifications/initialized` handshake, then
12
- * `tools/list` and `tools/call`. Streaming multi-event responses are
13
- * read fully before resolving (clawtool's current handlers return a
14
- * single event per call).
15
- */
16
- /** Runaway guard for a server whose cursor never ends. */
17
- const MAX_LIST_PAGES = 100;
18
- export const MCP_PROTOCOL_VERSION = '2024-11-05';
19
- export class McpProtocolError extends Error {
20
- code;
21
- constructor(message, code) {
22
- super(message);
23
- this.code = code;
24
- this.name = 'McpProtocolError';
25
- }
26
- }
27
- export class ClawtoolMcpClient {
28
- opts;
29
- id = 0;
30
- initialized = false;
31
- sessionId = null;
32
- fetchFn;
33
- timeoutMs;
34
- constructor(opts) {
35
- this.opts = opts;
36
- this.fetchFn = opts.fetch ?? globalThis.fetch;
37
- this.timeoutMs = opts.timeoutMs ?? 30_000;
38
- }
39
- async initialize() {
40
- if (this.initialized)
41
- return;
42
- await this.rpc('initialize', {
43
- protocolVersion: MCP_PROTOCOL_VERSION,
44
- capabilities: {},
45
- clientInfo: this.opts.clientInfo ?? { name: 'namzu', version: '0.0.0' },
46
- });
47
- // `notifications/initialized` is a notification — JSON-RPC with no
48
- // `id`, no response expected. Fire and forget over the same endpoint.
49
- await this.notify('notifications/initialized', {});
50
- this.initialized = true;
51
- }
52
- async listTools() {
53
- await this.initialize();
54
- // Paged to the end. Sending no cursor and ignoring the one that
55
- // comes back returns only the first page, so a server that pages
56
- // its catalogue contributes part of it and nothing says so — the
57
- // symptom is a model that never uses a tool it was told about.
58
- const tools = [];
59
- let cursor;
60
- for (let page = 1;; page++) {
61
- const result = await this.rpc('tools/list', cursor === undefined ? {} : { cursor });
62
- if (Array.isArray(result.tools))
63
- tools.push(...result.tools);
64
- const next = result.nextCursor;
65
- if (typeof next !== 'string' || next.length === 0)
66
- return tools;
67
- if (page >= MAX_LIST_PAGES) {
68
- throw new Error(`tools/list did not stop paging after ${MAX_LIST_PAGES} pages (${tools.length} tools so far).`);
69
- }
70
- cursor = next;
71
- }
72
- }
73
- async callTool(name, args) {
74
- await this.initialize();
75
- return this.rpc('tools/call', { name, arguments: args });
76
- }
77
- async rpc(method, params) {
78
- const id = ++this.id;
79
- const body = { jsonrpc: '2.0', id, method, params };
80
- const url = `${this.opts.endpoint.replace(/\/$/, '')}/mcp`;
81
- const controller = new AbortController();
82
- const timer = setTimeout(() => controller.abort(), this.timeoutMs);
83
- let response;
84
- try {
85
- response = await this.fetchFn(url, {
86
- method: 'POST',
87
- headers: this.headers(method, params),
88
- body: JSON.stringify(body),
89
- signal: controller.signal,
90
- });
91
- }
92
- finally {
93
- clearTimeout(timer);
94
- }
95
- this.captureSessionId(response);
96
- if (!response.ok) {
97
- throw new McpProtocolError(`clawtool MCP request to ${method} failed: HTTP ${response.status}`, response.status);
98
- }
99
- const envelope = await this.readEnvelope(response);
100
- if (envelope.error) {
101
- throw new McpProtocolError(`clawtool MCP method ${method} returned error: ${envelope.error.message}`, envelope.error.code);
102
- }
103
- if (envelope.result === undefined) {
104
- throw new McpProtocolError(`clawtool MCP method ${method} returned no result`);
105
- }
106
- return envelope.result;
107
- }
108
- async notify(method, params) {
109
- const body = { jsonrpc: '2.0', method, params };
110
- const url = `${this.opts.endpoint.replace(/\/$/, '')}/mcp`;
111
- const response = await this.fetchFn(url, {
112
- method: 'POST',
113
- headers: this.headers(method, params),
114
- body: JSON.stringify(body),
115
- });
116
- this.captureSessionId(response);
117
- }
118
- captureSessionId(response) {
119
- // MCP Streamable HTTP issues a session ID on `initialize` and expects
120
- // it echoed on every subsequent request. clawtool returns it via the
121
- // `Mcp-Session-Id` header (see internal/server/http.go + mark3labs/mcp-go).
122
- const sid = response.headers.get('mcp-session-id') ?? response.headers.get('Mcp-Session-Id');
123
- if (sid && sid.length > 0) {
124
- this.sessionId = sid;
125
- }
126
- }
127
- headers(method, params) {
128
- const headers = {
129
- 'Content-Type': 'application/json',
130
- Accept: 'application/json, text/event-stream',
131
- 'Mcp-Method': method,
132
- };
133
- // Empty token = `--no-auth` daemon; omit Authorization entirely.
134
- if (this.opts.token.length > 0) {
135
- headers.Authorization = `Bearer ${this.opts.token}`;
136
- }
137
- if (this.sessionId) {
138
- headers['Mcp-Session-Id'] = this.sessionId;
139
- }
140
- const name = typeof params.name === 'string' ? params.name : undefined;
141
- if (name && (method === 'tools/call' || method === 'prompts/get')) {
142
- headers['Mcp-Name'] = name;
143
- }
144
- return headers;
145
- }
146
- async readEnvelope(response) {
147
- const ct = response.headers.get('content-type') ?? '';
148
- const text = await response.text();
149
- if (ct.includes('text/event-stream')) {
150
- return parseSseSingleEvent(text);
151
- }
152
- return JSON.parse(text);
153
- }
154
- }
155
- function parseSseSingleEvent(raw) {
156
- // Streamable HTTP responses look like:
157
- // data: {"jsonrpc":"2.0", ...}
158
- // (blank line terminator)
159
- // We accept multiple events but only return the last well-formed JSON
160
- // envelope — clawtool's current handlers emit exactly one.
161
- const lines = raw.split('\n');
162
- let last;
163
- for (const line of lines) {
164
- const trimmed = line.replace(/\r$/, '');
165
- if (trimmed.startsWith('data:')) {
166
- last = trimmed.slice('data:'.length).trim();
167
- }
168
- }
169
- if (!last) {
170
- throw new McpProtocolError('clawtool MCP SSE response had no data event');
171
- }
172
- return JSON.parse(last);
173
- }
174
- //# sourceMappingURL=mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,0DAA0D;AAC1D,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAA;AAEhD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGhC;IAFV,YACC,OAAe,EACN,IAAa;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAC/B,CAAC;CACD;AAgCD,MAAM,OAAO,iBAAiB;IAOA;IANrB,EAAE,GAAG,CAAC,CAAA;IACN,WAAW,GAAG,KAAK,CAAA;IACnB,SAAS,GAAkB,IAAI,CAAA;IACtB,OAAO,CAAc;IACrB,SAAS,CAAQ;IAElC,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,IAAI,CAAC,WAAW;YAAE,OAAM;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC5B,eAAe,EAAE,oBAAoB;YACrC,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;SACvE,CAAC,CAAA;QACF,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,SAAS;QACd,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAEvB,gEAAgE;QAChE,iEAAiE;QACjE,iEAAiE;QACjE,+DAA+D;QAC/D,MAAM,KAAK,GAAwB,EAAE,CAAA;QACrC,IAAI,MAA0B,CAAA;QAC9B,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC5B,YAAY,EACZ,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CACtC,CAAA;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAA;YAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC/D,IAAI,IAAI,IAAI,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACd,wCAAwC,cAAc,WAAW,KAAK,CAAC,MAAM,iBAAiB,CAC9F,CAAA;YACF,CAAC;YACD,MAAM,GAAG,IAAI,CAAA;QACd,CAAC;IACF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAA6B;QACzD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,GAAG,CAAgB,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,MAAc,EAAE,MAA+B;QACnE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAA;QACpB,MAAM,IAAI,GAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAClE,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;aACzB,CAAC,CAAA;QACH,CAAC;gBAAS,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CACzB,2BAA2B,MAAM,iBAAiB,QAAQ,CAAC,MAAM,EAAE,EACnE,QAAQ,CAAC,MAAM,CACf,CAAA;QACF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAI,QAAQ,CAAC,CAAA;QACrD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,gBAAgB,CACzB,uBAAuB,MAAM,oBAAoB,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EACzE,QAAQ,CAAC,KAAK,CAAC,IAAI,CACnB,CAAA;QACF,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,MAAM,qBAAqB,CAAC,CAAA;QAC/E,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAA+B;QACnE,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,KAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QACxD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAA;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAEO,gBAAgB,CAAC,QAAkB;QAC1C,sEAAsE;QACtE,qEAAqE;QACrE,4EAA4E;QAC5E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC5F,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;QACrB,CAAC;IACF,CAAC;IAEO,OAAO,CAAC,MAAc,EAAE,MAA+B;QAC9D,MAAM,OAAO,GAA2B;YACvC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qCAAqC;YAC7C,YAAY,EAAE,MAAM;SACpB,CAAA;QACD,iEAAiE;QACjE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QAC3C,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACtE,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,aAAa,CAAC,EAAE,CAAC;YACnE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;QAC3B,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,QAAkB;QAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,OAAO,mBAAmB,CAAI,IAAI,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAA;IAC9C,CAAC;CACD;AAED,SAAS,mBAAmB,CAAI,GAAW;IAC1C,uCAAuC;IACvC,iCAAiC;IACjC,4BAA4B;IAC5B,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,IAAwB,CAAA;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACvC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5C,CAAC;IACF,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,gBAAgB,CAAC,6CAA6C,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAA;AAC9C,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mcp.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/mcp.test.ts"],"names":[],"mappings":""}