daedalus-cli 0.5.24 → 1.0.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 (160) hide show
  1. package/AGENTS.md +12 -2
  2. package/CHANGELOG.md +54 -0
  3. package/CONTRIBUTING.md +3 -2
  4. package/README.md +4 -3
  5. package/dist/agents/orchestrator.js +7 -5
  6. package/dist/agents/orchestrator.js.map +1 -1
  7. package/dist/agents/orchestrator.test.d.ts +2 -0
  8. package/dist/agents/orchestrator.test.d.ts.map +1 -0
  9. package/dist/agents/orchestrator.test.js +48 -0
  10. package/dist/agents/orchestrator.test.js.map +1 -0
  11. package/dist/agents/roles.test.d.ts +2 -0
  12. package/dist/agents/roles.test.d.ts.map +1 -0
  13. package/dist/agents/roles.test.js +108 -0
  14. package/dist/agents/roles.test.js.map +1 -0
  15. package/dist/config/index.test.d.ts +2 -0
  16. package/dist/config/index.test.d.ts.map +1 -0
  17. package/dist/config/index.test.js +220 -0
  18. package/dist/config/index.test.js.map +1 -0
  19. package/dist/extraction.test.d.ts +2 -0
  20. package/dist/extraction.test.d.ts.map +1 -0
  21. package/dist/extraction.test.js +105 -0
  22. package/dist/extraction.test.js.map +1 -0
  23. package/dist/highlight.test.d.ts +2 -0
  24. package/dist/highlight.test.d.ts.map +1 -0
  25. package/dist/highlight.test.js +56 -0
  26. package/dist/highlight.test.js.map +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +19 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/indexing/fts.test.d.ts +2 -0
  31. package/dist/indexing/fts.test.d.ts.map +1 -0
  32. package/dist/indexing/fts.test.js +104 -0
  33. package/dist/indexing/fts.test.js.map +1 -0
  34. package/dist/indexing/indexer.d.ts +21 -0
  35. package/dist/indexing/indexer.d.ts.map +1 -1
  36. package/dist/indexing/indexer.js +4 -4
  37. package/dist/indexing/indexer.js.map +1 -1
  38. package/dist/indexing/indexer.test.d.ts +2 -0
  39. package/dist/indexing/indexer.test.d.ts.map +1 -0
  40. package/dist/indexing/indexer.test.js +192 -0
  41. package/dist/indexing/indexer.test.js.map +1 -0
  42. package/dist/profile.d.ts.map +1 -1
  43. package/dist/profile.js +12 -7
  44. package/dist/profile.js.map +1 -1
  45. package/dist/profile.test.d.ts +2 -0
  46. package/dist/profile.test.d.ts.map +1 -0
  47. package/dist/profile.test.js +70 -0
  48. package/dist/profile.test.js.map +1 -0
  49. package/dist/router/health.test.d.ts +2 -0
  50. package/dist/router/health.test.d.ts.map +1 -0
  51. package/dist/router/health.test.js +87 -0
  52. package/dist/router/health.test.js.map +1 -0
  53. package/dist/router/index.test.d.ts +2 -0
  54. package/dist/router/index.test.d.ts.map +1 -0
  55. package/dist/router/index.test.js +136 -0
  56. package/dist/router/index.test.js.map +1 -0
  57. package/dist/router/rate-limiter.test.d.ts +2 -0
  58. package/dist/router/rate-limiter.test.d.ts.map +1 -0
  59. package/dist/router/rate-limiter.test.js +90 -0
  60. package/dist/router/rate-limiter.test.js.map +1 -0
  61. package/dist/session/jsonl.d.ts +0 -2
  62. package/dist/session/jsonl.d.ts.map +1 -1
  63. package/dist/session/jsonl.js +3 -7
  64. package/dist/session/jsonl.js.map +1 -1
  65. package/dist/session/jsonl.test.d.ts +2 -0
  66. package/dist/session/jsonl.test.d.ts.map +1 -0
  67. package/dist/session/jsonl.test.js +88 -0
  68. package/dist/session/jsonl.test.js.map +1 -0
  69. package/dist/session/manager.d.ts +2 -0
  70. package/dist/session/manager.d.ts.map +1 -1
  71. package/dist/session/manager.js +14 -0
  72. package/dist/session/manager.js.map +1 -1
  73. package/dist/session/manager.test.d.ts +2 -0
  74. package/dist/session/manager.test.d.ts.map +1 -0
  75. package/dist/session/manager.test.js +120 -0
  76. package/dist/session/manager.test.js.map +1 -0
  77. package/dist/session/memory.test.d.ts +2 -0
  78. package/dist/session/memory.test.d.ts.map +1 -0
  79. package/dist/session/memory.test.js +100 -0
  80. package/dist/session/memory.test.js.map +1 -0
  81. package/dist/session/sqlite.test.d.ts +2 -0
  82. package/dist/session/sqlite.test.d.ts.map +1 -0
  83. package/dist/session/sqlite.test.js +151 -0
  84. package/dist/session/sqlite.test.js.map +1 -0
  85. package/dist/tools/builtin/delegation.test.d.ts +2 -0
  86. package/dist/tools/builtin/delegation.test.d.ts.map +1 -0
  87. package/dist/tools/builtin/delegation.test.js +87 -0
  88. package/dist/tools/builtin/delegation.test.js.map +1 -0
  89. package/dist/tools/builtin/eval.d.ts +7 -0
  90. package/dist/tools/builtin/eval.d.ts.map +1 -0
  91. package/dist/tools/builtin/eval.js +92 -0
  92. package/dist/tools/builtin/eval.js.map +1 -0
  93. package/dist/tools/builtin/eval.test.d.ts +2 -0
  94. package/dist/tools/builtin/eval.test.d.ts.map +1 -0
  95. package/dist/tools/builtin/eval.test.js +24 -0
  96. package/dist/tools/builtin/eval.test.js.map +1 -0
  97. package/dist/tools/builtin/git.test.d.ts +2 -0
  98. package/dist/tools/builtin/git.test.d.ts.map +1 -0
  99. package/dist/tools/builtin/git.test.js +49 -0
  100. package/dist/tools/builtin/git.test.js.map +1 -0
  101. package/dist/tools/builtin/impact.d.ts +5 -0
  102. package/dist/tools/builtin/impact.d.ts.map +1 -0
  103. package/dist/tools/builtin/impact.js +129 -0
  104. package/dist/tools/builtin/impact.js.map +1 -0
  105. package/dist/tools/builtin/impact.test.d.ts +2 -0
  106. package/dist/tools/builtin/impact.test.d.ts.map +1 -0
  107. package/dist/tools/builtin/impact.test.js +50 -0
  108. package/dist/tools/builtin/impact.test.js.map +1 -0
  109. package/dist/tools/builtin/indexing.test.d.ts +2 -0
  110. package/dist/tools/builtin/indexing.test.d.ts.map +1 -0
  111. package/dist/tools/builtin/indexing.test.js +30 -0
  112. package/dist/tools/builtin/indexing.test.js.map +1 -0
  113. package/dist/tools/builtin/lsp.d.ts +16 -0
  114. package/dist/tools/builtin/lsp.d.ts.map +1 -0
  115. package/dist/tools/builtin/lsp.js +143 -0
  116. package/dist/tools/builtin/lsp.js.map +1 -0
  117. package/dist/tools/builtin/lsp.test.d.ts +2 -0
  118. package/dist/tools/builtin/lsp.test.d.ts.map +1 -0
  119. package/dist/tools/builtin/lsp.test.js +34 -0
  120. package/dist/tools/builtin/lsp.test.js.map +1 -0
  121. package/dist/tools/builtin/process-watcher.d.ts +14 -0
  122. package/dist/tools/builtin/process-watcher.d.ts.map +1 -0
  123. package/dist/tools/builtin/process-watcher.js +87 -0
  124. package/dist/tools/builtin/process-watcher.js.map +1 -0
  125. package/dist/tools/builtin/process-watcher.test.d.ts +2 -0
  126. package/dist/tools/builtin/process-watcher.test.d.ts.map +1 -0
  127. package/dist/tools/builtin/process-watcher.test.js +53 -0
  128. package/dist/tools/builtin/process-watcher.test.js.map +1 -0
  129. package/dist/tools/builtin/project-config.test.d.ts +2 -0
  130. package/dist/tools/builtin/project-config.test.d.ts.map +1 -0
  131. package/dist/tools/builtin/project-config.test.js +81 -0
  132. package/dist/tools/builtin/project-config.test.js.map +1 -0
  133. package/dist/tools/builtin/screenshot.d.ts +8 -0
  134. package/dist/tools/builtin/screenshot.d.ts.map +1 -0
  135. package/dist/tools/builtin/screenshot.js +76 -0
  136. package/dist/tools/builtin/screenshot.js.map +1 -0
  137. package/dist/tools/builtin/todo.test.d.ts +2 -0
  138. package/dist/tools/builtin/todo.test.d.ts.map +1 -0
  139. package/dist/tools/builtin/todo.test.js +66 -0
  140. package/dist/tools/builtin/todo.test.js.map +1 -0
  141. package/dist/tools/builtin/web.test.d.ts +2 -0
  142. package/dist/tools/builtin/web.test.d.ts.map +1 -0
  143. package/dist/tools/builtin/web.test.js +78 -0
  144. package/dist/tools/builtin/web.test.js.map +1 -0
  145. package/dist/tools/definitions.d.ts +1 -0
  146. package/dist/tools/definitions.d.ts.map +1 -1
  147. package/dist/tools/definitions.js +157 -0
  148. package/dist/tools/definitions.js.map +1 -1
  149. package/dist/tools/executor.test.d.ts +2 -0
  150. package/dist/tools/executor.test.d.ts.map +1 -0
  151. package/dist/tools/executor.test.js +79 -0
  152. package/dist/tools/executor.test.js.map +1 -0
  153. package/dist/tools/mcp/registry.test.d.ts +2 -0
  154. package/dist/tools/mcp/registry.test.d.ts.map +1 -0
  155. package/dist/tools/mcp/registry.test.js +18 -0
  156. package/dist/tools/mcp/registry.test.js.map +1 -0
  157. package/package.json +12 -1
  158. package/dist/manual-test.d.ts +0 -2
  159. package/dist/manual-test.d.ts.map +0 -1
  160. 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,27 @@
