@synergenius/flow-weaver-pack-weaver 0.9.8 → 0.9.10

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 (228) hide show
  1. package/dist/bot/agent-loop.d.ts +20 -0
  2. package/dist/bot/agent-loop.d.ts.map +1 -0
  3. package/dist/bot/agent-loop.js +331 -0
  4. package/dist/bot/agent-loop.js.map +1 -0
  5. package/dist/bot/agent-provider.d.ts.map +1 -1
  6. package/dist/bot/agent-provider.js +3 -2
  7. package/dist/bot/agent-provider.js.map +1 -1
  8. package/dist/bot/approvals.js +17 -8
  9. package/dist/bot/approvals.js.map +1 -1
  10. package/dist/bot/assistant-core.d.ts +17 -0
  11. package/dist/bot/assistant-core.d.ts.map +1 -1
  12. package/dist/bot/assistant-core.js +366 -45
  13. package/dist/bot/assistant-core.js.map +1 -1
  14. package/dist/bot/assistant-tools.d.ts +1 -1
  15. package/dist/bot/assistant-tools.d.ts.map +1 -1
  16. package/dist/bot/assistant-tools.js +283 -9
  17. package/dist/bot/assistant-tools.js.map +1 -1
  18. package/dist/bot/bot-agent-channel.d.ts.map +1 -1
  19. package/dist/bot/bot-agent-channel.js +2 -0
  20. package/dist/bot/bot-agent-channel.js.map +1 -1
  21. package/dist/bot/bot-manager.d.ts +4 -0
  22. package/dist/bot/bot-manager.d.ts.map +1 -1
  23. package/dist/bot/bot-manager.js +72 -27
  24. package/dist/bot/bot-manager.js.map +1 -1
  25. package/dist/bot/conversation-store.d.ts +6 -5
  26. package/dist/bot/conversation-store.d.ts.map +1 -1
  27. package/dist/bot/conversation-store.js +98 -42
  28. package/dist/bot/conversation-store.js.map +1 -1
  29. package/dist/bot/cost-store.d.ts +3 -0
  30. package/dist/bot/cost-store.d.ts.map +1 -1
  31. package/dist/bot/cost-store.js +21 -10
  32. package/dist/bot/cost-store.js.map +1 -1
  33. package/dist/bot/cost-tracker.d.ts.map +1 -1
  34. package/dist/bot/cost-tracker.js +14 -1
  35. package/dist/bot/cost-tracker.js.map +1 -1
  36. package/dist/bot/cron-parser.d.ts.map +1 -1
  37. package/dist/bot/cron-parser.js +2 -0
  38. package/dist/bot/cron-parser.js.map +1 -1
  39. package/dist/bot/cron-scheduler.d.ts.map +1 -1
  40. package/dist/bot/cron-scheduler.js +1 -0
  41. package/dist/bot/cron-scheduler.js.map +1 -1
  42. package/dist/bot/device-connection.d.ts +13 -0
  43. package/dist/bot/device-connection.d.ts.map +1 -0
  44. package/dist/bot/device-connection.js +102 -0
  45. package/dist/bot/device-connection.js.map +1 -0
  46. package/dist/bot/error-classifier.d.ts.map +1 -1
  47. package/dist/bot/error-classifier.js +5 -0
  48. package/dist/bot/error-classifier.js.map +1 -1
  49. package/dist/bot/file-lock.d.ts.map +1 -1
  50. package/dist/bot/file-lock.js +13 -3
  51. package/dist/bot/file-lock.js.map +1 -1
  52. package/dist/bot/file-watcher.d.ts.map +1 -1
  53. package/dist/bot/file-watcher.js +1 -0
  54. package/dist/bot/file-watcher.js.map +1 -1
  55. package/dist/bot/genesis-prompt-context.d.ts +5 -0
  56. package/dist/bot/genesis-prompt-context.d.ts.map +1 -1
  57. package/dist/bot/genesis-prompt-context.js +55 -0
  58. package/dist/bot/genesis-prompt-context.js.map +1 -1
  59. package/dist/bot/genesis-store.d.ts +4 -0
  60. package/dist/bot/genesis-store.d.ts.map +1 -1
  61. package/dist/bot/genesis-store.js +79 -12
  62. package/dist/bot/genesis-store.js.map +1 -1
  63. package/dist/bot/improve-loop.d.ts +46 -0
  64. package/dist/bot/improve-loop.d.ts.map +1 -0
  65. package/dist/bot/improve-loop.js +592 -0
  66. package/dist/bot/improve-loop.js.map +1 -0
  67. package/dist/bot/index.d.ts +1 -0
  68. package/dist/bot/index.d.ts.map +1 -1
  69. package/dist/bot/index.js +2 -0
  70. package/dist/bot/index.js.map +1 -1
  71. package/dist/bot/insight-engine.d.ts +12 -0
  72. package/dist/bot/insight-engine.d.ts.map +1 -0
  73. package/dist/bot/insight-engine.js +256 -0
  74. package/dist/bot/insight-engine.js.map +1 -0
  75. package/dist/bot/knowledge-store.d.ts.map +1 -1
  76. package/dist/bot/knowledge-store.js +4 -1
  77. package/dist/bot/knowledge-store.js.map +1 -1
  78. package/dist/bot/pipeline-runner.d.ts.map +1 -1
  79. package/dist/bot/pipeline-runner.js +12 -4
  80. package/dist/bot/pipeline-runner.js.map +1 -1
  81. package/dist/bot/project-model.d.ts +25 -0
  82. package/dist/bot/project-model.d.ts.map +1 -0
  83. package/dist/bot/project-model.js +372 -0
  84. package/dist/bot/project-model.js.map +1 -0
  85. package/dist/bot/response-formatter.js +2 -3
  86. package/dist/bot/response-formatter.js.map +1 -1
  87. package/dist/bot/run-store.d.ts.map +1 -1
  88. package/dist/bot/run-store.js +10 -2
  89. package/dist/bot/run-store.js.map +1 -1
  90. package/dist/bot/safe-path.d.ts +1 -1
  91. package/dist/bot/safe-path.d.ts.map +1 -1
  92. package/dist/bot/safe-path.js +20 -1
  93. package/dist/bot/safe-path.js.map +1 -1
  94. package/dist/bot/safety.d.ts +10 -2
  95. package/dist/bot/safety.d.ts.map +1 -1
  96. package/dist/bot/safety.js +45 -2
  97. package/dist/bot/safety.js.map +1 -1
  98. package/dist/bot/session-state.d.ts +4 -0
  99. package/dist/bot/session-state.d.ts.map +1 -1
  100. package/dist/bot/session-state.js +52 -9
  101. package/dist/bot/session-state.js.map +1 -1
  102. package/dist/bot/slash-commands.d.ts.map +1 -1
  103. package/dist/bot/slash-commands.js +100 -5
  104. package/dist/bot/slash-commands.js.map +1 -1
  105. package/dist/bot/steering-engine.d.ts +67 -0
  106. package/dist/bot/steering-engine.d.ts.map +1 -0
  107. package/dist/bot/steering-engine.js +198 -0
  108. package/dist/bot/steering-engine.js.map +1 -0
  109. package/dist/bot/step-executor.d.ts.map +1 -1
  110. package/dist/bot/step-executor.js +62 -25
  111. package/dist/bot/step-executor.js.map +1 -1
  112. package/dist/bot/system-prompt.d.ts.map +1 -1
  113. package/dist/bot/system-prompt.js +5 -2
  114. package/dist/bot/system-prompt.js.map +1 -1
  115. package/dist/bot/task-queue.d.ts +6 -1
  116. package/dist/bot/task-queue.d.ts.map +1 -1
  117. package/dist/bot/task-queue.js +43 -4
  118. package/dist/bot/task-queue.js.map +1 -1
  119. package/dist/bot/tool-registry.d.ts +1 -1
  120. package/dist/bot/tool-registry.d.ts.map +1 -1
  121. package/dist/bot/tool-registry.js +65 -4
  122. package/dist/bot/tool-registry.js.map +1 -1
  123. package/dist/bot/trust-calculator.d.ts +34 -0
  124. package/dist/bot/trust-calculator.d.ts.map +1 -0
  125. package/dist/bot/trust-calculator.js +67 -0
  126. package/dist/bot/trust-calculator.js.map +1 -0
  127. package/dist/bot/types.d.ts +97 -0
  128. package/dist/bot/types.d.ts.map +1 -1
  129. package/dist/bot/update-checker.d.ts +21 -0
  130. package/dist/bot/update-checker.d.ts.map +1 -0
  131. package/dist/bot/update-checker.js +129 -0
  132. package/dist/bot/update-checker.js.map +1 -0
  133. package/dist/bot/weaver-tools.d.ts.map +1 -1
  134. package/dist/bot/weaver-tools.js +11 -4
  135. package/dist/bot/weaver-tools.js.map +1 -1
  136. package/dist/cli-bridge.d.ts.map +1 -1
  137. package/dist/cli-bridge.js +2 -1
  138. package/dist/cli-bridge.js.map +1 -1
  139. package/dist/cli-handlers.d.ts +9 -1
  140. package/dist/cli-handlers.d.ts.map +1 -1
  141. package/dist/cli-handlers.js +77 -8
  142. package/dist/cli-handlers.js.map +1 -1
  143. package/dist/cli.d.ts +3 -0
  144. package/dist/cli.d.ts.map +1 -0
  145. package/dist/cli.js +749 -0
  146. package/dist/cli.js.map +1 -0
  147. package/dist/docs/weaver-config.md +15 -9
  148. package/dist/handlers/on-execution-completed.d.ts +11 -0
  149. package/dist/handlers/on-execution-completed.d.ts.map +1 -0
  150. package/dist/handlers/on-execution-completed.js +25 -0
  151. package/dist/handlers/on-execution-completed.js.map +1 -0
  152. package/dist/mcp-tools.d.ts.map +1 -1
  153. package/dist/mcp-tools.js +33 -0
  154. package/dist/mcp-tools.js.map +1 -1
  155. package/dist/node-types/genesis-approve.d.ts.map +1 -1
  156. package/dist/node-types/genesis-approve.js +28 -3
  157. package/dist/node-types/genesis-approve.js.map +1 -1
  158. package/dist/node-types/genesis-observe.d.ts.map +1 -1
  159. package/dist/node-types/genesis-observe.js +23 -13
  160. package/dist/node-types/genesis-observe.js.map +1 -1
  161. package/dist/node-types/genesis-propose.d.ts.map +1 -1
  162. package/dist/node-types/genesis-propose.js +8 -0
  163. package/dist/node-types/genesis-propose.js.map +1 -1
  164. package/dist/node-types/genesis-update-history.d.ts.map +1 -1
  165. package/dist/node-types/genesis-update-history.js +13 -0
  166. package/dist/node-types/genesis-update-history.js.map +1 -1
  167. package/dist/templates/weaver-template.d.ts +11 -0
  168. package/dist/templates/weaver-template.d.ts.map +1 -0
  169. package/dist/templates/weaver-template.js +53 -0
  170. package/dist/templates/weaver-template.js.map +1 -0
  171. package/dist/workflows/weaver-bot-session.d.ts +65 -0
  172. package/dist/workflows/weaver-bot-session.d.ts.map +1 -0
  173. package/dist/workflows/weaver-bot-session.js +68 -0
  174. package/dist/workflows/weaver-bot-session.js.map +1 -0
  175. package/dist/workflows/weaver.d.ts +24 -0
  176. package/dist/workflows/weaver.d.ts.map +1 -0
  177. package/dist/workflows/weaver.js +28 -0
  178. package/dist/workflows/weaver.js.map +1 -0
  179. package/flowweaver.manifest.json +27 -0
  180. package/package.json +5 -2
  181. package/src/bot/agent-provider.ts +3 -2
  182. package/src/bot/approvals.ts +16 -8
  183. package/src/bot/assistant-core.ts +366 -44
  184. package/src/bot/assistant-tools.ts +291 -9
  185. package/src/bot/bot-agent-channel.ts +2 -0
  186. package/src/bot/bot-manager.ts +70 -29
  187. package/src/bot/conversation-store.ts +87 -42
  188. package/src/bot/cost-store.ts +20 -9
  189. package/src/bot/cost-tracker.ts +13 -1
  190. package/src/bot/cron-parser.ts +1 -0
  191. package/src/bot/cron-scheduler.ts +1 -0
  192. package/src/bot/device-connection.ts +102 -0
  193. package/src/bot/error-classifier.ts +5 -0
  194. package/src/bot/file-lock.ts +12 -2
  195. package/src/bot/file-watcher.ts +1 -0
  196. package/src/bot/genesis-prompt-context.ts +61 -0
  197. package/src/bot/genesis-store.ts +68 -16
  198. package/src/bot/improve-loop.ts +651 -0
  199. package/src/bot/index.ts +3 -0
  200. package/src/bot/insight-engine.ts +273 -0
  201. package/src/bot/knowledge-store.ts +4 -1
  202. package/src/bot/pipeline-runner.ts +11 -6
  203. package/src/bot/project-model.ts +404 -0
  204. package/src/bot/response-formatter.ts +2 -3
  205. package/src/bot/run-store.ts +5 -2
  206. package/src/bot/safe-path.ts +20 -1
  207. package/src/bot/safety.ts +57 -3
  208. package/src/bot/session-state.ts +47 -7
  209. package/src/bot/slash-commands.ts +103 -5
  210. package/src/bot/steering-engine.ts +233 -0
  211. package/src/bot/step-executor.ts +66 -26
  212. package/src/bot/system-prompt.ts +5 -2
  213. package/src/bot/task-queue.ts +40 -4
  214. package/src/bot/tool-registry.ts +67 -5
  215. package/src/bot/trust-calculator.ts +87 -0
  216. package/src/bot/types.ts +104 -0
  217. package/src/bot/update-checker.ts +138 -0
  218. package/src/bot/weaver-tools.ts +10 -4
  219. package/src/cli-bridge.ts +2 -1
  220. package/src/cli-handlers.ts +84 -9
  221. package/src/handlers/on-execution-completed.ts +30 -0
  222. package/src/mcp-tools.ts +38 -0
  223. package/src/node-types/genesis-approve.ts +28 -3
  224. package/src/node-types/genesis-observe.ts +23 -12
  225. package/src/node-types/genesis-propose.ts +8 -0
  226. package/src/node-types/genesis-update-history.ts +12 -0
  227. package/src/ui/evolution-panel.tsx +96 -0
  228. package/src/ui/insights-widget.tsx +77 -0
