daedalus-cli 0.5.25 → 1.0.1

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 (225) hide show
  1. package/AGENTS.md +12 -2
  2. package/CHANGELOG.md +44 -0
  3. package/CONTRIBUTING.md +3 -2
  4. package/README.md +90 -215
  5. package/dist/agents/ensemble.js +1 -1
  6. package/dist/agents/ensemble.js.map +1 -1
  7. package/dist/agents/orchestrator.js +11 -9
  8. package/dist/agents/orchestrator.js.map +1 -1
  9. package/dist/agents/orchestrator.test.d.ts +2 -0
  10. package/dist/agents/orchestrator.test.d.ts.map +1 -0
  11. package/dist/agents/orchestrator.test.js +48 -0
  12. package/dist/agents/orchestrator.test.js.map +1 -0
  13. package/dist/agents/roles.test.d.ts +2 -0
  14. package/dist/agents/roles.test.d.ts.map +1 -0
  15. package/dist/agents/roles.test.js +108 -0
  16. package/dist/agents/roles.test.js.map +1 -0
  17. package/dist/banner.d.ts +3 -0
  18. package/dist/banner.d.ts.map +1 -0
  19. package/dist/banner.js +66 -0
  20. package/dist/banner.js.map +1 -0
  21. package/dist/clipboard.d.ts +3 -0
  22. package/dist/clipboard.d.ts.map +1 -0
  23. package/dist/clipboard.js +63 -0
  24. package/dist/clipboard.js.map +1 -0
  25. package/dist/commands.d.ts +44 -0
  26. package/dist/commands.d.ts.map +1 -0
  27. package/dist/commands.js +1044 -0
  28. package/dist/commands.js.map +1 -0
  29. package/dist/config/index.d.ts +47 -42
  30. package/dist/config/index.d.ts.map +1 -1
  31. package/dist/config/index.js +1 -0
  32. package/dist/config/index.js.map +1 -1
  33. package/dist/config/index.test.d.ts +2 -0
  34. package/dist/config/index.test.d.ts.map +1 -0
  35. package/dist/config/index.test.js +220 -0
  36. package/dist/config/index.test.js.map +1 -0
  37. package/dist/extraction.js +2 -2
  38. package/dist/extraction.js.map +1 -1
  39. package/dist/extraction.test.d.ts +2 -0
  40. package/dist/extraction.test.d.ts.map +1 -0
  41. package/dist/extraction.test.js +105 -0
  42. package/dist/extraction.test.js.map +1 -0
  43. package/dist/formatting.d.ts +13 -0
  44. package/dist/formatting.d.ts.map +1 -0
  45. package/dist/formatting.js +195 -0
  46. package/dist/formatting.js.map +1 -0
  47. package/dist/highlight.test.d.ts +2 -0
  48. package/dist/highlight.test.d.ts.map +1 -0
  49. package/dist/highlight.test.js +56 -0
  50. package/dist/highlight.test.js.map +1 -0
  51. package/dist/index.d.ts +1 -3
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +46 -1953
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.test.js +1 -1
  56. package/dist/index.test.js.map +1 -1
  57. package/dist/indexing/fts.test.d.ts +2 -0
  58. package/dist/indexing/fts.test.d.ts.map +1 -0
  59. package/dist/indexing/fts.test.js +104 -0
  60. package/dist/indexing/fts.test.js.map +1 -0
  61. package/dist/indexing/indexer.d.ts +21 -0
  62. package/dist/indexing/indexer.d.ts.map +1 -1
  63. package/dist/indexing/indexer.js +4 -4
  64. package/dist/indexing/indexer.js.map +1 -1
  65. package/dist/indexing/indexer.test.d.ts +2 -0
  66. package/dist/indexing/indexer.test.d.ts.map +1 -0
  67. package/dist/indexing/indexer.test.js +192 -0
  68. package/dist/indexing/indexer.test.js.map +1 -0
  69. package/dist/model.d.ts +20 -0
  70. package/dist/model.d.ts.map +1 -0
  71. package/dist/model.js +278 -0
  72. package/dist/model.js.map +1 -0
  73. package/dist/onboarding/wizard.js +1 -1
  74. package/dist/onboarding/wizard.js.map +1 -1
  75. package/dist/profile.d.ts.map +1 -1
  76. package/dist/profile.js +12 -7
  77. package/dist/profile.js.map +1 -1
  78. package/dist/profile.test.d.ts +2 -0
  79. package/dist/profile.test.d.ts.map +1 -0
  80. package/dist/profile.test.js +70 -0
  81. package/dist/profile.test.js.map +1 -0
  82. package/dist/project-hash.d.ts +2 -0
  83. package/dist/project-hash.d.ts.map +1 -0
  84. package/dist/project-hash.js +6 -0
  85. package/dist/project-hash.js.map +1 -0
  86. package/dist/repl.d.ts +25 -0
  87. package/dist/repl.d.ts.map +1 -0
  88. package/dist/repl.js +203 -0
  89. package/dist/repl.js.map +1 -0
  90. package/dist/router/health.test.d.ts +2 -0
  91. package/dist/router/health.test.d.ts.map +1 -0
  92. package/dist/router/health.test.js +87 -0
  93. package/dist/router/health.test.js.map +1 -0
  94. package/dist/router/index.d.ts +1 -1
  95. package/dist/router/index.d.ts.map +1 -1
  96. package/dist/router/index.js +17 -6
  97. package/dist/router/index.js.map +1 -1
  98. package/dist/router/index.test.d.ts +2 -0
  99. package/dist/router/index.test.d.ts.map +1 -0
  100. package/dist/router/index.test.js +136 -0
  101. package/dist/router/index.test.js.map +1 -0
  102. package/dist/router/rate-limiter.test.d.ts +2 -0
  103. package/dist/router/rate-limiter.test.d.ts.map +1 -0
  104. package/dist/router/rate-limiter.test.js +90 -0
  105. package/dist/router/rate-limiter.test.js.map +1 -0
  106. package/dist/session/jsonl.d.ts +0 -2
  107. package/dist/session/jsonl.d.ts.map +1 -1
  108. package/dist/session/jsonl.js +3 -7
  109. package/dist/session/jsonl.js.map +1 -1
  110. package/dist/session/jsonl.test.d.ts +2 -0
  111. package/dist/session/jsonl.test.d.ts.map +1 -0
  112. package/dist/session/jsonl.test.js +88 -0
  113. package/dist/session/jsonl.test.js.map +1 -0
  114. package/dist/session/manager.d.ts +2 -0
  115. package/dist/session/manager.d.ts.map +1 -1
  116. package/dist/session/manager.js +20 -5
  117. package/dist/session/manager.js.map +1 -1
  118. package/dist/session/manager.test.d.ts +2 -0
  119. package/dist/session/manager.test.d.ts.map +1 -0
  120. package/dist/session/manager.test.js +120 -0
  121. package/dist/session/manager.test.js.map +1 -0
  122. package/dist/session/memory.test.d.ts +2 -0
  123. package/dist/session/memory.test.d.ts.map +1 -0
  124. package/dist/session/memory.test.js +100 -0
  125. package/dist/session/memory.test.js.map +1 -0
  126. package/dist/session/sqlite.test.d.ts +2 -0
  127. package/dist/session/sqlite.test.d.ts.map +1 -0
  128. package/dist/session/sqlite.test.js +151 -0
  129. package/dist/session/sqlite.test.js.map +1 -0
  130. package/dist/tools/builtin/delegation.test.d.ts +2 -0
  131. package/dist/tools/builtin/delegation.test.d.ts.map +1 -0
  132. package/dist/tools/builtin/delegation.test.js +87 -0
  133. package/dist/tools/builtin/delegation.test.js.map +1 -0
  134. package/dist/tools/builtin/eval.test.d.ts +2 -0
  135. package/dist/tools/builtin/eval.test.d.ts.map +1 -0
  136. package/dist/tools/builtin/eval.test.js +24 -0
  137. package/dist/tools/builtin/eval.test.js.map +1 -0
  138. package/dist/tools/builtin/files.d.ts.map +1 -1
  139. package/dist/tools/builtin/files.js +1 -3
  140. package/dist/tools/builtin/files.js.map +1 -1
  141. package/dist/tools/builtin/git.test.d.ts +2 -0
  142. package/dist/tools/builtin/git.test.d.ts.map +1 -0
  143. package/dist/tools/builtin/git.test.js +49 -0
  144. package/dist/tools/builtin/git.test.js.map +1 -0
  145. package/dist/tools/builtin/impact.test.d.ts +2 -0
  146. package/dist/tools/builtin/impact.test.d.ts.map +1 -0
  147. package/dist/tools/builtin/impact.test.js +50 -0
  148. package/dist/tools/builtin/impact.test.js.map +1 -0
  149. package/dist/tools/builtin/indexing.d.ts +0 -1
  150. package/dist/tools/builtin/indexing.d.ts.map +1 -1
  151. package/dist/tools/builtin/indexing.js +1 -5
  152. package/dist/tools/builtin/indexing.js.map +1 -1
  153. package/dist/tools/builtin/indexing.test.d.ts +2 -0
  154. package/dist/tools/builtin/indexing.test.d.ts.map +1 -0
  155. package/dist/tools/builtin/indexing.test.js +31 -0
  156. package/dist/tools/builtin/indexing.test.js.map +1 -0
  157. package/dist/tools/builtin/lsp.test.d.ts +2 -0
  158. package/dist/tools/builtin/lsp.test.d.ts.map +1 -0
  159. package/dist/tools/builtin/lsp.test.js +34 -0
  160. package/dist/tools/builtin/lsp.test.js.map +1 -0
  161. package/dist/tools/builtin/process-watcher.d.ts.map +1 -1
  162. package/dist/tools/builtin/process-watcher.js +11 -9
  163. package/dist/tools/builtin/process-watcher.js.map +1 -1
  164. package/dist/tools/builtin/process-watcher.test.d.ts +2 -0
  165. package/dist/tools/builtin/process-watcher.test.d.ts.map +1 -0
  166. package/dist/tools/builtin/process-watcher.test.js +53 -0
  167. package/dist/tools/builtin/process-watcher.test.js.map +1 -0
  168. package/dist/tools/builtin/project-config.js +3 -3
  169. package/dist/tools/builtin/project-config.js.map +1 -1
  170. package/dist/tools/builtin/project-config.test.d.ts +2 -0
  171. package/dist/tools/builtin/project-config.test.d.ts.map +1 -0
  172. package/dist/tools/builtin/project-config.test.js +81 -0
  173. package/dist/tools/builtin/project-config.test.js.map +1 -0
  174. package/dist/tools/builtin/screenshot.d.ts.map +1 -1
  175. package/dist/tools/builtin/screenshot.js +18 -12
  176. package/dist/tools/builtin/screenshot.js.map +1 -1
  177. package/dist/tools/builtin/terminal.d.ts +9 -0
  178. package/dist/tools/builtin/terminal.d.ts.map +1 -1
  179. package/dist/tools/builtin/terminal.js +74 -16
  180. package/dist/tools/builtin/terminal.js.map +1 -1
  181. package/dist/tools/builtin/terminal.test.d.ts +2 -0
  182. package/dist/tools/builtin/terminal.test.d.ts.map +1 -0
  183. package/dist/tools/builtin/terminal.test.js +161 -0
  184. package/dist/tools/builtin/terminal.test.js.map +1 -0
  185. package/dist/tools/builtin/todo.d.ts.map +1 -1
  186. package/dist/tools/builtin/todo.js +7 -5
  187. package/dist/tools/builtin/todo.js.map +1 -1
  188. package/dist/tools/builtin/todo.test.d.ts +2 -0
  189. package/dist/tools/builtin/todo.test.d.ts.map +1 -0
  190. package/dist/tools/builtin/todo.test.js +66 -0
  191. package/dist/tools/builtin/todo.test.js.map +1 -0
  192. package/dist/tools/builtin/web.test.d.ts +2 -0
  193. package/dist/tools/builtin/web.test.d.ts.map +1 -0
  194. package/dist/tools/builtin/web.test.js +78 -0
  195. package/dist/tools/builtin/web.test.js.map +1 -0
  196. package/dist/tools/executor.test.d.ts +2 -0
  197. package/dist/tools/executor.test.d.ts.map +1 -0
  198. package/dist/tools/executor.test.js +79 -0
  199. package/dist/tools/executor.test.js.map +1 -0
  200. package/dist/tools/mcp/http.test.d.ts +2 -0
  201. package/dist/tools/mcp/http.test.d.ts.map +1 -0
  202. package/dist/tools/mcp/http.test.js +128 -0
  203. package/dist/tools/mcp/http.test.js.map +1 -0
  204. package/dist/tools/mcp/registry.d.ts.map +1 -1
  205. package/dist/tools/mcp/registry.js +1 -6
  206. package/dist/tools/mcp/registry.js.map +1 -1
  207. package/dist/tools/mcp/registry.test.d.ts +2 -0
  208. package/dist/tools/mcp/registry.test.d.ts.map +1 -0
  209. package/dist/tools/mcp/registry.test.js +18 -0
  210. package/dist/tools/mcp/registry.test.js.map +1 -0
  211. package/dist/tools/mcp/stdio.d.ts.map +1 -1
  212. package/dist/tools/mcp/stdio.js +4 -1
  213. package/dist/tools/mcp/stdio.js.map +1 -1
  214. package/dist/tools/mcp/stdio.test.d.ts +2 -0
  215. package/dist/tools/mcp/stdio.test.d.ts.map +1 -0
  216. package/dist/tools/mcp/stdio.test.js +121 -0
  217. package/dist/tools/mcp/stdio.test.js.map +1 -0
  218. package/dist/update-check.d.ts +2 -0
  219. package/dist/update-check.d.ts.map +1 -0
  220. package/dist/update-check.js +48 -0
  221. package/dist/update-check.js.map +1 -0
  222. package/package.json +11 -1
  223. package/dist/manual-test.d.ts +0 -2
  224. package/dist/manual-test.d.ts.map +0 -1
  225. package/dist/manual-test.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { EventEmitter } from 'events';
