@synergenius/flow-weaver-pack-weaver 0.9.0 → 0.9.4

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 (235) hide show
  1. package/dist/bot/ai-client.d.ts +22 -2
  2. package/dist/bot/ai-client.d.ts.map +1 -1
  3. package/dist/bot/ai-client.js +168 -20
  4. package/dist/bot/ai-client.js.map +1 -1
  5. package/dist/bot/ansi.d.ts +13 -0
  6. package/dist/bot/ansi.d.ts.map +1 -0
  7. package/dist/bot/ansi.js +13 -0
  8. package/dist/bot/ansi.js.map +1 -0
  9. package/dist/bot/assistant-core.d.ts +25 -0
  10. package/dist/bot/assistant-core.d.ts.map +1 -0
  11. package/dist/bot/assistant-core.js +272 -0
  12. package/dist/bot/assistant-core.js.map +1 -0
  13. package/dist/bot/assistant-tools.d.ts +10 -0
  14. package/dist/bot/assistant-tools.d.ts.map +1 -0
  15. package/dist/bot/assistant-tools.js +324 -0
  16. package/dist/bot/assistant-tools.js.map +1 -0
  17. package/dist/bot/audit-logger.d.ts.map +1 -1
  18. package/dist/bot/audit-logger.js +9 -5
  19. package/dist/bot/audit-logger.js.map +1 -1
  20. package/dist/bot/bot-manager.d.ts +49 -0
  21. package/dist/bot/bot-manager.d.ts.map +1 -0
  22. package/dist/bot/bot-manager.js +279 -0
  23. package/dist/bot/bot-manager.js.map +1 -0
  24. package/dist/bot/child-process-tracker.d.ts +6 -0
  25. package/dist/bot/child-process-tracker.d.ts.map +1 -0
  26. package/dist/bot/child-process-tracker.js +35 -0
  27. package/dist/bot/child-process-tracker.js.map +1 -0
  28. package/dist/bot/cli-provider.d.ts.map +1 -1
  29. package/dist/bot/cli-provider.js +13 -8
  30. package/dist/bot/cli-provider.js.map +1 -1
  31. package/dist/bot/conversation-store.d.ts +40 -0
  32. package/dist/bot/conversation-store.d.ts.map +1 -0
  33. package/dist/bot/conversation-store.js +182 -0
  34. package/dist/bot/conversation-store.js.map +1 -0
  35. package/dist/bot/error-classifier.d.ts +27 -0
  36. package/dist/bot/error-classifier.d.ts.map +1 -0
  37. package/dist/bot/error-classifier.js +71 -0
  38. package/dist/bot/error-classifier.js.map +1 -0
  39. package/dist/bot/error-guide.d.ts +5 -0
  40. package/dist/bot/error-guide.d.ts.map +1 -0
  41. package/dist/bot/error-guide.js +5 -0
  42. package/dist/bot/error-guide.js.map +1 -0
  43. package/dist/bot/knowledge-store.d.ts +17 -0
  44. package/dist/bot/knowledge-store.d.ts.map +1 -0
  45. package/dist/bot/knowledge-store.js +53 -0
  46. package/dist/bot/knowledge-store.js.map +1 -0
  47. package/dist/bot/paths.d.ts +11 -0
  48. package/dist/bot/paths.d.ts.map +1 -0
  49. package/dist/bot/paths.js +26 -0
  50. package/dist/bot/paths.js.map +1 -0
  51. package/dist/bot/retry-utils.d.ts +5 -0
  52. package/dist/bot/retry-utils.d.ts.map +1 -0
  53. package/dist/bot/retry-utils.js +5 -0
  54. package/dist/bot/retry-utils.js.map +1 -0
  55. package/dist/bot/runner.d.ts.map +1 -1
  56. package/dist/bot/runner.js +12 -1
  57. package/dist/bot/runner.js.map +1 -1
  58. package/dist/bot/safety.d.ts +10 -0
  59. package/dist/bot/safety.d.ts.map +1 -0
  60. package/dist/bot/safety.js +14 -0
  61. package/dist/bot/safety.js.map +1 -0
  62. package/dist/bot/session-state.d.ts.map +1 -1
  63. package/dist/bot/session-state.js +3 -1
  64. package/dist/bot/session-state.js.map +1 -1
  65. package/dist/bot/steering.js +2 -2
  66. package/dist/bot/steering.js.map +1 -1
  67. package/dist/bot/step-executor.d.ts +10 -5
  68. package/dist/bot/step-executor.d.ts.map +1 -1
  69. package/dist/bot/step-executor.js +252 -3
  70. package/dist/bot/step-executor.js.map +1 -1
  71. package/dist/bot/system-prompt.d.ts +1 -1
  72. package/dist/bot/system-prompt.d.ts.map +1 -1
  73. package/dist/bot/system-prompt.js +69 -43
  74. package/dist/bot/system-prompt.js.map +1 -1
  75. package/dist/bot/task-decomposer.d.ts +24 -0
  76. package/dist/bot/task-decomposer.d.ts.map +1 -0
  77. package/dist/bot/task-decomposer.js +75 -0
  78. package/dist/bot/task-decomposer.js.map +1 -0
  79. package/dist/bot/task-queue.d.ts +17 -4
  80. package/dist/bot/task-queue.d.ts.map +1 -1
  81. package/dist/bot/task-queue.js +83 -5
  82. package/dist/bot/task-queue.js.map +1 -1
  83. package/dist/bot/terminal-renderer.d.ts +60 -0
  84. package/dist/bot/terminal-renderer.d.ts.map +1 -0
  85. package/dist/bot/terminal-renderer.js +204 -0
  86. package/dist/bot/terminal-renderer.js.map +1 -0
  87. package/dist/bot/tool-registry.d.ts +24 -0
  88. package/dist/bot/tool-registry.d.ts.map +1 -0
  89. package/dist/bot/tool-registry.js +458 -0
  90. package/dist/bot/tool-registry.js.map +1 -0
  91. package/dist/bot/types.d.ts +7 -0
  92. package/dist/bot/types.d.ts.map +1 -1
  93. package/dist/bot/weaver-tools.d.ts +18 -0
  94. package/dist/bot/weaver-tools.d.ts.map +1 -0
  95. package/dist/bot/weaver-tools.js +124 -0
  96. package/dist/bot/weaver-tools.js.map +1 -0
  97. package/dist/cli-bridge.d.ts.map +1 -1
  98. package/dist/cli-bridge.js +5 -1
  99. package/dist/cli-bridge.js.map +1 -1
  100. package/dist/cli-handlers.d.ts +13 -1
  101. package/dist/cli-handlers.d.ts.map +1 -1
  102. package/dist/cli-handlers.js +615 -48
  103. package/dist/cli-handlers.js.map +1 -1
  104. package/dist/mcp-tools.js +2 -2
  105. package/dist/mcp-tools.js.map +1 -1
  106. package/dist/node-types/abort-task.d.ts.map +1 -1
  107. package/dist/node-types/abort-task.js +4 -3
  108. package/dist/node-types/abort-task.js.map +1 -1
  109. package/dist/node-types/agent-execute.d.ts +38 -0
  110. package/dist/node-types/agent-execute.d.ts.map +1 -0
  111. package/dist/node-types/agent-execute.js +252 -0
  112. package/dist/node-types/agent-execute.js.map +1 -0
  113. package/dist/node-types/bot-report.d.ts +5 -3
  114. package/dist/node-types/bot-report.d.ts.map +1 -1
  115. package/dist/node-types/bot-report.js +39 -7
  116. package/dist/node-types/bot-report.js.map +1 -1
  117. package/dist/node-types/build-context.d.ts +3 -3
  118. package/dist/node-types/build-context.d.ts.map +1 -1
  119. package/dist/node-types/build-context.js +108 -24
  120. package/dist/node-types/build-context.js.map +1 -1
  121. package/dist/node-types/detect-provider.d.ts +2 -2
  122. package/dist/node-types/detect-provider.d.ts.map +1 -1
  123. package/dist/node-types/detect-provider.js +3 -1
  124. package/dist/node-types/detect-provider.js.map +1 -1
  125. package/dist/node-types/exec-validate-retry.d.ts.map +1 -1
  126. package/dist/node-types/exec-validate-retry.js +43 -6
  127. package/dist/node-types/exec-validate-retry.js.map +1 -1
  128. package/dist/node-types/execute-plan.d.ts.map +1 -1
  129. package/dist/node-types/execute-plan.js +31 -8
  130. package/dist/node-types/execute-plan.js.map +1 -1
  131. package/dist/node-types/execute-target.d.ts.map +1 -1
  132. package/dist/node-types/execute-target.js +3 -1
  133. package/dist/node-types/execute-target.js.map +1 -1
  134. package/dist/node-types/fix-errors.d.ts.map +1 -1
  135. package/dist/node-types/fix-errors.js +21 -5
  136. package/dist/node-types/fix-errors.js.map +1 -1
  137. package/dist/node-types/genesis-observe.d.ts.map +1 -1
  138. package/dist/node-types/genesis-observe.js +3 -1
  139. package/dist/node-types/genesis-observe.js.map +1 -1
  140. package/dist/node-types/genesis-report.js +4 -1
  141. package/dist/node-types/genesis-report.js.map +1 -1
  142. package/dist/node-types/git-ops.d.ts.map +1 -1
  143. package/dist/node-types/git-ops.js +98 -4
  144. package/dist/node-types/git-ops.js.map +1 -1
  145. package/dist/node-types/index.d.ts +2 -0
  146. package/dist/node-types/index.d.ts.map +1 -1
  147. package/dist/node-types/index.js +2 -0
  148. package/dist/node-types/index.js.map +1 -1
  149. package/dist/node-types/load-config.d.ts +2 -2
  150. package/dist/node-types/load-config.d.ts.map +1 -1
  151. package/dist/node-types/load-config.js.map +1 -1
  152. package/dist/node-types/plan-task.d.ts.map +1 -1
  153. package/dist/node-types/plan-task.js +14 -2
  154. package/dist/node-types/plan-task.js.map +1 -1
  155. package/dist/node-types/read-workflow.js +8 -2
  156. package/dist/node-types/read-workflow.js.map +1 -1
  157. package/dist/node-types/receive-task.d.ts.map +1 -1
  158. package/dist/node-types/receive-task.js +35 -26
  159. package/dist/node-types/receive-task.js.map +1 -1
  160. package/dist/node-types/send-notify.js +2 -1
  161. package/dist/node-types/send-notify.js.map +1 -1
  162. package/dist/node-types/validate-gate.d.ts +18 -0
  163. package/dist/node-types/validate-gate.d.ts.map +1 -0
  164. package/dist/node-types/validate-gate.js +96 -0
  165. package/dist/node-types/validate-gate.js.map +1 -0
  166. package/dist/workflows/genesis-task.d.ts +20 -12
  167. package/dist/workflows/genesis-task.d.ts.map +1 -1
  168. package/dist/workflows/genesis-task.js +20 -12
  169. package/dist/workflows/genesis-task.js.map +1 -1
  170. package/dist/workflows/weaver-agent.d.ts +35 -0
  171. package/dist/workflows/weaver-agent.d.ts.map +1 -0
  172. package/dist/workflows/weaver-agent.js +777 -0
  173. package/dist/workflows/weaver-agent.js.map +1 -0
  174. package/dist/workflows/weaver-bot-batch.d.ts +19 -26
  175. package/dist/workflows/weaver-bot-batch.d.ts.map +1 -1
  176. package/dist/workflows/weaver-bot-batch.js +1043 -27
  177. package/dist/workflows/weaver-bot-batch.js.map +1 -1
  178. package/dist/workflows/weaver-bot.d.ts +21 -35
  179. package/dist/workflows/weaver-bot.d.ts.map +1 -1
  180. package/dist/workflows/weaver-bot.js +1119 -36
  181. package/dist/workflows/weaver-bot.js.map +1 -1
  182. package/flowweaver.manifest.json +21 -1
  183. package/package.json +5 -2
  184. package/src/bot/ai-client.ts +180 -19
  185. package/src/bot/ansi.ts +12 -0
  186. package/src/bot/assistant-core.ts +312 -0
  187. package/src/bot/assistant-tools.ts +318 -0
  188. package/src/bot/audit-logger.ts +6 -5
  189. package/src/bot/bot-manager.ts +293 -0
  190. package/src/bot/child-process-tracker.ts +40 -0
  191. package/src/bot/cli-provider.ts +13 -8
  192. package/src/bot/conversation-store.ts +222 -0
  193. package/src/bot/error-classifier.ts +90 -0
  194. package/src/bot/error-guide.ts +4 -0
  195. package/src/bot/knowledge-store.ts +59 -0
  196. package/src/bot/paths.ts +27 -0
  197. package/src/bot/retry-utils.ts +4 -0
  198. package/src/bot/runner.ts +12 -1
  199. package/src/bot/safety.ts +16 -0
  200. package/src/bot/session-state.ts +2 -1
  201. package/src/bot/steering.ts +2 -2
  202. package/src/bot/step-executor.ts +313 -5
  203. package/src/bot/system-prompt.ts +70 -47
  204. package/src/bot/task-decomposer.ts +100 -0
  205. package/src/bot/task-queue.ts +100 -8
  206. package/src/bot/terminal-renderer.ts +238 -0
  207. package/src/bot/tool-registry.ts +477 -0
  208. package/src/bot/types.ts +8 -0
  209. package/src/bot/weaver-tools.ts +134 -0
  210. package/src/cli-bridge.ts +7 -1
  211. package/src/cli-handlers.ts +624 -48
  212. package/src/mcp-tools.ts +2 -2
  213. package/src/node-types/abort-task.ts +5 -4
  214. package/src/node-types/agent-execute.ts +303 -0
  215. package/src/node-types/bot-report.ts +40 -9
  216. package/src/node-types/build-context.ts +112 -25
  217. package/src/node-types/detect-provider.ts +4 -3
  218. package/src/node-types/exec-validate-retry.ts +47 -8
  219. package/src/node-types/execute-plan.ts +32 -8
  220. package/src/node-types/execute-target.ts +2 -1
  221. package/src/node-types/fix-errors.ts +20 -5
  222. package/src/node-types/genesis-observe.ts +2 -1
  223. package/src/node-types/genesis-report.ts +1 -1
  224. package/src/node-types/git-ops.ts +93 -4
  225. package/src/node-types/index.ts +2 -0
  226. package/src/node-types/load-config.ts +3 -3
  227. package/src/node-types/plan-task.ts +15 -3
  228. package/src/node-types/read-workflow.ts +2 -2
  229. package/src/node-types/receive-task.ts +31 -26
  230. package/src/node-types/send-notify.ts +1 -1
  231. package/src/node-types/validate-gate.ts +112 -0
  232. package/src/workflows/genesis-task.ts +20 -12
  233. package/src/workflows/weaver-agent.ts +799 -0
  234. package/src/workflows/weaver-bot-batch.ts +1049 -27
  235. package/src/workflows/weaver-bot.ts +1123 -36