@@ -24,7 +24,9 @@ Tell me what you want to build or fix. I will:
24
24
  1. Break it into steps
25
25
  2. Use tools to read, write, validate, and test code
26
26
  3. Spawn bots for longer tasks that run in the background
27
- 4. Report results not plans
27
+ 4. Track project health and surface insights proactively
28
+ 5. Propose bot workflow improvements based on execution patterns
29
+ 6. Report results — not plans
28
30
 
29
31
  ## How to respond
30
32
 
@@ -48,20 +50,33 @@ You are running in a terminal. Plain text only.
48
50
 
49
51
  ## Tool output handling
50
52
 
51
- These tools display their FULL output directly to the user:
53
+ CRITICAL: These tools display their FULL output directly to the user:
52
54
  ${generateVerboseToolList()}
53
- Do NOT repeat, summarize, or reformat their output the user already sees it.
55
+ The user ALREADY SEES the complete output from these tools. After calling them:
56
+ - Do NOT list, enumerate, or walk through the output
57
+ - Do NOT restate what the diagram/description shows
58
+ - ONLY add a brief insight the user cannot see (e.g. "Notice the fan-out at step 5 — that's where parallelism happens")
59
+ - If the output speaks for itself, say nothing or just "There it is."
54
60
  For all other tools, you may explain the result briefly.
