daedalus-cli 0.4.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 (144) hide show
  1. package/Daedalus.bat +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +254 -0
  4. package/dist/agents/agent.d.ts +10 -0
  5. package/dist/agents/agent.d.ts.map +1 -0
  6. package/dist/agents/agent.js +3 -0
  7. package/dist/agents/agent.js.map +1 -0
  8. package/dist/agents/orchestrator.d.ts +18 -0
  9. package/dist/agents/orchestrator.d.ts.map +1 -0
  10. package/dist/agents/orchestrator.js +171 -0
  11. package/dist/agents/orchestrator.js.map +1 -0
  12. package/dist/agents/roles.d.ts +14 -0
  13. package/dist/agents/roles.d.ts.map +1 -0
  14. package/dist/agents/roles.js +126 -0
  15. package/dist/agents/roles.js.map +1 -0
  16. package/dist/config/index.d.ts +485 -0
  17. package/dist/config/index.d.ts.map +1 -0
  18. package/dist/config/index.js +237 -0
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/highlight.d.ts +4 -0
  21. package/dist/highlight.d.ts.map +1 -0
  22. package/dist/highlight.js +42 -0
  23. package/dist/highlight.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +1386 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/indexing/fts.d.ts +40 -0
  29. package/dist/indexing/fts.d.ts.map +1 -0
  30. package/dist/indexing/fts.js +121 -0
  31. package/dist/indexing/fts.js.map +1 -0
  32. package/dist/indexing/indexer.d.ts +22 -0
  33. package/dist/indexing/indexer.d.ts.map +1 -0
  34. package/dist/indexing/indexer.js +518 -0
  35. package/dist/indexing/indexer.js.map +1 -0
  36. package/dist/onboarding/wizard.d.ts +2 -0
  37. package/dist/onboarding/wizard.d.ts.map +1 -0
  38. package/dist/onboarding/wizard.js +231 -0
  39. package/dist/onboarding/wizard.js.map +1 -0
  40. package/dist/router/health.d.ts +6 -0
  41. package/dist/router/health.d.ts.map +1 -0
  42. package/dist/router/health.js +74 -0
  43. package/dist/router/health.js.map +1 -0
  44. package/dist/router/index.d.ts +33 -0
  45. package/dist/router/index.d.ts.map +1 -0
  46. package/dist/router/index.js +214 -0
  47. package/dist/router/index.js.map +1 -0
  48. package/dist/router/rate-limiter.d.ts +7 -0
  49. package/dist/router/rate-limiter.d.ts.map +1 -0
  50. package/dist/router/rate-limiter.js +36 -0
  51. package/dist/router/rate-limiter.js.map +1 -0
  52. package/dist/router/types.d.ts +81 -0
  53. package/dist/router/types.d.ts.map +1 -0
  54. package/dist/router/types.js +3 -0
  55. package/dist/router/types.js.map +1 -0
  56. package/dist/session/jsonl.d.ts +20 -0
  57. package/dist/session/jsonl.d.ts.map +1 -0
  58. package/dist/session/jsonl.js +61 -0
  59. package/dist/session/jsonl.js.map +1 -0
  60. package/dist/session/manager.d.ts +42 -0
  61. package/dist/session/manager.d.ts.map +1 -0
  62. package/dist/session/manager.js +184 -0
  63. package/dist/session/manager.js.map +1 -0
  64. package/dist/session/memory.d.ts +23 -0
  65. package/dist/session/memory.d.ts.map +1 -0
  66. package/dist/session/memory.js +88 -0
  67. package/dist/session/memory.js.map +1 -0
  68. package/dist/session/sqlite.d.ts +59 -0
  69. package/dist/session/sqlite.d.ts.map +1 -0
  70. package/dist/session/sqlite.js +174 -0
  71. package/dist/session/sqlite.js.map +1 -0
  72. package/dist/tools/builtin/delegation.d.ts +17 -0
  73. package/dist/tools/builtin/delegation.d.ts.map +1 -0
  74. package/dist/tools/builtin/delegation.js +85 -0
  75. package/dist/tools/builtin/delegation.js.map +1 -0
  76. package/dist/tools/builtin/diff-ui.d.ts +21 -0
  77. package/dist/tools/builtin/diff-ui.d.ts.map +1 -0
  78. package/dist/tools/builtin/diff-ui.js +211 -0
  79. package/dist/tools/builtin/diff-ui.js.map +1 -0
  80. package/dist/tools/builtin/files.d.ts +29 -0
  81. package/dist/tools/builtin/files.d.ts.map +1 -0
  82. package/dist/tools/builtin/files.js +286 -0
  83. package/dist/tools/builtin/files.js.map +1 -0
  84. package/dist/tools/builtin/git.d.ts +7 -0
  85. package/dist/tools/builtin/git.d.ts.map +1 -0
  86. package/dist/tools/builtin/git.js +11 -0
  87. package/dist/tools/builtin/git.js.map +1 -0
  88. package/dist/tools/builtin/indexing.d.ts +22 -0
  89. package/dist/tools/builtin/indexing.d.ts.map +1 -0
  90. package/dist/tools/builtin/indexing.js +159 -0
  91. package/dist/tools/builtin/indexing.js.map +1 -0
  92. package/dist/tools/builtin/project-config.d.ts +17 -0
  93. package/dist/tools/builtin/project-config.d.ts.map +1 -0
  94. package/dist/tools/builtin/project-config.js +66 -0
  95. package/dist/tools/builtin/project-config.js.map +1 -0
  96. package/dist/tools/builtin/terminal.d.ts +7 -0
  97. package/dist/tools/builtin/terminal.d.ts.map +1 -0
  98. package/dist/tools/builtin/terminal.js +99 -0
  99. package/dist/tools/builtin/terminal.js.map +1 -0
  100. package/dist/tools/builtin/todo.d.ts +20 -0
  101. package/dist/tools/builtin/todo.d.ts.map +1 -0
  102. package/dist/tools/builtin/todo.js +36 -0
  103. package/dist/tools/builtin/todo.js.map +1 -0
  104. package/dist/tools/builtin/web.d.ts +10 -0
  105. package/dist/tools/builtin/web.d.ts.map +1 -0
  106. package/dist/tools/builtin/web.js +67 -0
  107. package/dist/tools/builtin/web.js.map +1 -0
  108. package/dist/tools/daedalus-spinner.d.ts +29 -0
  109. package/dist/tools/daedalus-spinner.d.ts.map +1 -0
  110. package/dist/tools/daedalus-spinner.js +77 -0
  111. package/dist/tools/daedalus-spinner.js.map +1 -0
  112. package/dist/tools/definitions.d.ts +5 -0
  113. package/dist/tools/definitions.d.ts.map +1 -0
  114. package/dist/tools/definitions.js +296 -0
  115. package/dist/tools/definitions.js.map +1 -0
  116. package/dist/tools/executor.d.ts +4 -0
  117. package/dist/tools/executor.d.ts.map +1 -0
  118. package/dist/tools/executor.js +86 -0
  119. package/dist/tools/executor.js.map +1 -0
  120. package/dist/tools/mcp/http.d.ts +23 -0
  121. package/dist/tools/mcp/http.d.ts.map +1 -0
  122. package/dist/tools/mcp/http.js +200 -0
  123. package/dist/tools/mcp/http.js.map +1 -0
  124. package/dist/tools/mcp/registry.d.ts +16 -0
  125. package/dist/tools/mcp/registry.d.ts.map +1 -0
  126. package/dist/tools/mcp/registry.js +92 -0
  127. package/dist/tools/mcp/registry.js.map +1 -0
  128. package/dist/tools/mcp/stdio.d.ts +26 -0
  129. package/dist/tools/mcp/stdio.d.ts.map +1 -0
  130. package/dist/tools/mcp/stdio.js +157 -0
  131. package/dist/tools/mcp/stdio.js.map +1 -0
  132. package/dist/tools/mcp/tool-executor.d.ts +3 -0
  133. package/dist/tools/mcp/tool-executor.d.ts.map +1 -0
  134. package/dist/tools/mcp/tool-executor.js +23 -0
  135. package/dist/tools/mcp/tool-executor.js.map +1 -0
  136. package/dist/tools/mcp/types.d.ts +26 -0
  137. package/dist/tools/mcp/types.d.ts.map +1 -0
  138. package/dist/tools/mcp/types.js +3 -0
  139. package/dist/tools/mcp/types.js.map +1 -0
  140. package/dist/types.d.ts +58 -0
  141. package/dist/types.d.ts.map +1 -0
  142. package/dist/types.js +3 -0
  143. package/dist/types.js.map +1 -0
  144. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/router/rate-limiter.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAI5B,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,UAAkB;IACpE,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,MAAc;IAC/D,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;IACvD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACvE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAmB;IACpD,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAmB,EAAE,MAAc;IAC7D,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,81 @@
