modular-studio 1.0.3 → 1.0.5

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 (107) hide show
  1. package/README.md +101 -20
  2. package/dist/assets/Badge-22Ai0eyi.js +1 -0
  3. package/dist/assets/Input-Bgp734xs.js +1 -0
  4. package/dist/assets/KnowledgeTab-DABxirZh.js +4 -0
  5. package/dist/assets/MemoryTab-DZeYElIT.js +16 -0
  6. package/dist/assets/QualificationTab-Dfpy3J30.js +1 -0
  7. package/dist/assets/ReviewTab-SD8lQuCc.js +103 -0
  8. package/dist/assets/Section-DoJrmytO.js +1 -0
  9. package/dist/assets/TestTab-PDyMF8Fw.js +33 -0
  10. package/dist/assets/ToolsTab-B83qGCmG.js +1 -0
  11. package/dist/assets/conversationStore-CkfEU2eV.js +1 -0
  12. package/dist/assets/icons-C2EV-le6.js +1 -0
  13. package/dist/assets/index-DkpMAxX7.css +1 -0
  14. package/dist/assets/index-q24ug5Qs.js +143 -0
  15. package/dist/assets/{jszip.min-DByyLalk.js → jszip.min-wf-D3Ix_.js} +1 -1
  16. package/dist/assets/markdown-DWF7F0i0.js +29 -0
  17. package/dist/assets/services-BaKotDf0.js +343 -0
  18. package/dist/assets/stores-CeKWz7ou.js +1 -0
  19. package/dist/assets/vendor-D1h_O76p.js +9 -0
  20. package/dist/index.html +8 -4
  21. package/dist-server/bin/modular-mcp.js +0 -1
  22. package/dist-server/bin/modular-studio.js +0 -1
  23. package/dist-server/server/config.js +0 -1
  24. package/dist-server/server/data/mcp-tokens.json +3 -3
  25. package/dist-server/server/index.d.ts.map +1 -1
  26. package/dist-server/server/index.js +12 -1
  27. package/dist-server/server/index.js.map +1 -1
  28. package/dist-server/server/mcp/manager.js +0 -1
  29. package/dist-server/server/mcp/modular-server.js +0 -1
  30. package/dist-server/server/mcp/transport.js +0 -1
  31. package/dist-server/server/routes/agent-sdk.js +0 -1
  32. package/dist-server/server/routes/agents.d.ts +9 -5
  33. package/dist-server/server/routes/agents.d.ts.map +1 -1
  34. package/dist-server/server/routes/agents.js +81 -8
  35. package/dist-server/server/routes/auth-codex.js +0 -1
  36. package/dist-server/server/routes/capabilities.js +0 -1
  37. package/dist-server/server/routes/claude-config.js +0 -1
  38. package/dist-server/server/routes/connectors.d.ts.map +1 -1
  39. package/dist-server/server/routes/connectors.js +194 -1
  40. package/dist-server/server/routes/conversations.js +0 -1
  41. package/dist-server/server/routes/embeddings.d.ts.map +1 -1
  42. package/dist-server/server/routes/embeddings.js +16 -2
  43. package/dist-server/server/routes/embeddings.js.map +1 -1
  44. package/dist-server/server/routes/health.d.ts.map +1 -1
  45. package/dist-server/server/routes/health.js +10 -2
  46. package/dist-server/server/routes/health.js.map +1 -1
  47. package/dist-server/server/routes/knowledge.js +0 -1
  48. package/dist-server/server/routes/llm.js +0 -1
  49. package/dist-server/server/routes/mcp-oauth.js +0 -1
  50. package/dist-server/server/routes/mcp.js +0 -1
  51. package/dist-server/server/routes/memory.d.ts +3 -0
  52. package/dist-server/server/routes/memory.d.ts.map +1 -0
  53. package/dist-server/server/routes/memory.js +283 -0
  54. package/dist-server/server/routes/pipeline.js +0 -1
  55. package/dist-server/server/routes/providers.js +0 -1
  56. package/dist-server/server/routes/qualification.d.ts.map +1 -1
  57. package/dist-server/server/routes/qualification.js +382 -74
  58. package/dist-server/server/routes/repo-index.js +0 -1
  59. package/dist-server/server/routes/runtime.js +0 -1
  60. package/dist-server/server/routes/skills-search.d.ts.map +1 -1
  61. package/dist-server/server/routes/skills-search.js +44 -5
  62. package/dist-server/server/routes/skills-search.js.map +1 -1
  63. package/dist-server/server/routes/worktrees.js +0 -1
  64. package/dist-server/server/services/__tests__/embeddingService.test.js +0 -1
  65. package/dist-server/server/services/adapters/postgresAdapter.d.ts +29 -0
  66. package/dist-server/server/services/adapters/postgresAdapter.d.ts.map +1 -0
  67. package/dist-server/server/services/adapters/postgresAdapter.js +224 -0
  68. package/dist-server/server/services/adapters/sqliteAdapter.d.ts +28 -0
  69. package/dist-server/server/services/adapters/sqliteAdapter.d.ts.map +1 -0
  70. package/dist-server/server/services/adapters/sqliteAdapter.js +219 -0
  71. package/dist-server/server/services/adapters/storageAdapter.d.ts +22 -0
  72. package/dist-server/server/services/adapters/storageAdapter.d.ts.map +1 -0
  73. package/dist-server/server/services/adapters/storageAdapter.js +1 -0
  74. package/dist-server/server/services/agentRunner.js +0 -1
  75. package/dist-server/server/services/agentStore.d.ts +18 -3
  76. package/dist-server/server/services/agentStore.d.ts.map +1 -1
  77. package/dist-server/server/services/agentStore.js +116 -23
  78. package/dist-server/server/services/contentStore.js +0 -1
  79. package/dist-server/server/services/embeddingService.d.ts +2 -0
  80. package/dist-server/server/services/embeddingService.d.ts.map +1 -1
  81. package/dist-server/server/services/embeddingService.js +30 -19
  82. package/dist-server/server/services/factExtractor.js +0 -1
  83. package/dist-server/server/services/githubIndexer.js +0 -1
  84. package/dist-server/server/services/mcpOAuth.js +0 -1
  85. package/dist-server/server/services/memoryScorer.js +0 -1
  86. package/dist-server/server/services/repoIndexer.js +0 -1
  87. package/dist-server/server/services/sqliteStore.js +0 -1
  88. package/dist-server/server/services/teamRunner.js +0 -1
  89. package/dist-server/server/services/worktreeManager.js +0 -1
  90. package/dist-server/server/types.d.ts +5 -0
  91. package/dist-server/server/types.d.ts.map +1 -1
  92. package/dist-server/server/types.js +0 -1
  93. package/dist-server/server/utils/pathSecurity.js +0 -1
  94. package/dist-server/src/services/budgetAllocator.js +0 -1
  95. package/dist-server/src/services/contradictionDetector.js +0 -1
  96. package/dist-server/src/services/treeIndexer.js +0 -1
  97. package/dist-server/src/store/knowledgeBase.d.ts +10 -0
  98. package/dist-server/src/store/knowledgeBase.d.ts.map +1 -1
  99. package/dist-server/src/store/knowledgeBase.js +13 -1
  100. package/dist-server/src/store/memoryStore.d.ts +107 -0
  101. package/dist-server/src/store/memoryStore.d.ts.map +1 -0
  102. package/dist-server/src/store/memoryStore.js +263 -0
  103. package/dist-server/tsconfig.server.tsbuildinfo +1 -1
  104. package/package.json +104 -97
  105. package/dist/assets/graphPopulator-DH0qM1Fu.js +0 -1
  106. package/dist/assets/index-B0RRTCSi.css +0 -1
  107. package/dist/assets/index-LWCi_4Hu.js +0 -662
