devsmind-mcp 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +326 -234
  2. package/dist/cli/activity.d.ts +9 -0
  3. package/dist/cli/activity.js +69 -0
  4. package/dist/cli/activity.js.map +1 -0
  5. package/dist/cli/describe.d.ts +31 -0
  6. package/dist/cli/describe.js +201 -0
  7. package/dist/cli/describe.js.map +1 -0
  8. package/dist/cli/diff.d.ts +14 -0
  9. package/dist/cli/diff.js +161 -0
  10. package/dist/cli/diff.js.map +1 -0
  11. package/dist/cli/embed.d.ts +6 -0
  12. package/dist/cli/embed.js +109 -0
  13. package/dist/cli/embed.js.map +1 -0
  14. package/dist/cli/extract-agent.d.ts +66 -0
  15. package/dist/cli/extract-agent.js +192 -0
  16. package/dist/cli/extract-agent.js.map +1 -0
  17. package/dist/cli/feedback.d.ts +11 -0
  18. package/dist/cli/feedback.js +90 -0
  19. package/dist/cli/feedback.js.map +1 -0
  20. package/dist/cli/index.js +128 -5
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/init.d.ts +30 -0
  23. package/dist/cli/init.js +98 -18
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/integrations/memory-topics.d.ts +44 -0
  26. package/dist/cli/integrations/memory-topics.js +295 -0
  27. package/dist/cli/integrations/memory-topics.js.map +1 -0
  28. package/dist/cli/integrations/memory.d.ts +11 -5
  29. package/dist/cli/integrations/memory.js +132 -36
  30. package/dist/cli/integrations/memory.js.map +1 -1
  31. package/dist/cli/integrations/prompt.d.ts +8 -0
  32. package/dist/cli/integrations/prompt.js +24 -3
  33. package/dist/cli/integrations/prompt.js.map +1 -1
  34. package/dist/cli/integrations/registry.d.ts +19 -5
  35. package/dist/cli/integrations/registry.js +23 -13
  36. package/dist/cli/integrations/registry.js.map +1 -1
  37. package/dist/cli/llm-client.d.ts +116 -0
  38. package/dist/cli/llm-client.js +322 -0
  39. package/dist/cli/llm-client.js.map +1 -0
  40. package/dist/cli/prune.js +4 -3
  41. package/dist/cli/prune.js.map +1 -1
  42. package/dist/cli/rule.d.ts +22 -2
  43. package/dist/cli/rule.js +116 -56
  44. package/dist/cli/rule.js.map +1 -1
  45. package/dist/cli/runner.d.ts +21 -0
  46. package/dist/cli/runner.js +94 -276
  47. package/dist/cli/runner.js.map +1 -1
  48. package/dist/cli/sync-progress.d.ts +9 -0
  49. package/dist/cli/sync-progress.js +41 -0
  50. package/dist/cli/sync-progress.js.map +1 -0
  51. package/dist/cli/sync.js +5 -2
  52. package/dist/cli/sync.js.map +1 -1
  53. package/dist/cli/view.js +3 -2
  54. package/dist/cli/view.js.map +1 -1
  55. package/dist/cli/workflow.js +26 -20
  56. package/dist/cli/workflow.js.map +1 -1
  57. package/dist/db/activity.d.ts +200 -0
  58. package/dist/db/activity.js +347 -0
  59. package/dist/db/activity.js.map +1 -0
  60. package/dist/db/analyze.js +25 -9
  61. package/dist/db/analyze.js.map +1 -1
  62. package/dist/db/database.d.ts +607 -79
  63. package/dist/db/database.js +1936 -488
  64. package/dist/db/database.js.map +1 -1
  65. package/dist/db/edges.d.ts +24 -0
  66. package/dist/db/edges.js +84 -0
  67. package/dist/db/edges.js.map +1 -1
  68. package/dist/db/embedder.d.ts +39 -0
  69. package/dist/db/embedder.js +0 -0
  70. package/dist/db/embedder.js.map +1 -0
  71. package/dist/db/feedback.d.ts +128 -0
  72. package/dist/db/feedback.js +182 -0
  73. package/dist/db/feedback.js.map +1 -0
  74. package/dist/db/file-diff.d.ts +32 -0
  75. package/dist/db/file-diff.js +110 -0
  76. package/dist/db/file-diff.js.map +1 -0
  77. package/dist/db/grep.d.ts +78 -0
  78. package/dist/db/grep.js +475 -0
  79. package/dist/db/grep.js.map +1 -0
  80. package/dist/db/message-revert.d.ts +63 -0
  81. package/dist/db/message-revert.js +258 -0
  82. package/dist/db/message-revert.js.map +1 -0
  83. package/dist/db/revert.d.ts +31 -0
  84. package/dist/db/revert.js +108 -0
  85. package/dist/db/revert.js.map +1 -0
  86. package/dist/db/schema.d.ts +49 -4
  87. package/dist/db/schema.js +125 -73
  88. package/dist/db/schema.js.map +1 -1
  89. package/dist/db/search-index.d.ts +65 -0
  90. package/dist/db/search-index.js +74 -0
  91. package/dist/db/search-index.js.map +1 -0
  92. package/dist/db/staging.d.ts +90 -5
  93. package/dist/db/staging.js +148 -22
  94. package/dist/db/staging.js.map +1 -1
  95. package/dist/mcp/server.d.ts +29 -7
  96. package/dist/mcp/server.js +2755 -745
  97. package/dist/mcp/server.js.map +1 -1
  98. package/dist/mcp/vendor/3d-force-graph.min.js +5 -0
  99. package/dist/mcp/vendor/force-graph.min.js +5 -0
  100. package/dist/mcp/vendor/model/model_int8.onnx +0 -0
  101. package/dist/mcp/vendor/model/vocab.txt +30522 -0
  102. package/dist/mcp/vendor/three.min.js +7 -0
  103. package/dist/mcp/view.css +419 -0
  104. package/dist/mcp/view.html +161 -0
  105. package/dist/mcp/view.js +245 -0
  106. package/dist/mcp/view_chat.js +382 -0
  107. package/dist/mcp/view_graph.js +576 -0
  108. package/dist/mcp/visualizer.d.ts +25 -2
  109. package/dist/mcp/visualizer.js +31 -4
  110. package/dist/mcp/visualizer.js.map +1 -1
  111. package/dist/utils/ast.d.ts +187 -0
  112. package/dist/utils/ast.js +640 -20
  113. package/dist/utils/ast.js.map +1 -1
  114. package/dist/utils/diff.d.ts +44 -0
  115. package/dist/utils/diff.js +78 -0
  116. package/dist/utils/diff.js.map +1 -0
  117. package/dist/utils/edit.d.ts +47 -0
  118. package/dist/utils/edit.js +196 -0
  119. package/dist/utils/edit.js.map +1 -0
  120. package/dist/utils/scanner.js +12 -4
  121. package/dist/utils/scanner.js.map +1 -1
  122. package/dist/utils/tokenize.d.ts +45 -0
  123. package/dist/utils/tokenize.js +129 -0
  124. package/dist/utils/tokenize.js.map +1 -0
  125. package/dist/utils/version.d.ts +14 -0
  126. package/dist/utils/version.js +61 -0
  127. package/dist/utils/version.js.map +1 -0
  128. package/package.json +18 -5
  129. package/dist/mcp/visualizer_2d.html +0 -635
  130. package/dist/mcp/visualizer_3d.html +0 -613
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.resolveLlmCredentials = resolveLlmCredentials;
37
+ exports.sendPrompt = sendPrompt;
38
+ exports.sendPromptWithRetry = sendPromptWithRetry;
39
+ exports.buildGeminiContents = buildGeminiContents;
40
+ exports.buildGeminiTools = buildGeminiTools;
41
+ exports.parseGeminiParts = parseGeminiParts;
42
+ exports.buildOllamaMessages = buildOllamaMessages;
43
+ exports.buildOllamaTools = buildOllamaTools;
44
+ exports.parseOllamaMessage = parseOllamaMessage;
45
+ exports.sendConversationTurn = sendConversationTurn;
46
+ exports.sendConversationTurnWithRetry = sendConversationTurnWithRetry;
47
+ const fs = __importStar(require("fs"));
48
+ const crypto = __importStar(require("crypto"));
49
+ const runner_1 = require("./runner");
50
+ const json_1 = require("../utils/json");
51
+ /**
52
+ * Resolves credentials for a provider from an explicit `--key`/`--url` or the environment,
53
+ * mirroring the precedence `runBackgroundIndexing`/`runBackgroundReindexing` already use —
54
+ * but THROWS instead of calling `process.exit`, so a library caller (like `devsmind describe`)
55
+ * can catch it and decide how to report the failure itself, rather than the process dying
56
+ * inside a function with no return value.
57
+ */
58
+ function resolveLlmCredentials(opts) {
59
+ if (opts.provider === 'gemini') {
60
+ const model = opts.model || 'gemini-2.0-flash';
61
+ const apiKey = opts.key || process.env.GEMINI_API_KEY || '';
62
+ if (!apiKey)
63
+ throw new Error('Gemini API key is required. Pass --key or set GEMINI_API_KEY environment variable.');
64
+ return { provider: 'gemini', model, apiKey };
65
+ }
66
+ if (opts.provider === 'vertex') {
67
+ const model = opts.model || 'gemini-1.5-flash';
68
+ const inputKey = opts.key || process.env.GOOGLE_APPLICATION_CREDENTIALS || process.env.VERTEX_API_KEY || process.env.GEMINI_API_KEY || '';
69
+ if (!inputKey) {
70
+ throw new Error('Vertex AI requires a Service Account JSON path or Bearer Token. Pass --key or set GOOGLE_APPLICATION_CREDENTIALS / VERTEX_API_KEY environment variable.');
71
+ }
72
+ let vertexSaData = null;
73
+ try {
74
+ if (inputKey.trim().startsWith('{')) {
75
+ vertexSaData = JSON.parse(inputKey);
76
+ }
77
+ else if (fs.existsSync(inputKey)) {
78
+ vertexSaData = JSON.parse(fs.readFileSync(inputKey, 'utf-8'));
79
+ }
80
+ }
81
+ catch {
82
+ // Treat as a raw token below.
83
+ }
84
+ const vertexProjectId = vertexSaData?.project_id || process.env.GCP_PROJECT_ID || process.env.VERTEX_PROJECT_ID || '';
85
+ const vertexLocation = process.env.GCP_LOCATION || process.env.VERTEX_LOCATION || 'us-central1';
86
+ if (!vertexSaData && !inputKey.startsWith('ya29.')) {
87
+ throw new Error('Vertex key must be a valid Service Account JSON file path, inline JSON, or raw OAuth access token starting with "ya29."');
88
+ }
89
+ if (!vertexProjectId) {
90
+ throw new Error('Vertex Project ID could not be determined. Please set GCP_PROJECT_ID environment variable or specify it in your service account JSON.');
91
+ }
92
+ return {
93
+ provider: 'vertex',
94
+ model,
95
+ vertexSaData: vertexSaData || undefined,
96
+ vertexToken: vertexSaData ? undefined : inputKey,
97
+ vertexProjectId,
98
+ vertexLocation
99
+ };
100
+ }
101
+ // ollama
102
+ return { provider: 'ollama', model: opts.model || 'qwen2.5-coder', url: opts.url || 'http://localhost:11434' };
103
+ }
104
+ /** One prompt round-trip to whichever provider `creds` resolved to. Every provider is asked
105
+ * for a raw JSON response (no markdown fences) — callers parse with `safeJsonParse`, which
106
+ * already tolerates a fenced or slightly truncated response if a provider ignores that ask. */
107
+ async function sendPrompt(creds, systemPrompt, userPrompt) {
108
+ if (creds.provider === 'gemini') {
109
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/${creds.model}:generateContent?key=${creds.apiKey}`;
110
+ const payload = {
111
+ contents: [{ parts: [{ text: userPrompt }] }],
112
+ systemInstruction: { parts: [{ text: systemPrompt }] },
113
+ generationConfig: { responseMimeType: 'application/json' }
114
+ };
115
+ const responseText = await (0, runner_1.makeHttpRequest)(url, 'POST', { 'Content-Type': 'application/json' }, JSON.stringify(payload));
116
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
117
+ return parsed.candidates?.[0]?.content?.parts?.[0]?.text || '';
118
+ }
119
+ if (creds.provider === 'vertex') {
120
+ const token = creds.vertexToken || await (0, runner_1.getVertexTokenCached)(creds.vertexSaData);
121
+ const url = `https://${creds.vertexLocation}-aiplatform.googleapis.com/v1/projects/${creds.vertexProjectId}/locations/${creds.vertexLocation}/publishers/google/models/${creds.model}:generateContent`;
122
+ const payload = {
123
+ contents: [{ role: 'user', parts: [{ text: userPrompt }] }],
124
+ systemInstruction: { parts: [{ text: systemPrompt }] },
125
+ generationConfig: { responseMimeType: 'application/json' }
126
+ };
127
+ const responseText = await (0, runner_1.makeHttpRequest)(url, 'POST', { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, JSON.stringify(payload));
128
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
129
+ return parsed.candidates?.[0]?.content?.parts?.[0]?.text || '';
130
+ }
131
+ // ollama
132
+ const endpoint = `${(creds.url || 'http://localhost:11434').replace(/\/$/, '')}/api/chat`;
133
+ const payload = {
134
+ model: creds.model,
135
+ messages: [
136
+ { role: 'system', content: systemPrompt },
137
+ { role: 'user', content: userPrompt }
138
+ ],
139
+ stream: false,
140
+ format: 'json'
141
+ };
142
+ const responseText = await (0, runner_1.makeHttpRequest)(endpoint, 'POST', { 'Content-Type': 'application/json' }, JSON.stringify(payload));
143
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
144
+ return parsed.message?.content || '';
145
+ }
146
+ /**
147
+ * `sendPrompt` with a small, independent retry — deliberately NOT the 5-attempt/`ProgressDisplay`
148
+ * -coupled retry loop `extractNodesFromCode` uses; this caller has no TTY progress bar to update,
149
+ * so it just logs via `onRetry` and backs off (longer on a 429, since that means "slow down",
150
+ * shorter on anything else — a transient network blip is usually gone in a couple seconds).
151
+ */
152
+ async function sendPromptWithRetry(creds, systemPrompt, userPrompt, opts = {}) {
153
+ const maxAttempts = opts.retries ?? 3;
154
+ let backoffMs = 5000;
155
+ let lastErr = null;
156
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
157
+ try {
158
+ return await sendPrompt(creds, systemPrompt, userPrompt);
159
+ }
160
+ catch (err) {
161
+ lastErr = err;
162
+ const isRateLimited = (lastErr.message || '').includes('429');
163
+ if (attempt < maxAttempts) {
164
+ opts.onRetry?.(`attempt ${attempt}/${maxAttempts} failed (${lastErr.message}) — retrying in ${isRateLimited ? backoffMs / 1000 : 2}s`);
165
+ await (0, runner_1.sleep)(isRateLimited ? backoffMs : 2000);
166
+ if (isRateLimited)
167
+ backoffMs *= 2;
168
+ }
169
+ }
170
+ }
171
+ throw lastErr || new Error('sendPrompt failed after retries');
172
+ }
173
+ // ── Gemini / Vertex (same Generative Language API request/response shape) ──────
174
+ /** Builds the `contents` array for a Gemini/Vertex tool-calling request. Exported so the
175
+ * translation logic (the actual risk area) is unit-testable without a live call. */
176
+ function buildGeminiContents(messages) {
177
+ return messages.map(m => {
178
+ if (m.role === 'user')
179
+ return { role: 'user', parts: [{ text: m.content }] };
180
+ if (m.role === 'assistant') {
181
+ const parts = [];
182
+ if (m.content)
183
+ parts.push({ text: m.content });
184
+ for (const tc of m.toolCalls)
185
+ parts.push({ functionCall: { name: tc.name, args: tc.args } });
186
+ return { role: 'model', parts };
187
+ }
188
+ // Tool result. Gemini's function-response part carries no call id — it matches the most
189
+ // recent pending call BY NAME, which is why only one call for a given name should ever be
190
+ // outstanding at once (the curation loop below satisfies this: it always awaits ALL of a
191
+ // turn's tool calls before sending the next).
192
+ let response;
193
+ try {
194
+ response = JSON.parse(m.content);
195
+ }
196
+ catch {
197
+ response = { result: m.content };
198
+ }
199
+ return { role: 'user', parts: [{ functionResponse: { name: m.toolName, response } }] };
200
+ });
201
+ }
202
+ /** Builds the `tools` field shared by Gemini and Vertex. */
203
+ function buildGeminiTools(tools) {
204
+ return [{ functionDeclarations: tools.map(t => ({ name: t.name, description: t.description, parameters: t.parameters })) }];
205
+ }
206
+ /** Parses a Gemini/Vertex `candidates[0].content.parts` array into the provider-agnostic turn
207
+ * result. A part is either `{text}` or `{functionCall:{name,args}}` — Gemini assigns no id of
208
+ * its own, so one is minted here purely as a local correlation key for the tool-result message. */
209
+ function parseGeminiParts(parts) {
210
+ let text = null;
211
+ const toolCalls = [];
212
+ for (const p of parts || []) {
213
+ if (p.text)
214
+ text = (text ?? '') + p.text;
215
+ if (p.functionCall)
216
+ toolCalls.push({ id: crypto.randomUUID(), name: p.functionCall.name, args: p.functionCall.args ?? {} });
217
+ }
218
+ return { text, toolCalls };
219
+ }
220
+ async function sendGeminiTurn(model, apiKey, systemPrompt, messages, tools) {
221
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
222
+ const payload = {
223
+ contents: buildGeminiContents(messages),
224
+ systemInstruction: { parts: [{ text: systemPrompt }] },
225
+ tools: buildGeminiTools(tools)
226
+ };
227
+ const responseText = await (0, runner_1.makeHttpRequest)(url, 'POST', { 'Content-Type': 'application/json' }, JSON.stringify(payload));
228
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
229
+ return parseGeminiParts(parsed.candidates?.[0]?.content?.parts || []);
230
+ }
231
+ async function sendVertexTurn(model, token, projectId, location, systemPrompt, messages, tools) {
232
+ const url = `https://${location}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/publishers/google/models/${model}:generateContent`;
233
+ const payload = {
234
+ contents: buildGeminiContents(messages),
235
+ systemInstruction: { parts: [{ text: systemPrompt }] },
236
+ tools: buildGeminiTools(tools)
237
+ };
238
+ const responseText = await (0, runner_1.makeHttpRequest)(url, 'POST', { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, JSON.stringify(payload));
239
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
240
+ return parseGeminiParts(parsed.candidates?.[0]?.content?.parts || []);
241
+ }
242
+ // ── Ollama (OpenAI-style `tools`/`tool_calls`) ──────────────────────────────
243
+ /** Builds the `messages` array for an Ollama tool-calling chat request. */
244
+ function buildOllamaMessages(systemPrompt, messages) {
245
+ const out = [{ role: 'system', content: systemPrompt }];
246
+ for (const m of messages) {
247
+ if (m.role === 'user') {
248
+ out.push({ role: 'user', content: m.content });
249
+ }
250
+ else if (m.role === 'assistant') {
251
+ out.push({
252
+ role: 'assistant',
253
+ content: m.content || '',
254
+ tool_calls: m.toolCalls.map(tc => ({ function: { name: tc.name, arguments: tc.args } }))
255
+ });
256
+ }
257
+ else {
258
+ // Ollama's tool-result message has no call-id field to correlate against (same
259
+ // one-outstanding-call-per-name constraint as Gemini above) — `tool_name` is what ties it
260
+ // back to the request.
261
+ out.push({ role: 'tool', tool_name: m.toolName, content: m.content });
262
+ }
263
+ }
264
+ return out;
265
+ }
266
+ /** Builds the OpenAI-style `tools` field Ollama expects. */
267
+ function buildOllamaTools(tools) {
268
+ return tools.map(t => ({ type: 'function', function: { name: t.name, description: t.description, parameters: t.parameters } }));
269
+ }
270
+ /** Parses an Ollama chat response's `message` into the provider-agnostic turn result. */
271
+ function parseOllamaMessage(message) {
272
+ const toolCalls = (message.tool_calls || [])
273
+ .filter(tc => tc.function?.name)
274
+ .map(tc => ({ id: crypto.randomUUID(), name: tc.function.name, args: tc.function.arguments ?? {} }));
275
+ return { text: message.content || null, toolCalls };
276
+ }
277
+ async function sendOllamaTurn(url, model, systemPrompt, messages, tools) {
278
+ const endpoint = `${url.replace(/\/$/, '')}/api/chat`;
279
+ const payload = {
280
+ model,
281
+ messages: buildOllamaMessages(systemPrompt, messages),
282
+ tools: buildOllamaTools(tools),
283
+ stream: false
284
+ };
285
+ const responseText = await (0, runner_1.makeHttpRequest)(endpoint, 'POST', { 'Content-Type': 'application/json' }, JSON.stringify(payload));
286
+ const parsed = (0, json_1.safeJsonParse)(responseText, {});
287
+ return parseOllamaMessage(parsed.message || {});
288
+ }
289
+ /** One turn of a tool-calling conversation with whichever provider `creds` resolved to. */
290
+ async function sendConversationTurn(creds, systemPrompt, messages, tools) {
291
+ if (creds.provider === 'gemini') {
292
+ return sendGeminiTurn(creds.model, creds.apiKey, systemPrompt, messages, tools);
293
+ }
294
+ if (creds.provider === 'vertex') {
295
+ const token = creds.vertexToken || await (0, runner_1.getVertexTokenCached)(creds.vertexSaData);
296
+ return sendVertexTurn(creds.model, token, creds.vertexProjectId, creds.vertexLocation, systemPrompt, messages, tools);
297
+ }
298
+ return sendOllamaTurn(creds.url || 'http://localhost:11434', creds.model, systemPrompt, messages, tools);
299
+ }
300
+ /** `sendConversationTurn` with the same retry/backoff shape as `sendPromptWithRetry`. */
301
+ async function sendConversationTurnWithRetry(creds, systemPrompt, messages, tools, opts = {}) {
302
+ const maxAttempts = opts.retries ?? 3;
303
+ let backoffMs = 5000;
304
+ let lastErr = null;
305
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
306
+ try {
307
+ return await sendConversationTurn(creds, systemPrompt, messages, tools);
308
+ }
309
+ catch (err) {
310
+ lastErr = err;
311
+ const isRateLimited = (lastErr.message || '').includes('429');
312
+ if (attempt < maxAttempts) {
313
+ opts.onRetry?.(`attempt ${attempt}/${maxAttempts} failed (${lastErr.message}) — retrying in ${isRateLimited ? backoffMs / 1000 : 2}s`);
314
+ await (0, runner_1.sleep)(isRateLimited ? backoffMs : 2000);
315
+ if (isRateLimited)
316
+ backoffMs *= 2;
317
+ }
318
+ }
319
+ }
320
+ throw lastErr || new Error('sendConversationTurn failed after retries');
321
+ }
322
+ //# sourceMappingURL=llm-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/cli/llm-client.ts"],"names":[],"mappings":"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"}
package/dist/cli/prune.js CHANGED
@@ -75,10 +75,11 @@ async function handlePrune(opts) {
75
75
  try {
76
76
  await runPruneLoop(db);
77
77
  }
78
- catch (err) {
79
- console.error(`❌ Pruning failed: ${err.message}`);
80
- }
81
78
  finally {
79
+ // No catch here on purpose: index.ts's own action wrapper already catches, logs this
80
+ // exact "Pruning failed" message, and calls process.exit(1) — swallowing the error here
81
+ // (as this used to do) meant that outer handler never ran, so a genuine failure mid-prune
82
+ // still exited 0. db.close() only needs guaranteed cleanup, not error interception.
82
83
  db.close();
83
84
  }
84
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../src/cli/prune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../src/cli/prune.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,36 @@
1
1
  import { DevMindConfig } from '../utils/config';
2
+ import { WorkflowStyle } from './integrations/prompt';
2
3
  /**
3
4
  * Build the ready-to-paste DevsMind workspace rule from a project's config.
4
5
  * Pure string builder — no I/O — so it can be printed or written to a file.
6
+ *
7
+ * `workflowStyle` picks which of two rules gets built:
8
+ * - `'automatic'` (default): the AI stages, commits, and tracks every edit without being asked —
9
+ * the original, still-recommended default for a team's shared graph.
10
+ * - `'manual'`: the AI uses DevsMind's search/read tools freely (that part is never optional —
11
+ * it's why the tool exists) but never stages or commits on its own initiative; the developer
12
+ * stays the one deciding what reaches the graph and when. `session_id` (on writes) and `message`
13
+ * are still mechanically required by the protocol either way — that's not something a rule can
14
+ * opt out of, only WHEN commit_changes gets called is a style choice.
5
15
  */
6
- export declare function buildRule(config: DevMindConfig, devmindDir: string): string;
16
+ export declare function buildRule(config: DevMindConfig, devmindDir: string, workflowStyle?: WorkflowStyle): string;
17
+ /**
18
+ * A short block meant to be pasted at the START of a fresh AI chat — deliberately separate from
19
+ * the persistent rule file above. The rule file only helps once the agent actually reads it, and
20
+ * a long session can lose track of something it read once at the very beginning; this is the
21
+ * human's manual lever to make a brand-new conversation commit to the rule from its first move,
22
+ * rather than drifting into using DevsMind slowly (or not at all) over the first few turns.
23
+ */
24
+ export declare function buildKickoffPrompt(workflowStyle?: WorkflowStyle): string;
7
25
  /**
8
26
  * `devsmind rule` — print the workspace rule and, interactively, help place it
9
27
  * in the chosen tool's native rules file (manual snippet or automatic write).
10
28
  * Falls back to plain printing when piped/non-TTY or when `--print` is passed,
11
- * preserving `devsmind rule > file` usage.
29
+ * preserving `devsmind rule > file` usage. `--manual` picks the manual workflow
30
+ * style non-interactively (the fallback path has no prompt to ask with).
12
31
  */
13
32
  export declare function handleRule(opts: {
14
33
  path?: string;
15
34
  print?: boolean;
35
+ manual?: boolean;
16
36
  }): Promise<void>;