1
+ export interface ModelEntry {
2
+ name: string;
3
+ endpoint: string;
4
+ model: string;
5
+ priority: number;
6
+ enabled: boolean;
7
+ apiKey?: string;
8
+ maxTokens?: number;
9
+ supportsTools?: boolean;
10
+ supportsVision?: boolean;
11
+ }
12
+ export interface ModelHealth {
13
+ healthy: boolean;
14
+ lastCheck: number;
15
+ latencyMs?: number;
16
+ error?: string;
17
+ consecutiveFailures: number;
18
+ }
19
+ export interface TokenBucket {
20
+ tokens: number;
21
+ lastRefill: number;
22
+ capacity: number;
23
+ refillRate: number;
24
+ }
25
+ export interface RouteResult {
26
+ model: ModelEntry;
27
+ health: ModelHealth;
28
+ }
29
+ export interface RouterConfig {
30
+ strategy: 'priority' | 'round-robin' | 'fastest';
31
+ chain: ModelEntry[];
32
+ healthCheckInterval: number;
33
+ requestTimeout: number;
34
+ defaultRateLimit: {
35
+ rpm: number;
36
+ tpm: number;
37
+ };
38
+ }
39
+ export interface ChatRequest {
40
+ model?: string;
41
+ messages: any[];
42
+ temperature?: number;
43
+ max_tokens?: number;
44
+ stream?: boolean;
45
+ tools?: any[];
46
+ tool_choice?: any;
47
+ signal?: AbortSignal;
48
+ [key: string]: any;
49
+ }
50
+ export interface ChatResponse {
51
+ id: string;
52
+ object: string;
53
+ created: number;
54
+ model: string;
55
+ choices: Array<{
56
+ index: number;
57
+ message: any;
58
+ finish_reason: string | null;
59
+ }>;
60
+ usage: {
61
+ prompt_tokens: number;
62
+ completion_tokens: number;
63
+ total_tokens: number;
64
+ };
65
+ }
66
+ export interface StreamChunk {
67
+ id: string;
68
+ object: string;
69
+ created: number;
70
+ model: string;
71
+ choices: Array<{
72
+ index: number;
73
+ delta: {
74
+ role?: string;
75
+ content?: string;
76
+ tool_calls?: any[];
77
+ };
78
+ finish_reason: string | null;
79
+ }>;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,GAAG,CAAC;QACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC,CAAC;IACH,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE;YACL,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;SACpB,CAAC;QACF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ // Daedalus Local Router Types
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,8BAA8B"}
@@ -0,0 +1,20 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface JsonlTurn {
3
+ turn: number;
4
+ role: string;
5
+ content: string;
6
+ tool_calls?: any[];
7
+ tool_call_id?: string;
8
+ name?: string;
9
+ model?: string;
10
+ tokens?: {
11
+ in?: number;
12
+ out?: number;
13
+ };
14
+ timestamp?: number;
15
+ }
16
+ /** Export all turns from a session SQLite DB to a JSONL file */
17
+ export declare function exportToJsonl(db: Database.Database, jsonlPath: string): void;
18
+ /** Import turns from a JSONL file into a session SQLite DB */
19
+ export declare function importFromJsonl(db: Database.Database, jsonlPath: string): void;
20
+ //# sourceMappingURL=jsonl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/session/jsonl.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmC5E;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAyB9E"}
@@ -0,0 +1,61 @@
1
+ // JSONL import/export for session portability
2
+ import fs from 'fs';
3
+ import { getTurns, clearTurns, saveTurn } from './sqlite.js';
4
+ /** Export all turns from a session SQLite DB to a JSONL file */
5
+ export function exportToJsonl(db, jsonlPath) {
6
+ const turns = getTurns(db);
7
+ const stream = fs.createWriteStream(jsonlPath, { encoding: 'utf8' });
8
+ turns.forEach((t, index) => {
9
+ let toolCallsParsed = undefined;
10
+ if (t.tool_calls) {
11
+ try {
12
+ toolCallsParsed = JSON.parse(t.tool_calls);
13
+ }
14
+ catch {
15
+ // Ignored
16
+ }
17
+ }
18
+ const tokens = (t.tokens_input || t.tokens_output) ? {
19
+ in: t.tokens_input || undefined,
20
+ out: t.tokens_output || undefined,
21
+ } : undefined;
22
+ const line = {
23
+ turn: index + 1,
24
+ role: t.role,
25
+ content: t.content,
26
+ tool_calls: toolCallsParsed,
27
+ tool_call_id: t.tool_call_id || undefined,
28
+ name: t.name || undefined,
29
+ model: t.model || undefined,
30
+ tokens,
31
+ timestamp: t.created_at,
32
+ };
33
+ stream.write(JSON.stringify(line) + '\n');
34
+ });
35
+ stream.end();
36
+ }
37
+ /** Import turns from a JSONL file into a session SQLite DB */
38
+ export function importFromJsonl(db, jsonlPath) {
39
+ if (!fs.existsSync(jsonlPath)) {
40
+ throw new Error(`JSONL file not found: ${jsonlPath}`);
41
+ }
42
+ const content = fs.readFileSync(jsonlPath, 'utf8');
43
+ const lines = content.split('\n').map(l => l.trim()).filter(Boolean);
44
+ clearTurns(db);
45
+ for (const line of lines) {
46
+ const parsed = JSON.parse(line);
47
+ const turn = {
48
+ role: parsed.role,
49
+ content: parsed.content,
50
+ tool_calls: parsed.tool_calls ? JSON.stringify(parsed.tool_calls) : undefined,
51
+ tool_call_id: parsed.tool_call_id,
52
+ name: parsed.name,
53
+ model: parsed.model,
54
+ tokens_input: parsed.tokens?.in,
55
+ tokens_output: parsed.tokens?.out,
56
+ created_at: parsed.timestamp,
57
+ };
58
+ saveTurn(db, turn);
59
+ }
60
+ }
61
+ //# sourceMappingURL=jsonl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../src/session/jsonl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { SqliteTodo, SessionMeta } from './sqlite.js';
2
+ import { ProjectMemory } from './memory.js';
3
+ import { ChatMessage } from '../types.js';
4
+ export declare class SessionManager {
5
+ private homedir;
6
+ private baseDir;
7
+ private sessionsDir;
8
+ private memoryDir;
9
+ private indexDbPath;
10
+ private indexDb;
11
+ private sessionDb?;
12
+ projectRoot: string;
13
+ projectHash: string;
14
+ sessionId: string;
15
+ sessionTitle: string;
16
+ constructor(projectRoot?: string);
17
+ /** Initialize directories and the index database */
18
+ init(): void;
19
+ /** Start a new session or load an existing one */
20
+ startSession(sessionId?: string, title?: string): {
21
+ sessionId: string;
22
+ turns: ChatMessage[];
23
+ activeFiles: Map<string, string>;
24
+ todos: SqliteTodo[];
25
+ };
26
+ /** Get all chat messages formatted for OpenAI SDK compatibility */
27
+ getChatMessages(): ChatMessage[];
28
+ /** Save the current session state (turns, active files, and todos) */
29
+ saveSessionState(messages: ChatMessage[], activeFiles: Map<string, string>, todos: SqliteTodo[]): void;
30
+ /** Import a JSONL session file */
31
+ importSessionFromJsonl(jsonlPath: string): ChatMessage[];
32
+ /** List all sessions for the current project */
33
+ getSessionsForProject(): SessionMeta[];
34
+ /** Delete a session completely */
35
+ deleteSession(sessionId: string): void;
36
+ private getMemoryPath;
37
+ getMemoryPrompt(): string;
38
+ addFact(key: string, value: string, source?: 'user' | 'agent'): void;
39
+ setConvention(key: string, value: string): void;
40
+ loadMemory(): ProjectMemory;
41
+ }
42
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"AAOA,OAAO,EAcL,UAAU,EACV,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAyD,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,WAAW,CAA+C;IAElE,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAoB;IAE/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAG,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAiB;gBAEhC,WAAW,SAAgB;IAKvC,oDAAoD;IAC7C,IAAI,IAAI,IAAI;IAWnB,kDAAkD;IAC3C,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;QACvD,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,WAAW,EAAE,CAAC;QACrB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,EAAE,UAAU,EAAE,CAAC;KACrB;IAkCD,mEAAmE;IAC5D,eAAe,IAAI,WAAW,EAAE;IA8BvC,sEAAsE;IAC/D,gBAAgB,CACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,UAAU,EAAE,GAClB,IAAI;IA8CP,kCAAkC;IAC3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAM/D,gDAAgD;IACzC,qBAAqB,IAAI,WAAW,EAAE;IAK7C,kCAAkC;IAC3B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW7C,OAAO,CAAC,aAAa;IAId,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,OAAiB,GAAG,IAAI;IAI7E,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,UAAU,IAAI,aAAa;CAGnC"}
@@ -0,0 +1,184 @@
1
+ // Session manager for Daedalus — persists conversations, active files, and todos
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import os from 'os';
5
+ import crypto from 'crypto';
6
+ import { initIndexDb, initSessionDb, registerSession, listSessionsForProject, deleteSessionFromIndex, getTurns, clearTurns, saveTurn, saveActiveFiles, getActiveFiles, saveTodos, getTodos } from './sqlite.js';
7
+ import { exportToJsonl, importFromJsonl } from './jsonl.js';
8
+ import { loadMemory, addFact, setConvention, getMemoryAsPrompt } from './memory.js';
9
+ export class SessionManager {
10
+ homedir = os.homedir();
11
+ baseDir = path.join(this.homedir, '.daedalus');
12
+ sessionsDir = path.join(this.baseDir, 'sessions');
13
+ memoryDir = path.join(this.baseDir, 'memory');
14
+ indexDbPath = path.join(this.sessionsDir, 'index.sqlite');
15
+ indexDb;
16
+ sessionDb;
17
+ projectRoot;
18
+ projectHash;
19
+ sessionId;
20
+ sessionTitle = 'New Session';
21
+ constructor(projectRoot = process.cwd()) {
22
+ this.projectRoot = path.resolve(projectRoot);
23
+ this.projectHash = crypto.createHash('sha256').update(this.projectRoot).digest('hex').slice(0, 12);
24
+ }
25
+ /** Initialize directories and the index database */
26
+ init() {
27
+ if (!fs.existsSync(this.baseDir))
28
+ fs.mkdirSync(this.baseDir, { recursive: true });
29
+ if (!fs.existsSync(this.sessionsDir))
30
+ fs.mkdirSync(this.sessionsDir, { recursive: true });
31
+ if (!fs.existsSync(this.memoryDir))
32
+ fs.mkdirSync(this.memoryDir, { recursive: true });
33
+ const projectSessionDir = path.join(this.sessionsDir, this.projectHash);
34
+ if (!fs.existsSync(projectSessionDir))
35
+ fs.mkdirSync(projectSessionDir, { recursive: true });
36
+ this.indexDb = initIndexDb(this.indexDbPath);
37
+ }
38
+ /** Start a new session or load an existing one */
39
+ startSession(sessionId, title) {
40
+ const isNew = !sessionId;
41
+ this.sessionId = sessionId || `session-${Date.now()}-${crypto.randomBytes(3).toString('hex')}`;
42
+ this.sessionTitle = title || (isNew ? `Session on ${new Date().toLocaleDateString()}` : 'Loaded Session');
43
+ const sessionDbPath = path.join(this.sessionsDir, this.projectHash, `${this.sessionId}.sqlite`);
44
+ this.sessionDb = initSessionDb(sessionDbPath);
45
+ // If it is a new session, register it in the index DB
46
+ const now = Date.now();
47
+ const meta = {
48
+ id: this.sessionId,
49
+ project_path: this.projectRoot,
50
+ project_hash: this.projectHash,
51
+ title: this.sessionTitle,
52
+ created_at: now,
53
+ updated_at: now,
54
+ };
55
+ registerSession(this.indexDb, meta);
56
+ // Load existing data
57
+ const turns = this.getChatMessages();
58
+ const files = getActiveFiles(this.sessionDb);
59
+ const todos = getTodos(this.sessionDb);
60
+ return {
61
+ sessionId: this.sessionId,
62
+ turns,
63
+ activeFiles: files,
64
+ todos,
65
+ };
66
+ }
67
+ /** Get all chat messages formatted for OpenAI SDK compatibility */
68
+ getChatMessages() {
69
+ if (!this.sessionDb)
70
+ return [];
71
+ const dbTurns = getTurns(this.sessionDb);
72
+ return dbTurns.map(t => {
73
+ let toolCallsParsed = undefined;
74
+ if (t.tool_calls) {
75
+ try {
76
+ toolCallsParsed = JSON.parse(t.tool_calls);
77
+ }
78
+ catch {
79
+ // Ignored
80
+ }
81
+ }
82
+ let contentParsed = t.content;
83
+ if (typeof t.content === 'string' && (t.content.startsWith('[') || t.content.startsWith('{'))) {
84
+ try {
85
+ contentParsed = JSON.parse(t.content);
86
+ }
87
+ catch {
88
+ // Ignored
89
+ }
90
+ }
91
+ return {
92
+ role: t.role,
93
+ content: contentParsed,
94
+ tool_calls: toolCallsParsed,
95
+ tool_call_id: t.tool_call_id || undefined,
96
+ name: t.name || undefined,
97
+ };
98
+ });
99
+ }
100
+ /** Save the current session state (turns, active files, and todos) */
101
+ saveSessionState(messages, activeFiles, todos) {
102
+ if (!this.sessionDb || !this.indexDb)
103
+ return;
104
+ // 1. Save turns to SQLite
105
+ this.sessionDb.transaction(() => {
106
+ clearTurns(this.sessionDb);
107
+ messages.forEach(msg => {
108
+ const turn = {
109
+ role: msg.role,
110
+ content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
111
+ tool_calls: msg.tool_calls ? JSON.stringify(msg.tool_calls) : undefined,
112
+ tool_call_id: msg.tool_call_id,
113
+ name: msg.name,
114
+ model: msg.model || null,
115
+ tokens_input: msg.tokens?.in || null,
116
+ tokens_output: msg.tokens?.out || null,
117
+ latency_ms: msg.latency_ms || null,
118
+ };
119
+ saveTurn(this.sessionDb, turn);
120
+ });
121
+ })();
122
+ // 2. Save active files
123
+ saveActiveFiles(this.sessionDb, activeFiles);
124
+ // 3. Save todos
125
+ saveTodos(this.sessionDb, todos);
126
+ // 4. Update the index DB — preserve the original created_at timestamp
127
+ const now = Date.now();
128
+ const existing = this.getSessionsForProject().find(s => s.id === this.sessionId);
129
+ const meta = {
130
+ id: this.sessionId,
131
+ project_path: this.projectRoot,
132
+ project_hash: this.projectHash,
133
+ title: this.sessionTitle,
134
+ created_at: existing?.created_at ?? now,
135
+ updated_at: now,
136
+ };
137
+ registerSession(this.indexDb, meta);
138
+ // 5. Export to JSONL for portability
139
+ const jsonlPath = path.join(this.sessionsDir, this.projectHash, `${this.sessionId}.jsonl`);
140
+ exportToJsonl(this.sessionDb, jsonlPath);
141
+ }
142
+ /** Import a JSONL session file */
143
+ importSessionFromJsonl(jsonlPath) {
144
+ if (!this.sessionDb)
145
+ throw new Error('No active session database');
146
+ importFromJsonl(this.sessionDb, jsonlPath);
147
+ return this.getChatMessages();
148
+ }
149
+ /** List all sessions for the current project */
150
+ getSessionsForProject() {
151
+ if (!this.indexDb)
152
+ return [];
153
+ return listSessionsForProject(this.indexDb, this.projectHash);
154
+ }
155
+ /** Delete a session completely */
156
+ deleteSession(sessionId) {
157
+ if (!this.indexDb)
158
+ return;
159
+ deleteSessionFromIndex(this.indexDb, sessionId);
160
+ const dbPath = path.join(this.sessionsDir, this.projectHash, `${sessionId}.sqlite`);
161
+ const jsonlPath = path.join(this.sessionsDir, this.projectHash, `${sessionId}.jsonl`);
162
+ if (fs.existsSync(dbPath))
163
+ fs.unlinkSync(dbPath);
164
+ if (fs.existsSync(jsonlPath))
165
+ fs.unlinkSync(jsonlPath);
166
+ }
167
+ // --- Memory Helpers ---
168
+ getMemoryPath() {
169
+ return path.join(this.memoryDir, `${this.projectHash}.json`);
170
+ }
171
+ getMemoryPrompt() {
172
+ return getMemoryAsPrompt(this.getMemoryPath(), this.projectHash);
173
+ }
174
+ addFact(key, value, source = 'agent') {
175
+ addFact(this.getMemoryPath(), this.projectHash, key, value, source);
176
+ }
177
+ setConvention(key, value) {
178
+ setConvention(this.getMemoryPath(), this.projectHash, key, value);
179
+ }
180
+ loadMemory() {
181
+ return loadMemory(this.getMemoryPath(), this.projectHash);
182
+ }
183
+ }
184
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface Fact {
2
+ key: string;
3
+ value: string;
4
+ source: 'user' | 'agent';
5
+ created: number;
6
+ }
7
+ export interface ProjectMemory {
8
+ projectHash: string;
9
+ facts: Fact[];
10
+ conventions: Record<string, string>;
11
+ updated_at: number;
12
+ }
13
+ /** Load project memory from JSON file */
14
+ export declare function loadMemory(memoryPath: string, projectHash: string): ProjectMemory;
15
+ /** Save project memory to JSON file */
16
+ export declare function saveMemory(memoryPath: string, memory: ProjectMemory): void;
17
+ /** Add a fact to the project memory */
18
+ export declare function addFact(memoryPath: string, projectHash: string, key: string, value: string, source?: 'user' | 'agent'): void;
19
+ /** Set a project coding convention */
20
+ export declare function setConvention(memoryPath: string, projectHash: string, key: string, value: string): void;
21
+ /** Generate a system prompt fragment describing project facts and conventions */
22
+ export declare function getMemoryAsPrompt(memoryPath: string, projectHash: string): string;
23
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/session/memory.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yCAAyC;AACzC,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CA0BjF;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAM1E;AAED,uCAAuC;AACvC,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,OAAiB,GAAG,IAAI,CAmBrI;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKvG;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAyBjF"}
@@ -0,0 +1,88 @@
1
+ // Project memory for Daedalus — facts, conventions, and persistent context
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ /** Load project memory from JSON file */
5
+ export function loadMemory(memoryPath, projectHash) {
6
+ const dir = path.dirname(memoryPath);
7
+ if (!fs.existsSync(dir)) {
8
+ fs.mkdirSync(dir, { recursive: true });
9
+ }
10
+ if (!fs.existsSync(memoryPath)) {
11
+ return {
12
+ projectHash,
13
+ facts: [],
14
+ conventions: {},
15
+ updated_at: Date.now(),
16
+ };
17
+ }
18
+ try {
19
+ const data = JSON.parse(fs.readFileSync(memoryPath, 'utf8'));
20
+ return data;
21
+ }
22
+ catch {
23
+ return {
24
+ projectHash,
25
+ facts: [],
26
+ conventions: {},
27
+ updated_at: Date.now(),
28
+ };
29
+ }
30
+ }
31
+ /** Save project memory to JSON file */
32
+ export function saveMemory(memoryPath, memory) {
33
+ const dir = path.dirname(memoryPath);
34
+ if (!fs.existsSync(dir)) {
35
+ fs.mkdirSync(dir, { recursive: true });
36
+ }
37
+ fs.writeFileSync(memoryPath, JSON.stringify(memory, null, 2), 'utf8');
38
+ }
39
+ /** Add a fact to the project memory */
40
+ export function addFact(memoryPath, projectHash, key, value, source = 'agent') {
41
+ const mem = loadMemory(memoryPath, projectHash);
42
+ const existingIndex = mem.facts.findIndex(f => f.key === key);
43
+ const newFact = {
44
+ key,
45
+ value,
46
+ source,
47
+ created: Date.now(),
48
+ };
49
+ if (existingIndex >= 0) {
50
+ mem.facts[existingIndex] = newFact;
51
+ }
52
+ else {
53
+ mem.facts.push(newFact);
54
+ }
55
+ mem.updated_at = Date.now();
56
+ saveMemory(memoryPath, mem);
57
+ }
58
+ /** Set a project coding convention */
59
+ export function setConvention(memoryPath, projectHash, key, value) {
60
+ const mem = loadMemory(memoryPath, projectHash);
61
+ mem.conventions[key] = value;
62
+ mem.updated_at = Date.now();
63
+ saveMemory(memoryPath, mem);
64
+ }
65
+ /** Generate a system prompt fragment describing project facts and conventions */
66
+ export function getMemoryAsPrompt(memoryPath, projectHash) {
67
+ const mem = loadMemory(memoryPath, projectHash);
68
+ if (mem.facts.length === 0 && Object.keys(mem.conventions).length === 0) {
69
+ return '';
70
+ }
71
+ let prompt = '\n--- PROJECT CONTEXT & CONVENTIONS ---\n';
72
+ if (Object.keys(mem.conventions).length > 0) {
73
+ prompt += 'Project Coding Conventions:\n';
74
+ for (const [key, val] of Object.entries(mem.conventions)) {
75
+ prompt += `- ${key}: ${val}\n`;
76
+ }
77
+ prompt += '\n';
78
+ }
79
+ if (mem.facts.length > 0) {
80
+ prompt += 'Project Facts:\n';
81
+ for (const f of mem.facts) {
82
+ prompt += `- ${f.key}: ${f.value} (source: ${f.source})\n`;
83
+ }
84
+ }
85
+ prompt += '-------------------------------------\n';
86
+ return prompt;
87
+ }
88
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/session/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface SqliteTurn {
3
+ id?: number;
4
+ role: string;
5
+ content: string;
6
+ tool_calls?: string;
7
+ tool_call_id?: string;
8
+ name?: string;
9
+ model?: string;
10
+ tokens_input?: number;
11
+ tokens_output?: number;
12
+ latency_ms?: number;
13
+ created_at?: number;
14
+ }
15
+ export interface SqliteTodo {
16
+ id: string;
17
+ content: string;
18
+ status: string;
19
+ agent_role?: string;
20
+ created_at?: number;
21
+ updated_at?: number;
22
+ }
23
+ export interface SessionMeta {
24
+ id: string;
25
+ project_path: string;
26
+ project_hash: string;
27
+ title: string;
28
+ created_at: number;
29
+ updated_at: number;
30
+ }
31
+ /** Initialize the global sessions index database */
32
+ export declare function initIndexDb(dbPath: string): Database.Database;
33
+ /** Register a session in the global index */
34
+ export declare function registerSession(db: Database.Database, meta: SessionMeta): void;
35
+ /** List all sessions for a specific project */
36
+ export declare function listSessionsForProject(db: Database.Database, projectHash: string): SessionMeta[];
37
+ /** Delete a session from the index */
38
+ export declare function deleteSessionFromIndex(db: Database.Database, sessionId: string): void;
39
+ /** Initialize a specific session database */
40
+ export declare function initSessionDb(dbPath: string): Database.Database;
41
+ /** Save a turn to the session database */
42
+ export declare function saveTurn(db: Database.Database, turn: SqliteTurn): void;
43
+ /** Get all turns from the session database */
44
+ export declare function getTurns(db: Database.Database): SqliteTurn[];
45
+ /** Clear all turns in the session database */
46
+ export declare function clearTurns(db: Database.Database): void;
47
+ /** Save active files context */
48
+ export declare function saveActiveFiles(db: Database.Database, files: Map<string, string>): void;
49
+ /** Get active files context */
50
+ export declare function getActiveFiles(db: Database.Database): Map<string, string>;
51
+ /** Save todos list */
52
+ export declare function saveTodos(db: Database.Database, todos: SqliteTodo[]): void;
53
+ /** Get todos list */
54
+ export declare function getTodos(db: Database.Database): SqliteTodo[];
55
+ /** Save state key-value */
56
+ export declare function saveState(db: Database.Database, key: string, val: any): void;
57
+ /** Get state value */
58
+ export declare function getState(db: Database.Database, key: string): any | null;
59
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/session/sqlite.ts"],"names":[],"mappings":"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"}