55
61
 
56
62
  ## Personality
57
63
 
58
64
  - Helpful, practical, no fluff
59
- - Lead with action, follow with explanation only if needed
65
+ - Lead with the RESULT, not narration of what you did. Never start with "Let me...", "Found it.", "Now let me...", "Good, I have..."
60
66
  - If something fails, say what went wrong and what you'll try next
61
67
  - Never apologize for tool usage — tools are how you work
62
- - When you don't know something, say so`;
68
+ - When you don't know something, say so
69
+
70
+ ## Project intelligence
71
+
72
+ You have access to project health, bot performance, failure patterns, cost trends, and evolution history.
73
+ Be proactive: when you see something relevant to what the user is doing, mention it.
74
+ At session start, briefly acknowledge the project state if there's something worth noting.
75
+ You can propose workflow improvements with genesis_propose when patterns suggest a structural fix.
76
+ If a bot workflow needs modification and isn't ejected yet, auto-eject it first.`;
63
77
  export async function runAssistant(opts) {
64
78
  const { provider, tools, executor, projectDir } = opts;
79
+ const isDebug = !!opts.debug;
65
80
  const out = (s) => process.stderr.write(s);
66
81
  // Pipe mode: if stdin is not a TTY, read all input as one message
67
82
  if (!process.stdin.isTTY && !opts.inputMessages) {
@@ -70,8 +85,10 @@ export async function runAssistant(opts) {
70
85
  chunks.push(typeof chunk === 'string' ? chunk : chunk.toString());
71
86
  }
72
87
  const pipeInput = chunks.join('').trim();
73
- if (!pipeInput)
88
+ if (!pipeInput) {
89
+ process.stderr.write(' No input provided. Pipe a message: echo "describe my workflows" | flow-weaver weaver assistant\n');
74
90
  return;
91
+ }
75
92
  // Build system prompt for pipe mode
76
93
  let systemPrompt = opts.systemPrompt ?? DEFAULT_SYSTEM_PROMPT;
77
94
  try {
@@ -84,6 +101,16 @@ export async function runAssistant(opts) {
84
101
  }
85
102
  }
86
103
  catch { /* plan not available */ }
104
+ // Inject project intelligence (ambient awareness)
105
+ try {
106
+ const { ProjectModelStore } = await import('./project-model.js');
107
+ const pms = new ProjectModelStore(projectDir);
108
+ const model = await pms.getOrBuild();
109
+ if (model && (model.health.workflows.length > 0 || model.bots.length > 0)) {
110
+ systemPrompt += '\n\n## Project Intelligence\n\n' + pms.formatSummary(model);
111
+ }
112
+ }
113
+ catch { /* project model not available yet */ }
87
114
  // Run single message, print result, exit
88
115
  await runAgentLoop(provider, tools, executor, [{ role: 'user', content: pipeInput }], {
89
116
  systemPrompt, maxIterations: 20,
@@ -93,7 +120,7 @@ export async function runAssistant(opts) {
93
120
  if (e.type === 'tool_call_start')
94
121
  out(`\n ${c.cyan('◆')} ${e.name}\n`);
95
122
  if (e.type === 'tool_call_result')
96
- out(` ${c.dim('→')} ${(e.result ?? '').slice(0, 200)}\n`);
123
+ out(` ${c.dim('→')} ${(e.result ?? '').slice(0, 500)}\n`);
97
124
  },
98
125
  });
99
126
  out('\n');
@@ -111,6 +138,83 @@ export async function runAssistant(opts) {
111
138
  }
112
139
  }
113
140
  catch { /* plan not available */ }
141
+ // Load steering configuration
142
+ let steeringEngine;
143
+ try {
144
+ const { SteeringEngine, loadSteers } = await import('./steering-engine.js');
145
+ const steers = loadSteers(projectDir);
146
+ steeringEngine = new SteeringEngine(steers);
147
+ }
148
+ catch { /* steering not available */ }
149
+ // Inject project intelligence (ambient awareness)
150
+ try {
151
+ const { ProjectModelStore } = await import('./project-model.js');
152
+ const pms = new ProjectModelStore(projectDir);
153
+ const model = await pms.getOrBuild();
154
+ if (model && (model.health.workflows.length > 0 || model.bots.length > 0)) {
155
+ systemPrompt += '\n\n## Project Intelligence\n\n' + pms.formatSummary(model);
156
+ }
157
+ }
158
+ catch { /* project model not available yet */ }
159
+ // Auto-context scan: on first-ever use, scan project and persist context in knowledge store
160
+ try {
161
+ const { KnowledgeStore } = await import('./knowledge-store.js');
162
+ const knowledge = new KnowledgeStore(projectDir);
163
+ const existing = knowledge.recall('project:context');
164
+ if (existing.length === 0) {
165
+ // First-ever scan — build project context
166
+ const fsMod = await import('node:fs');
167
+ const parts = [];
168
+ // Package info
169
+ const pkgPath = path.join(projectDir, 'package.json');
170
+ if (fsMod.existsSync(pkgPath)) {
171
+ try {
172
+ const pkg = JSON.parse(fsMod.readFileSync(pkgPath, 'utf-8'));
173
+ parts.push(`Project: ${pkg.name ?? 'unknown'} v${pkg.version ?? '0.0.0'}`);
174
+ if (pkg.description)
175
+ parts.push(`Description: ${pkg.description}`);
176
+ const deps = Object.keys(pkg.dependencies ?? {}).slice(0, 10);
177
+ if (deps.length > 0)
178
+ parts.push(`Key deps: ${deps.join(', ')}`);
179
+ }
180
+ catch { /* parse failed */ }
181
+ }
182
+ // Workflow scan
183
+ try {
184
+ const { execFileSync: scanExec } = await import('node:child_process');
185
+ const found = scanExec('npx', ['flow-weaver', 'find-workflows', '--json'], {
186
+ encoding: 'utf-8', cwd: projectDir, timeout: 10_000, stdio: ['pipe', 'pipe', 'pipe'],
187
+ });
188
+ const workflows = JSON.parse(found);
189
+ if (Array.isArray(workflows) && workflows.length > 0) {
190
+ parts.push(`Workflows (${workflows.length}): ${workflows.map((w) => w.name ?? w.file ?? 'unknown').join(', ')}`);
191
+ }
192
+ }
193
+ catch { /* find-workflows failed */ }
194
+ // TypeScript config
195
+ const tsConfigPath = path.join(projectDir, 'tsconfig.json');
196
+ if (fsMod.existsSync(tsConfigPath))
197
+ parts.push('TypeScript: yes');
198
+ // Weaver config
199
+ const weaverConfigPath = path.join(projectDir, '.weaver.json');
200
+ if (fsMod.existsSync(weaverConfigPath)) {
201
+ try {
202
+ const wc = JSON.parse(fsMod.readFileSync(weaverConfigPath, 'utf-8'));
203
+ parts.push(`Weaver provider: ${typeof wc.provider === 'string' ? wc.provider : wc.provider?.name ?? 'auto'}`);
204
+ }
205
+ catch { /* parse failed */ }
206
+ }
207
+ if (parts.length > 0) {
208
+ knowledge.learn('project:context', parts.join('\n'), 'auto-scan');
209
+ systemPrompt += '\n\n## Project Context (auto-scanned)\n\n' + parts.join('\n');
210
+ }
211
+ }
212
+ else {
213
+ // Context already scanned — inject from knowledge store
214
+ systemPrompt += '\n\n## Project Context\n\n' + existing[0].value;
215
+ }
216
+ }
217
+ catch { /* knowledge store not available */ }
114
218
  // Persistent conversation store
115
219
  const { ConversationStore } = await import('./conversation-store.js');
116
220
  const store = new ConversationStore();
@@ -128,7 +232,7 @@ export async function runAssistant(opts) {
128
232
  compressHistory(history);
129
233
  }
130
234
  else if (opts.newConversation) {
131
- conversation = store.create(projectDir);
235
+ conversation = await store.create(projectDir);
132
236
  }
133
237
  else {
134
238
  // Auto-resume most recent if within 1 hour, else create new
@@ -139,7 +243,7 @@ export async function runAssistant(opts) {
139
243
  compressHistory(history);
140
244
  }
141
245
  else {
142
- conversation = store.create(projectDir);
246
+ conversation = await store.create(projectDir);
143
247
  }
144
248
  }
145
249
  // Resolve versions
@@ -169,24 +273,97 @@ export async function runAssistant(opts) {
169
273
  cloudPlan = creds.plan ?? 'connected';
170
274
  cloudStatus = `Cloud: ${cloudPlan}`;
171
275
  }
276
+ else if (creds.token) {
277
+ cloudStatus = 'Cloud: expired (run "fw login" to refresh)';
278
+ }
172
279
  }