3
+ vi.mock('child_process', () => ({
4
+ spawn: vi.fn(),
5
+ }));
6
+ import { spawn } from 'child_process';
7
+ import { StdioTransport } from './stdio.js';
8
+ function makeMockProcess() {
9
+ const stdout = new EventEmitter();
10
+ const stderr = new EventEmitter();
11
+ const proc = new EventEmitter();
12
+ proc.stdout = stdout;
13
+ proc.stderr = stderr;
14
+ proc.stdin = { write: vi.fn(), end: vi.fn(), writable: true };
15
+ proc.kill = vi.fn();
16
+ proc.pid = 9999;
17
+ return proc;
18
+ }
19
+ function makeConfig(overrides = {}) {
20
+ return {
21
+ name: 'test-server',
22
+ transport: 'stdio',
23
+ command: 'node',
24
+ args: ['server.js'],
25
+ enabled: true,
26
+ ...overrides,
27
+ };
28
+ }
29
+ function emit(proc, data) {
30
+ proc.stdout.emit('data', Buffer.from(data));
31
+ }
32
+ /** Attach the internal stdout data handler that connect() would register */
33
+ function attachStdoutHandler(transport, mockProc) {
34
+ mockProc.stdout?.on('data', (data) => {
35
+ transport.buffer += data.toString();
36
+ transport.processBuffer();
37
+ });
38
+ }
39
+ /** Full connect handshake helper */
40
+ async function connectTransport(transport, mockProc) {
41
+ const connectPromise = transport.connect();
42
+ await new Promise(r => setTimeout(r, 20));
43
+ emit(mockProc, JSON.stringify({
44
+ jsonrpc: '2.0', id: 1, result: { protocolVersion: '2024-11-05', capabilities: {} },
45
+ }) + '\n');
46
+ await new Promise(r => setTimeout(r, 20));
47
+ emit(mockProc, JSON.stringify({
48
+ jsonrpc: '2.0', id: 2, result: { tools: [] },
49
+ }) + '\n');
50
+ await connectPromise;
51
+ }
52
+ beforeEach(() => {
53
+ vi.clearAllMocks();
54
+ });
55
+ describe('StdioTransport', () => {
56
+ it('rejects command with shell metacharacters', async () => {
57
+ const transport = new StdioTransport(makeConfig({ command: 'node; rm -rf /' }));
58
+ await expect(transport.connect()).rejects.toThrow('shell metacharacters');
59
+ expect(spawn).not.toHaveBeenCalled();
60
+ });
61
+ it('throws if no command is configured', async () => {
62
+ const transport = new StdioTransport(makeConfig({ command: undefined }));
63
+ await expect(transport.connect()).rejects.toThrow('requires command');
64
+ });
65
+ it('connects and initializes successfully', async () => {
66
+ const mockProc = makeMockProcess();
67
+ spawn.mockReturnValue(mockProc);
68
+ const transport = new StdioTransport(makeConfig());
69
+ await connectTransport(transport, mockProc);
70
+ expect(spawn).toHaveBeenCalledWith('node', ['server.js'], expect.any(Object));
71
+ expect(mockProc.stdin.write).toHaveBeenCalled();
72
+ });
73
+ it('sendAndWait resolves with matching response', async () => {
74
+ const mockProc = makeMockProcess();
75
+ spawn.mockReturnValue(mockProc);
76
+ const transport = new StdioTransport(makeConfig());
77
+ transport.process = mockProc;
78
+ attachStdoutHandler(transport, mockProc);
79
+ const resultPromise = transport.sendAndWait({ jsonrpc: '2.0', method: 'ping' });
80
+ await new Promise(r => setTimeout(r, 20));
81
+ emit(mockProc, JSON.stringify({
82
+ jsonrpc: '2.0', id: 1, result: { data: 'ok' },
83
+ }) + '\n');
84
+ expect(await resultPromise).toMatchObject({ result: { data: 'ok' } });
85
+ });
86
+ it('sendAndWait rejects on timeout', async () => {
87
+ vi.useFakeTimers();
88
+ const mockProc = makeMockProcess();
89
+ spawn.mockReturnValue(mockProc);
90
+ const transport = new StdioTransport(makeConfig());
91
+ transport.process = mockProc;
92
+ attachStdoutHandler(transport, mockProc);
93
+ const resultPromise = transport.sendAndWait({ method: 'slow' });
94
+ vi.advanceTimersByTime(30000);
95
+ await expect(resultPromise).rejects.toThrow('timeout');
96
+ vi.useRealTimers();
97
+ });
98
+ it('callTool throws on error response', async () => {
99
+ const mockProc = makeMockProcess();
100
+ spawn.mockReturnValue(mockProc);
101
+ const transport = new StdioTransport(makeConfig());
102
+ transport.process = mockProc;
103
+ attachStdoutHandler(transport, mockProc);
104
+ const resultPromise = transport.callTool('fail', {});
105
+ await new Promise(r => setTimeout(r, 20));
106
+ emit(mockProc, JSON.stringify({
107
+ jsonrpc: '2.0', id: 1, error: { message: 'oops' },
108
+ }) + '\n');
109
+ await expect(resultPromise).rejects.toThrow('oops');
110
+ });
111
+ it('disconnect kills process', async () => {
112
+ const mockProc = makeMockProcess();
113
+ spawn.mockReturnValue(mockProc);
114
+ const transport = new StdioTransport(makeConfig());
115
+ transport.process = mockProc;
116
+ await transport.disconnect();
117
+ expect(mockProc.kill).toHaveBeenCalled();
118
+ expect(transport.process).toBeNull();
119
+ });
120
+ });
121
+ //# sourceMappingURL=stdio.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.test.js","sourceRoot":"","sources":["../../../src/tools/mcp/stdio.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;CACf,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,YAAY,EAAS,CAAC;IACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,YAAsC,EAAE;IAC1D,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,OAAO,EAAE,IAAI;QACb,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAS,EAAE,IAAY;IACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,4EAA4E;AAC5E,SAAS,mBAAmB,CAAC,SAAyB,EAAE,QAAa;IACnE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QAC1C,SAAiB,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C,SAAiB,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oCAAoC;AACpC,KAAK,UAAU,gBAAgB,CAAC,SAAyB,EAAE,QAAa;IACtE,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;KACnF,CAAC,GAAG,IAAI,CAAC,CAAC;IACX,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC7C,CAAC,GAAG,IAAI,CAAC,CAAC;IACX,MAAM,cAAc,CAAC;AACvB,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,SAAgB,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,KAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,KAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QAElD,SAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC;QACtC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC9C,CAAC,GAAG,IAAI,CAAC,CAAC;QAEX,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,KAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QAElD,SAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC;QACtC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE9B,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,KAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QAElD,SAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC;QACtC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAClD,CAAC,GAAG,IAAI,CAAC,CAAC;QAEX,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,KAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,SAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC;QAEtC,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAE,SAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function checkForUpdates(version: string, cachePath: string): Promise<void>;
2
+ //# sourceMappingURL=update-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAoBA,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF"}
@@ -0,0 +1,48 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import pc from 'picocolors';
4
+ function parseVersion(v) {
5
+ return v.replace(/^v/, '').split('.').map(Number);
6
+ }
7
+ function isNewerVersion(latest, current) {
8
+ const l = parseVersion(latest);
9
+ const c = parseVersion(current);
10
+ for (let i = 0; i < Math.max(l.length, c.length); i++) {
11
+ const lv = l[i] || 0;
12
+ const cv = c[i] || 0;
13
+ if (lv > cv)
14
+ return true;
15
+ if (lv < cv)
16
+ return false;
17
+ }
18
+ return false;
19
+ }
20
+ export async function checkForUpdates(version, cachePath) {
21
+ try {
22
+ if (fs.existsSync(cachePath)) {
23
+ const cached = JSON.parse(fs.readFileSync(cachePath, 'utf8'));
24
+ if (Date.now() - cached.timestamp < 86_400_000) {
25
+ if (cached.latest && isNewerVersion(cached.latest, version)) {
26
+ console.log(pc.cyan(`\n Upgrade available: ${pc.bold(cached.latest)} (you have ${version})`));
27
+ console.log(pc.dim(` Run ${pc.cyan('npm update -g daedalus-cli')} to upgrade`));
28
+ }
29
+ return;
30
+ }
31
+ }
32
+ const res = await fetch('https://registry.npmjs.org/daedalus-cli/latest');
33
+ if (!res.ok)
34
+ return;
35
+ const data = await res.json();
36
+ const latest = data.version;
37
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
38
+ fs.writeFileSync(cachePath, JSON.stringify({ latest, timestamp: Date.now() }), 'utf8');
39
+ if (isNewerVersion(latest, version)) {
40
+ console.log(pc.cyan(`\n Upgrade available: ${pc.bold(latest)} (you have ${version})`));
41
+ console.log(pc.dim(` Run ${pc.cyan('npm update -g daedalus-cli')} to upgrade`));
42
+ }
43
+ }
44
+ catch {
45
+ // Network failure, stale cache, etc. — silently ignore
46
+ }
47
+ }
48
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daedalus-cli",
3
- "version": "0.5.25",
3
+ "version": "1.0.1",
4
4
  "description": "Local-first AI coding CLI with embedded model router, multi-agent orchestration, and codebase indexing",