1
+ # 1.0.0 (2026-06-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * stdin leak in approval gate — use rl.question instead of raw mode ([3fa5c3b](https://github.com/bgill55/daedalus/commit/3fa5c3b3b93e862107469cc914e1c6fb29381a1a))
7
+ * yield every file in indexer to prevent keyboard lag (was every 10 files) ([761d99f](https://github.com/bgill55/daedalus/commit/761d99fd2ad109b82eb76b585610dd16c762f52f))
8
+
9
+
10
+ ### Features
11
+
12
+ * automatic update checker on startup ([2c858c3](https://github.com/bgill55/daedalus/commit/2c858c37fe8084463150b2de65056e4062d8f2c9))
13
+ * implement autonomous debugging loops ([5703507](https://github.com/bgill55/daedalus/commit/57035077430a1ef5bfed8f1fdec06553fbca6bb0))
14
+ * implement branch and PR commands ([faa2107](https://github.com/bgill55/daedalus/commit/faa2107535334ba4853f9b25d20063b96023d1da))
15
+ * implement interactive chunk-level diff staging (Sprint 5) ([746486f](https://github.com/bgill55/daedalus/commit/746486fa82d7337915267a8e3cc392184451cd54))
16
+ * implement interactive TUI file selector ([c2c6ba4](https://github.com/bgill55/daedalus/commit/c2c6ba488a7df33f9b1ea371d0c4af217eedaba6))
17
+ * implement multi-model ensemble drafting pipeline (Sprint 6) ([5690d31](https://github.com/bgill55/daedalus/commit/5690d319d494be5f377e4734fddf129d8d996d6c))
18
+ * implement token budget meter and pruning ([b05418e](https://github.com/bgill55/daedalus/commit/b05418ec399c94afae0fb1893c37dffed2bc668f))
19
+ * memory that grows with you — profile system, auto-fact extraction, throttled indexer ([f9b8e9f](https://github.com/bgill55/daedalus/commit/f9b8e9f16393264ef208d842bb691d325e756f91))
20
+ * **patch:** fuzzy whitespace matching, syntax guardrails, and context-aware hints ([106d675](https://github.com/bgill55/daedalus/commit/106d675321dadd1279cf4140147804db64f3e208))
21
+ * **power-tools:** LSP diagnostics/hover/rename, screenshot+vision, impact analysis, process watcher, scratchpad eval ([d645246](https://github.com/bgill55/daedalus/commit/d64524683728c37e2cb490f782593e6fc95a3b01))
22
+ * **trust:** write-without-read guardrail, circuit breaker, import/export validation, auto-test loop, large-rewrite annotation ([7976ffe](https://github.com/bgill55/daedalus/commit/7976ffe67e40f73646175a217a268cfbd306ccc1))
23
+ * v0.5.0 — security audit fixes and personality ([ce6aedd](https://github.com/bgill55/daedalus/commit/ce6aedd87e1c32d8f0dd35c6cddfcd2475fa34a0))
24
+
1
25
  # Changelog
2
26
 
3
27
  All notable changes to this project will be documented in this file.
@@ -7,6 +31,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
31
 
8
32
  ## [Unreleased]
9
33
 
34
+ ### Added
35
+ - **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`
36
+ - **ESLint v10 flat config** — typescript-eslint integration, pragmatically tuned to warn on pre-existing issues and error on new ones
37
+ - **`DAEDALUS_PROFILE_PATH` env var** — allows overriding profile path without mocking `os.homedir()`
38
+
39
+ ### Fixed
40
+ - **Orchestrator error handling** — `run()` now catches errors and returns a graceful fallback message instead of crashing
41
+
42
+ ## [0.5.24] - 2026-06-19
43
+
44
+ ### Added
45
+ - **Write-without-read guardrail** — `patch` and `write_file` are blocked on any existing file that has not been read this session, preventing edits based on hallucinated or stale content
46
+ - **Stale-read detection** — if a file's mtime advances after the last `read_file` call, the tool blocks and asks the model to re-read before patching
47
+ - **Circuit breaker** — after 2 consecutive failed patches on the same file, all further patch attempts are halted with a `[CIRCUIT BREAKER]` message to stop infinite retry loops
48
+ - **Import existence validation** — after every `write_file` or `patch`, local file imports and npm package references are verified against the disk and `package.json`; missing imports are reported as warnings in the tool result
49
+ - **Export consistency check** — after every write/patch, detects `export { name }` statements where `name` is not actually defined in the file
50
+ - **Auto-test loop** — after a successful write or patch, the co-located `*.test.ts` / `*.spec.ts` file (if present) is automatically run and any failures are fed back to the model as a tool result so it can self-correct
51
+ - **Large-rewrite annotation** — when more than 40% of a file's lines are replaced in a single diff, a yellow `⚠ LARGE REWRITE` banner is shown in the interactive diff header
52
+ - `sessionReadCache` and `patchFailureStreak` fields added to `ToolContext` to track per-session read state and failure streaks
53
+ - 9 new unit tests covering all six trust features (40 total)
54
+
55
+ ## [0.5.23] - 2026-06-19
56
+
57
+ ### Added
58
+ - **Fuzzy whitespace & indentation patching** — if `old_string` fails an exact match, `patch` performs a secondary whitespace-normalized search; if exactly one candidate block matches, the patch is applied automatically; multiple matches are safely rejected
59
+ - **Syntax validation guardrails** — after every `write_file` or `patch`, the affected file is syntax-checked (`.json` via `JSON.parse`, `.ts/.tsx` via `tsc --noEmit`, `.js/.mjs/.cjs` via `node --check`); if a syntax error is introduced the file is automatically reverted and the compiler error is returned to the model for self-correction
60
+ - **Context-aware patch hints** — when both exact and fuzzy matching fail, a Levenshtein sliding-window search (up to 300 lines) finds the closest matching block and returns it with the error message so the model can correct its patch immediately
61
+ - `normalizeWhitespace`, `fuzzyWhitespacePatch`, `levenshtein`, `findClosestBlock`, and `syntaxCheck` helpers in `src/tools/builtin/files.ts`
62
+ - 8 new unit tests covering fuzzy matching, hint generation, syntax validation, and JSON revert behaviour
63
+
10
64
  ## [0.5.22] - 2026-06-19
11
65
 
12
66
  ### 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
@@ -23,17 +23,18 @@ Daedalus is a standalone terminal-based AI coding assistant that runs entirely o
23
23
  ## Features
24
24
 
25
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
26
+ - **Embedded model router** — Priority, round-robin, or fastest-response routing across multiple models; displays active model in response metadata
27
27
  - **Multi-agent orchestration** — Spawns sub-agents (planner, coder, reviewer, debugger, researcher) for complex tasks
28
28
  - **Codebase indexing** — FTS5-powered symbol search, definitions, and call-graph references (TS/JS, Python, Go, Rust)
29
- - **File system tools** — Read, write, patch with interactive diff UI, search (ripgrep + native fallback)
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
30
31
  - **Terminal access** — Cross-platform shell execution (bash/cmd) with timeout and abort
31
32
  - **Git integration** — Status, diff, stage-all-and-commit, undo last patch
32
33
  - **Session management** — SQLite-backed conversation history with save/load/export
33
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.
34
35
  - **MCP support** — Connect Model Context Protocol servers (stdio and HTTP/SSE)
35
36
  - **Web tools** — DuckDuckGo search and URL fetching (no API key needed)
36
- - **Visual chat UI** — Bordered message blocks, tab completion, syntax-highlighted code blocks
37
+ - **Visual chat UI** — Bordered message blocks, tab completion, syntax-highlighted code blocks, inline markdown rendering
37
38
  - **Configurable** — Per-project settings (test commands, auto-run), full daedalus config
38
39
  - **Windows + Unix** — Full cross-platform support
39
40
 
@@ -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) {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,UAAuB,CAAC;IAC5B,IAAI,WAAwB,CAAC;IAC7B,IAAI,QAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACrE,UAAU,GAAG;YACX,IAAI,EAAE;gBACJ,WAAW,EAAE;oBACX,MAAM,EAAE,QAAQ;iBACjB;aACF;YACD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,cAAc,EAAE,QAAQ;YACxB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5C,CAAC;QAE5B,WAAW,GAAG;YACZ,SAAS,EAAE,MAAM;YACjB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,IAAI,GAAG,EAAE;YACtB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;SAC3B,CAAC;QAEjB,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,KAAK,GAAI,IAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=roles.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.test.d.ts","sourceRoot":"","sources":["../../src/agents/roles.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { getAgentRole, filterToolsForRole, AGENT_ROLES } from './roles.js';
3
+ describe('Agent roles', () => {
4
+ it('returns all defined roles', () => {
5
+ const roleNames = Object.keys(AGENT_ROLES);
6
+ expect(roleNames).toContain('orchestrator');
7
+ expect(roleNames).toContain('planner');
8
+ expect(roleNames).toContain('coder');
9
+ expect(roleNames).toContain('reviewer');
10
+ expect(roleNames).toContain('debugger');
11
+ expect(roleNames).toContain('researcher');
12
+ });
13
+ it('getAgentRole returns the correct role', () => {
14
+ const role = getAgentRole('coder');
15
+ expect(role.name).toBe('coder');
16
+ expect(role.description).toBe('Implements changes, writes/edits files, fixes bugs');
17
+ });
18
+ it('getAgentRole falls back to coder for unknown role', () => {
19
+ const role = getAgentRole('nonexistent');
20
+ expect(role.name).toBe('coder');
21
+ });
22
+ it('each role has required properties', () => {
23
+ for (const [name, role] of Object.entries(AGENT_ROLES)) {
24
+ expect(role.name).toBe(name);
25
+ expect(role.description).toBeTruthy();
26
+ expect(role.systemPrompt).toBeTruthy();
27
+ expect(Array.isArray(role.allowedTools)).toBe(true);
28
+ expect(typeof role.canDelegate).toBe('boolean');
29
+ }
30
+ });
31
+ it('only orchestrator can delegate', () => {
32
+ for (const [name, role] of Object.entries(AGENT_ROLES)) {
33
+ if (name === 'orchestrator') {
34
+ expect(role.canDelegate).toBe(true);
35
+ }
36
+ else {
37
+ expect(role.canDelegate).toBe(false);
38
+ }
39
+ }
40
+ });
41
+ it('filterToolsForRole returns only allowed tools for coder', () => {
42
+ const allTools = [
43
+ { type: 'function', function: { name: 'read_file', description: '', parameters: { type: 'object', properties: {} } } },
44
+ { type: 'function', function: { name: 'write_file', description: '', parameters: { type: 'object', properties: {} } } },
45
+ { type: 'function', function: { name: 'patch', description: '', parameters: { type: 'object', properties: {} } } },
46
+ { type: 'function', function: { name: 'search_files', description: '', parameters: { type: 'object', properties: {} } } },
47
+ { type: 'function', function: { name: 'list_files', description: '', parameters: { type: 'object', properties: {} } } },
48
+ { type: 'function', function: { name: 'terminal', description: '', parameters: { type: 'object', properties: {} } } },
49
+ { type: 'function', function: { name: 'git_diff', description: '', parameters: { type: 'object', properties: {} } } },
50
+ { type: 'function', function: { name: 'git_status', description: '', parameters: { type: 'object', properties: {} } } },
51
+ { type: 'function', function: { name: 'todo', description: '', parameters: { type: 'object', properties: {} } } },
52
+ { type: 'function', function: { name: 'web_search', description: '', parameters: { type: 'object', properties: {} } } },
53
+ { type: 'function', function: { name: 'fetch_url', description: '', parameters: { type: 'object', properties: {} } } },
54
+ ];
55
+ const filtered = filterToolsForRole(allTools, 'coder');
56
+ const names = filtered.map(t => t.function.name);
57
+ expect(names).toContain('read_file');
58
+ expect(names).toContain('write_file');
59
+ expect(names).toContain('web_search');
60
+ expect(names).toContain('fetch_url');
61
+ });
62
+ it('filterToolsForRole returns limited tools for planner', () => {
63
+ const allTools = [
64
+ { type: 'function', function: { name: 'todo', description: '', parameters: { type: 'object', properties: {} } } },
65
+ { type: 'function', function: { name: 'read_file', description: '', parameters: { type: 'object', properties: {} } } },
66
+ { type: 'function', function: { name: 'write_file', description: '', parameters: { type: 'object', properties: {} } } },
67
+ { type: 'function', function: { name: 'web_search', description: '', parameters: { type: 'object', properties: {} } } },
68
+ ];
69
+ const filtered = filterToolsForRole(allTools, 'planner');
70
+ const names = filtered.map(t => t.function.name);
71
+ expect(names).toContain('todo');
72
+ expect(names).toContain('read_file');
73
+ expect(names).not.toContain('write_file');
74
+ });
75
+ it('filterToolsForRole returns review-appropriate tools for reviewer', () => {
76
+ const allTools = [
77
+ { type: 'function', function: { name: 'read_file', description: '', parameters: { type: 'object', properties: {} } } },
78
+ { type: 'function', function: { name: 'write_file', description: '', parameters: { type: 'object', properties: {} } } },
79
+ { type: 'function', function: { name: 'patch', description: '', parameters: { type: 'object', properties: {} } } },
80
+ ];
81
+ const filtered = filterToolsForRole(allTools, 'reviewer');
82
+ const names = filtered.map(t => t.function.name);
83
+ expect(names).toContain('read_file');
84
+ expect(names).not.toContain('write_file');
85
+ expect(names).not.toContain('patch');
86
+ });
87
+ it('orchestrator has todo and delegate_task tools', () => {
88
+ const allTools = [
89
+ { type: 'function', function: { name: 'todo', description: '', parameters: { type: 'object', properties: {} } } },
90
+ { type: 'function', function: { name: 'delegate_task', description: '', parameters: { type: 'object', properties: {} } } },
91
+ { type: 'function', function: { name: 'read_file', description: '', parameters: { type: 'object', properties: {} } } },
92
+ ];
93
+ const filtered = filterToolsForRole(allTools, 'orchestrator');
94
+ const names = filtered.map(t => t.function.name);
95
+ expect(names).toContain('todo');
96
+ expect(names).toContain('delegate_task');
97
+ expect(names).toContain('read_file');
98
+ });
99
+ it('each role has a temperature within valid range', () => {
100
+ for (const role of Object.values(AGENT_ROLES)) {
101
+ if (role.temperature !== undefined) {
102
+ expect(role.temperature).toBeGreaterThanOrEqual(0);
103
+ expect(role.temperature).toBeLessThanOrEqual(2);
104
+ }
105
+ }
106
+ });
107
+ });
108
+ //# sourceMappingURL=roles.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.test.js","sourceRoot":"","sources":["../../src/agents/roles.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/config/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,220 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import os from 'os';
5
+ const TEST_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'daedalus-config-test-'));
6
+ const { ConfigSchema, RouterConfigSchema, ModelEntrySchema, loadConfig, saveConfig, resetConfig, getConfigDirPath, discoverLocalServers, } = await import('./index.js');
7
+ describe('ConfigSchema validation', () => {
8
+ it('accepts a minimal valid config', () => {
9
+ const result = ConfigSchema.safeParse({
10
+ router: {
11
+ strategy: 'priority',
12
+ chain: [{ name: 'test', endpoint: 'http://localhost:1234/v1', model: 'auto', priority: 1, enabled: true }],
13
+ },
14
+ });
15
+ expect(result.success).toBe(true);
16
+ });
17
+ it('rejects invalid router strategy', () => {
18
+ const result = ConfigSchema.safeParse({
19
+ router: {
20
+ strategy: 'invalid',
21
+ chain: [],
22
+ },
23
+ });
24
+ expect(result.success).toBe(false);
25
+ });
26
+ it('rejects invalid endpoint format', () => {
27
+ const result = ModelEntrySchema.safeParse({
28
+ name: 'test',
29
+ endpoint: 'not-a-url',
30
+ model: 'auto',
31
+ priority: 1,
32
+ enabled: true,
33
+ });
34
+ expect(result.success).toBe(false);
35
+ });
36
+ it('rejects negative priority', () => {
37
+ const result = ModelEntrySchema.safeParse({
38
+ name: 'test',
39
+ endpoint: 'http://localhost:1234/v1',
40
+ model: 'auto',
41
+ priority: -1,
42
+ enabled: true,
43
+ });
44
+ expect(result.success).toBe(false);
45
+ });
46
+ it('fills defaults when only router is provided', () => {
47
+ const config = ConfigSchema.parse({
48
+ router: { strategy: 'priority', chain: [] },
49
+ });
50
+ expect(config.version).toBe(1);
51
+ expect(config.router.healthCheckInterval).toBe(30000);
52
+ expect(config.indexing.enabled).toBe(true);
53
+ expect(config.ui.streaming).toBe(true);
54
+ expect(config.ui.theme).toBe('dark');
55
+ expect(config.session.autoSave).toBe(true);
56
+ });
57
+ it('accepts all tool config variations', () => {
58
+ const result = ConfigSchema.safeParse({
59
+ router: { strategy: 'round-robin', chain: [] },
60
+ tools: {
61
+ mcpServers: {
62
+ myServer: { transport: 'stdio', command: 'node', args: ['server.js'], enabled: true },
63
+ },
64
+ },
65
+ });
66
+ expect(result.success).toBe(true);
67
+ });
68
+ it('accepts ensemble config', () => {
69
+ const result = ConfigSchema.safeParse({
70
+ router: { strategy: 'priority', chain: [] },
71
+ agents: {
72
+ ensemble: { enabled: true, draftModel: 'fast-model', criticModel: 'smart-model', maxLoops: 3 },
73
+ },
74
+ });
75
+ expect(result.success).toBe(true);
76
+ });
77
+ it('rejects ensemble maxLoops outside range', () => {
78
+ const result = ConfigSchema.safeParse({
79
+ router: { strategy: 'priority', chain: [] },
80
+ agents: {
81
+ ensemble: { enabled: true, maxLoops: 10 },
82
+ },
83
+ });
84
+ expect(result.success).toBe(false);
85
+ });
86
+ it('accepts host:port endpoint format', () => {
87
+ const result = ModelEntrySchema.safeParse({
88
+ name: 'test',
89
+ endpoint: 'localhost:11434',
90
+ model: 'auto',
91
+ priority: 1,
92
+ enabled: true,
93
+ });
94
+ expect(result.success).toBe(true);
95
+ });
96
+ it('requires router field', () => {
97
+ const result = ConfigSchema.safeParse({});
98
+ expect(result.success).toBe(false);
99
+ });
100
+ });
101
+ describe('loadConfig', () => {
102
+ const origHome = process.env.HOME;
103
+ const origUserProfile = process.env.USERPROFILE;
104
+ beforeEach(() => {
105
+ vi.stubEnv('HOME', TEST_DIR);
106
+ vi.stubEnv('USERPROFILE', TEST_DIR);
107
+ });
108
+ afterEach(() => {
109
+ vi.unstubAllEnvs();
110
+ const configDir = path.join(TEST_DIR, '.daedalus');
111
+ try {
112
+ fs.rmSync(configDir, { recursive: true, force: true });
113
+ }
114
+ catch { }
115
+ });
116
+ it('creates default config when file does not exist', () => {
117
+ const config = loadConfig();
118
+ expect(config.version).toBe(1);
119
+ expect(config.router.chain.length).toBeGreaterThan(0);
120
+ expect(config.router.chain[0].name).toBe('lmstudio-default');
121
+ });
122
+ it('loads an existing config file', () => {
123
+ const configDir = path.join(TEST_DIR, '.daedalus');
124
+ fs.mkdirSync(configDir, { recursive: true });
125
+ fs.writeFileSync(path.join(configDir, 'config.json'), JSON.stringify({
126
+ router: { strategy: 'fastest', chain: [{ name: 'm', endpoint: 'http://localhost:1234/v1', model: 'm1', priority: 1, enabled: true }] },
127
+ }), 'utf8');
128
+ const config = loadConfig();
129
+ expect(config.router.strategy).toBe('fastest');
130
+ expect(config.router.chain).toHaveLength(1);
131
+ });
132
+ it('falls back to defaults on corrupt config', () => {
133
+ const configDir = path.join(TEST_DIR, '.daedalus');
134
+ fs.mkdirSync(configDir, { recursive: true });
135
+ fs.writeFileSync(path.join(configDir, 'config.json'), '{ broken json');
136
+ const config = loadConfig();
137
+ expect(config.version).toBe(1);
138
+ expect(config.router.strategy).toBe('priority');
139
+ });
140
+ it('validates and strips unknown fields', () => {
141
+ const configDir = path.join(TEST_DIR, '.daedalus');
142
+ fs.mkdirSync(configDir, { recursive: true });
143
+ fs.writeFileSync(path.join(configDir, 'config.json'), JSON.stringify({
144
+ router: { strategy: 'priority', chain: [] },
145
+ unknownField: 'should be removed by zod',
146
+ }));
147
+ const config = loadConfig();
148
+ expect(config.unknownField).toBeUndefined();
149
+ });
150
+ });
151
+ describe('saveConfig', () => {
152
+ const origHome = process.env.HOME;
153
+ const origUserProfile = process.env.USERPROFILE;
154
+ beforeEach(() => {
155
+ vi.stubEnv('HOME', TEST_DIR);
156
+ vi.stubEnv('USERPROFILE', TEST_DIR);
157
+ });
158
+ afterEach(() => {
159
+ vi.unstubAllEnvs();
160
+ const configDir = path.join(TEST_DIR, '.daedalus');
161
+ try {
162
+ fs.rmSync(configDir, { recursive: true, force: true });
163
+ }
164
+ catch { }
165
+ });
166
+ it('persists config to disk and reads it back', () => {
167
+ const testConfig = {
168
+ router: { strategy: 'priority', chain: [] },
169
+ version: 1,
170
+ agents: { default: 'coder', available: ['coder'], autoOrchestrate: true, ensemble: { enabled: false, draftModel: 'auto', criticModel: 'auto', maxLoops: 2 } },
171
+ tools: { builtin: [], mcpServers: {} },
172
+ context: { maxTokens: 128000, summarizeAt: 0.8, includeGitDiff: true, includeIndex: true },
173
+ indexing: { enabled: true, watch: true, languages: ['typescript'], exclude: ['node_modules'] },
174
+ updateCheck: true,
175
+ session: { autoSave: true, exportJsonl: true, maxHistoryTurns: 200 },
176
+ ui: { streaming: true, showTokens: true, showCost: true, diffStyle: 'unified', theme: 'dark' },
177
+ };
178
+ saveConfig(testConfig);
179
+ const savedDir = path.join(TEST_DIR, '.daedalus');
180
+ const saved = JSON.parse(fs.readFileSync(path.join(savedDir, 'config.json'), 'utf8'));
181
+ expect(saved.router.strategy).toBe('priority');
182
+ });
183
+ });
184
+ describe('getConfigDirPath', () => {
185
+ it('returns the config directory path', () => {
186
+ const dir = getConfigDirPath();
187
+ expect(dir).toContain('.daedalus');
188
+ });
189
+ });
190
+ describe('discoverLocalServers', () => {
191
+ it('returns empty array when mock rejects all', async () => {
192
+ vi.spyOn(globalThis, 'fetch').mockRejectedValue(new Error('no server'));
193
+ const results = await discoverLocalServers();
194
+ expect(Array.isArray(results)).toBe(true);
195
+ expect(results).toHaveLength(0);
196
+ vi.restoreAllMocks();
197
+ });
198
+ });
199
+ describe('resetConfig', () => {
200
+ const origHome = process.env.HOME;
201
+ const origUserProfile = process.env.USERPROFILE;
202
+ beforeEach(() => {
203
+ vi.stubEnv('HOME', TEST_DIR);
204
+ vi.stubEnv('USERPROFILE', TEST_DIR);
205
+ });
206
+ afterEach(() => {
207
+ vi.unstubAllEnvs();
208
+ const configDir = path.join(TEST_DIR, '.daedalus');
209
+ try {
210
+ fs.rmSync(configDir, { recursive: true, force: true });
211
+ }
212
+ catch { }
213
+ });
214
+ it('resets and returns default config', () => {
215
+ const config = resetConfig();
216
+ expect(config.router.strategy).toBe('priority');
217
+ expect(config.router.chain.length).toBeGreaterThan(0);
218
+ });
219
+ });
220
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/config/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extraction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.test.d.ts","sourceRoot":"","sources":["../src/extraction.test.ts"],"names":[],"mappings":""}