@@ -0,0 +1,252 @@
1
+ import { runAgentLoop, createAnthropicProvider, getOrCreateCliSession, killAllCliSessions, } from '@synergenius/flow-weaver/agent';
2
+ import { WEAVER_TOOLS, createWeaverExecutor } from '../bot/weaver-tools.js';
3
+ import { auditEmit } from '../bot/audit-logger.js';
4
+ import { withRetry, getErrorGuidance } from '../bot/error-classifier.js';
5
+ import { CostTracker } from '../bot/cost-tracker.js';
6
+ // Clean up persistent sessions on process exit
7
+ let cleanupRegistered = false;
8
+ function registerCleanup() {
9
+ if (cleanupRegistered)
10
+ return;
11
+ cleanupRegistered = true;
12
+ const cleanup = () => { try {
13
+ killAllCliSessions();
14
+ }
15
+ catch (err) {
16
+ if (process.env.WEAVER_VERBOSE)
17
+ console.error('[agent-execute] session cleanup failed:', err);
18
+ } };
19
+ process.on('exit', cleanup);
20
+ process.on('SIGTERM', cleanup);
21
+ process.on('SIGINT', cleanup);
22
+ }
23
+ /**
24
+ * Adapter: wraps a persistent CliSession as an AgentProvider.
25
+ * The agent loop sends full message history each iteration;
26
+ * we only forward the latest user/tool messages since the session
27
+ * maintains its own conversation state.
28
+ */
29
+ class CliSessionProvider {
30
+ session;
31
+ sentCount = 0;
32
+ constructor(session) {
33
+ this.session = session;
34
+ }
35
+ async *stream(messages, _tools, options) {
36
+ if (!this.session.ready)
37
+ await this.session.spawn();
38
+ // Only send new messages (session has history of previous ones)
39
+ const newMessages = messages.slice(this.sentCount);
40
+ this.sentCount = messages.length;
41
+ // Format new messages into a prompt string
42
+ const prompt = newMessages
43
+ .map((m) => {
44
+ if (m.role === 'user')
45
+ return typeof m.content === 'string' ? m.content : JSON.stringify(m.content);
46
+ if (m.role === 'tool')
47
+ return `Tool result (${m.toolCallId}): ${typeof m.content === 'string' ? m.content : JSON.stringify(m.content)}`;
48
+ return '';
49
+ })
50
+ .filter(Boolean)
51
+ .join('\n');
52
+ if (!prompt)
53
+ return;
54
+ // Only pass system prompt on the first call
55
+ const systemPrompt = this.sentCount <= messages.length ? options?.systemPrompt : undefined;
56
+ yield* this.session.send(prompt, systemPrompt);
57
+ }
58
+ /** Reset for a new task (new conversation context) */
59
+ resetForNewTask() {
60
+ this.sentCount = 0;
61
+ }
62
+ }
63
+ // Test-only export (tree-shaken in production bundles)
64
+ export { CliSessionProvider };
65
+ /**
66
+ * Tool-use agent execution. Claude drives the entire task via tool calls
67
+ * (validate, read-file, patch-file, run-shell, etc.) in a single continuous
68
+ * conversation. No separate plan or retry loop needed.
69
+ *
70
+ * @flowWeaver nodeType
71
+ * @label Agent Execute
72
+ * @input ctx [order:0] - Weaver context (JSON)
73
+ * @output ctx [order:0] - Weaver context with results (JSON)
74
+ * @output onSuccess [order:-2] - On Success
75
+ * @output onFailure [order:-1] [hidden] - On Failure
76
+ */
77
+ export async function weaverAgentExecute(execute, ctx) {
78
+ const context = JSON.parse(ctx);
79
+ const { env } = context;
80
+ if (!execute) {
81
+ context.resultJson = JSON.stringify({ success: true, toolCallCount: 0 });
82
+ context.validationResultJson = '[]';
83
+ context.filesModified = '[]';
84
+ context.stepLogJson = '[]';
85
+ context.allValid = true;
86
+ return { onSuccess: true, onFailure: false, ctx: JSON.stringify(context) };
87
+ }
88
+ const { providerInfo: pInfo, projectDir } = env;
89
+ const task = JSON.parse(context.taskJson);
90
+ // Build system prompt
91
+ let systemPrompt;
92
+ try {
93
+ const mod = await import('../bot/system-prompt.js');
94
+ const basePrompt = await mod.buildSystemPrompt();
95
+ let cliCommands = [];
96
+ try {
97
+ const docMeta = await import('@synergenius/flow-weaver/doc-metadata');
98
+ cliCommands = docMeta.CLI_COMMANDS ?? [];
99
+ }
100
+ catch (err) {
101
+ if (process.env.WEAVER_VERBOSE)
102
+ console.error('[agent-execute] doc-metadata unavailable (older fw):', err);
103
+ }
104
+ const botPrompt = mod.buildBotSystemPrompt(context.contextBundle, cliCommands, projectDir);
105
+ systemPrompt = basePrompt + '\n\n' + botPrompt;
106
+ }
107
+ catch (err) {
108
+ if (process.env.WEAVER_VERBOSE)
109
+ console.error('[agent-execute] system prompt build failed, using fallback:', err);
110
+ systemPrompt = 'You are Weaver, an AI workflow bot. Use the provided tools to complete tasks.';
111
+ }
112
+ const taskPrompt = `Task: ${task.instruction}\nProject directory: ${projectDir}\n${task.targets ? 'Target files: ' + task.targets.join(', ') : ''}`;
113
+ // Create renderer — single source of all terminal output
114
+ const { TerminalRenderer } = await import('../bot/terminal-renderer.js');
115
+ const renderer = new TerminalRenderer({ verbose: !!process.env.WEAVER_VERBOSE });
116
+ auditEmit('run-start', { task: task.instruction });
117
+ try {
118
+ const provider = createProvider(pInfo, projectDir);
119
+ const executor = createWeaverExecutor(projectDir);
120
+ const filesModified = [];
121
+ const stepLog = [];
122
+ const taskStart = Date.now();
123
+ // Route tool events through renderer + track state
124
+ const onToolEvent = (event) => {
125
+ renderer.onToolEvent(event);
126
+ if (event.type === 'tool_call_result') {
127
+ stepLog.push({
128
+ step: event.name,
129
+ status: event.isError ? 'error' : 'ok',
130
+ detail: event.isError ? (event.result ?? '').slice(0, 200) : event.name,
131
+ });
132
+ if ((event.name === 'patch_file' || event.name === 'write_file') && !event.isError && event.args?.file) {
133
+ filesModified.push(event.args.file);
134
+ }
135
+ }
136
+ };
137
+ const onStreamEvent = (event) => renderer.onStreamEvent(event);
138
+ const result = await withRetry(() => runAgentLoop(provider, WEAVER_TOOLS, executor, [{ role: 'user', content: taskPrompt }], { systemPrompt, maxIterations: 15, onToolEvent, onStreamEvent }), {
139
+ maxRetries: 3,
140
+ baseDelayMs: 5_000,
141
+ onRetry: (attempt, delay, err) => {
142
+ renderer.warn(`Transient error, retrying in ${delay / 1000}s (attempt ${attempt}/3): ${err.message.slice(0, 80)}`);
143
+ },
144
+ });
145
+ const usage = result.usage;
146
+ const model = pInfo.model ?? 'claude-sonnet-4-6';
147
+ const estimatedCost = CostTracker.estimateCost(model, {
148
+ inputTokens: usage.promptTokens,
149
+ outputTokens: usage.completionTokens,
150
+ });
151
+ // Post-agent validation gate: don't trust the AI's self-assessment
152
+ const uniqueFiles = [...new Set(filesModified)];
153
+ let validationPassed = result.success;
154
+ if (uniqueFiles.length > 0) {
155
+ try {
156
+ const { weaverValidateGate } = await import('./validate-gate.js');
157
+ const gateCtx = { ...context, filesModified: JSON.stringify(uniqueFiles) };
158
+ const gateResult = weaverValidateGate(JSON.stringify(gateCtx));
159
+ const gateData = JSON.parse(gateResult.ctx);
160
+ if (!gateData.allValid) {
161
+ validationPassed = false;
162
+ renderer.warn('Post-agent validation found errors — task marked as failed');
163
+ }
164
+ context.validationResultJson = gateData.validationResultJson;
165
+ }
166
+ catch (err) {
167
+ if (process.env.WEAVER_VERBOSE)
168
+ console.error('[agent-execute] validate-gate unavailable, skipping:', err);
169
+ }
170
+ }
171
+ context.resultJson = JSON.stringify({
172
+ success: validationPassed,
173
+ summary: result.summary,
174
+ toolCallCount: result.toolCallCount,
175
+ usage: { inputTokens: usage.promptTokens, outputTokens: usage.completionTokens, estimatedCost },
176
+ });
177
+ context.filesModified = JSON.stringify(uniqueFiles);
178
+ context.stepLogJson = JSON.stringify(stepLog);
179
+ context.allValid = validationPassed;
180
+ auditEmit('run-complete', {
181
+ success: validationPassed,
182
+ toolCalls: result.toolCallCount,
183
+ filesModified: uniqueFiles.length,
184
+ tokens: { in: usage.promptTokens, out: usage.completionTokens },
185
+ estimatedCost,
186
+ });
187
+ renderer.taskEnd(validationPassed, {
188
+ toolCalls: result.toolCallCount,
189
+ inputTokens: usage.promptTokens,
190
+ outputTokens: usage.completionTokens,
191
+ estimatedCost,
192
+ filesModified: uniqueFiles.length,
193
+ elapsed: Date.now() - taskStart,
194
+ });
195
+ return { onSuccess: validationPassed, onFailure: !validationPassed, ctx: JSON.stringify(context) };
196
+ }
197
+ catch (err) {
198
+ const msg = err instanceof Error ? err.message : String(err);
199
+ let errorDetail = msg;
200
+ const guidance = getErrorGuidance(msg);
201
+ if (guidance)
202
+ errorDetail = `${msg}\n Hint: ${guidance}`;
203
+ renderer.error('Agent error', errorDetail);
204
+ context.resultJson = JSON.stringify({ success: false, error: msg });
205
+ context.filesModified = '[]';
206
+ context.stepLogJson = '[]';
207
+ context.allValid = false;
208
+ return { onSuccess: false, onFailure: true, ctx: JSON.stringify(context) };
209
+ }
210
+ }
211
+ /**
212
+ * Create an AgentProvider from pack-weaver's ProviderInfo.
213
+ */
214
+ function createProvider(pInfo, projectDir) {
215
+ const type = pInfo.type ?? 'auto';
216
+ // Explicit Anthropic API
217
+ if (type === 'anthropic' && pInfo.apiKey) {
218
+ return createAnthropicProvider({
219
+ apiKey: pInfo.apiKey,
220
+ model: pInfo.model,
221
+ maxTokens: pInfo.maxTokens,
222
+ });
223
+ }
224
+ // Claude CLI — use persistent session for warm start
225
+ if (type === 'claude-cli') {
226
+ return createSessionProvider(pInfo.model, projectDir);
227
+ }
228
+ // Auto mode: try Anthropic API key from env, then fall back to Claude CLI
229
+ if (type === 'auto') {
230
+ if (process.env.ANTHROPIC_API_KEY) {
231
+ return createAnthropicProvider({
232
+ apiKey: process.env.ANTHROPIC_API_KEY,
233
+ model: pInfo.model,
234
+ maxTokens: pInfo.maxTokens,
235
+ });
236
+ }
237
+ // No API key — use Claude CLI with persistent session
238
+ return createSessionProvider(pInfo.model, projectDir);
239
+ }
240
+ throw new Error(`Unsupported provider type: ${type}. Use 'anthropic', 'claude-cli', or 'auto'.`);
241
+ }
242
+ function createSessionProvider(model, projectDir) {
243
+ registerCleanup();
244
+ const key = projectDir ?? process.cwd();
245
+ const session = getOrCreateCliSession(key, {
246
+ binPath: 'claude',
247
+ cwd: key,
248
+ model: model ?? 'claude-sonnet-4-6',
249
+ });
250
+ return new CliSessionProvider(session);
251
+ }
252
+ //# sourceMappingURL=agent-execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-execute.js","sourceRoot":"","sources":["../../src/node-types/agent-execute.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Generates the final bot session report. Receives context from any
3
3
  * of the three paths: read-only, main execution, or abort.
