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
package/AGENTS.md CHANGED
@@ -25,8 +25,18 @@
25
25
 
26
26
  ## Testing
27
27
  - Framework: vitest
28
- - Run: `npm test` (vitest run)
29
- - No tests exist yet — add them under `src/` co-located as `*.test.ts`
28
+ - Run: `npm test` (vitest run, 270+ tests across 32 files)
29
+ - Tests co-located as `*.test.ts` under `src/`
30
+
31
+ ## Lint
32
+ - Framework: eslint v10 (flat config)
33
+ - Run: `npm run lint` (eslint src --ext .ts)
34
+
35
+ ## CI/CD
36
+ - **CI** (`.github/workflows/ci.yml`): on PR → lint (ubuntu) + test (win/ubuntu/macos)
37
+ - **Release** (`.github/workflows/release.yml`): on push to `main` → `npx semantic-release`
38
+ - **Canary** (`.github/workflows/canary.yml`): manual dispatch → publish with `--tag canary`
39
+ - Requires `NPM_TOKEN` and `GITHUB_TOKEN` GitHub secrets
30
40
 
31
41
  ## important
32
42
  - never lint before asking
package/CHANGELOG.md CHANGED
@@ -1,3 +1,34 @@
1
+ ## [1.0.1](https://github.com/bgill55/daedalus/compare/v1.0.0...v1.0.1) (2026-06-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * address code quality issues from audit ([2638587](https://github.com/bgill55/daedalus/commit/2638587efafb5258f0c156116c0f8998b49b8435))
7
+
8
+ # 1.0.0 (2026-06-20)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * stdin leak in approval gate — use rl.question instead of raw mode ([3fa5c3b](https://github.com/bgill55/daedalus/commit/3fa5c3b3b93e862107469cc914e1c6fb29381a1a))
14
+ * yield every file in indexer to prevent keyboard lag (was every 10 files) ([761d99f](https://github.com/bgill55/daedalus/commit/761d99fd2ad109b82eb76b585610dd16c762f52f))
15
+
16
+
17
+ ### Features
18
+
19
+ * automatic update checker on startup ([2c858c3](https://github.com/bgill55/daedalus/commit/2c858c37fe8084463150b2de65056e4062d8f2c9))
20
+ * implement autonomous debugging loops ([5703507](https://github.com/bgill55/daedalus/commit/57035077430a1ef5bfed8f1fdec06553fbca6bb0))
21
+ * implement branch and PR commands ([faa2107](https://github.com/bgill55/daedalus/commit/faa2107535334ba4853f9b25d20063b96023d1da))
22
+ * implement interactive chunk-level diff staging (Sprint 5) ([746486f](https://github.com/bgill55/daedalus/commit/746486fa82d7337915267a8e3cc392184451cd54))
23
+ * implement interactive TUI file selector ([c2c6ba4](https://github.com/bgill55/daedalus/commit/c2c6ba488a7df33f9b1ea371d0c4af217eedaba6))
24
+ * implement multi-model ensemble drafting pipeline (Sprint 6) ([5690d31](https://github.com/bgill55/daedalus/commit/5690d319d494be5f377e4734fddf129d8d996d6c))
25
+ * implement token budget meter and pruning ([b05418e](https://github.com/bgill55/daedalus/commit/b05418ec399c94afae0fb1893c37dffed2bc668f))
26
+ * memory that grows with you — profile system, auto-fact extraction, throttled indexer ([f9b8e9f](https://github.com/bgill55/daedalus/commit/f9b8e9f16393264ef208d842bb691d325e756f91))
27
+ * **patch:** fuzzy whitespace matching, syntax guardrails, and context-aware hints ([106d675](https://github.com/bgill55/daedalus/commit/106d675321dadd1279cf4140147804db64f3e208))
28
+ * **power-tools:** LSP diagnostics/hover/rename, screenshot+vision, impact analysis, process watcher, scratchpad eval ([d645246](https://github.com/bgill55/daedalus/commit/d64524683728c37e2cb490f782593e6fc95a3b01))
29
+ * **trust:** write-without-read guardrail, circuit breaker, import/export validation, auto-test loop, large-rewrite annotation ([7976ffe](https://github.com/bgill55/daedalus/commit/7976ffe67e40f73646175a217a268cfbd306ccc1))
30
+ * v0.5.0 — security audit fixes and personality ([ce6aedd](https://github.com/bgill55/daedalus/commit/ce6aedd87e1c32d8f0dd35c6cddfcd2475fa34a0))
31
+
1
32
  # Changelog
2
33
 
3
34
  All notable changes to this project will be documented in this file.
@@ -7,6 +38,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
38
 
8
39
  ## [Unreleased]
9
40
 
41
+ ### Added
42
+ - **PowerShell & custom shell preference support in terminal execution** — configure terminal's preferred shell via environment variables (`DAEDALUS_SHELL`, `SHELL`) or config file setting (`tools.shell`) with automatically matched runtime execution arguments for bash, cmd, and PowerShell/pwsh.
43
+ - **CLI modular refactoring** — decoupled the monolithic entry point `src/index.ts` into isolated modules: `src/banner.ts`, `src/clipboard.ts`, `src/commands.ts`, `src/formatting.ts`, `src/model.ts`, `src/repl.ts`, and `src/update-check.ts` for clean code organization.
44
+ - **CLI Command Registry & Router pattern** — refactored command dispatching out of the main REPL loop into a centralized registry containing all 34 commands. Tab-completion list is now dynamically built from registered commands and aliases.
45
+ - **Cleaned TypeScript build compilation** — fixed all strict type safety and import issues across commands, models, project configs, and sessions, resulting in zero TS compiler errors on `tsc --noEmit`.
46
+ - **Additional test coverage** — added new test suites for preferred shell detection, MCP stdio/http transports, and CLI loops.
47
+ - **CI/CD pipeline** — lint on ubuntu + test on win/ubuntu/macos runs on every PR; push to main triggers semantic-release (npm publish + GitHub release); manual canary release workflow with `--tag canary`
48
+ - **ESLint v10 flat config** — typescript-eslint integration, pragmatically tuned to warn on pre-existing issues and error on new ones
49
+ - **`DAEDALUS_PROFILE_PATH` env var** — allows overriding profile path without mocking `os.homedir()`
50
+
51
+ ### Fixed
52
+ - **Orchestrator error handling** — `run()` now catches errors and returns a graceful fallback message instead of crashing
53
+
10
54
  ## [0.5.24] - 2026-06-19
11
55
 
12
56
  ### Added
package/CONTRIBUTING.md CHANGED
@@ -130,8 +130,9 @@ test(session): add SQLite CRUD tests
130
130
  1. **Small PRs are better** — keep each PR focused on one concern
131
131
  2. **Update the CHANGELOG** — add your change under the `[Unreleased]` section
132
132
  3. **Include tests** — new features should include tests; bug fixes should add a regression test
133
- 4. **Pass CI** — ensure all checks pass (type check, lint, tests)
134
- 5. **Request review** — tag a maintainer or mention `@bgill55`
133
+ 4. **Pass CI** — CI runs `npm run lint` (ubuntu) and `npm test` (win/ubuntu/macos). Ensure all pass before requesting review
134
+ 5. **Auto-release on merge** — when a PR merges to `main`, semantic-release publishes a new version to npm and creates a GitHub release automatically. The version bump is determined by commit messages (conventional commits)
135
+ 6. **Request review** — tag a maintainer or mention `@bgill55`
135
136
 
136
137
  ### PR Title Format
137
138
 
package/README.md CHANGED
@@ -1,285 +1,160 @@
1
1
  # Daedalus
2
2
 
3
- <img width="1024" height="1024" alt="daedalus_emblem_1781855172596" src="https://github.com/user-attachments/assets/a5d4b394-3c2c-427e-b877-6e49f77467fc" />
3
+ <img width="256" alt="daedalus_emblem" src="https://github.com/user-attachments/assets/a5d4b394-3c2c-427e-b877-6e49f77467fc" />
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/daedalus-cli?color=blue)](https://www.npmjs.com/package/daedalus-cli)
6
+ [![CI](https://github.com/bgill55/daedalus/actions/workflows/ci.yml/badge.svg)](https://github.com/bgill55/daedalus/actions/workflows/ci.yml)
7
+ [![License](https://img.shields.io/github/license/bgill55/daedalus?color=blue)](LICENSE)
8
+ [![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)
5
9
 
6
- **Local-first coding CLI with an embedded model router, multi-agent orchestration, and codebase indexing.**
10
+ **Local-first terminal-based AI coding assistant.**
7
11
 
8
- Daedalus is a standalone terminal-based AI coding assistant that runs entirely on your machine. It connects to local LLM servers (LM Studio, Ollama, llama.cpp, vLLM) or remote providers (OpenAI, Groq, OpenRouter, Anthropic), routes requests intelligently, and gives your AI agent access to your file system, terminal, git, web search, and codebase indexing — all from your command line.
12
+ Daedalus connects to local LLM servers (LM Studio, Ollama, llama.cpp, vLLM) or remote providers (OpenAI, Groq, OpenRouter, Anthropic), routes requests across models, and gives your AI agent access to your file system, terminal, git, web search, and codebase indexing.
9
13
 
10
14
  ```text
11
- ╭─ You ───────────────────────────────────────────────╮
12
- │ refactor the auth middleware to use async/await
13
- ╰────────────────────────────────────────────────────────╯
14
-
15
- ╭─ Daedalus ───────────────────────────────────────────╮
16
- │ Let me look at the current auth middleware...
17
- │ I'll refactor it to use async/await pattern.
18
- ╰────────────────────────────────────────────────────────╯ ~132t · 3.2s
15
+ ╭─ You ───────────────────────────────────────────────────╮
16
+ │ refactor the auth middleware to use async/await
17
+ ╰──────────────────────────────────────────────────────────╯
18
+
19
+ ╭─ Daedalus ───────────────────────────────────────────────╮
20
+ │ Let me look at the current auth middleware...
21
+ │ I'll refactor it to use async/await pattern.
22
+ ╰──────────────────────────────────────────────────────────╯ ~132t · 3.2s
19
23
  ```
20
24
 
21
25
  ---
22
26
 
23
- ## Features
24
-
25
- - **Local-first** — Works with local LLMs (LM Studio, Ollama, llama.cpp, vLLM) or remote APIs
26
- - **Embedded model router** — Priority, round-robin, or fastest-response routing across multiple models; displays active model in response metadata
27
- - **Multi-agent orchestration** — Spawns sub-agents (planner, coder, reviewer, debugger, researcher) for complex tasks
28
- - **Codebase indexing** — FTS5-powered symbol search, definitions, and call-graph references (TS/JS, Python, Go, Rust)
29
- - **Resilient file tools** — Read, write, patch with interactive diff UI; fuzzy whitespace matching, syntax validation with auto-revert, and context-aware patch hints
30
- - **Trust layer** — Write-without-read guardrail, circuit breaker, import/export validation, auto-test loop, and large-rewrite annotation prevent hallucinated edits from reaching disk
31
- - **Terminal access** — Cross-platform shell execution (bash/cmd) with timeout and abort
32
- - **Git integration** — Status, diff, stage-all-and-commit, undo last patch
33
- - **Session management** — SQLite-backed conversation history with save/load/export
34
- - **Persistent memory** — Facts and conventions auto-inject into every turn. User profile (`/profile`) and coding style (`/style`) persist across sessions. Auto-fact extraction learns from your edits and commits.
35
- - **MCP support** — Connect Model Context Protocol servers (stdio and HTTP/SSE)
36
- - **Web tools** — DuckDuckGo search and URL fetching (no API key needed)
37
- - **Visual chat UI** — Bordered message blocks, tab completion, syntax-highlighted code blocks, inline markdown rendering
38
- - **Configurable** — Per-project settings (test commands, auto-run), full daedalus config
39
- - **Windows + Unix** — Full cross-platform support
40
-
41
- ---
42
-
43
27
  ## Quick Start
44
28
 
45
- ### Prerequisites
46
-
47
- - Node.js 20+
48
- - A local LLM server (recommended) or a remote API key
49
-
50
- ### Install
51
-
52
29
  ```bash
53
30
  npm install -g daedalus-cli
31
+ daedalus
54
32
  ```
55
33
 
56
- Or run directly from source:
34
+ On first run, Daedalus scans for local LLM servers and guides you through setup. If none are found, it prompts for a remote provider.
57
35
 
58
- ```bash
59
- git clone https://github.com/bgill55/daedalus.git
60
- cd daedalus
61
- npm install
62
- npm run build
63
- ```
36
+ From source: `git clone https://github.com/bgill55/daedalus.git && cd daedalus && npm install && npm run build`
64
37
 
65
- ### Launch
38
+ ---
66
39
 
67
- ```bash
68
- daedalus
69
- ```
40
+ ## Why Daedalus?
70
41
 
71
- On first run, Daedalus will scan for local LLM servers and guide you through setup. If none are found, it prompts you to configure a remote provider (OpenAI, Groq, OpenRouter, Anthropic, or custom).
42
+ AI assistance without:
43
+ - Sending your code to third-party servers
44
+ - Per-token pricing for every interaction
45
+ - Being locked into a single provider
46
+ - Losing conversation history between sessions
72
47
 
73
48
  ---
74
49
 
75
- ## Usage
50
+ ## Features
76
51
 
77
- Once inside the REPL, type `?` or `help` for the full command reference.
52
+ ### Core
53
+ - **Local-first** — works entirely on your machine with local LLMs
54
+ - **Embedded model router** — priority, round-robin, or fastest-response routing across multiple models
55
+ - **Multi-agent orchestration** — spawns planner, coder, reviewer, debugger, and researcher sub-agents
56
+ - **Codebase indexing** — FTS5-powered symbol search, definitions, and call-graph references (TS/JS, Python, Go, Rust)
57
+ - **Session management** — SQLite-backed history with save, load, JSONL export
58
+ - **Persistent memory** — facts and coding conventions auto-inject every turn; `/profile` and `/style` persist across sessions
59
+ - **MCP support** — Model Context Protocol servers via stdio and HTTP/SSE
60
+ - **Windows + Unix** — full cross-platform support
61
+
62
+ ### Tools
63
+ - **File tools** — read, write, patch with interactive diff UI; fuzzy whitespace matching, syntax validation with auto-revert
64
+ - **Trust layer** — write-without-read guardrail, circuit breaker, import/export validation, auto-test loop, large-rewrite annotation
65
+ - **Terminal** — cross-platform shell execution (bash/cmd/powershell) with custom preference support, timeout, and abort
66
+ - **Git** — status, diff, stage-all-and-commit, undo
67
+ - **Web** — DuckDuckGo search and URL fetching (no API key needed)
68
+ - **Codebase** — index, find, definitions, references
78
69
 
79
70
  ### Commands
80
71
 
81
72
  | Command | Description |
82
73
  |---------|-------------|
83
- | `/add <file>` | Add file to active context |
84
- | `/remove <file>` | Remove file from context |
85
- | `/context` | Show active file context |
86
- | `/clear` | Clear conversation history |
87
- | `/commit [message]` | Stage all and commit changes |
88
- | `/undo` | Revert last file patch |
89
- | `/test [iterations]` | Run tests and auto-fix failures |
90
- | `/memory` | View saved project facts and conventions |
91
- | `/fact <key> = <value>` | Save a project fact |
92
- | `/convention <key> = <value>` | Save a coding convention |
93
- | `/extract` | Manually extract facts from current session |
94
- | `/profile view\|name\|bio` | View or set your user profile |
95
- | `/style <preferences>` | Set persistent coding style preferences |
96
- | `/index` | Index codebase for symbol search |
74
+ | `/orchestrate <goal>` | Run multi-agent orchestration |
75
+ | `/spawn <role> <task>` | Spawn a sub-agent |
76
+ | `/ensemble <goal>` | Multi-model ensemble drafting |
77
+ | `/debug <command>` | Run and autonomously fix errors |
97
78
  | `/find <query>` | Fuzzy-search indexed symbols |
98
- | `/refs <symbol>` | Find symbol references (callers) |
79
+ | `/refs <symbol>` | Find symbol references |
99
80
  | `/def <symbol>` | Get symbol definition |
81
+ | `/add` / `/remove` / `/context` | Manage file context |
82
+ | `/commit [msg]` | Stage all and commit |
83
+ | `/undo` | Revert last file patch |
84
+ | `/test [n]` | Run tests and auto-fix failures |
85
+ | `/profile` / `/style` | Set user profile and coding preferences |
86
+ | `/memory` / `/fact` / `/convention` | Manage project memory |
87
+ | `/branch [name]` | View or switch branches |
88
+ | `/pr [base]` | Generate PR description |
89
+ | `/session` | Manage chat sessions |
100
90
  | `/project` | View or set project config |
101
- | `/session list\|load\|new\|delete` | Manage chat sessions |
102
- | `/models` | List available models |
103
- | `/tools` | List all tools |
104
- | `/doctor` | Diagnose local server connections |
91
+ | `/prune [budget]` | View and prune message history |
92
+ | `/doctor` | Diagnose server connections |
93
+ | `/index` | Index codebase |
105
94
  | `/onboard` | Re-run setup wizard |
106
- | `/spawn <role> <task>` | Spawn a sub-agent |
107
- | `/orchestrate <goal>` | Run multi-agent orchestration |
108
- | `/branch [name]` | View active branch or switch/create branches |
109
- | `/pr [base-branch]` | Generate Pull Request description |
110
- | `/debug <command>` | Run command and autonomously fix errors |
111
- | `/ensemble <goal>` | Run multi-model ensemble drafting pipeline |
112
- | `/prune [budget]` | View context breakdown and prune message history |
95
+ | `/models` / `/tools` | List models and tools |
113
96
  | `?` / `help` | Show command reference |
114
97
  | `exit` / `quit` | Save and quit |
115
98
 
116
- ### Tab Completion
117
-
118
- Start typing a command and press Tab — Daedalus auto-completes it:
119
-
120
- ```
121
- ⬡ › /fi[TAB]
122
- ⬡ › /find
123
- ```
99
+ Tab completion works on all commands.
124
100
 
125
101
  ---
126
102
 
127
103
  ## Configuration
128
104
 
129
- Daedalus stores its configuration at `~/.daedalus/config.json`. Key sections:
105
+ Daedalus stores config at `~/.daedalus/config.json`. Key sections:
130
106
 
131
107
  ```json
132
108
  {
133
109
  "router": {
134
110
  "strategy": "priority",
135
111
  "chain": [
136
- {
137
- "name": "local",
138
- "endpoint": "http://localhost:1234/v1",
139
- "model": "auto",
140
- "enabled": true,
141
- "priority": 1,
142
- "maxTokens": 8192
143
- }
112
+ { "name": "local", "endpoint": "http://localhost:1234/v1", "model": "auto", "enabled": true, "priority": 1 }
144
113
  ]
145
114
  },
146
- "indexing": {
147
- "enabled": true,
148
- "exclude": ["node_modules", "dist", ".git"]
149
- },
150
- "ui": {
151
- "showTokens": true
152
- }
153
- }
154
- ```
155
-
156
- ### Router Strategies
157
-
158
- - **`priority`** (default) — Picks the healthy model with lowest priority number
159
- - **`round-robin`** — Cycles through healthy models evenly
160
- - **`fastest`** — Picks the model with the lowest cached response time
161
-
162
- ### Per-Project Config
163
-
164
- Each project can have its own settings at `~/.daedalus/config/<project-hash>.json`:
165
-
166
- ```json
167
- {
168
- "testCommand": "npm test",
169
- "buildCommand": "npm run build",
170
- "lintCommand": "npm run lint",
171
- "devCommand": "npm run dev"
115
+ "indexing": { "enabled": true, "exclude": ["node_modules", "dist", ".git"] }
172
116
  }
173
117
  ```
174
118
 
175
- Configured via `/project set <key> <value>`.
119
+ Router strategies: `priority` (default), `round-robin`, `fastest`.
176
120
 
177
- ---
178
-
179
- ## Architecture
121
+ ### Shell Preference
122
+ The shell used by the terminal tool can be configured:
123
+ 1. Environment variable: `DAEDALUS_SHELL` or `SHELL`.
124
+ 2. Configuration file setting: `"tools": { "shell": "powershell" }` (supports `powershell`, `pwsh`, `cmd`, `bash`, or absolute executable paths).
180
125
 
181
- ```text
182
- src/
183
- ├── index.ts # CLI entry point, REPL, command dispatch
184
- ├── types.ts # Shared type definitions
185
- ├── highlight.ts # Syntax highlighting for code blocks
186
- ├── profile.ts # User profile (name, bio, style) persistence
187
- ├── extraction.ts # Auto-fact extraction engine
188
- ├── config/ # Configuration loading, schema, discovery
189
- │ └── index.ts
190
- ├── router/ # Model routing engine
191
- │ ├── index.ts # LocalRouter: routing, streaming, completion
192
- │ ├── types.ts # Router types
193
- │ ├── health.ts # Model health checks
194
- │ └── rate-limiter.ts # Token-bucket rate limiter
195
- ├── session/ # Session persistence
196
- │ ├── manager.ts # Session orchestration
197
- │ ├── sqlite.ts # SQLite CRUD
198
- │ ├── memory.ts # Project facts & conventions
199
- │ └── jsonl.ts # JSONL import/export
200
- ├── agents/ # Multi-agent system
201
- │ ├── agent.ts # Agent interface
202
- │ ├── roles.ts # Role definitions (coder, reviewer, etc.)
203
- │ └── orchestrator.ts # Orchestration engine
204
- ├── tools/ # Tool system
205
- │ ├── definitions.ts # 16 built-in tool definitions
206
- │ ├── executor.ts # Tool execution engine
207
- │ ├── daedalus-spinner.ts # Terminal spinner
208
- │ ├── builtin/ # Built-in tool implementations
209
- │ │ ├── files.ts # File read/write/patch/search
210
- │ │ ├── terminal.ts # Shell execution
211
- │ │ ├── git.ts # Git diff/status
212
- │ │ ├── web.ts # Web search/fetch
213
- │ │ ├── todo.ts # Task management
214
- │ │ ├── delegation.ts # Sub-agent delegation
215
- │ │ ├── indexing.ts # Codebase indexing tools
216
- │ │ ├── diff-ui.ts # Interactive diff viewer
217
- │ │ └── project-config.ts
218
- │ └── mcp/ # MCP transport
219
- │ ├── registry.ts # MCP server manager
220
- │ ├── stdio.ts # stdio transport
221
- │ ├── http.ts # HTTP/SSE transport
222
- │ └── tool-executor.ts
223
- ├── indexing/ # Codebase indexing
224
- │ ├── fts.ts # FTS5 database layer
225
- │ └── indexer.ts # File crawler & language parsers
226
- └── onboarding/ # Setup wizard
227
- └── wizard.ts
228
- ```
126
+ Per-project config at `~/.daedalus/config/<project-hash>.json` — set via `/project set <key> <value>`.
229
127
 
230
128
  ---
231
129
 
232
130
  ## Development
233
131
 
234
132
  ```bash
235
- # Run in dev mode (hot reload)
236
- npm run dev
237
-
238
- # Run directly
239
- npm start
240
-
241
- # Build
242
- npm run build
243
-
244
- # Type check
245
- npx tsc --noEmit
246
-
247
- # Test
248
- npm test
249
-
250
- # Lint
251
- npm run lint
133
+ npm run dev # hot-reload
134
+ npm run build # compile TypeScript
135
+ npm test # vitest (270+ tests)
136
+ npm run lint # eslint (flat config)
137
+ npx tsc --noEmit # type check
252
138
  ```
253
139
 
254
- ---
255
-
256
- ## Why Daedalus?
257
-
258
- Daedalus is built for developers who want AI assistance without:
259
- - Sending their code to third-party servers
260
- - Paying per-token for every interaction
261
- - Being locked into a single provider
262
- - Losing their conversation history between sessions
263
- - Having limited tool access
140
+ ### Architecture
264
141
 
265
- It's for local-first, private, customizable AI coding — with memory that grows with you.
142
+ ```
143
+ src/
144
+ ├── index.ts CLI entry, REPL, command dispatch
145
+ ├── config/ Zod-schema validated config
146
+ ├── router/ Model routing, health checks, rate limiter
147
+ ├── session/ SQLite sessions, project memory, JSONL export
148
+ ├── agents/ Multi-agent orchestration (planner, coder, et al.)
149
+ ├── tools/ 16 built-in tools + MCP transport
150
+ ├── indexing/ FTS5 codebase indexing
151
+ └── onboarding/ Setup wizard
152
+ ```
266
153
 
267
154
  ---
268
155
 
269
156
  ## Contributing
270
157
 
271
- Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for our contribution guidelines, coding standards, and pull request process.
272
-
273
- This project is governed by a [Code of Conduct](CODE_OF_CONDUCT.md). Please report any unacceptable behavior.
274
-
275
- ## Changelog
276
-
277
- See [CHANGELOG.md](CHANGELOG.md) for the project history.
278
-
279
- ## Security
280
-
281
- Report security vulnerabilities privately to bgill55_dev@voxvivid.com — see [SECURITY.md](SECURITY.md) for details.
282
-
283
- ## License
158
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines, coding standards, and the PR process. Governed by the [Code of Conduct](CODE_OF_CONDUCT.md).
284
159
 
285
- MIT
160
+ [CHANGELOG.md](CHANGELOG.md) | [SECURITY.md](SECURITY.md) | MIT License
@@ -16,7 +16,7 @@ async function executeAgentRole(roleName, modelName, goal, context, router, tool
16
16
  while (turns < maxTurns) {
17
17
  const completion = await router.chat.completions.create({
18
18
  model: modelName,
19
- messages: messages,
19
+ messages,
20
20
  temperature: role.temperature ?? 0.1,
21
21
  tools: tools.length > 0 ? tools : undefined,
22
22
  tool_choice: tools.length > 0 ? 'auto' : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble.js","sourceRoot":"","sources":["../../src/agents/ensemble.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensemble.js","sourceRoot":"","sources":["../../src/agents/ensemble.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,13 @@ export class Orchestrator {
14
14
  }
15
15
  async run(goal) {
16
16
  this.results = [];
17
- // Create initial plan
18
- const plan = await this.createPlan(goal);
19
- // Execute plan by delegating to agents
20
- await this.executePlan(plan);
21
- // Synthesize results
17
+ try {
18
+ const plan = await this.createPlan(goal);
19
+ await this.executePlan(plan);
20
+ }
21
+ catch (err) {
22
+ return `Orchestration failed: ${err.message}`;
23
+ }
22
24
  return this.synthesize(goal);
23
25
  }
24
26
  async createPlan(goal) {
@@ -31,7 +33,7 @@ export class Orchestrator {
31
33
  ];
32
34
  const completion = await this.router.chat.completions.create({
33
35
  model: 'auto',
34
- messages: messages,
36
+ messages,
35
37
  temperature: plannerRole.temperature ?? 0.2,
36
38
  tools,
37
39
  tool_choice: 'auto',
@@ -58,7 +60,7 @@ export class Orchestrator {
58
60
  tools,
59
61
  tool_choice: 'none', // No more tool calls — just produce the plan text
60
62
  });
61
- return followUp.choices[0].message.content || 'No plan generated';
63
+ return (followUp.choices[0].message).content || 'No plan generated';
62
64
  }
63
65
  return assistantMessage.content || 'No plan generated';
64
66
  }
@@ -108,7 +110,7 @@ export class Orchestrator {
108
110
  role: task.role,
109
111
  goal: task.goal,
110
112
  summary: result,
111
- success: !result.includes('Error') && !result.includes('Failed'),
113
+ success: !/^(Error|Failed)/.test(result.trim()),
112
114
  });
113
115
  console.log(`[OK] ${role.name} completed`);
114
116
  }
@@ -122,7 +124,7 @@ export class Orchestrator {
122
124
  while (turns < maxTurns) {
123
125
  const completion = await this.router.chat.completions.create({
124
126
  model: 'auto',
125
- messages: messages,
127
+ messages,
126
128
  temperature: role.temperature ?? 0.1,
127
129
  tools,
128
130
  tool_choice: 'auto',
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAC;AAiBzE,MAAM,OAAO,YAAY;IACf,MAAM,CAAc;IACpB,QAAQ,CAAgB;IACxB,WAAW,CAAc;IACzB,OAAO,GAAkB,EAAE,CAAC;IAEpC,YAAY,MAAmB,EAAE,QAAuB,EAAE,WAAwB;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,sBAAsB;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE7B,qBAAqB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY;QACnC,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE;SAC5N,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,QAAe;YACzB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,GAAG;YAC3C,KAAK;YACL,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAc,CAAC;QAC9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC;QAE9C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,8CAA8C;YAC9C,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEhC,iEAAiE;YACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,UAAU;iBAChC,CAAC,CAAC;YACL,CAAC;YAED,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,MAAM;gBACb,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,GAAG;gBAC3C,KAAK;gBACL,WAAW,EAAE,MAAM,EAAE,kDAAkD;aACxE,CAAC,CAAC;YACH,OAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAe,CAAC,OAAO,IAAI,mBAAmB,CAAC;QAC7E,CAAC;QAED,OAAO,gBAAgB,CAAC,OAAO,IAAI,mBAAmB,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAExD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAC/G,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;iBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,WAAW,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,6EAA6E;QAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5F,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAoB;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACjE,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAe,EACf,IAAY,EACZ,OAAe,EACf,KAAY;QAEZ,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,aAAa,IAAI,EAAE,EAAE;SACzD,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAErC,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC3D,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,QAAe;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG;gBACpC,KAAK;gBACL,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,OAAc,CAAC,CAAC;YAE9B,IAAK,OAAe,CAAC,UAAU,IAAK,OAAe,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACnC,OAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;oBAC5C,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;iBACvE,CAAC,CAAC,EACH,IAAI,CAAC,WAAW,CACjB,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,YAAY,EAAE,MAAM,CAAC,UAAU;qBACzB,CAAC,CAAC;gBACZ,CAAC;gBACD,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YAED,gCAAgC;YAChC,OAAQ,OAAe,CAAC,OAAO,IAAI,kCAAkC,CAAC;QACxE,CAAC;QAED,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,SAAgB;QACnD,MAAM,EAAE,GAAe,SAAS,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;YACpD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE;SAC7E,CAAC,CAAC,CAAC;QACJ,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,MAAM,GAAG,8BAA8B,IAAI,MAAM,CAAC;QAEtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,MAAM,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;YACzE,MAAM,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAC;AAiBzE,MAAM,OAAO,YAAY;IACf,MAAM,CAAc;IACpB,QAAQ,CAAgB;IACxB,WAAW,CAAc;IACzB,OAAO,GAAkB,EAAE,CAAC;IAEpC,YAAY,MAAmB,EAAE,QAAuB,EAAE,WAAwB;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY;QACnC,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE;SAC5N,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,MAAM;YACb,QAAQ;YACR,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,GAAG;YAC3C,KAAK;YACL,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvD,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC;QAE9C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,8CAA8C;YAC9C,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEhC,iEAAiE;YACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,UAAU;iBAChC,CAAC,CAAC;YACL,CAAC;YAED,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,MAAM;gBACb,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,GAAG;gBAC3C,KAAK;gBACL,WAAW,EAAE,MAAM,EAAE,kDAAkD;aACxE,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,mBAAmB,CAAC;QACtE,CAAC;QAED,OAAO,gBAAgB,CAAC,OAAO,IAAI,mBAAmB,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAExD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAC/G,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;iBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,WAAW,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,6EAA6E;QAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5F,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAoB;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAe,EACf,IAAY,EACZ,OAAe,EACf,KAAY;QAEZ,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,aAAa,IAAI,EAAE,EAAE;SACzD,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAErC,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC3D,KAAK,EAAE,MAAM;gBACb,QAAQ;gBACR,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG;gBACpC,KAAK;gBACL,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvB,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;iBACvE,CAAC,CAAC,EACH,IAAI,CAAC,WAAW,CACjB,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,YAAY,EAAE,MAAM,CAAC,UAAU;qBAChC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YAED,gCAAgC;YAChC,OAAO,OAAO,CAAC,OAAO,IAAI,kCAAkC,CAAC;QAC/D,CAAC;QAED,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,SAAgB;QACnD,MAAM,EAAE,GAAe,SAAS,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;YACpD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE;SAC7E,CAAC,CAAC,CAAC;QACJ,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,MAAM,GAAG,8BAA8B,IAAI,MAAM,CAAC;QAEtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,MAAM,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;YACzE,MAAM,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=orchestrator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.test.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { Orchestrator } from './orchestrator.js';
3
+ describe('Orchestrator', () => {
4
+ let mockRouter;
5
+ let toolContext;
6
+ let messages;
7
+ beforeEach(() => {
8
+ const chatMock = vi.fn().mockRejectedValue(new Error('API failure'));
9
+ mockRouter = {
10
+ chat: {
11
+ completions: {
12
+ create: chatMock,
13
+ },
14
+ },
15
+ chatStream: vi.fn().mockRejectedValue(new Error('API failure')),
16
+ chatCompletion: chatMock,
17
+ getModels: vi.fn().mockReturnValue([{ name: 'test', model: 'test' }]),
18
+ };
19
+ toolContext = {
20
+ sessionId: 'test',
21
+ projectRoot: process.cwd(),
22
+ projectHash: 'test',
23
+ activeFiles: new Map(),
24
+ agentRole: 'coder',
25
+ abortSignal: new AbortController().signal,
26
+ };
27
+ messages = [];
28
+ });
29
+ afterEach(() => {
30
+ vi.restoreAllMocks();
31
+ });
32
+ it('creates instance with router, messages, and context', () => {
33
+ const orch = new Orchestrator(mockRouter, messages, toolContext);
34
+ expect(orch).toBeInstanceOf(Orchestrator);
35
+ });
36
+ it('run method handles errors gracefully', async () => {
37
+ const orch = new Orchestrator(mockRouter, messages, toolContext);
38
+ const result = await orch.run('do something');
39
+ expect(result).toBeTruthy();
40
+ });
41
+ it('synthesize returns formatted output', async () => {
42
+ const orch = new Orchestrator(mockRouter, messages, toolContext);
43
+ const synth = orch.synthesize('test goal');
44
+ expect(synth).toContain('Orchestration Complete');
45
+ expect(synth).toContain('test goal');
46
+ });
47
+ });
48
+ //# sourceMappingURL=orchestrator.test.js.map