noterai 0.1.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.
- package/README.md +368 -0
- package/bin/noter.js +218 -0
- package/bin/noter.js.map +1 -0
- package/package.json +73 -0
- package/packages/client/dist/assets/geist-mono-latin-400-normal-CoULgQGM.woff +0 -0
- package/packages/client/dist/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2 +0 -0
- package/packages/client/dist/assets/index-CBiNAMaA.js +264 -0
- package/packages/client/dist/assets/index-u7i5Fle2.css +1 -0
- package/packages/client/dist/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff +0 -0
- package/packages/client/dist/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
- package/packages/client/dist/assets/space-grotesk-latin-600-normal-BflQw4A9.woff +0 -0
- package/packages/client/dist/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2 +0 -0
- package/packages/client/dist/assets/vendor-react-DHeZC_T5.js +17 -0
- package/packages/client/dist/index.html +14 -0
- package/packages/server/dist/adapters/claudeAdapter.d.ts +34 -0
- package/packages/server/dist/adapters/claudeAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/claudeAdapter.js +281 -0
- package/packages/server/dist/adapters/claudeAdapter.js.map +1 -0
- package/packages/server/dist/adapters/codexAdapter.d.ts +39 -0
- package/packages/server/dist/adapters/codexAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/codexAdapter.js +347 -0
- package/packages/server/dist/adapters/codexAdapter.js.map +1 -0
- package/packages/server/dist/adapters/droidAdapter.d.ts +34 -0
- package/packages/server/dist/adapters/droidAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/droidAdapter.js +109 -0
- package/packages/server/dist/adapters/droidAdapter.js.map +1 -0
- package/packages/server/dist/adapters/genericAdapter.d.ts +50 -0
- package/packages/server/dist/adapters/genericAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/genericAdapter.js +203 -0
- package/packages/server/dist/adapters/genericAdapter.js.map +1 -0
- package/packages/server/dist/adapters/index.d.ts +7 -0
- package/packages/server/dist/adapters/index.d.ts.map +1 -0
- package/packages/server/dist/adapters/index.js +7 -0
- package/packages/server/dist/adapters/index.js.map +1 -0
- package/packages/server/dist/adapters/opencodeAdapter.d.ts +28 -0
- package/packages/server/dist/adapters/opencodeAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/opencodeAdapter.js +265 -0
- package/packages/server/dist/adapters/opencodeAdapter.js.map +1 -0
- package/packages/server/dist/adapters/opencodeSessionManager.d.ts +13 -0
- package/packages/server/dist/adapters/opencodeSessionManager.d.ts.map +1 -0
- package/packages/server/dist/adapters/opencodeSessionManager.js +230 -0
- package/packages/server/dist/adapters/opencodeSessionManager.js.map +1 -0
- package/packages/server/dist/adapters/pathUtils.d.ts +54 -0
- package/packages/server/dist/adapters/pathUtils.d.ts.map +1 -0
- package/packages/server/dist/adapters/pathUtils.js +86 -0
- package/packages/server/dist/adapters/pathUtils.js.map +1 -0
- package/packages/server/dist/adapters/piAdapter.d.ts +34 -0
- package/packages/server/dist/adapters/piAdapter.d.ts.map +1 -0
- package/packages/server/dist/adapters/piAdapter.js +307 -0
- package/packages/server/dist/adapters/piAdapter.js.map +1 -0
- package/packages/server/dist/autoDetect.d.ts +15 -0
- package/packages/server/dist/autoDetect.d.ts.map +1 -0
- package/packages/server/dist/autoDetect.js +102 -0
- package/packages/server/dist/autoDetect.js.map +1 -0
- package/packages/server/dist/config.d.ts +29 -0
- package/packages/server/dist/config.d.ts.map +1 -0
- package/packages/server/dist/config.js +96 -0
- package/packages/server/dist/config.js.map +1 -0
- package/packages/server/dist/eventStore.d.ts +14 -0
- package/packages/server/dist/eventStore.d.ts.map +1 -0
- package/packages/server/dist/eventStore.js +35 -0
- package/packages/server/dist/eventStore.js.map +1 -0
- package/packages/server/dist/hookWatcher.d.ts +24 -0
- package/packages/server/dist/hookWatcher.d.ts.map +1 -0
- package/packages/server/dist/hookWatcher.js +152 -0
- package/packages/server/dist/hookWatcher.js.map +1 -0
- package/packages/server/dist/index.d.ts +58 -0
- package/packages/server/dist/index.d.ts.map +1 -0
- package/packages/server/dist/index.js +527 -0
- package/packages/server/dist/index.js.map +1 -0
- package/packages/server/dist/llm/jsonExtractor.d.ts +39 -0
- package/packages/server/dist/llm/jsonExtractor.d.ts.map +1 -0
- package/packages/server/dist/llm/jsonExtractor.js +83 -0
- package/packages/server/dist/llm/jsonExtractor.js.map +1 -0
- package/packages/server/dist/llm/ollamaCache.d.ts +19 -0
- package/packages/server/dist/llm/ollamaCache.d.ts.map +1 -0
- package/packages/server/dist/llm/ollamaCache.js +31 -0
- package/packages/server/dist/llm/ollamaCache.js.map +1 -0
- package/packages/server/dist/llm/ollamaClient.d.ts +29 -0
- package/packages/server/dist/llm/ollamaClient.d.ts.map +1 -0
- package/packages/server/dist/llm/ollamaClient.js +117 -0
- package/packages/server/dist/llm/ollamaClient.js.map +1 -0
- package/packages/server/dist/llm/ollamaQueue.d.ts +7 -0
- package/packages/server/dist/llm/ollamaQueue.d.ts.map +1 -0
- package/packages/server/dist/llm/ollamaQueue.js +28 -0
- package/packages/server/dist/llm/ollamaQueue.js.map +1 -0
- package/packages/server/dist/llm/promptBuilder.d.ts +8 -0
- package/packages/server/dist/llm/promptBuilder.d.ts.map +1 -0
- package/packages/server/dist/llm/promptBuilder.js +85 -0
- package/packages/server/dist/llm/promptBuilder.js.map +1 -0
- package/packages/server/dist/llm/promptSections.d.ts +64 -0
- package/packages/server/dist/llm/promptSections.d.ts.map +1 -0
- package/packages/server/dist/llm/promptSections.js +128 -0
- package/packages/server/dist/llm/promptSections.js.map +1 -0
- package/packages/server/dist/llm/providerModels.d.ts +14 -0
- package/packages/server/dist/llm/providerModels.d.ts.map +1 -0
- package/packages/server/dist/llm/providerModels.js +67 -0
- package/packages/server/dist/llm/providerModels.js.map +1 -0
- package/packages/server/dist/llm/suggester.d.ts +12 -0
- package/packages/server/dist/llm/suggester.d.ts.map +1 -0
- package/packages/server/dist/llm/suggester.js +263 -0
- package/packages/server/dist/llm/suggester.js.map +1 -0
- package/packages/server/dist/llm/summarizer.d.ts +53 -0
- package/packages/server/dist/llm/summarizer.d.ts.map +1 -0
- package/packages/server/dist/llm/summarizer.js +174 -0
- package/packages/server/dist/llm/summarizer.js.map +1 -0
- package/packages/server/dist/persistence.d.ts +42 -0
- package/packages/server/dist/persistence.d.ts.map +1 -0
- package/packages/server/dist/persistence.js +103 -0
- package/packages/server/dist/persistence.js.map +1 -0
- package/packages/server/dist/repoContext.d.ts +60 -0
- package/packages/server/dist/repoContext.d.ts.map +1 -0
- package/packages/server/dist/repoContext.js +197 -0
- package/packages/server/dist/repoContext.js.map +1 -0
- package/packages/server/dist/routes/blueprint.d.ts +7 -0
- package/packages/server/dist/routes/blueprint.d.ts.map +1 -0
- package/packages/server/dist/routes/blueprint.js +529 -0
- package/packages/server/dist/routes/blueprint.js.map +1 -0
- package/packages/server/dist/routes/config.d.ts +17 -0
- package/packages/server/dist/routes/config.d.ts.map +1 -0
- package/packages/server/dist/routes/config.js +282 -0
- package/packages/server/dist/routes/config.js.map +1 -0
- package/packages/server/dist/routes/lmstudio.d.ts +4 -0
- package/packages/server/dist/routes/lmstudio.d.ts.map +1 -0
- package/packages/server/dist/routes/lmstudio.js +67 -0
- package/packages/server/dist/routes/lmstudio.js.map +1 -0
- package/packages/server/dist/routes/notes.d.ts +5 -0
- package/packages/server/dist/routes/notes.d.ts.map +1 -0
- package/packages/server/dist/routes/notes.js +60 -0
- package/packages/server/dist/routes/notes.js.map +1 -0
- package/packages/server/dist/routes/ollama.d.ts +4 -0
- package/packages/server/dist/routes/ollama.d.ts.map +1 -0
- package/packages/server/dist/routes/ollama.js +207 -0
- package/packages/server/dist/routes/ollama.js.map +1 -0
- package/packages/server/dist/routes/prompt.d.ts +4 -0
- package/packages/server/dist/routes/prompt.d.ts.map +1 -0
- package/packages/server/dist/routes/prompt.js +75 -0
- package/packages/server/dist/routes/prompt.js.map +1 -0
- package/packages/server/dist/routes/refineNotes.d.ts +4 -0
- package/packages/server/dist/routes/refineNotes.d.ts.map +1 -0
- package/packages/server/dist/routes/refineNotes.js +87 -0
- package/packages/server/dist/routes/refineNotes.js.map +1 -0
- package/packages/server/dist/routes/repoContext.d.ts +3 -0
- package/packages/server/dist/routes/repoContext.d.ts.map +1 -0
- package/packages/server/dist/routes/repoContext.js +15 -0
- package/packages/server/dist/routes/repoContext.js.map +1 -0
- package/packages/server/dist/routes/sessions.d.ts +15 -0
- package/packages/server/dist/routes/sessions.d.ts.map +1 -0
- package/packages/server/dist/routes/sessions.js +420 -0
- package/packages/server/dist/routes/sessions.js.map +1 -0
- package/packages/server/dist/routes/summarize.d.ts +6 -0
- package/packages/server/dist/routes/summarize.d.ts.map +1 -0
- package/packages/server/dist/routes/summarize.js +85 -0
- package/packages/server/dist/routes/summarize.js.map +1 -0
- package/packages/server/dist/server.d.ts +2 -0
- package/packages/server/dist/server.d.ts.map +1 -0
- package/packages/server/dist/server.js +6 -0
- package/packages/server/dist/server.js.map +1 -0
- package/packages/server/dist/sessionManager.d.ts +41 -0
- package/packages/server/dist/sessionManager.d.ts.map +1 -0
- package/packages/server/dist/sessionManager.js +493 -0
- package/packages/server/dist/sessionManager.js.map +1 -0
- package/packages/server/dist/sessionScanner.d.ts +22 -0
- package/packages/server/dist/sessionScanner.d.ts.map +1 -0
- package/packages/server/dist/sessionScanner.js +165 -0
- package/packages/server/dist/sessionScanner.js.map +1 -0
- package/packages/server/dist/sessionTitle.d.ts +17 -0
- package/packages/server/dist/sessionTitle.d.ts.map +1 -0
- package/packages/server/dist/sessionTitle.js +321 -0
- package/packages/server/dist/sessionTitle.js.map +1 -0
- package/packages/server/dist/stateManager.d.ts +38 -0
- package/packages/server/dist/stateManager.d.ts.map +1 -0
- package/packages/server/dist/stateManager.js +83 -0
- package/packages/server/dist/stateManager.js.map +1 -0
- package/packages/server/dist/wsServer.d.ts +27 -0
- package/packages/server/dist/wsServer.d.ts.map +1 -0
- package/packages/server/dist/wsServer.js +144 -0
- package/packages/server/dist/wsServer.js.map +1 -0
- package/packages/shared/dist/index.d.ts +3 -0
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +3 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/shared/dist/llm/mambaDetect.d.ts +84 -0
- package/packages/shared/dist/llm/mambaDetect.d.ts.map +1 -0
- package/packages/shared/dist/llm/mambaDetect.js +205 -0
- package/packages/shared/dist/llm/mambaDetect.js.map +1 -0
- package/packages/shared/dist/types.d.ts +184 -0
- package/packages/shared/dist/types.d.ts.map +1 -0
- package/packages/shared/dist/types.js +2 -0
- package/packages/shared/dist/types.js.map +1 -0
- package/scripts/postbuild.js +70 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { stateManager } from '../stateManager.js';
|
|
4
|
+
import { clearOllamaCache } from '../llm/ollamaCache.js';
|
|
5
|
+
import { saveSettings } from '../persistence.js';
|
|
6
|
+
const ConfigUpdateSchema = z.object({
|
|
7
|
+
activeSource: z.enum(['auto', 'opencode', 'claude-code', 'codex', 'factory-droid', 'pi', 'generic']).optional(),
|
|
8
|
+
llmProvider: z.enum(['ollama', 'anthropic', 'openai', 'gemini', 'lm-studio', 'custom']).optional(),
|
|
9
|
+
apiKey: z.string().min(1).optional(),
|
|
10
|
+
ollamaModel: z.string().min(1).optional(),
|
|
11
|
+
genericLogPath: z.string().min(1).optional(),
|
|
12
|
+
context7ApiKey: z.string().min(1).optional(),
|
|
13
|
+
exaApiKey: z.string().min(1).optional(),
|
|
14
|
+
lmStudioBaseUrl: z.string().min(1).optional(),
|
|
15
|
+
lmStudioModel: z.string().min(1).optional(),
|
|
16
|
+
ollamaContextSize: z.string().optional(),
|
|
17
|
+
lmStudioContextSize: z.string().optional(),
|
|
18
|
+
customProviderName: z.string().min(1).optional(),
|
|
19
|
+
customProviderBaseUrl: z.string().min(1).optional(),
|
|
20
|
+
customProviderApiKey: z.string().min(1).optional(),
|
|
21
|
+
customProviderModel: z.string().min(1).optional(),
|
|
22
|
+
}).strict();
|
|
23
|
+
export function createConfigRouter(cfg, ws, _eventStore, _summarizer, deps) {
|
|
24
|
+
const router = Router();
|
|
25
|
+
const { controller, onSourceChange } = deps;
|
|
26
|
+
router.post('/', async (req, res) => {
|
|
27
|
+
const parseResult = ConfigUpdateSchema.safeParse(req.body);
|
|
28
|
+
if (!parseResult.success) {
|
|
29
|
+
res.status(400).json({
|
|
30
|
+
error: `Validation failed: ${parseResult.error.issues.map((i) => i.message).join(', ')}`,
|
|
31
|
+
});
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const updates = parseResult.data;
|
|
35
|
+
const changedFields = [];
|
|
36
|
+
if (updates.activeSource !== undefined && updates.activeSource !== cfg.activeSource) {
|
|
37
|
+
cfg.activeSource = updates.activeSource;
|
|
38
|
+
changedFields.push('activeSource');
|
|
39
|
+
// Notify the server so it can update sourceInfo and reset sessionConnected
|
|
40
|
+
onSourceChange?.(cfg.activeSource);
|
|
41
|
+
// Fire-and-forget adapter swap — return immediately, let background work complete asynchronously
|
|
42
|
+
void (async () => {
|
|
43
|
+
// Trigger adapter swap via controller callback
|
|
44
|
+
const currentAdapters = controller.getAdapters();
|
|
45
|
+
// Stop all current adapters
|
|
46
|
+
for (const [key, adapter] of Object.entries(currentAdapters)) {
|
|
47
|
+
if (adapter && typeof adapter.stop === 'function') {
|
|
48
|
+
await adapter.stop().catch(() => { });
|
|
49
|
+
}
|
|
50
|
+
else if (adapter && typeof adapter.disconnect === 'function') {
|
|
51
|
+
adapter.disconnect();
|
|
52
|
+
}
|
|
53
|
+
controller.removeAdapter(key);
|
|
54
|
+
}
|
|
55
|
+
// Restart adapters for new source — reuse logic from createApp via dynamic import to avoid circular deps
|
|
56
|
+
const { createOpenCodeAdapter } = await import('../adapters/opencodeAdapter.js');
|
|
57
|
+
const { createClaudeAdapter } = await import('../adapters/claudeAdapter.js');
|
|
58
|
+
const { createCodexAdapter } = await import('../adapters/codexAdapter.js');
|
|
59
|
+
const { createDroidAdapter } = await import('../adapters/droidAdapter.js');
|
|
60
|
+
const { createPiAdapter } = await import('../adapters/piAdapter.js');
|
|
61
|
+
const { createGenericAdapter } = await import('../adapters/genericAdapter.js');
|
|
62
|
+
const source = cfg.activeSource;
|
|
63
|
+
const opencodeEnabled = source === 'opencode';
|
|
64
|
+
const claudeEnabled = source === 'claude-code';
|
|
65
|
+
const codexEnabled = source === 'codex';
|
|
66
|
+
const droidEnabled = source === 'factory-droid';
|
|
67
|
+
const piEnabled = source === 'pi';
|
|
68
|
+
const genericEnabled = source === 'generic';
|
|
69
|
+
if (opencodeEnabled) {
|
|
70
|
+
try {
|
|
71
|
+
const adapter = createOpenCodeAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer });
|
|
72
|
+
controller.setAdapter('openCode', adapter);
|
|
73
|
+
adapter.connect().catch((err) => console.error('[ConfigRouter] Failed to connect OpenCode adapter:', err));
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error('[ConfigRouter] Failed to initialize OpenCode adapter:', err);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
controller.removeAdapter('openCode');
|
|
81
|
+
}
|
|
82
|
+
if (claudeEnabled) {
|
|
83
|
+
try {
|
|
84
|
+
const adapter = createClaudeAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer });
|
|
85
|
+
controller.setAdapter('claude', adapter);
|
|
86
|
+
adapter.start().catch((err) => console.error('[ConfigRouter] Failed to start Claude adapter:', err));
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error('[ConfigRouter] Failed to initialize Claude adapter:', err);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
controller.removeAdapter('claude');
|
|
94
|
+
}
|
|
95
|
+
if (codexEnabled) {
|
|
96
|
+
try {
|
|
97
|
+
const adapter = createCodexAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer, sessionDir: cfg.codexSessionDir });
|
|
98
|
+
controller.setAdapter('codex', adapter);
|
|
99
|
+
adapter.start().catch((err) => console.error('[ConfigRouter] Failed to start Codex adapter:', err));
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error('[ConfigRouter] Failed to initialize Codex adapter:', err);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
controller.removeAdapter('codex');
|
|
107
|
+
}
|
|
108
|
+
if (droidEnabled) {
|
|
109
|
+
try {
|
|
110
|
+
const adapter = createDroidAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer });
|
|
111
|
+
controller.setAdapter('droid', adapter);
|
|
112
|
+
adapter.start().catch((err) => console.error('[ConfigRouter] Failed to start Droid adapter:', err));
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
console.error('[ConfigRouter] Failed to start Droid adapter:', err);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
controller.removeAdapter('droid');
|
|
120
|
+
}
|
|
121
|
+
if (piEnabled) {
|
|
122
|
+
try {
|
|
123
|
+
const adapter = createPiAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer, sessionDir: cfg.piSessionDir });
|
|
124
|
+
controller.setAdapter('pi', adapter);
|
|
125
|
+
adapter.start().catch((err) => console.error('[ConfigRouter] Failed to start Pi adapter:', err));
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
console.error('[ConfigRouter] Failed to initialize Pi adapter:', err);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
controller.removeAdapter('pi');
|
|
133
|
+
}
|
|
134
|
+
if (genericEnabled) {
|
|
135
|
+
try {
|
|
136
|
+
const adapter = createGenericAdapter({ config: cfg, eventStore: _eventStore, ws, summarizer: _summarizer });
|
|
137
|
+
controller.setAdapter('generic', adapter);
|
|
138
|
+
adapter.start().catch((err) => console.error('[ConfigRouter] Failed to start Generic adapter:', err));
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
console.error('[ConfigRouter] Failed to initialize Generic adapter:', err);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
controller.removeAdapter('generic');
|
|
146
|
+
}
|
|
147
|
+
})();
|
|
148
|
+
}
|
|
149
|
+
if (updates.apiKey !== undefined) {
|
|
150
|
+
const targetProvider = updates.llmProvider ?? cfg.llmProvider;
|
|
151
|
+
if (targetProvider === 'anthropic') {
|
|
152
|
+
cfg.anthropicApiKey = updates.apiKey;
|
|
153
|
+
}
|
|
154
|
+
else if (targetProvider === 'openai') {
|
|
155
|
+
cfg.openaiApiKey = updates.apiKey;
|
|
156
|
+
}
|
|
157
|
+
else if (targetProvider === 'gemini') {
|
|
158
|
+
cfg.geminiApiKey = updates.apiKey;
|
|
159
|
+
}
|
|
160
|
+
else if (targetProvider === 'lm-studio') {
|
|
161
|
+
// LM Studio typically doesn't need an API key, but store it if provided
|
|
162
|
+
}
|
|
163
|
+
else if (targetProvider === 'custom') {
|
|
164
|
+
cfg.customProviderApiKey = updates.apiKey;
|
|
165
|
+
}
|
|
166
|
+
changedFields.push('apiKey');
|
|
167
|
+
clearOllamaCache();
|
|
168
|
+
}
|
|
169
|
+
if (updates.llmProvider !== undefined && updates.llmProvider !== cfg.llmProvider) {
|
|
170
|
+
cfg.llmProvider = updates.llmProvider;
|
|
171
|
+
changedFields.push('llmProvider');
|
|
172
|
+
clearOllamaCache();
|
|
173
|
+
}
|
|
174
|
+
if (updates.ollamaModel !== undefined && updates.ollamaModel !== cfg.ollamaModel) {
|
|
175
|
+
cfg.ollamaModel = updates.ollamaModel;
|
|
176
|
+
changedFields.push('ollamaModel');
|
|
177
|
+
clearOllamaCache();
|
|
178
|
+
}
|
|
179
|
+
if (updates.genericLogPath !== undefined && updates.genericLogPath !== cfg.genericLogPath) {
|
|
180
|
+
cfg.genericLogPath = updates.genericLogPath;
|
|
181
|
+
changedFields.push('genericLogPath');
|
|
182
|
+
}
|
|
183
|
+
if (updates.context7ApiKey !== undefined && updates.context7ApiKey !== cfg.context7ApiKey) {
|
|
184
|
+
cfg.context7ApiKey = updates.context7ApiKey;
|
|
185
|
+
changedFields.push('context7ApiKey');
|
|
186
|
+
}
|
|
187
|
+
if (updates.exaApiKey !== undefined && updates.exaApiKey !== cfg.exaApiKey) {
|
|
188
|
+
cfg.exaApiKey = updates.exaApiKey;
|
|
189
|
+
changedFields.push('exaApiKey');
|
|
190
|
+
}
|
|
191
|
+
if (updates.lmStudioBaseUrl !== undefined && updates.lmStudioBaseUrl !== cfg.lmStudioBaseUrl) {
|
|
192
|
+
cfg.lmStudioBaseUrl = updates.lmStudioBaseUrl;
|
|
193
|
+
changedFields.push('lmStudioBaseUrl');
|
|
194
|
+
clearOllamaCache();
|
|
195
|
+
}
|
|
196
|
+
if (updates.lmStudioModel !== undefined && updates.lmStudioModel !== cfg.lmStudioModel) {
|
|
197
|
+
cfg.lmStudioModel = updates.lmStudioModel;
|
|
198
|
+
changedFields.push('lmStudioModel');
|
|
199
|
+
}
|
|
200
|
+
if (updates.ollamaContextSize !== undefined) {
|
|
201
|
+
// Store in memory only (AppConfig doesn't have ollamaContextSize field yet)
|
|
202
|
+
// Client reads this from its own localStorage
|
|
203
|
+
changedFields.push('ollamaContextSize');
|
|
204
|
+
}
|
|
205
|
+
if (updates.lmStudioContextSize !== undefined) {
|
|
206
|
+
// Store in memory only
|
|
207
|
+
changedFields.push('lmStudioContextSize');
|
|
208
|
+
}
|
|
209
|
+
if (updates.customProviderName !== undefined && updates.customProviderName !== cfg.customProviderName) {
|
|
210
|
+
cfg.customProviderName = updates.customProviderName;
|
|
211
|
+
changedFields.push('customProviderName');
|
|
212
|
+
}
|
|
213
|
+
if (updates.customProviderBaseUrl !== undefined && updates.customProviderBaseUrl !== cfg.customProviderBaseUrl) {
|
|
214
|
+
cfg.customProviderBaseUrl = updates.customProviderBaseUrl;
|
|
215
|
+
changedFields.push('customProviderBaseUrl');
|
|
216
|
+
clearOllamaCache();
|
|
217
|
+
}
|
|
218
|
+
if (updates.customProviderApiKey !== undefined && updates.customProviderApiKey !== cfg.customProviderApiKey) {
|
|
219
|
+
cfg.customProviderApiKey = updates.customProviderApiKey;
|
|
220
|
+
changedFields.push('customProviderApiKey');
|
|
221
|
+
}
|
|
222
|
+
if (updates.customProviderModel !== undefined && updates.customProviderModel !== cfg.customProviderModel) {
|
|
223
|
+
cfg.customProviderModel = updates.customProviderModel;
|
|
224
|
+
changedFields.push('customProviderModel');
|
|
225
|
+
}
|
|
226
|
+
// Update state manager snapshot so sync messages include new config
|
|
227
|
+
stateManager.setConfigSnapshot({
|
|
228
|
+
activeSource: cfg.activeSource,
|
|
229
|
+
resolvedSource: cfg.activeSource === 'auto' ? undefined : cfg.activeSource,
|
|
230
|
+
llmProvider: cfg.llmProvider,
|
|
231
|
+
ollamaModel: cfg.ollamaModel,
|
|
232
|
+
genericLogPath: cfg.genericLogPath,
|
|
233
|
+
lmStudioBaseUrl: cfg.lmStudioBaseUrl,
|
|
234
|
+
lmStudioModel: cfg.lmStudioModel,
|
|
235
|
+
customProviderName: cfg.customProviderName,
|
|
236
|
+
customProviderBaseUrl: cfg.customProviderBaseUrl,
|
|
237
|
+
customProviderModel: cfg.customProviderModel,
|
|
238
|
+
});
|
|
239
|
+
// Broadcast updated sync to all connected clients
|
|
240
|
+
ws.broadcast({
|
|
241
|
+
type: 'sync',
|
|
242
|
+
payload: { ...stateManager.getState(), events: _eventStore.getAll() },
|
|
243
|
+
});
|
|
244
|
+
// Persist settings to disk so they survive server restart
|
|
245
|
+
if (changedFields.length > 0) {
|
|
246
|
+
const persisted = {
|
|
247
|
+
activeSource: cfg.activeSource,
|
|
248
|
+
llmProvider: cfg.llmProvider,
|
|
249
|
+
ollamaModel: cfg.ollamaModel,
|
|
250
|
+
genericLogPath: cfg.genericLogPath,
|
|
251
|
+
context7ApiKey: cfg.context7ApiKey,
|
|
252
|
+
exaApiKey: cfg.exaApiKey,
|
|
253
|
+
lmStudioBaseUrl: cfg.lmStudioBaseUrl,
|
|
254
|
+
lmStudioModel: cfg.lmStudioModel,
|
|
255
|
+
customProviderName: cfg.customProviderName,
|
|
256
|
+
customProviderBaseUrl: cfg.customProviderBaseUrl,
|
|
257
|
+
customProviderApiKey: cfg.customProviderApiKey,
|
|
258
|
+
customProviderModel: cfg.customProviderModel,
|
|
259
|
+
};
|
|
260
|
+
saveSettings(persisted);
|
|
261
|
+
}
|
|
262
|
+
res.status(200).json({
|
|
263
|
+
applied: true,
|
|
264
|
+
persistent: true,
|
|
265
|
+
changedFields,
|
|
266
|
+
config: {
|
|
267
|
+
activeSource: cfg.activeSource,
|
|
268
|
+
resolvedSource: cfg.activeSource === 'auto' ? undefined : cfg.activeSource,
|
|
269
|
+
llmProvider: cfg.llmProvider,
|
|
270
|
+
ollamaModel: cfg.ollamaModel,
|
|
271
|
+
genericLogPath: cfg.genericLogPath,
|
|
272
|
+
lmStudioBaseUrl: cfg.lmStudioBaseUrl,
|
|
273
|
+
lmStudioModel: cfg.lmStudioModel,
|
|
274
|
+
customProviderName: cfg.customProviderName,
|
|
275
|
+
customProviderBaseUrl: cfg.customProviderBaseUrl,
|
|
276
|
+
customProviderModel: cfg.customProviderModel,
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
return router;
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lmstudio.d.ts","sourceRoot":"","sources":["../../src/routes/lmstudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAsE9D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
export function createLmStudioRouter(config) {
|
|
3
|
+
const router = Router();
|
|
4
|
+
router.get('/models', async (_req, res) => {
|
|
5
|
+
const baseUrl = config.lmStudioBaseUrl || 'http://localhost:1234/v1';
|
|
6
|
+
// Derive the base without /v1 for LM Studio native API
|
|
7
|
+
const nativeBaseUrl = baseUrl.replace(/\/v1\/?$/, '');
|
|
8
|
+
try {
|
|
9
|
+
// Try LM Studio native v0 API first (rich metadata)
|
|
10
|
+
let enrichedModels = [];
|
|
11
|
+
try {
|
|
12
|
+
const v0Response = await fetch(`${nativeBaseUrl}/api/v0/models`, {
|
|
13
|
+
method: 'GET',
|
|
14
|
+
headers: { 'Accept': 'application/json' },
|
|
15
|
+
signal: AbortSignal.timeout(8000),
|
|
16
|
+
});
|
|
17
|
+
if (v0Response.ok) {
|
|
18
|
+
const v0Data = await v0Response.json();
|
|
19
|
+
enrichedModels = (v0Data.data ?? []).map(m => ({
|
|
20
|
+
id: m.id,
|
|
21
|
+
arch: m.arch,
|
|
22
|
+
maxContextLength: m.max_context_length,
|
|
23
|
+
type: m.type,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// v0 API not available, fall through to OpenAI-compatible
|
|
29
|
+
}
|
|
30
|
+
// Fetch from OpenAI-compatible /v1/models
|
|
31
|
+
const response = await fetch(`${baseUrl}/models`, {
|
|
32
|
+
method: 'GET',
|
|
33
|
+
headers: { 'Accept': 'application/json' },
|
|
34
|
+
signal: AbortSignal.timeout(10000),
|
|
35
|
+
});
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
const errorText = await response.text().catch(() => response.statusText);
|
|
38
|
+
res.status(response.status).json({
|
|
39
|
+
error: `LM Studio at ${baseUrl} returned ${response.status}: ${errorText}`,
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const data = await response.json();
|
|
44
|
+
const modelIds = (data.data ?? []).map((m) => m.id).sort();
|
|
45
|
+
// Merge v0 metadata with model list
|
|
46
|
+
const enrichedMap = new Map(enrichedModels.map(m => [m.id, m]));
|
|
47
|
+
const modelsWithMeta = modelIds.map(id => {
|
|
48
|
+
const meta = enrichedMap.get(id);
|
|
49
|
+
return {
|
|
50
|
+
id,
|
|
51
|
+
arch: meta?.arch,
|
|
52
|
+
maxContextLength: meta?.maxContextLength,
|
|
53
|
+
type: meta?.type,
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
res.status(200).json({ models: modelIds, modelsWithMeta });
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
60
|
+
res.status(502).json({
|
|
61
|
+
error: `LM Studio not detected at ${baseUrl}: ${message}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return router;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=lmstudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lmstudio.js","sourceRoot":"","sources":["../../src/routes/lmstudio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/routes/notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAkBtD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM,CAoDhF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { stateManager } from '../stateManager.js';
|
|
4
|
+
import { suggest, mergeSuggestions } from '../llm/suggester.js';
|
|
5
|
+
import { saveNotes, saveSuggestions, loadPinnedTaskIds } from '../persistence.js';
|
|
6
|
+
const HumanNotesSchema = z.object({
|
|
7
|
+
content: z.string(),
|
|
8
|
+
updatedAt: z.number(),
|
|
9
|
+
});
|
|
10
|
+
function formatZodError(error) {
|
|
11
|
+
const messages = error.issues.map((issue) => {
|
|
12
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
|
|
13
|
+
return `${path}: ${issue.message}`;
|
|
14
|
+
});
|
|
15
|
+
return `Validation failed: ${messages.join(', ')}`;
|
|
16
|
+
}
|
|
17
|
+
export function createNotesRouter(config, ws) {
|
|
18
|
+
const router = Router();
|
|
19
|
+
router.post('/', async (req, res) => {
|
|
20
|
+
const parseResult = HumanNotesSchema.safeParse(req.body);
|
|
21
|
+
if (!parseResult.success) {
|
|
22
|
+
res.status(400).json({ error: formatZodError(parseResult.error) });
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const notes = parseResult.data;
|
|
26
|
+
stateManager.setNotes(notes);
|
|
27
|
+
saveNotes(notes);
|
|
28
|
+
// FIX: Return immediately to unblock frontend — fire-and-forget for suggestions
|
|
29
|
+
res.status(200).json({ saved: true, timestamp: Date.now() });
|
|
30
|
+
// FIX: Async suggestion generation — fire-and-forget, errors logged to stderr
|
|
31
|
+
void (async () => {
|
|
32
|
+
try {
|
|
33
|
+
const summary = stateManager.getSummary();
|
|
34
|
+
const origin = summary ? 'context' : 'notes';
|
|
35
|
+
// FIX: Broadcast start indicator so SUGGESTED_TASK panel can show GENERATING TASK…
|
|
36
|
+
ws.broadcast({ type: 'suggestions-status', payload: { generating: true, reason: 'notes-save' } });
|
|
37
|
+
// FIX: Generate suggestions even when summary is null — use notes-only prompt
|
|
38
|
+
const freshSuggestions = await suggest(summary, notes, config, origin);
|
|
39
|
+
// MERGE instead of full replace: preserve context-generated + pinned tasks
|
|
40
|
+
const existing = stateManager.getSuggestions();
|
|
41
|
+
const pinnedIds = new Set(loadPinnedTaskIds());
|
|
42
|
+
const merged = mergeSuggestions(existing, freshSuggestions, pinnedIds);
|
|
43
|
+
// setSuggestions cleans orphan prompts for removed task IDs automatically
|
|
44
|
+
stateManager.setSuggestions(merged);
|
|
45
|
+
saveSuggestions(merged);
|
|
46
|
+
ws.broadcast({ type: 'suggestions', payload: merged });
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
50
|
+
console.error('[notes] Suggestion generation failed:', message);
|
|
51
|
+
// FIX: Do NOT rethrow — this is fire-and-forget, errors must not propagate
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
ws.broadcast({ type: 'suggestions-status', payload: { generating: false, reason: 'notes-save' } });
|
|
55
|
+
}
|
|
56
|
+
})();
|
|
57
|
+
});
|
|
58
|
+
return router;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/routes/notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/routes/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsE9C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAoM5D"}
|