4
+ * Also marks the queue task as completed or failed.
4
5
  *
5
6
  * @flowWeaver nodeType
6
- * @expression
7
7
  * @label Bot Report
8
8
  * @executeWhen DISJUNCTION
9
9
  * @input [mainCtx] [order:0] - Context from main path (JSON, optional)
@@ -13,8 +13,10 @@
13
13
  * @output reportJson [order:1] [hidden] - Full report (JSON)
14
14
  * @output onFailure [hidden]
15
15
  */
16
- export declare function weaverBotReport(mainCtx?: string, readCtx?: string, abortCtx?: string): {
16
+ export declare function weaverBotReport(execute: boolean, mainCtx?: string, readCtx?: string, abortCtx?: string): Promise<{
17
+ onSuccess: boolean;
18
+ onFailure: boolean;
17
19
  summary: string;
18
20
  reportJson: string;
19
- };
21
+ }>;
20
22
  //# sourceMappingURL=bot-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bot-report.d.ts","sourceRoot":"","sources":["../../src/node-types/bot-report.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA4DzC"}
1
+ {"version":3,"file":"bot-report.d.ts","sourceRoot":"","sources":["../../src/node-types/bot-report.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqE1F"}
@@ -1,9 +1,13 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { withFileLock } from '../bot/file-lock.js';
1
5
  /**
2
6
  * Generates the final bot session report. Receives context from any
3
7
  * of the three paths: read-only, main execution, or abort.
8
+ * Also marks the queue task as completed or failed.
4
9
  *
5
10
  * @flowWeaver nodeType
6
- * @expression
7
11
  * @label Bot Report
8
12
  * @executeWhen DISJUNCTION
9
13
  * @input [mainCtx] [order:0] - Context from main path (JSON, optional)
@@ -13,11 +17,11 @@
13
17
  * @output reportJson [order:1] [hidden] - Full report (JSON)
14
18
  * @output onFailure [hidden]
15
19
  */
16
- export function weaverBotReport(mainCtx, readCtx, abortCtx) {
20
+ export async function weaverBotReport(execute, mainCtx, readCtx, abortCtx) {
17
21
  const ctxStr = mainCtx ?? readCtx ?? abortCtx;
18
- if (!ctxStr) {
22
+ if (!execute || !ctxStr) {
19
23
  const report = { task: {}, path: 'unknown', result: null, filesModified: [], gitResult: null, timestamp: Date.now() };
20
- return { summary: '', reportJson: JSON.stringify(report) };
24
+ return { onSuccess: true, onFailure: false, summary: '', reportJson: JSON.stringify(report) };
21
25
  }
22
26
  const context = JSON.parse(ctxStr);
23
27
  const task = context.taskJson ? JSON.parse(context.taskJson) : {};
@@ -41,8 +45,9 @@ export function weaverBotReport(mainCtx, readCtx, abortCtx) {
41
45
  if (task.instruction) {
42
46
  parts.push(`Task: ${task.instruction}`);
43
47
  }
48
+ const success = result?.success !== false && pathName !== 'abort';
44
49
  if (result) {
45
- parts.push(`Outcome: ${result.outcome ?? (result.success ? 'completed' : 'failed')}`);
50
+ parts.push(`Outcome: ${result.outcome ?? (success ? 'completed' : 'failed')}`);
46
51
  if (result.summary)
47
52
  parts.push(`Summary: ${result.summary}`);
48
53
  }
@@ -53,6 +58,16 @@ export function weaverBotReport(mainCtx, readCtx, abortCtx) {
53
58
  parts.push('Git: committed');
54
59
  }
55
60
  const summary = parts.join(' | ');
61
+ // Mark queue task as completed or failed
62
+ if (task.queueId) {
63
+ try {
64
+ await markQueueTask(task.queueId, success ? 'completed' : 'failed');
65
+ }
66
+ catch (err) {
67
+ if (process.env.WEAVER_VERBOSE)
68
+ console.error('[bot-report] queue update failed:', err);
69
+ }
70
+ }
56
71
  const report = {
57
72
  task,
58
73
  path: pathName,
@@ -61,7 +76,24 @@ export function weaverBotReport(mainCtx, readCtx, abortCtx) {
61
76
  gitResult,
62
77
  timestamp: Date.now(),
63
78
  };
64
- console.log(`\n\x1b[1m${result?.success !== false ? '\x1b[32m' : '\x1b[31m'}Bot Report: ${summary}\x1b[0m\n`);
65
- return { summary, reportJson: JSON.stringify(report) };
79
+ console.log(`\n\x1b[1m${success ? '\x1b[32m' : '\x1b[31m'}Bot Report: ${summary}\x1b[0m\n`);
80
+ return { onSuccess: success, onFailure: !success, summary, reportJson: JSON.stringify(report) };
81
+ }
82
+ async function markQueueTask(id, status) {
83
+ const queuePath = path.join(os.homedir(), '.weaver', 'task-queue.ndjson');
84
+ if (!fs.existsSync(queuePath))
85
+ return;
86
+ await withFileLock(queuePath, () => {
87
+ const content = fs.readFileSync(queuePath, 'utf-8').trim();
88
+ if (!content)
89
+ return;
90
+ const tasks = content.split('\n').filter(Boolean).map(l => JSON.parse(l));
91
+ const task = tasks.find((t) => t.id === id);
92
+ if (task) {
93
+ task.status = status;
94
+ fs.writeFileSync(queuePath, tasks.map((t) => JSON.stringify(t)).join('\n') + '\n', 'utf-8');
95
+ console.log(`\x1b[36m→ Queue task ${id}: ${status}\x1b[0m`);
96
+ }
97
+ });
66
98
  }
67
99
  //# sourceMappingURL=bot-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bot-report.js","sourceRoot":"","sources":["../../src/node-types/bot-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot-report.js","sourceRoot":"","sources":["../../src/node-types/bot-report.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Builds the knowledge bundle the AI needs for planning. Calls
3
- * flow-weaver context authoring for the base knowledge, and
4
- * appends target file sources for modify tasks.
2
+ * Builds the knowledge bundle the AI needs for planning.
3
+ * Adaptive: for modify tasks, includes only grammar + referenced node types.
4
+ * For create tasks, includes full authoring context + templates.
5
5
  *
6
6
  * @flowWeaver nodeType
7
7
  * @expression
@@ -1 +1 @@
1
- {"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CA+C/D"}
1
+ {"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAoB/D"}
@@ -2,9 +2,9 @@ import { execFileSync } from 'node:child_process';
2
2
  import * as fs from 'node:fs';
3
3
  import * as path from 'node:path';
4
4
  /**
5
- * Builds the knowledge bundle the AI needs for planning. Calls
6
- * flow-weaver context authoring for the base knowledge, and
7
- * appends target file sources for modify tasks.
5
+ * Builds the knowledge bundle the AI needs for planning.
6
+ * Adaptive: for modify tasks, includes only grammar + referenced node types.
7
+ * For create tasks, includes full authoring context + templates.
8
8
  *
9
9
  * @flowWeaver nodeType
10
10
  * @expression
@@ -18,32 +18,76 @@ export function weaverBuildContext(ctx) {
18
18
  const { projectDir } = context.env;
19
19
  const task = JSON.parse(context.taskJson);
20
20
  const sections = [];
21
+ if (task.mode === 'modify' && task.targets?.length) {
22
+ // Adaptive context: minimal grammar + target files + referenced node types
23
+ sections.push(...buildModifyContext(projectDir, task.targets));
24
+ }
25
+ else {
26
+ // Full context for create tasks or unknown modes
27
+ sections.push(...buildFullContext(projectDir, task.mode));
28
+ }
29
+ const bundle = sections.join('\n\n---\n\n');
30
+ // Output handled by session renderer; keep a dim line for debugging
31
+ if (process.env.WEAVER_VERBOSE)
32
+ process.stderr.write(`\x1b[2m Context: ${bundle.length} chars\x1b[0m\n`);
33
+ context.contextBundle = bundle;
34
+ return { ctx: JSON.stringify(context) };
35
+ }
36
+ /** Minimal context for modify tasks: grammar + annotations + target sources + referenced node types. */
37
+ function buildModifyContext(projectDir, targets) {
38
+ const sections = [];
39
+ // Minimal grammar (jsdoc-grammar + advanced-annotations only — skip concepts/scaffold/patterns)
21
40
  try {
22
- const ctxOutput = execFileSync('flow-weaver', ['context', 'authoring', '--profile', 'assistant'], {
23
- encoding: 'utf-8',
24
- stdio: ['pipe', 'pipe', 'pipe'],
25
- timeout: 30_000,
26
- cwd: projectDir,
27
- }).trim();
41
+ const ctxOutput = execFileSync('flow-weaver', ['context', '--topics', 'jsdoc-grammar,advanced-annotations', '--profile', 'assistant'], { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000, cwd: projectDir }).trim();
28
42
  if (ctxOutput)
29
43
  sections.push(ctxOutput);
30
44
  }
31
- catch {
45
+ catch (err) {
46
+ if (process.env.WEAVER_VERBOSE)
47
+ console.error('[build-context] modify context unavailable:', err);
32
48
  sections.push('(flow-weaver context not available)');
33
49
  }
34
- if (task.mode === 'modify' && task.targets) {
35
- for (const target of task.targets) {
36
- const filePath = path.isAbsolute(target) ? target : path.resolve(projectDir, target);
37
- try {
38
- if (fs.existsSync(filePath)) {
39
- const source = fs.readFileSync(filePath, 'utf-8');
40
- sections.push(`## Current Source: ${target}\n\n\`\`\`typescript\n${source}\n\`\`\``);
50
+ // Target file sources + referenced node type sources
51
+ const includedFiles = new Set();
52
+ for (const target of targets) {
53
+ const filePath = path.isAbsolute(target) ? target : path.resolve(projectDir, target);
54
+ try {
55
+ if (!fs.existsSync(filePath))
56
+ continue;
57
+ const source = fs.readFileSync(filePath, 'utf-8');
58
+ sections.push(`## Target: ${target}\n\n\`\`\`typescript\n${source}\n\`\`\``);
59
+ includedFiles.add(filePath);
60
+ // Extract import paths to find referenced node type files
61
+ const nodeTypeSources = extractReferencedNodeTypes(filePath, source, projectDir);
62
+ for (const [relPath, ntSource] of nodeTypeSources) {
63
+ const absPath = path.resolve(projectDir, relPath);
64
+ if (!includedFiles.has(absPath)) {
65
+ includedFiles.add(absPath);
66
+ sections.push(`## Node Type: ${relPath}\n\n\`\`\`typescript\n${ntSource}\n\`\`\``);
41
67
  }
42
68
  }
43
- catch { /* skip unreadable files */ }
44
69
  }
70
+ catch (err) {
71
+ if (process.env.WEAVER_VERBOSE)
72
+ console.error('[build-context] unreadable file:', err);
73
+ }
74
+ }
75
+ return sections;
76
+ }
77
+ /** Full context for create tasks: full authoring preset + templates. */
78
+ function buildFullContext(projectDir, mode) {
79
+ const sections = [];
80
+ try {
81
+ const ctxOutput = execFileSync('flow-weaver', ['context', 'authoring', '--profile', 'assistant'], { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000, cwd: projectDir }).trim();
82
+ if (ctxOutput)
83
+ sections.push(ctxOutput);
45
84
  }
46
- if (task.mode === 'create') {
85
+ catch (err) {
86
+ if (process.env.WEAVER_VERBOSE)
87
+ console.error('[build-context] full context unavailable:', err);
88
+ sections.push('(flow-weaver context not available)');
89
+ }
90
+ if (mode === 'create') {
47
91
  try {
48
92
  const templates = execFileSync('flow-weaver', ['list', 'templates'], {
49
93
  encoding: 'utf-8',
@@ -54,11 +98,51 @@ export function weaverBuildContext(ctx) {
54
98
  if (templates)
55
99
  sections.push(`## Available Templates\n\n${templates}`);
56
100
  }
57
- catch { /* templates not available */ }
101
+ catch (err) {
102
+ if (process.env.WEAVER_VERBOSE)
103
+ console.error('[build-context] templates not available:', err);
104
+ }
58
105
  }
59
- const bundle = sections.join('\n\n---\n\n');
60
- console.log(`\x1b[36m→ Context bundle: ${bundle.length} chars\x1b[0m`);
61
- context.contextBundle = bundle;
62
- return { ctx: JSON.stringify(context) };
106
+ return sections;
107
+ }
108
+ /**
109
+ * Extract node type file sources referenced by a workflow file's imports.
110
+ * Parses import statements to find relative imports from node-types directories.
111
+ */
112
+ function extractReferencedNodeTypes(filePath, source, projectDir) {
113
+ const results = [];
114
+ const dir = path.dirname(filePath);
115
+ // Match: import { ... } from '../node-types/foo.js' or './node-types/bar'
116
+ const importRegex = /import\s+(?:type\s+)?{[^}]+}\s+from\s+['"]([^'"]+)['"]/g;
117
+ let match;
118
+ while ((match = importRegex.exec(source)) !== null) {
119
+ const importPath = match[1];
120
+ // Only include relative imports that look like node type files
121
+ if (!importPath.startsWith('.') && !importPath.startsWith('/'))
122
+ continue;
123
+ if (!importPath.includes('node-type') && !importPath.includes('node_type'))
124
+ continue;
125
+ // Resolve the import to an absolute path
126
+ let resolved = path.resolve(dir, importPath);
127
+ // Try with .ts extension if no extension
128
+ if (!fs.existsSync(resolved)) {
129
+ if (fs.existsSync(resolved + '.ts'))
130
+ resolved = resolved + '.ts';
131
+ else if (fs.existsSync(resolved.replace(/\.js$/, '.ts')))
132
+ resolved = resolved.replace(/\.js$/, '.ts');
133
+ else
134
+ continue;
135
+ }
136
+ try {
137
+ const ntSource = fs.readFileSync(resolved, 'utf-8');
138
+ const relPath = path.relative(projectDir, resolved);
139
+ results.push([relPath, ntSource]);
140
+ }
141
+ catch (err) {
142
+ if (process.env.WEAVER_VERBOSE)
143
+ console.error('[build-context] unreadable node type:', err);
144
+ }
145
+ }
146
+ return results;
63
147
  }
64
148
  //# sourceMappingURL=build-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-context.js","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IACjD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAS,CAA0C,CAAC;IACpF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE;YAChG,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,UAAU;SAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACrF,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAClD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,MAAM,yBAAyB,MAAM,UAAU,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBACnE,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/B,OAAO,EAAE,MAAM;gBACf,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;IAEvE,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;IAC/B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"build-context.js","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { WeaverConfig, WeaverEnv } from '../bot/types.js';
1
+ import type { BotConfig, WeaverEnv } from '../bot/types.js';
2
2
  /**
3
3
  * Auto-detect or resolve the configured AI provider.
4
4
  * Assembles the WeaverEnv bundle from projectDir, config, and detected provider.
@@ -11,7 +11,7 @@ import type { WeaverConfig, WeaverEnv } from '../bot/types.js';
11
11
  * @output env [order:0] - Weaver environment bundle
12
12
  * @output onFailure [hidden]
13
13
  */
14
- export declare function weaverDetectProvider(projectDir: string, config: WeaverConfig): {
14
+ export declare function weaverDetectProvider(projectDir: string, config: BotConfig): {
15
15
  env: WeaverEnv;
16
16
  };
17
17
  //# sourceMappingURL=detect-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect-provider.d.ts","sourceRoot":"","sources":["../../src/node-types/detect-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAY7E;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG;IAC9E,GAAG,EAAE,SAAS,CAAC;CAChB,CAiDA"}
1
+ {"version":3,"file":"detect-provider.d.ts","sourceRoot":"","sources":["../../src/node-types/detect-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAY1E;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG;IAC3E,GAAG,EAAE,SAAS,CAAC;CAChB,CAkDA"}
@@ -63,7 +63,9 @@ export function weaverDetectProvider(projectDir, config) {
63
63
  throw new Error('Provider is "anthropic" but ANTHROPIC_API_KEY is not set');
64
64
  }
65
65
  const label = providerInfo.model ? `${type} (${providerInfo.model})` : type;
66
- console.log(`\x1b[36m→ Provider: ${label}\x1b[0m`);
66
+ // Provider info now shown by session renderer; keep for verbose/debug
67
+ if (process.env.WEAVER_VERBOSE)
68
+ process.stderr.write(`\x1b[2m Provider: ${label}\x1b[0m\n`);
67
69
  return {
68
70
  env: { projectDir, config, providerType: type, providerInfo },
69
71
  };