@@ -1,27 +1,96 @@
1
1
  /**
2
- * Agent Store — Persistent agent state on disk
3
- * Directory: ~/.modular-studio/agents/
4
- * Each agent: {id}.json containing full state snapshot
2
+ * Agent Store — Persistent agent state on disk with versioning
3
+ * Directory: ~/.modular-studio/agents/{agentId}/
4
+ * Latest state: latest.json
5
+ * Versions: versions/{timestamp}-v{major}.{minor}.{patch}.json
5
6
  */
6
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, readdirSync } from 'node:fs';
7
8
  import { join } from 'node:path';
8
9
  import { homedir } from 'node:os';
9
10
  const AGENTS_DIR = join(homedir(), '.modular-studio', 'agents');
10
- function ensureDir() {
11
- if (!existsSync(AGENTS_DIR)) {
12
- mkdirSync(AGENTS_DIR, { recursive: true, mode: 0o755 });
11
+ function ensureDir(path) {
12
+ const dir = path || AGENTS_DIR;
13
+ if (!existsSync(dir)) {
14
+ mkdirSync(dir, { recursive: true, mode: 0o755 });
13
15
  }
14
16
  }
15
- function agentPath(id) {
17
+ function agentDir(id) {
16
18
  const safe = id.replace(/[^a-zA-Z0-9_-]/g, '_');
17
- return join(AGENTS_DIR, `${safe}.json`);
19
+ return join(AGENTS_DIR, safe);
20
+ }
21
+ function agentPath(id) {
22
+ return join(agentDir(id), 'latest.json');
23
+ }
24
+ function versionsDir(id) {
25
+ return join(agentDir(id), 'versions');
18
26
  }
19
27
  export function saveAgent(id, state) {
20
- ensureDir();
28
+ const dir = agentDir(id);
29
+ ensureDir(dir);
21
30
  state.id = id;
22
31
  state.savedAt = new Date().toISOString();
23
32
  writeFileSync(agentPath(id), JSON.stringify(state, null, 2), 'utf-8');
24
33
  }
34
+ export function createAgentVersion(id, version, label) {
35
+ const current = loadAgent(id);
36
+ if (!current)
37
+ return null;
38
+ const dir = versionsDir(id);
39
+ ensureDir(dir);
40
+ const timestamp = Date.now();
41
+ const versionData = {
42
+ id: `${timestamp}-${version.replace(/\./g, '_')}`,
43
+ version,
44
+ timestamp,
45
+ label,
46
+ snapshot: current,
47
+ };
48
+ const filename = `${timestamp}-v${version.replace(/\./g, '_')}.json`;
49
+ const path = join(dir, filename);
50
+ writeFileSync(path, JSON.stringify(versionData, null, 2), 'utf-8');
51
+ return versionData;
52
+ }
53
+ export function listAgentVersions(id) {
54
+ const dir = versionsDir(id);
55
+ if (!existsSync(dir))
56
+ return [];
57
+ const files = readdirSync(dir).filter(f => f.endsWith('.json'));
58
+ const versions = [];
59
+ for (const file of files) {
60
+ try {
61
+ const data = JSON.parse(readFileSync(join(dir, file), 'utf-8'));
62
+ versions.push(data);
63
+ }
64
+ catch {
65
+ // skip corrupt files
66
+ }
67
+ }
68
+ return versions.sort((a, b) => a.timestamp - b.timestamp);
69
+ }
70
+ export function getAgentVersion(id, version) {
71
+ const versions = listAgentVersions(id);
72
+ return versions.find(v => v.version === version) || null;
73
+ }
74
+ export function restoreAgentVersion(id, version) {
75
+ const versionData = getAgentVersion(id, version);
76
+ if (!versionData)
77
+ return false;
78
+ saveAgent(id, versionData.snapshot);
79
+ return true;
80
+ }
81
+ export function deleteAgentVersion(id, version) {
82
+ const versions = listAgentVersions(id);
83
+ const target = versions.find(v => v.version === version);
84
+ if (!target)
85
+ return false;
86
+ const dir = versionsDir(id);
87
+ const files = readdirSync(dir);
88
+ const targetFile = files.find(f => f.includes(version.replace(/\./g, '_')));
89
+ if (!targetFile)
90
+ return false;
91
+ unlinkSync(join(dir, targetFile));
92
+ return true;
93
+ }
25
94
  export function loadAgent(id) {
26
95
  const p = agentPath(id);
27
96
  if (!existsSync(p))
@@ -35,28 +104,52 @@ export function loadAgent(id) {
35
104
  }
36
105
  export function listAgents() {
37
106
  ensureDir();
38
- const files = readdirSync(AGENTS_DIR).filter((f) => f.endsWith('.json'));
107
+ const dirs = readdirSync(AGENTS_DIR, { withFileTypes: true })
108
+ .filter(d => d.isDirectory())
109
+ .map(d => d.name);
39
110
  const summaries = [];
40
- for (const file of files) {
111
+ for (const dir of dirs) {
41
112
  try {
42
- const raw = JSON.parse(readFileSync(join(AGENTS_DIR, file), 'utf-8'));
43
- summaries.push({
44
- id: raw.id ?? file.replace('.json', ''),
45
- agentMeta: raw.agentMeta ?? { name: '', description: '', icon: 'brain', category: 'general', tags: [], avatar: 'bot' },
46
- savedAt: raw.savedAt ?? '',
47
- });
113
+ const agent = loadAgent(dir);
114
+ if (agent) {
115
+ summaries.push({
116
+ id: agent.id,
117
+ agentMeta: agent.agentMeta,
118
+ savedAt: agent.savedAt,
119
+ currentVersion: agent.version || '0.1.0',
120
+ });
121
+ }
48
122
  }
49
123
  catch {
50
- // skip corrupt files
124
+ // skip corrupt agents
51
125
  }
52
126
  }
53
127
  return summaries;
54
128
  }
55
129
  export function deleteAgent(id) {
56
- const p = agentPath(id);
57
- if (!existsSync(p))
130
+ const dir = agentDir(id);
131
+ if (!existsSync(dir))
58
132
  return false;
59
- unlinkSync(p);
60
- return true;
133
+ try {
134
+ // Delete all version files
135
+ const vDir = versionsDir(id);
136
+ if (existsSync(vDir)) {
137
+ const files = readdirSync(vDir);
138
+ for (const file of files) {
139
+ unlinkSync(join(vDir, file));
140
+ }
141
+ unlinkSync(vDir);
142
+ }
143
+ // Delete latest.json
144
+ const latestPath = agentPath(id);
145
+ if (existsSync(latestPath)) {
146
+ unlinkSync(latestPath);
147
+ }
148
+ // Delete directory
149
+ unlinkSync(dir);
150
+ return true;
151
+ }
152
+ catch {
153
+ return false;
154
+ }
61
155
  }
62
- //# sourceMappingURL=agentStore.js.map
@@ -65,4 +65,3 @@ export function localSourceId(repoPath) {
65
65
  const sanitized = repoPath.replace(/[\\/]/g, '-').replace(/[^a-zA-Z0-9-]/g, '').replace(/-+/g, '-').replace(/^-|-$/g, '');
66
66
  return `local-${sanitized}`.toLowerCase();
67
67
  }
68
- //# sourceMappingURL=contentStore.js.map
@@ -23,6 +23,8 @@ declare class EmbeddingServiceImpl implements EmbeddingService {
23
23
  private cache;
24
24
  private maxCacheSize;
25
25
  initialize(): Promise<void>;
26
+ private static readonly MAX_RETRIES;
27
+ private static readonly RETRY_DELAYS_MS;
26
28
  private _doInitialize;
27
29
  isReady(): boolean;
28
30
  private hashText;
@@ -1 +1 @@
1
- {"version":3,"file":"embeddingService.d.ts","sourceRoot":"","sources":["../../../server/services/embeddingService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC3F,OAAO,IAAI,OAAO,CAAC;CACpB;AAOD,cAAM,oBAAqB,YAAW,gBAAgB;IACpD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAA8B;IAGjD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAS;IAEvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YASnB,aAAa;IAyB3B,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,qBAAqB;YAgBf,MAAM;IA0Cd,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ5C,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,gBAAgB;IAIlB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IA2DtD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IA4B5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE;IAgBpF,SAAS;;;;;;;CAUhB;AAGD,QAAA,MAAM,gBAAgB,sBAA6B,CAAC;AAEpD,4CAA4C;AAC5C,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"embeddingService.d.ts","sourceRoot":"","sources":["../../../server/services/embeddingService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC3F,OAAO,IAAI,OAAO,CAAC;CACpB;AAOD,cAAM,oBAAqB,YAAW,gBAAgB;IACpD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAA8B;IAGjD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAS;IAEvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAuB;YAEhD,aAAa;IAoC3B,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,qBAAqB;YAgBf,MAAM;IA0Cd,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ5C,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,gBAAgB;IAIlB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IA2DtD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IA4B5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE;IAgBpF,SAAS;;;;;;;CAUhB;AAGD,QAAA,MAAM,gBAAgB,sBAA6B,CAAC;AAEpD,4CAA4C;AAC5C,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,eAAe,gBAAgB,CAAC"}
@@ -21,25 +21,37 @@ class EmbeddingServiceImpl {
21
21
  this.initPromise = this._doInitialize();
22
22
  return this.initPromise;
23
23
  }
24
+ static MAX_RETRIES = 3;
25
+ static RETRY_DELAYS_MS = [2000, 5000, 10000];
24
26
  async _doInitialize() {
25
- try {
26
- console.log('[Embedding] Loading model Xenova/all-MiniLM-L6-v2...');
27
- const startTime = Date.now();
28
- // Dynamic import to avoid top-level side effects and enable mocking in tests
29
- // Note: sharp (image processing) is stubbed by postinstall script — we only need text embeddings
30
- const { pipeline, env } = await import('@huggingface/transformers');
31
- env.allowLocalModels = false;
32
- env.useBrowserCache = false;
33
- this.model = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');
34
- const loadTime = Date.now() - startTime;
35
- console.log(`[Embedding] Model loaded in ${loadTime}ms`);
36
- this.ready = true;
37
- }
38
- catch (error) {
39
- console.error('[Embedding] Failed to load model:', error);
40
- this.ready = false;
41
- this.initPromise = null; // Allow retry
42
- throw error;
27
+ const { pipeline, env } = await import('@huggingface/transformers');
28
+ env.allowLocalModels = true; // Use cached model if available
29
+ env.useBrowserCache = false;
30
+ for (let attempt = 0; attempt <= EmbeddingServiceImpl.MAX_RETRIES; attempt++) {
31
+ try {
32
+ const label = attempt === 0 ? '' : ` (retry ${attempt}/${EmbeddingServiceImpl.MAX_RETRIES})`;
33
+ console.log(`[Embedding] Loading model Xenova/all-MiniLM-L6-v2...${label}`);
34
+ const startTime = Date.now();
35
+ this.model = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');
36
+ const loadTime = Date.now() - startTime;
37
+ console.log(`[Embedding] Model loaded in ${loadTime}ms`);
38
+ this.ready = true;
39
+ return;
40
+ }
41
+ catch (error) {
42
+ const isNetworkError = error instanceof TypeError &&
43
+ (error.message.includes('fetch failed') || error.message.includes('ECONNRESET'));
44
+ if (isNetworkError && attempt < EmbeddingServiceImpl.MAX_RETRIES) {
45
+ const delay = EmbeddingServiceImpl.RETRY_DELAYS_MS[attempt];
46
+ console.warn(`[Embedding] Network error, retrying in ${delay}ms...`, error?.cause?.code ?? error);
47
+ await new Promise(resolve => setTimeout(resolve, delay));
48
+ continue;
49
+ }
50
+ console.error('[Embedding] Failed to load model after all attempts:', error);
51
+ this.ready = false;
52
+ this.initPromise = null; // Allow retry on next call
53
+ throw error;
54
+ }
43
55
  }
44
56
  }
45
57
  isReady() {
@@ -210,4 +222,3 @@ export function _resetForTesting() {
210
222
  }
211
223
  export { embeddingService };
212
224
  export default embeddingService;
213
- //# sourceMappingURL=embeddingService.js.map
@@ -123,4 +123,3 @@ ${agentOutput}`;
123
123
  access_count: 0,
124
124
  }));
125
125
  }
126
- //# sourceMappingURL=factExtractor.js.map
@@ -186,4 +186,3 @@ export async function indexMultipleRepos(repos) {
186
186
  }
187
187
  return results;
188
188
  }
189
- //# sourceMappingURL=githubIndexer.js.map
@@ -261,4 +261,3 @@ export async function listConnectedServers() {
261
261
  return true;
262
262
  });
263
263
  }
264
- //# sourceMappingURL=mcpOAuth.js.map
@@ -144,4 +144,3 @@ export function consolidateMemory(facts, now) {
144
144
  }
145
145
  return result;
146
146
  }
147
- //# sourceMappingURL=memoryScorer.js.map
@@ -509,4 +509,3 @@ export function generateKnowledgeBase(scan) {
509
509
  }
510
510
  return docs;
511
511
  }
512
- //# sourceMappingURL=repoIndexer.js.map
@@ -98,4 +98,3 @@ export async function deleteConversation(id) {
98
98
  d.run(`DELETE FROM conversations WHERE id = ?`, [id]);
99
99
  saveDb();
100
100
  }
101
- //# sourceMappingURL=sqliteStore.js.map
@@ -73,4 +73,3 @@ export async function runTeam(config, onProgress) {
73
73
  };
74
74
  }
75
75
  }
76
- //# sourceMappingURL=teamRunner.js.map
@@ -116,4 +116,3 @@ export function listTeamWorktrees(teamId) {
116
116
  .filter((name) => name.includes(`--${teamSlug}--`))
117
117
  .map((name) => join(TREE_ROOT, name));
118
118
  }
119
- //# sourceMappingURL=worktreeManager.js.map
@@ -18,9 +18,14 @@ export interface McpServerConfig {
18
18
  url?: string;
19
19
  headers?: Record<string, string>;
20
20
  }
21
+ export interface MemoryConfig {
22
+ backend: string;
23
+ connectionString?: string;
24
+ }
21
25
  export interface AppConfig {
22
26
  providers: ProviderConfig[];
23
27
  mcpServers: McpServerConfig[];
28
+ memory?: MemoryConfig;
24
29
  }
25
30
  export interface ApiResponse<T = unknown> {
26
31
  status: 'ok' | 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -75,4 +75,3 @@ export function validateFilePaths(filePaths, allowedDirs) {
75
75
  }
76
76
  }
77
77
  }
78
- //# sourceMappingURL=pathSecurity.js.map
@@ -117,4 +117,3 @@ export function allocateBudgets(sources, totalBudget) {
117
117
  }
118
118
  return allocations;
119
119
  }
120
- //# sourceMappingURL=budgetAllocator.js.map
@@ -108,4 +108,3 @@ export function resolveContradictions(sources) {
108
108
  contradictionsFound
109
109
  };
110
110
  }
111
- //# sourceMappingURL=contradictionDetector.js.map
@@ -286,4 +286,3 @@ export function indexFlat(source, text, sourceType = 'flat') {
286
286
  created: Date.now(),
287
287
  };
288
288
  }
289
- //# sourceMappingURL=treeIndexer.js.map
@@ -42,6 +42,14 @@ export declare const DEPTH_LEVELS: {
42
42
  label: DepthLevel;
43
43
  pct: number;
44
44
  }[];
45
+ /** Depth as continuous percentage (10-100). Used by UI depth slider. */
46
+ export declare const DEPTH_MIN = 10;
47
+ export declare const DEPTH_MAX = 100;
48
+ export declare const DEPTH_STEP = 10;
49
+ /** Convert depth percentage (10-100) to fraction (0.1-1.0) */
50
+ export declare function depthPctToFraction(depthPct: number): number;
51
+ /** Convert legacy depth index (0-4) to depth percentage (10-100) */
52
+ export declare function legacyDepthToPercent(depthIndex: number): number;
45
53
  export interface ChannelConfig {
46
54
  sourceId: string;
47
55
  name: string;
@@ -60,6 +68,8 @@ export interface ChannelConfig {
60
68
  features: string[];
61
69
  };
62
70
  contentSourceId?: string;
71
+ effectiveTokens?: number;
72
+ hint?: string;
63
73
  }
64
74
  export type PlanningMode = 'single-shot' | 'chain-of-thought' | 'react';
65
75
  export interface AgentConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"knowledgeBase.d.ts","sourceRoot":"","sources":["../../../src/store/knowledgeBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledgeBase.d.ts","sourceRoot":"","sources":["../../../src/store/knowledgeBase.ts"],"names":[],"mappings":"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"}
@@ -171,6 +171,19 @@ export const DEPTH_LEVELS = [
171
171
  { label: 'Headlines', pct: 0.25 },
172
172
  { label: 'Mention', pct: 0.1 },
173
173
  ];
174
+ /** Depth as continuous percentage (10-100). Used by UI depth slider. */
175
+ export const DEPTH_MIN = 10;
176
+ export const DEPTH_MAX = 100;
177
+ export const DEPTH_STEP = 10;
178
+ /** Convert depth percentage (10-100) to fraction (0.1-1.0) */
179
+ export function depthPctToFraction(depthPct) {
180
+ return Math.max(0.1, Math.min(1.0, depthPct / 100));
181
+ }
182
+ /** Convert legacy depth index (0-4) to depth percentage (10-100) */
183
+ export function legacyDepthToPercent(depthIndex) {
184
+ const pct = DEPTH_LEVELS[depthIndex]?.pct ?? 1.0;
185
+ return Math.round(pct * 100);
186
+ }
174
187
  export const DEFAULT_AGENT_CONFIG = {
175
188
  model: 'claude-opus-4',
176
189
  temperature: 0.7,
@@ -296,4 +309,3 @@ export const PRESETS = [
296
309
  ],
297
310
  },
298
311
  ];
299
- //# sourceMappingURL=knowledgeBase.js.map
@@ -0,0 +1,107 @@
1
+ export type SessionStrategy = 'full' | 'sliding_window' | 'summarize_and_recent' | 'rag';
2
+ export type SummaryModel = 'same' | 'fast';
3
+ export type StoreBackend = 'local_sqlite' | 'postgres' | 'redis' | 'chromadb' | 'pinecone' | 'custom';
4
+ export type EmbeddingModel = 'text-embedding-3-small' | 'text-embedding-3-large' | 'voyage-3' | 'custom';
5
+ export type RecallStrategy = 'top_k' | 'threshold' | 'hybrid';
6
+ export type WriteMode = 'auto_extract' | 'explicit' | 'both';
7
+ export type ExtractType = 'user_preferences' | 'decisions' | 'facts' | 'feedback' | 'entities';
8
+ export type MemoryScope = 'per_user' | 'per_agent' | 'global';
9
+ export type WorkingFormat = 'json' | 'markdown' | 'freeform';
10
+ export type FactType = 'preference' | 'decision' | 'fact' | 'entity' | 'custom';
11
+ export type MemoryDomain = 'shared' | 'agent_private' | 'run_scratchpad';
12
+ export type SandboxIsolation = 'reset_each_run' | 'persistent_sandbox' | 'clone_from_shared';
13
+ export type FactGranularity = 'raw' | 'fact' | 'episode';
14
+ export interface Fact {
15
+ id: string;
16
+ content: string;
17
+ tags: string[];
18
+ type: FactType;
19
+ timestamp: number;
20
+ domain: MemoryDomain;
21
+ granularity: FactGranularity;
22
+ embedding?: number[];
23
+ embeddingPending?: boolean;
24
+ /** Owner agent ID — used to scope agent_private facts */
25
+ ownerAgentId?: string;
26
+ }
27
+ export interface SandboxConfig {
28
+ isolation: SandboxIsolation;
29
+ allowPromoteToShared: boolean;
30
+ domains: {
31
+ shared: {
32
+ enabled: boolean;
33
+ };
34
+ agentPrivate: {
35
+ enabled: boolean;
36
+ };
37
+ runScratchpad: {
38
+ enabled: boolean;
39
+ };
40
+ };
41
+ }
42
+ export interface SessionMemoryConfig {
43
+ strategy: SessionStrategy;
44
+ windowSize: number;
45
+ summarizeAfter: number;
46
+ summaryModel: SummaryModel;
47
+ tokenBudget: number;
48
+ maxMessages: number;
49
+ summarizeEnabled: boolean;
50
+ }
51
+ export interface RecallConfig {
52
+ strategy: RecallStrategy;
53
+ k: number;
54
+ minScore: number;
55
+ }
56
+ export interface WriteConfig {
57
+ mode: WriteMode;
58
+ extractTypes: ExtractType[];
59
+ }
60
+ export interface LongTermMemoryConfig {
61
+ enabled: boolean;
62
+ store: StoreBackend;
63
+ embeddingModel: EmbeddingModel;
64
+ recall: RecallConfig;
65
+ write: WriteConfig;
66
+ scope: MemoryScope;
67
+ maxEntries: number;
68
+ ttl: string | null;
69
+ tokenBudget: number;
70
+ }
71
+ export interface WorkingMemoryConfig {
72
+ enabled: boolean;
73
+ maxTokens: number;
74
+ persist: boolean;
75
+ format: WorkingFormat;
76
+ content: string;
77
+ tokenBudget: number;
78
+ }
79
+ export interface MemoryState {
80
+ session: SessionMemoryConfig;
81
+ longTerm: LongTermMemoryConfig;
82
+ working: WorkingMemoryConfig;
83
+ facts: Fact[];
84
+ sandbox: SandboxConfig;
85
+ sessionMemory: SessionMemoryConfig;
86
+ longTermMemory: Fact[];
87
+ workingMemory: string;
88
+ setSessionConfig: (patch: Partial<SessionMemoryConfig>) => void;
89
+ setLongTermConfig: (patch: Partial<LongTermMemoryConfig>) => void;
90
+ setRecallConfig: (patch: Partial<RecallConfig>) => void;
91
+ setWriteConfig: (patch: Partial<WriteConfig>) => void;
92
+ toggleExtractType: (type: ExtractType) => void;
93
+ setWorkingConfig: (patch: Partial<WorkingMemoryConfig>) => void;
94
+ updateScratchpad: (text: string) => void;
95
+ addFact: (content: string, tags?: string[], type?: FactType, domain?: MemoryDomain, granularity?: FactGranularity, ownerAgentId?: string) => void;
96
+ removeFact: (id: string) => void;
97
+ updateFact: (id: string, patch: Partial<Omit<Fact, 'id'>>) => void;
98
+ addEpisode: (summary: string, tags?: string[]) => void;
99
+ computeEmbeddings: () => Promise<void>;
100
+ setSandboxConfig: (patch: Partial<SandboxConfig>) => void;
101
+ setSandboxDomain: (domain: keyof SandboxConfig['domains'], enabled: boolean) => void;
102
+ getFactsByDomain: (domain: MemoryDomain) => Fact[];
103
+ getRecallableFacts: (agentId?: string) => Fact[];
104
+ toYaml: () => Record<string, unknown>;
105
+ }
106
+ export declare const useMemoryStore: import("zustand").UseBoundStore<import("zustand").StoreApi<MemoryState>>;
107
+ //# sourceMappingURL=memoryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../../src/store/memoryStore.ts"],"names":[],"mappings":"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"}