5
5
  "type": "module",
6
6
  "bin": {
@@ -58,12 +58,22 @@
58
58
  "zod": "^3.23.8"
59
59
  },
60
60
  "devDependencies": {
61
+ "@eslint/js": "^10.0.1",
62
+ "@semantic-release/changelog": "^6.0.3",
63
+ "@semantic-release/git": "^10.0.1",
64
+ "@semantic-release/github": "^11.0.6",
65
+ "@semantic-release/npm": "^12.0.2",
61
66
  "@types/better-sqlite3": "^7.6.13",
62
67
  "@types/diff": "^6.0.0",
63
68
  "@types/node": "^22.15.3",
69
+ "conventional-changelog-conventionalcommits": "^8.0.0",
64
70
  "esbuild": "^0.24.0",
71
+ "eslint": "^10.5.0",
72
+ "globals": "^16.5.0",
73
+ "semantic-release": "^25.0.5",
65
74
  "tsx": "^4.19.4",
66
75
  "typescript": "^5.8.3",
76
+ "typescript-eslint": "^8.61.1",
67
77
  "vitest": "^2.1.8"
68
78
  }
69
79
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=manual-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-test.d.ts","sourceRoot":"","sources":["../src/manual-test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-test.js","sourceRoot":"","sources":["../src/manual-test.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG;;;;;;;;;QASb,CAAC;IAEP,MAAM,UAAU,GAAG;;;;;;;;;QASb,CAAC;IAEP,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,QAAQ,EAAE,eAAe;QACzB,UAAU;QACV,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;AACtE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}