173
280
  }
174
281
  catch { /* credentials not available */ }
175
- const header = [`weaver assistant v${weaverVersion}`, `flow-weaver v${fwVersion}`];
176
- if (cloudStatus)
177
- header.push(cloudStatus);
178
- out(`\n ${c.bold(header[0])} ${c.dim(`· ${header.slice(1).join(' · ')}`)}\n`);
179
- out(` ${c.dim(`Project: ${path.basename(projectDir)}`)}\n`);
180
- if (!cloudStatus) {
181
- out(` ${c.dim('AI: Local (set ANTHROPIC_API_KEY or run "fw login" to connect)')}\n`);
282
+ // Detect first-run: scan for existing workflows and conversation count
283
+ let workflowCount = 0;
284
+ let projectName = path.basename(projectDir);
285
+ let packageDesc = '';
286
+ let isFirstRun = !conversation.title;
287
+ try {
288
+ const fsMod = await import('node:fs');
289
+ const pkgPath = path.join(projectDir, 'package.json');
290
+ if (fsMod.existsSync(pkgPath)) {
291
+ const pkg = JSON.parse(fsMod.readFileSync(pkgPath, 'utf-8'));
292
+ projectName = pkg.name ?? projectName;
293
+ packageDesc = pkg.description ?? '';
294
+ }
295
+ const { execFileSync: fwExec } = await import('node:child_process');
296
+ try {
297
+ const found = fwExec('npx', ['flow-weaver', 'find-workflows', '--json'], {
298
+ encoding: 'utf-8', cwd: projectDir, timeout: 10_000, stdio: ['pipe', 'pipe', 'pipe'],
299
+ });
300
+ const parsed = JSON.parse(found);
301
+ workflowCount = Array.isArray(parsed) ? parsed.length : (parsed.count ?? 0);
302
+ }
303
+ catch { /* find-workflows not available */ }
182
304
  }
183
- if (conversation.title) {
184
- out(` ${c.dim(`Resuming: "${conversation.title}" (${conversation.messageCount} messages)`)}\n`);
305
+ catch { /* scan failed */ }
306
+ if (!isDebug) {
307
+ const header = [`weaver assistant v${weaverVersion}`, `flow-weaver v${fwVersion}`];
308
+ if (cloudStatus)
309
+ header.push(cloudStatus);
310
+ out(`\n ${c.bold(header[0])} ${c.dim(`· ${header.slice(1).join(' · ')}`)}\n`);
311
+ out(` ${c.dim(`Project: ${projectName}`)}\n`);
312
+ if (!cloudStatus) {
313
+ out(` ${c.dim('AI: Local (set ANTHROPIC_API_KEY or run "fw login" to connect)')}\n`);
314
+ }
315
+ if (conversation.title) {
316
+ const ago = Math.round((Date.now() - conversation.lastMessageAt) / 60000);
317
+ out(` ${c.dim(`Resuming: "${conversation.title}" (${conversation.messageCount} messages, ${ago}m ago). /new to start fresh`)}\n`);
318
+ }
319
+ else if (workflowCount === 0 && isFirstRun) {
320
+ out(` ${c.dim('Welcome! No workflows found yet.')}\n`);
321
+ out(` ${c.dim('Try: "create a hello world workflow" or "what can you do?"')}\n`);
322
+ }
323
+ else if (workflowCount > 0 && isFirstRun) {
324
+ out(` ${c.dim(`Found ${workflowCount} workflow${workflowCount !== 1 ? 's' : ''}. New conversation.`)}\n`);
325
+ out(` ${c.dim('Try: "validate my workflows" or "show project health"')}\n`);
326
+ }
327
+ else {
328
+ out(` ${c.dim('Type your request. /help for commands.')}\n`);
329
+ }
330
+ out('\n');
185
331
  }
186
- else {
187
- out(` ${c.dim('New conversation')}\n`);
332
+ // Proactive session greeting with project status (for returning users with data)
333
+ if (!isDebug && !isFirstRun) {
334
+ try {
335
+ const { ProjectModelStore } = await import('./project-model.js');
336
+ const pms = new ProjectModelStore(projectDir);
337
+ const model = await pms.getOrBuild();
338
+ if (model && (model.health.workflows.length > 0 || model.bots.length > 0)) {
339
+ out(` ${c.dim(pms.formatSessionGreeting(model))}\n`);
340
+ }
341
+ }
342
+ catch { /* project model not available yet */ }
343
+ }
344
+ // Check for updates (cached, max once per 24h, non-blocking)
345
+ if (!isDebug) {
346
+ try {
347
+ const { checkForUpdates, formatUpdateNotification } = await import('./update-checker.js');
348
+ const updates = await checkForUpdates(projectDir);
349
+ const notification = formatUpdateNotification(updates);
350
+ if (notification) {
351
+ out(` ${c.yellow('⬆')} ${c.dim(notification.split('\n')[0])}\n`);
352
+ systemPrompt += `\n\n## Update Available\n\n${notification}\nMention this to the user if relevant.`;
353
+ }
354
+ }
355
+ catch { /* update check failed — non-fatal */ }
356
+ }
357
+ // Inject first-run context into system prompt so the assistant adapts
358
+ if (workflowCount === 0 && isFirstRun) {
359
+ systemPrompt += '\n\n## First-Run Context\n\nThis is a NEW user with NO workflows yet. Be welcoming. Suggest creating their first workflow. If they describe what they want to build, offer to create it immediately. Do NOT assume they know Flow Weaver concepts — explain briefly as you go.';
360
+ if (packageDesc) {
361
+ systemPrompt += `\nProject description: "${packageDesc}". Use this to suggest a relevant first workflow.`;
362
+ }
363
+ }
364
+ else if (workflowCount > 0 && isFirstRun) {
365
+ systemPrompt += `\n\n## First Conversation Context\n\nThis user has ${workflowCount} existing workflow${workflowCount !== 1 ? 's' : ''} but this is their first conversation with you. Offer to validate, describe, or improve their workflows. Be helpful but don't assume they're a beginner.`;
188
366
  }
189
- out(` ${c.dim('Type your request. Ctrl+C to exit. /help for commands.')}\n\n`);
190
367
  // Rich input with history, arrows, tab completion, slash commands
191
368
  const { RichInput } = await import('./rich-input.js');
192
369
  const { getSlashCompletions, handleSlashCommand } = await import('./slash-commands.js');
@@ -206,34 +383,77 @@ export async function runAssistant(opts) {
206
383
  return () => Promise.resolve(opts.inputMessages[i++] ?? null);
207
384
  })()
208
385
  : () => richInput.getInput();
386
+ // Debug mode: collect tool calls and response text per turn
387
+ let debugToolCalls = [];
388
+ const debugStreamToolNames = new Map(); // id -> name for CLI provider tool tracking
389
+ let debugResponseText = '';
390
+ let debugInsightNudge;
391
+ let debugTurnCount = 0;
209
392
  let lastStreamType = '';
210
393
  const onStreamEvent = (event) => {
211
394
  if (event.type === 'text_delta') {
212
- if (lastStreamType === 'thinking_delta')
395
+ if (lastStreamType === 'thinking_delta' && !isDebug)
213
396
  out('\n\n');
214
- out(event.text);
397
+ if (isDebug) {
398
+ debugResponseText += event.text;
399
+ }
400
+ else {
401
+ out(event.text);
402
+ }
215
403
  }
216
404
  else if (event.type === 'thinking_delta') {
217
- out(c.dim(event.text));
405
+ if (!isDebug)
406
+ out(c.dim(event.text));
407
+ }
408
+ // Capture tool events from stream (CLI provider handles tools via MCP,
409
+ // so onToolEvent never fires — we catch them here instead)
410
+ if (isDebug) {
411
+ const e = event;
412
+ if (event.type === 'tool_use_start') {
413
+ debugStreamToolNames.set(String(e.id), String(e.name));
414
+ }
415
+ if (event.type === 'tool_result') {
416
+ debugToolCalls.push({
417
+ name: debugStreamToolNames.get(String(e.id)) ?? 'unknown',
418
+ args: {},
419
+ result: String(e.result ?? '').slice(0, 2000),
420
+ isError: !!e.isError,
421
+ });
422
+ }
218
423
  }
219
424
  lastStreamType = event.type;
220
425
  };
426
+ let currentToolName = '';
427
+ let currentToolArgs = {};
221
428
  const onToolEvent = (event) => {
222
429
  if (event.type === 'tool_call_start') {
223
- const preview = toolPreview(event.name, event.args ?? {});
224
- out(`\n ${c.cyan('◆')} ${event.name}${preview ? c.dim(`(${preview})`) : ''}\n`);
430
+ currentToolName = event.name;
431
+ currentToolArgs = event.args ?? {};
432
+ if (!isDebug) {
433
+ const preview = toolPreview(event.name, event.args ?? {});
434
+ out(`\n ${c.cyan('◆')} ${event.name}${preview ? c.dim(`(${preview})`) : ''}\n`);
435
+ }
225
436
  }
226
437
  if (event.type === 'tool_call_result') {
227
- const icon = event.isError ? c.red('✗') : c.dim('→');
228
- const raw = event.result ?? '';
229
- // Show full output for diagram/describe/docs tools; truncate others
230
- const isVerboseTool = VERBOSE_TOOL_NAMES.has(event.name);
231
- if (isVerboseTool && raw.length > 150) {
232
- out(` ${icon}\n${raw}\n`);
438
+ if (isDebug) {
439
+ debugToolCalls.push({
440
+ name: currentToolName,
441
+ args: currentToolArgs,
442
+ result: (event.result ?? '').slice(0, 2000),
443
+ isError: !!event.isError,
444
+ });
233
445
  }
234
446
  else {
235
- const result = raw.replace(/\n/g, ' ').slice(0, 200);
236
- out(` ${icon} ${result}\n`);
447
+ const icon = event.isError ? c.red('✗') : c.dim('→');
448
+ const raw = event.result ?? '';
449
+ const isVerboseTool = VERBOSE_TOOL_NAMES.has(event.name);
450
+ if (isVerboseTool && raw.length > 150) {
451
+ out(` ${icon}\n${raw}\n`);
452
+ }
453
+ else {
454
+ const result = raw.replace(/\n/g, ' ').slice(0, 200);
455
+ out(` ${icon} ${result}\n`);
456
+ }
237
457
  }
238
458
  }
239
459
  };
@@ -246,7 +466,7 @@ export async function runAssistant(opts) {
246
466
  conversationId: conversation.id,
247
467
  onClear: () => { history.length = 0; },
248
468
  onExit: () => { shouldExit = true; },
249
- onNew: () => { history.length = 0; conversation = store.create(projectDir); },
469
+ onNew: async () => { history.length = 0; conversation = await store.create(projectDir); },
250
470
  onVerbose: () => { out(` ${c.dim('Verbose toggling not yet wired to streaming.')}\n`); },
251
471
  };
252
472
  // Watch mode: monitor directory for file changes, auto-validate
@@ -266,7 +486,7 @@ export async function runAssistant(opts) {
266
486
  const parsed = JSON.parse(result);
267
487
  const errorCount = parsed.errorCount ?? parsed.errors?.length ?? 0;
268
488
  if (errorCount > 0) {
269
- out(`\n ${c.yellow('⚠')} ${filename} changed: ${errorCount} validation error(s)\n`);
489
+ out(`\n ${c.yellow('⚠')} ${opts.watchDir}/${filename}: ${errorCount} validation error(s). Ask me to fix them.\n`);
270
490
  out(` ${c.dim('Type a message to fix, or ignore.')}\n`);
271
491
  }
272
492
  }
@@ -276,6 +496,8 @@ export async function runAssistant(opts) {
276
496
  }
277
497
  catch { /* watch not available */ }
278
498
  }
499
+ // Track which insights have been nudged (by ID) to avoid repetition
500
+ const nudgedInsightIds = new Set();
279
501
  // Main conversation loop
280
502
  while (!shouldExit) {
281
503
  const input = await getNextInput();
@@ -285,11 +507,32 @@ export async function runAssistant(opts) {
285
507
  continue;
286
508
  // Handle slash commands
287
509
  if (input.startsWith('/')) {
288
- const handled = await handleSlashCommand(input, slashCtx);
289
- if (handled)
290
- continue;
291
- // Unknown slash command tell user
292
- out(` ${c.dim('Unknown command. Type /help for available commands.')}\n\n`);
510
+ if (isDebug) {
511
+ // Capture slash command output for debug JSON
512
+ let slashOutput = '';
513
+ const debugSlashCtx = { ...slashCtx, out: (s) => { slashOutput += s; } };
514
+ const handled = await handleSlashCommand(input, debugSlashCtx);
515
+ if (handled) {
516
+ debugTurnCount++;
517
+ // Strip ANSI codes for clean debug output
518
+ const clean = slashOutput.replace(/\x1b\[[0-9;]*m/g, '').trim();
519
+ process.stdout.write(JSON.stringify({
520
+ turn: debugTurnCount,
521
+ input,
522
+ slashCommand: true,
523
+ response: clean,
524
+ conversationId: conversation.id,
525
+ }) + '\n');
526
+ continue;
527
+ }
528
+ }
529
+ else {
530
+ const handled = await handleSlashCommand(input, slashCtx);
531
+ if (handled)
532
+ continue;
533
+ }
534
+ if (!isDebug)
535
+ out(` ${c.dim('Unknown command. Type /help for available commands.')}\n\n`);
293
536
  continue;
294
537
  }
295
538
  out('\n');
@@ -332,19 +575,97 @@ export async function runAssistant(opts) {
332
575
  }
333
576
  // Token-aware compression
334
577
  compressHistory(history);
578
+ // Proactive insight surfacing — update system prompt for next turn
579
+ // Max 3 nudges per session to avoid being annoying
580
+ if (nudgedInsightIds.size < 3) {
581
+ try {
582
+ const { ProjectModelStore } = await import('./project-model.js');
583
+ const { InsightEngine } = await import('./insight-engine.js');
584
+ const pms = new ProjectModelStore(projectDir);
585
+ const model = await pms.getOrBuild();
586
+ const engine = new InsightEngine();
587
+ const insights = engine.analyze(model).filter(i => i.confidence >= 0.6);
588
+ if (insights.length > 0) {
589
+ // Skip insights already nudged (by ID) or mentioned in conversation
590
+ const unsurfaced = insights.filter(insight => !nudgedInsightIds.has(insight.id) &&
591
+ !history.some(m => m.role === 'assistant' &&
592
+ typeof m.content === 'string' &&
593
+ m.content.includes(insight.title)));
594
+ if (unsurfaced.length > 0) {
595
+ const top = unsurfaced[0];
596
+ nudgedInsightIds.add(top.id);
597
+ const nudge = `\n\n[PROACTIVE CONTEXT: ${top.title}. ${top.description}${top.suggestion ? ` Suggestion: ${top.suggestion}` : ''}. Mention this naturally if relevant, or bring it up if there's a lull.]`;
598
+ if (isDebug)
599
+ debugInsightNudge = nudge;
600
+ if (!systemPrompt.includes('[PROACTIVE CONTEXT:')) {
601
+ systemPrompt += nudge;
602
+ }
603
+ else {
604
+ systemPrompt = systemPrompt.replace(/\n\n\[PROACTIVE CONTEXT:.*\]/s, nudge);
605
+ }
606
+ }
607
+ else {
608
+ // Remove stale nudge from system prompt
609
+ systemPrompt = systemPrompt.replace(/\n\n\[PROACTIVE CONTEXT:.*\]/s, '');
610
+ }
611
+ }
612
+ }
613
+ catch { /* insights not available */ }
614
+ }
615
+ // Check steering engine for time/event-based nudges
616
+ if (steeringEngine) {
617
+ const steerMsg = steeringEngine.check();
618
+ if (steerMsg) {
619
+ // Append to system prompt for next turn
620
+ if (systemPrompt.includes('[STEER') || systemPrompt.includes('[CONTEXT NOTE]') || systemPrompt.includes('[URGENT STEER]')) {
621
+ systemPrompt = systemPrompt.replace(/\n\n\[(CONTEXT NOTE|STEER|URGENT STEER)\].*$/s, '\n\n' + steerMsg);
622
+ }
623
+ else {
624
+ systemPrompt += '\n\n' + steerMsg;
625
+ }
626
+ }
627
+ }
628
+ // Debug mode: emit structured NDJSON per turn
629
+ if (isDebug) {
630
+ debugTurnCount++;
631
+ const debugOutput = {
632
+ turn: debugTurnCount,
633
+ input,
634
+ toolCalls: debugToolCalls,
635
+ response: debugResponseText,
636
+ tokensUsed,
637
+ systemPromptLength: systemPrompt.length,
638
+ insightNudge: debugInsightNudge,
639
+ conversationId: conversation.id,
640
+ };
641
+ process.stdout.write(JSON.stringify(debugOutput) + '\n');
642
+ // Reset for next turn
643
+ debugToolCalls = [];
644
+ debugStreamToolNames.clear();
645
+ debugResponseText = '';
646
+ debugInsightNudge = undefined;
647
+ }
335
648
  if (!result.success && result.summary) {
336
- out(`\n ${c.red(result.summary)}\n`);
649
+ if (!isDebug)
650
+ out(`\n ${c.red(result.summary)}\n`);
337
651
  }
338
652
  }
339
653
  catch (err) {
340
654
  const msg = err instanceof Error ? err.message : String(err);
341
- out(`\n ${c.red('Error:')} ${msg}\n`);
655
+ if (isDebug) {
656
+ process.stdout.write(JSON.stringify({ turn: ++debugTurnCount, error: msg, conversationId: conversation.id }) + '\n');
657
+ }
658
+ else {
659
+ out(`\n ${c.red('Error:')} ${msg}\n`);
660
+ }
342
661
  }
343
- out('\n');
662
+ if (!isDebug)
663
+ out('\n');
344
664
  }
345
665
  watcher?.close();
346
666
  richInput?.destroy();
347
- out(`\n ${c.dim('Goodbye.')}\n\n`);
667
+ if (!isDebug)
668
+ out(`\n ${c.dim('Goodbye.')}\n\n`);
348
669
  }
349
670
  function toolPreview(name, args) {
350
671
  if (args.name)
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-core.js","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-core.js","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"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"}