@yagr/agent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +257 -0
  3. package/dist/agent.d.ts +21 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +47 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +293 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config/init-yagr-home.d.ts +2 -0
  12. package/dist/config/init-yagr-home.d.ts.map +1 -0
  13. package/dist/config/init-yagr-home.js +6 -0
  14. package/dist/config/init-yagr-home.js.map +1 -0
  15. package/dist/config/load-env.d.ts +2 -0
  16. package/dist/config/load-env.d.ts.map +1 -0
  17. package/dist/config/load-env.js +20 -0
  18. package/dist/config/load-env.js.map +1 -0
  19. package/dist/config/load-n8n-engine-config.d.ts +6 -0
  20. package/dist/config/load-n8n-engine-config.d.ts.map +1 -0
  21. package/dist/config/load-n8n-engine-config.js +39 -0
  22. package/dist/config/load-n8n-engine-config.js.map +1 -0
  23. package/dist/config/yagr-config-service.d.ts +51 -0
  24. package/dist/config/yagr-config-service.d.ts.map +1 -0
  25. package/dist/config/yagr-config-service.js +103 -0
  26. package/dist/config/yagr-config-service.js.map +1 -0
  27. package/dist/config/yagr-home.d.ts +4 -0
  28. package/dist/config/yagr-home.d.ts.map +1 -0
  29. package/dist/config/yagr-home.js +25 -0
  30. package/dist/config/yagr-home.js.map +1 -0
  31. package/dist/engine/engine.d.ts +15 -0
  32. package/dist/engine/engine.d.ts.map +1 -0
  33. package/dist/engine/engine.js +2 -0
  34. package/dist/engine/engine.js.map +1 -0
  35. package/dist/engine/n8n-engine.d.ts +26 -0
  36. package/dist/engine/n8n-engine.d.ts.map +1 -0
  37. package/dist/engine/n8n-engine.js +200 -0
  38. package/dist/engine/n8n-engine.js.map +1 -0
  39. package/dist/engine/yagr-engine.d.ts +17 -0
  40. package/dist/engine/yagr-engine.d.ts.map +1 -0
  41. package/dist/engine/yagr-engine.js +37 -0
  42. package/dist/engine/yagr-engine.js.map +1 -0
  43. package/dist/gateway/cli.d.ts +8 -0
  44. package/dist/gateway/cli.d.ts.map +1 -0
  45. package/dist/gateway/cli.js +50 -0
  46. package/dist/gateway/cli.js.map +1 -0
  47. package/dist/gateway/history-viewport.d.ts +14 -0
  48. package/dist/gateway/history-viewport.d.ts.map +1 -0
  49. package/dist/gateway/history-viewport.js +51 -0
  50. package/dist/gateway/history-viewport.js.map +1 -0
  51. package/dist/gateway/interactive-ui.d.ts +4 -0
  52. package/dist/gateway/interactive-ui.d.ts.map +1 -0
  53. package/dist/gateway/interactive-ui.js +430 -0
  54. package/dist/gateway/interactive-ui.js.map +1 -0
  55. package/dist/gateway/manager.d.ts +25 -0
  56. package/dist/gateway/manager.d.ts.map +1 -0
  57. package/dist/gateway/manager.js +204 -0
  58. package/dist/gateway/manager.js.map +1 -0
  59. package/dist/gateway/telegram.d.ts +30 -0
  60. package/dist/gateway/telegram.d.ts.map +1 -0
  61. package/dist/gateway/telegram.js +406 -0
  62. package/dist/gateway/telegram.js.map +1 -0
  63. package/dist/gateway/types.d.ts +19 -0
  64. package/dist/gateway/types.d.ts.map +1 -0
  65. package/dist/gateway/types.js +2 -0
  66. package/dist/gateway/types.js.map +1 -0
  67. package/dist/gateway/webui.d.ts +13 -0
  68. package/dist/gateway/webui.d.ts.map +1 -0
  69. package/dist/gateway/webui.js +663 -0
  70. package/dist/gateway/webui.js.map +1 -0
  71. package/dist/index.d.ts +23 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +15 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/llm/create-language-model.d.ts +31 -0
  76. package/dist/llm/create-language-model.d.ts.map +1 -0
  77. package/dist/llm/create-language-model.js +129 -0
  78. package/dist/llm/create-language-model.js.map +1 -0
  79. package/dist/prompt/build-system-prompt.d.ts +3 -0
  80. package/dist/prompt/build-system-prompt.d.ts.map +1 -0
  81. package/dist/prompt/build-system-prompt.js +64 -0
  82. package/dist/prompt/build-system-prompt.js.map +1 -0
  83. package/dist/runtime/completion-gate.d.ts +21 -0
  84. package/dist/runtime/completion-gate.d.ts.map +1 -0
  85. package/dist/runtime/completion-gate.js +59 -0
  86. package/dist/runtime/completion-gate.js.map +1 -0
  87. package/dist/runtime/context-compaction.d.ts +25 -0
  88. package/dist/runtime/context-compaction.d.ts.map +1 -0
  89. package/dist/runtime/context-compaction.js +197 -0
  90. package/dist/runtime/context-compaction.js.map +1 -0
  91. package/dist/runtime/outcome.d.ts +23 -0
  92. package/dist/runtime/outcome.d.ts.map +1 -0
  93. package/dist/runtime/outcome.js +89 -0
  94. package/dist/runtime/outcome.js.map +1 -0
  95. package/dist/runtime/policy-hooks.d.ts +15 -0
  96. package/dist/runtime/policy-hooks.d.ts.map +1 -0
  97. package/dist/runtime/policy-hooks.js +54 -0
  98. package/dist/runtime/policy-hooks.js.map +1 -0
  99. package/dist/runtime/required-actions.d.ts +5 -0
  100. package/dist/runtime/required-actions.d.ts.map +1 -0
  101. package/dist/runtime/required-actions.js +77 -0
  102. package/dist/runtime/required-actions.js.map +1 -0
  103. package/dist/runtime/run-engine.d.ts +15 -0
  104. package/dist/runtime/run-engine.d.ts.map +1 -0
  105. package/dist/runtime/run-engine.js +624 -0
  106. package/dist/runtime/run-engine.js.map +1 -0
  107. package/dist/setup/setup-wizard.d.ts +52 -0
  108. package/dist/setup/setup-wizard.d.ts.map +1 -0
  109. package/dist/setup/setup-wizard.js +613 -0
  110. package/dist/setup/setup-wizard.js.map +1 -0
  111. package/dist/setup/start-launcher.d.ts +22 -0
  112. package/dist/setup/start-launcher.d.ts.map +1 -0
  113. package/dist/setup/start-launcher.js +76 -0
  114. package/dist/setup/start-launcher.js.map +1 -0
  115. package/dist/setup.d.ts +20 -0
  116. package/dist/setup.d.ts.map +1 -0
  117. package/dist/setup.js +247 -0
  118. package/dist/setup.js.map +1 -0
  119. package/dist/tools/build-tools.d.ts +608 -0
  120. package/dist/tools/build-tools.d.ts.map +1 -0
  121. package/dist/tools/build-tools.js +35 -0
  122. package/dist/tools/build-tools.js.map +1 -0
  123. package/dist/tools/delete-workspace-file.d.ts +38 -0
  124. package/dist/tools/delete-workspace-file.d.ts.map +1 -0
  125. package/dist/tools/delete-workspace-file.js +31 -0
  126. package/dist/tools/delete-workspace-file.js.map +1 -0
  127. package/dist/tools/deploy.d.ts +110 -0
  128. package/dist/tools/deploy.d.ts.map +1 -0
  129. package/dist/tools/deploy.js +28 -0
  130. package/dist/tools/deploy.js.map +1 -0
  131. package/dist/tools/generate-workflow.d.ts +180 -0
  132. package/dist/tools/generate-workflow.d.ts.map +1 -0
  133. package/dist/tools/generate-workflow.js +46 -0
  134. package/dist/tools/generate-workflow.js.map +1 -0
  135. package/dist/tools/index.d.ts +20 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +20 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/list-directory.d.ts +48 -0
  140. package/dist/tools/list-directory.d.ts.map +1 -0
  141. package/dist/tools/list-directory.js +61 -0
  142. package/dist/tools/list-directory.js.map +1 -0
  143. package/dist/tools/list-workflows.d.ts +18 -0
  144. package/dist/tools/list-workflows.d.ts.map +1 -0
  145. package/dist/tools/list-workflows.js +17 -0
  146. package/dist/tools/list-workflows.js.map +1 -0
  147. package/dist/tools/manage-workflow.d.ts +42 -0
  148. package/dist/tools/manage-workflow.d.ts.map +1 -0
  149. package/dist/tools/manage-workflow.js +26 -0
  150. package/dist/tools/manage-workflow.js.map +1 -0
  151. package/dist/tools/move-workspace-file.d.ts +42 -0
  152. package/dist/tools/move-workspace-file.d.ts.map +1 -0
  153. package/dist/tools/move-workspace-file.js +45 -0
  154. package/dist/tools/move-workspace-file.js.map +1 -0
  155. package/dist/tools/n8nac.d.ts +144 -0
  156. package/dist/tools/n8nac.d.ts.map +1 -0
  157. package/dist/tools/n8nac.js +349 -0
  158. package/dist/tools/n8nac.js.map +1 -0
  159. package/dist/tools/node-info.d.ts +18 -0
  160. package/dist/tools/node-info.d.ts.map +1 -0
  161. package/dist/tools/node-info.js +15 -0
  162. package/dist/tools/node-info.js.map +1 -0
  163. package/dist/tools/observer.d.ts +32 -0
  164. package/dist/tools/observer.d.ts.map +1 -0
  165. package/dist/tools/observer.js +10 -0
  166. package/dist/tools/observer.js.map +1 -0
  167. package/dist/tools/read-workspace-file.d.ts +54 -0
  168. package/dist/tools/read-workspace-file.d.ts.map +1 -0
  169. package/dist/tools/read-workspace-file.js +49 -0
  170. package/dist/tools/read-workspace-file.js.map +1 -0
  171. package/dist/tools/replace-in-workspace-file.d.ts +62 -0
  172. package/dist/tools/replace-in-workspace-file.d.ts.map +1 -0
  173. package/dist/tools/replace-in-workspace-file.js +46 -0
  174. package/dist/tools/replace-in-workspace-file.js.map +1 -0
  175. package/dist/tools/report-progress.d.ts +20 -0
  176. package/dist/tools/report-progress.d.ts.map +1 -0
  177. package/dist/tools/report-progress.js +20 -0
  178. package/dist/tools/report-progress.js.map +1 -0
  179. package/dist/tools/request-required-action.d.ts +31 -0
  180. package/dist/tools/request-required-action.d.ts.map +1 -0
  181. package/dist/tools/request-required-action.js +33 -0
  182. package/dist/tools/request-required-action.js.map +1 -0
  183. package/dist/tools/search-nodes.d.ts +18 -0
  184. package/dist/tools/search-nodes.d.ts.map +1 -0
  185. package/dist/tools/search-nodes.js +15 -0
  186. package/dist/tools/search-nodes.js.map +1 -0
  187. package/dist/tools/search-templates.d.ts +18 -0
  188. package/dist/tools/search-templates.d.ts.map +1 -0
  189. package/dist/tools/search-templates.js +15 -0
  190. package/dist/tools/search-templates.js.map +1 -0
  191. package/dist/tools/search-workspace.d.ts +55 -0
  192. package/dist/tools/search-workspace.d.ts.map +1 -0
  193. package/dist/tools/search-workspace.js +86 -0
  194. package/dist/tools/search-workspace.js.map +1 -0
  195. package/dist/tools/validate.d.ts +110 -0
  196. package/dist/tools/validate.d.ts.map +1 -0
  197. package/dist/tools/validate.js +28 -0
  198. package/dist/tools/validate.js.map +1 -0
  199. package/dist/tools/workspace-utils.d.ts +10 -0
  200. package/dist/tools/workspace-utils.d.ts.map +1 -0
  201. package/dist/tools/workspace-utils.js +63 -0
  202. package/dist/tools/workspace-utils.js.map +1 -0
  203. package/dist/tools/write-workspace-file.d.ts +46 -0
  204. package/dist/tools/write-workspace-file.d.ts.map +1 -0
  205. package/dist/tools/write-workspace-file.js +39 -0
  206. package/dist/tools/write-workspace-file.js.map +1 -0
  207. package/dist/types.d.ts +243 -0
  208. package/dist/types.d.ts.map +1 -0
  209. package/dist/types.js +2 -0
  210. package/dist/types.js.map +1 -0
  211. package/dist/webui/app.js +26759 -0
  212. package/dist/webui/app.js.map +7 -0
  213. package/dist/webui/styles.css +740 -0
  214. package/dist/webui/styles.css.map +7 -0
  215. package/package.json +72 -0
@@ -0,0 +1,624 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { generateText, streamText } from 'ai';
3
+ import { createLanguageModel } from '../llm/create-language-model.js';
4
+ import { resolveModelContextProfile } from '../llm/create-language-model.js';
5
+ import { buildSystemPrompt } from '../prompt/build-system-prompt.js';
6
+ import { buildTools } from '../tools/index.js';
7
+ import { evaluateCompletionGate } from './completion-gate.js';
8
+ import { compactConversationContext } from './context-compaction.js';
9
+ import { analyzeRunOutcome, formatObservedAction } from './outcome.js';
10
+ import { wrapToolsWithRuntimeHooks } from './policy-hooks.js';
11
+ import { blockingStateForRequiredActions, collectRequiredActions } from './required-actions.js';
12
+ const INSPECT_MAX_STEPS = 4;
13
+ const EXECUTE_MAX_STEPS = 10;
14
+ const EXECUTE_RECOVERY_MAX_STEPS = 6;
15
+ const MAX_EXECUTION_ATTEMPTS = 3;
16
+ const PHASE_ORDER = ['inspect', 'plan', 'edit', 'validate', 'sync', 'verify', 'summarize'];
17
+ function createAbortError(message = 'Yagr run stopped by user.') {
18
+ const error = new Error(message);
19
+ error.name = 'AbortError';
20
+ return error;
21
+ }
22
+ function isAbortError(error) {
23
+ return error instanceof Error && error.name === 'AbortError';
24
+ }
25
+ function throwIfAborted(signal) {
26
+ if (!signal?.aborted) {
27
+ return;
28
+ }
29
+ if (signal.reason instanceof Error) {
30
+ throw signal.reason;
31
+ }
32
+ throw createAbortError(typeof signal.reason === 'string' && signal.reason ? signal.reason : undefined);
33
+ }
34
+ function createPhasePrompt(phase, userPrompt) {
35
+ if (phase === 'inspect') {
36
+ return [
37
+ 'Yagr internal phase: inspect.',
38
+ 'Analyze the request and gather only the context needed to execute it correctly.',
39
+ 'Use tools to inspect the workspace, existing workflow files, workspace instructions, examples, and n8nac workspace status when needed.',
40
+ 'Favor correctness over speed in this phase. If an example or rule is likely to determine the right implementation, read it before acting.',
41
+ 'Do not claim completion in this phase.',
42
+ `Original request: ${userPrompt}`,
43
+ ].join('\n');
44
+ }
45
+ return [
46
+ 'Yagr internal phase: execute.',
47
+ 'Complete the task end-to-end using the gathered context.',
48
+ 'When appropriate, author or edit workflow files, validate them, sync them, verify them, and then summarize what changed.',
49
+ 'Ask the user only when a specific missing value blocks execution.',
50
+ `Original request: ${userPrompt}`,
51
+ ].join('\n');
52
+ }
53
+ function buildJournalEntry(entry) {
54
+ return {
55
+ timestamp: new Date().toISOString(),
56
+ ...entry,
57
+ };
58
+ }
59
+ function inferPhaseFromStep(step) {
60
+ const n8nacActions = step.toolCalls
61
+ .filter((toolCall) => toolCall.toolName === 'n8nac')
62
+ .map((toolCall) => {
63
+ if (!toolCall.args || typeof toolCall.args !== 'object') {
64
+ return undefined;
65
+ }
66
+ const action = toolCall.args.action;
67
+ return typeof action === 'string' ? action : undefined;
68
+ })
69
+ .filter((action) => Boolean(action));
70
+ if (n8nacActions.some((action) => action === 'verify')) {
71
+ return 'verify';
72
+ }
73
+ if (n8nacActions.some((action) => action === 'push' || action === 'resolve')) {
74
+ return 'sync';
75
+ }
76
+ if (n8nacActions.some((action) => action === 'validate')) {
77
+ return 'validate';
78
+ }
79
+ if (n8nacActions.some((action) => action === 'setup_check' || action === 'init_auth' || action === 'init_project' || action === 'list' || action === 'pull' || action === 'skills' || action === 'update_ai')) {
80
+ return 'plan';
81
+ }
82
+ if (step.toolCalls.some((toolCall) => toolCall.toolName === 'writeWorkspaceFile' || toolCall.toolName === 'replaceInWorkspaceFile')) {
83
+ return 'edit';
84
+ }
85
+ if (step.toolCalls.some((toolCall) => toolCall.toolName === 'readWorkspaceFile' || toolCall.toolName === 'searchWorkspace' || toolCall.toolName === 'listDirectory')) {
86
+ return 'inspect';
87
+ }
88
+ if (step.stepType === 'initial') {
89
+ return 'plan';
90
+ }
91
+ if (step.toolResults.length === 0 && step.toolCalls.length === 0) {
92
+ return 'summarize';
93
+ }
94
+ return 'plan';
95
+ }
96
+ function getPhaseIndex(phase) {
97
+ if (!phase) {
98
+ return -1;
99
+ }
100
+ return PHASE_ORDER.indexOf(phase);
101
+ }
102
+ function chooseNextPhase(currentPhase, inferredPhase) {
103
+ if (!currentPhase) {
104
+ return inferredPhase;
105
+ }
106
+ return getPhaseIndex(inferredPhase) >= getPhaseIndex(currentPhase) ? inferredPhase : currentPhase;
107
+ }
108
+ function collectToolNames(journal) {
109
+ const names = new Set();
110
+ for (const entry of journal) {
111
+ if (entry.type !== 'step' || !entry.step) {
112
+ continue;
113
+ }
114
+ for (const toolCall of entry.step.toolCalls) {
115
+ names.add(toolCall.toolName);
116
+ }
117
+ }
118
+ return [...names].map((toolName) => ({ toolName }));
119
+ }
120
+ function buildGroundedSummary(_prompt, finishReason, journal, requiredActions) {
121
+ const lines = [];
122
+ const outcome = analyzeRunOutcome(journal);
123
+ if (outcome.writtenFiles.length > 0) {
124
+ lines.push(`Fichiers crees ou reecrits: ${outcome.writtenFiles.join(', ')}`);
125
+ }
126
+ if (outcome.updatedFiles.length > 0) {
127
+ lines.push(`Fichiers modifies: ${outcome.updatedFiles.join(', ')}`);
128
+ }
129
+ if (outcome.successfulActions.length > 0) {
130
+ lines.push(`Actions n8nac reussies: ${outcome.successfulActions.map(formatObservedAction).join(', ')}`);
131
+ }
132
+ if (outcome.unresolvedFailedActions.length > 0) {
133
+ lines.push(`Actions n8nac en echec: ${outcome.unresolvedFailedActions.map(formatObservedAction).join(', ')}`);
134
+ }
135
+ if (requiredActions.length > 0) {
136
+ lines.push(`Actions requises en attente: ${requiredActions.map((action) => `${action.title} [${action.kind}]`).join(', ')}`);
137
+ }
138
+ if (!outcome.successfulValidate) {
139
+ lines.push('La validation du workflow n’a pas ete confirmee.');
140
+ }
141
+ if (!outcome.successfulPush) {
142
+ lines.push('Le push vers n8n n’a pas ete confirme.');
143
+ }
144
+ if (!outcome.successfulVerify) {
145
+ lines.push('La verification distante n’a pas ete confirmee.');
146
+ }
147
+ if (outcome.unresolvedFailedActions.length > 0) {
148
+ lines.push('Le run s’est arrete alors que certaines actions avaient encore echoue. Une correction supplementaire reste necessaire ou un bloqueur externe persiste.');
149
+ }
150
+ if (finishReason !== 'stop') {
151
+ lines.push(`Le run s’est termine avec la raison: ${finishReason}.`);
152
+ }
153
+ return lines.join('\n');
154
+ }
155
+ async function ensureFinalText(_options, prompt, finishReason, journal, existingText, requiredActions, completionAccepted) {
156
+ const groundedSummary = buildGroundedSummary(prompt, finishReason, journal, requiredActions);
157
+ const sanitizedText = existingText
158
+ .split('\n')
159
+ .filter((line) => {
160
+ const trimmed = line.trim();
161
+ return trimmed.length > 0
162
+ && !trimmed.startsWith('Yagr internal phase:')
163
+ && trimmed !== 'think silently.'
164
+ && trimmed !== 'Complete the task end-to-end using the gathered context.'
165
+ && trimmed !== 'When appropriate, author or edit workflow files, validate them, sync them, verify them, and then summarize what changed.'
166
+ && trimmed !== 'Ask the user only when a specific missing value blocks execution.'
167
+ && !trimmed.startsWith('Original request:');
168
+ })
169
+ .join('\n')
170
+ .trim();
171
+ if (!completionAccepted) {
172
+ return groundedSummary;
173
+ }
174
+ if (!sanitizedText) {
175
+ return groundedSummary;
176
+ }
177
+ return sanitizedText;
178
+ }
179
+ function buildRuntimeContext(state) {
180
+ return {
181
+ runId: state.runId,
182
+ phase: state.currentPhase ?? undefined,
183
+ state: state.currentAgentState,
184
+ };
185
+ }
186
+ async function emitJournal(state, options, entry) {
187
+ const journalEntry = buildJournalEntry(entry);
188
+ state.journal.push(journalEntry);
189
+ await options.onJournalEntry?.(journalEntry);
190
+ }
191
+ async function maybeCompactMessages(state, options, systemPrompt, prompt, messages) {
192
+ throwIfAborted(options.abortSignal);
193
+ if (options.autoCompactContext === false) {
194
+ return messages;
195
+ }
196
+ const modelProfile = resolveModelContextProfile(options);
197
+ const compaction = await compactConversationContext({
198
+ messages,
199
+ prompt,
200
+ journal: state.journal,
201
+ systemPrompt,
202
+ abortSignal: options.abortSignal,
203
+ budget: {
204
+ contextWindowTokens: options.contextWindowTokens ?? modelProfile.contextWindowTokens,
205
+ reservedOutputTokens: options.reservedOutputTokens ?? modelProfile.reservedOutputTokens,
206
+ thresholdPercent: options.compactContextThresholdPercent,
207
+ preserveRecentMessages: options.compactPreserveRecentMessages,
208
+ charsPerToken: options.charsPerToken,
209
+ },
210
+ llmConfig: options,
211
+ });
212
+ if (!compaction.event) {
213
+ return messages;
214
+ }
215
+ await transitionAgentState(state, options, 'compacting', 'Compacting runtime context before the next model call.');
216
+ state.compactions.push(compaction.event);
217
+ await emitJournal(state, options, {
218
+ type: 'compaction',
219
+ status: 'completed',
220
+ phase: state.currentPhase ?? undefined,
221
+ message: `Context compacted: ${compaction.event.messagesCompacted} messages folded into a checkpoint summary.`,
222
+ compaction: compaction.event,
223
+ });
224
+ await options.onCompaction?.(compaction.event);
225
+ await transitionAgentState(state, options, 'running', 'Context compaction completed.');
226
+ return compaction.messages;
227
+ }
228
+ async function transitionAgentState(state, options, nextState, message) {
229
+ if (state.currentAgentState === nextState) {
230
+ return;
231
+ }
232
+ state.currentAgentState = nextState;
233
+ const event = {
234
+ state: nextState,
235
+ phase: state.currentPhase ?? undefined,
236
+ message,
237
+ };
238
+ await emitJournal(state, options, {
239
+ type: 'state',
240
+ status: nextState === 'failed_terminal' ? 'failed' : 'completed',
241
+ phase: state.currentPhase ?? undefined,
242
+ state: nextState,
243
+ message,
244
+ });
245
+ await options.onStateChange?.(event);
246
+ }
247
+ function withRuntimeToolEvents(state, options) {
248
+ return async (event) => {
249
+ if (event.type === 'command-start') {
250
+ await transitionAgentState(state, options, 'streaming', `Streaming command output for ${event.toolName}.`);
251
+ }
252
+ else if (event.type === 'command-end') {
253
+ await transitionAgentState(state, options, 'running', `Command finished for ${event.toolName}.`);
254
+ }
255
+ await options.onToolEvent?.(event);
256
+ };
257
+ }
258
+ function shouldAttemptRecovery(outcome, attemptNumber, requiredActions) {
259
+ if (attemptNumber >= MAX_EXECUTION_ATTEMPTS) {
260
+ return false;
261
+ }
262
+ if (requiredActions.length > 0) {
263
+ return false;
264
+ }
265
+ if (outcome.unresolvedFailedActions.length > 0) {
266
+ return true;
267
+ }
268
+ if (outcome.hasWorkflowWrites && (!outcome.successfulValidate || !outcome.successfulPush)) {
269
+ return true;
270
+ }
271
+ return false;
272
+ }
273
+ function buildRecoveryPrompt(outcome, attemptNumber) {
274
+ const failedActions = outcome.failedActions.map(formatObservedAction).join(', ');
275
+ const missingChecks = [];
276
+ if (outcome.hasWorkflowWrites && !outcome.successfulValidate) {
277
+ missingChecks.push('validation');
278
+ }
279
+ if (outcome.hasWorkflowWrites && !outcome.successfulPush) {
280
+ missingChecks.push('push');
281
+ }
282
+ if (outcome.hasWorkflowWrites && !outcome.successfulVerify) {
283
+ missingChecks.push('verification distante');
284
+ }
285
+ const issues = [
286
+ failedActions ? `Actions en echec: ${failedActions}.` : '',
287
+ missingChecks.length > 0 ? `Etapes non confirmees: ${missingChecks.join(', ')}.` : '',
288
+ ].filter(Boolean).join(' ');
289
+ return [
290
+ `Yagr internal recovery pass ${attemptNumber}.`,
291
+ issues,
292
+ 'Do not summarize yet.',
293
+ 'Inspect the failing tool output, correct the local files or command arguments, and retry the necessary steps now.',
294
+ 'Only stop if a genuine blocker remains that cannot be resolved locally in this run.',
295
+ ].join(' ');
296
+ }
297
+ async function executePhase(state, options, systemPrompt, tools, messages, maxSteps) {
298
+ throwIfAborted(options.abortSignal);
299
+ if (options.onTextDelta || options.onStepFinish || options.onPhaseChange || options.onJournalEntry) {
300
+ const result = streamText({
301
+ abortSignal: options.abortSignal,
302
+ model: createLanguageModel(options),
303
+ system: systemPrompt,
304
+ tools,
305
+ messages,
306
+ maxSteps,
307
+ toolCallStreaming: true,
308
+ onStepFinish: async (stepResult) => {
309
+ await recordStep(state, options, {
310
+ stepType: stepResult.stepType,
311
+ finishReason: String(stepResult.finishReason),
312
+ toolCalls: stepResult.toolCalls.map((toolCall) => ({
313
+ toolName: toolCall.toolName,
314
+ args: toolCall.args,
315
+ })),
316
+ toolResults: stepResult.toolResults.map((toolResult) => ({
317
+ toolName: toolResult.toolName,
318
+ result: toolResult.result,
319
+ })),
320
+ text: stepResult.text,
321
+ });
322
+ },
323
+ });
324
+ for await (const textDelta of result.textStream) {
325
+ throwIfAborted(options.abortSignal);
326
+ await options.onTextDelta?.(textDelta);
327
+ }
328
+ const response = await result.response;
329
+ const resolved = await Promise.all([
330
+ result.text,
331
+ result.finishReason,
332
+ result.steps,
333
+ result.toolCalls,
334
+ ]);
335
+ return {
336
+ text: resolved[0],
337
+ finishReason: String(resolved[1]),
338
+ steps: resolved[2].length,
339
+ toolCalls: resolved[3].map((toolCall) => ({ toolName: toolCall.toolName })),
340
+ responseMessages: response.messages,
341
+ };
342
+ }
343
+ const result = await generateText({
344
+ abortSignal: options.abortSignal,
345
+ model: createLanguageModel(options),
346
+ system: systemPrompt,
347
+ tools,
348
+ messages,
349
+ maxSteps,
350
+ });
351
+ for (const step of result.steps) {
352
+ await recordStep(state, options, {
353
+ stepType: step.stepType,
354
+ finishReason: String(step.finishReason),
355
+ toolCalls: step.toolCalls.map((toolCall) => ({
356
+ toolName: toolCall.toolName,
357
+ args: toolCall.args,
358
+ })),
359
+ toolResults: step.toolResults.map((toolResult) => ({
360
+ toolName: toolResult.toolName,
361
+ result: toolResult.result,
362
+ })),
363
+ text: step.text,
364
+ });
365
+ }
366
+ return {
367
+ text: result.text,
368
+ finishReason: String(result.finishReason),
369
+ steps: result.steps.length,
370
+ toolCalls: result.toolCalls.map((toolCall) => ({ toolName: toolCall.toolName })),
371
+ responseMessages: result.response.messages,
372
+ };
373
+ }
374
+ async function transitionPhase(state, options, phase, status, message) {
375
+ if (status === 'started') {
376
+ state.currentPhase = phase;
377
+ }
378
+ const event = {
379
+ phase,
380
+ status,
381
+ message,
382
+ };
383
+ await emitJournal(state, options, {
384
+ type: 'phase',
385
+ phase,
386
+ status,
387
+ message,
388
+ });
389
+ await options.onPhaseChange?.(event);
390
+ }
391
+ async function recordStep(state, options, step) {
392
+ state.stepNumber += 1;
393
+ const phase = chooseNextPhase(state.currentPhase, inferPhaseFromStep(step));
394
+ if (state.currentPhase !== phase) {
395
+ if (state.currentPhase) {
396
+ await transitionPhase(state, options, state.currentPhase, 'completed', `${state.currentPhase} phase completed.`);
397
+ }
398
+ await transitionPhase(state, options, phase, 'started', `${phase} phase started.`);
399
+ }
400
+ const trace = {
401
+ stepNumber: state.stepNumber,
402
+ stepType: step.stepType,
403
+ finishReason: step.finishReason,
404
+ toolCalls: step.toolCalls,
405
+ toolResults: step.toolResults,
406
+ text: step.text,
407
+ phase,
408
+ };
409
+ await emitJournal(state, options, {
410
+ type: 'step',
411
+ phase,
412
+ stepNumber: trace.stepNumber,
413
+ status: 'completed',
414
+ message: `Step ${trace.stepNumber} completed in ${phase}.`,
415
+ step: trace,
416
+ });
417
+ await options.onStepFinish?.(trace);
418
+ return trace;
419
+ }
420
+ export class YagrRunEngine {
421
+ engine;
422
+ history;
423
+ constructor(engine, history) {
424
+ this.engine = engine;
425
+ this.history = history;
426
+ }
427
+ async execute(prompt, options = {}) {
428
+ const state = {
429
+ runId: randomUUID(),
430
+ journal: [],
431
+ compactions: [],
432
+ currentPhase: null,
433
+ currentAgentState: 'idle',
434
+ stepNumber: 0,
435
+ };
436
+ const currentUserMessage = {
437
+ role: 'user',
438
+ content: prompt,
439
+ };
440
+ const systemPrompt = buildSystemPrompt(this.engine);
441
+ const baseTools = buildTools(this.engine, {
442
+ onToolEvent: withRuntimeToolEvents(state, options),
443
+ });
444
+ const tools = wrapToolsWithRuntimeHooks(baseTools, options.runtimeHooks, () => ({
445
+ runId: state.runId,
446
+ phase: state.currentPhase,
447
+ state: state.currentAgentState,
448
+ }), options.satisfiedRequiredActionIds);
449
+ const persistedMessages = [currentUserMessage];
450
+ let executionContext = [...this.history, currentUserMessage];
451
+ await emitJournal(state, options, {
452
+ type: 'run',
453
+ status: 'started',
454
+ message: 'Yagr run started.',
455
+ runId: state.runId,
456
+ });
457
+ await transitionAgentState(state, options, 'running', 'Task execution started.');
458
+ try {
459
+ throwIfAborted(options.abortSignal);
460
+ await transitionPhase(state, options, 'inspect', 'started', 'Inspecting workspace and task context.');
461
+ executionContext = await maybeCompactMessages(state, options, systemPrompt, prompt, executionContext);
462
+ const inspectInstruction = {
463
+ role: 'user',
464
+ content: createPhasePrompt('inspect', prompt),
465
+ };
466
+ const inspectResult = await generateText({
467
+ abortSignal: options.abortSignal,
468
+ model: createLanguageModel(options),
469
+ system: systemPrompt,
470
+ tools,
471
+ messages: [...executionContext, inspectInstruction],
472
+ maxSteps: Math.min(options.maxSteps ?? 8, INSPECT_MAX_STEPS),
473
+ });
474
+ for (const step of inspectResult.steps) {
475
+ await recordStep(state, options, {
476
+ stepType: step.stepType,
477
+ finishReason: String(step.finishReason),
478
+ toolCalls: step.toolCalls.map((toolCall) => ({
479
+ toolName: toolCall.toolName,
480
+ args: toolCall.args,
481
+ })),
482
+ toolResults: step.toolResults.map((toolResult) => ({
483
+ toolName: toolResult.toolName,
484
+ result: toolResult.result,
485
+ })),
486
+ text: step.text,
487
+ });
488
+ }
489
+ if (state.currentPhase === 'inspect') {
490
+ await transitionPhase(state, options, 'inspect', 'completed', 'Inspection completed.');
491
+ }
492
+ executionContext.push(inspectInstruction, ...inspectResult.response.messages);
493
+ throwIfAborted(options.abortSignal);
494
+ await transitionPhase(state, options, 'plan', 'started', 'Preparing execution plan.');
495
+ await transitionPhase(state, options, 'plan', 'completed', 'Execution plan ready.');
496
+ const executeInstruction = {
497
+ role: 'user',
498
+ content: createPhasePrompt('execute', prompt),
499
+ };
500
+ let executeMessages = [...executionContext, executeInstruction];
501
+ let text = '';
502
+ let finishReason = 'stop';
503
+ let steps = 0;
504
+ let toolCalls = [];
505
+ let responseMessages = [];
506
+ for (let attemptNumber = 1; attemptNumber <= MAX_EXECUTION_ATTEMPTS; attemptNumber += 1) {
507
+ throwIfAborted(options.abortSignal);
508
+ executeMessages = await maybeCompactMessages(state, options, systemPrompt, prompt, executeMessages);
509
+ const phaseResult = await executePhase(state, options, systemPrompt, tools, executeMessages, attemptNumber === 1 ? (options.maxSteps ?? EXECUTE_MAX_STEPS) : Math.min(options.maxSteps ?? EXECUTE_MAX_STEPS, EXECUTE_RECOVERY_MAX_STEPS));
510
+ text = phaseResult.text;
511
+ finishReason = phaseResult.finishReason;
512
+ steps += phaseResult.steps;
513
+ toolCalls = phaseResult.toolCalls;
514
+ responseMessages = [...responseMessages, ...phaseResult.responseMessages];
515
+ const outcome = analyzeRunOutcome(state.journal);
516
+ const requiredActions = collectRequiredActions(state.journal);
517
+ if (!shouldAttemptRecovery(outcome, attemptNumber, requiredActions)) {
518
+ break;
519
+ }
520
+ throwIfAborted(options.abortSignal);
521
+ await emitJournal(state, options, {
522
+ type: 'phase',
523
+ phase: state.currentPhase ?? 'plan',
524
+ status: 'started',
525
+ message: `Recovery pass ${attemptNumber + 1} triggered after failed or incomplete execution steps.`,
526
+ });
527
+ executeMessages = [
528
+ ...executeMessages,
529
+ ...phaseResult.responseMessages,
530
+ {
531
+ role: 'user',
532
+ content: buildRecoveryPrompt(outcome, attemptNumber + 1),
533
+ },
534
+ ];
535
+ }
536
+ persistedMessages.push(...responseMessages);
537
+ steps += inspectResult.steps.length;
538
+ throwIfAborted(options.abortSignal);
539
+ const requiredActions = collectRequiredActions(state.journal);
540
+ const completionDecision = await evaluateCompletionGate({
541
+ text,
542
+ finishReason,
543
+ requiredActions,
544
+ satisfiedRequiredActionIds: options.satisfiedRequiredActionIds,
545
+ hasWorkflowWrites: analyzeRunOutcome(state.journal).hasWorkflowWrites,
546
+ successfulValidate: Boolean(analyzeRunOutcome(state.journal).successfulValidate),
547
+ successfulPush: Boolean(analyzeRunOutcome(state.journal).successfulPush),
548
+ unresolvedFailureCount: analyzeRunOutcome(state.journal).unresolvedFailedActions.length,
549
+ hooks: options.runtimeHooks,
550
+ context: buildRuntimeContext(state),
551
+ });
552
+ for (const requiredAction of completionDecision.requiredActions) {
553
+ await emitJournal(state, options, {
554
+ type: 'state',
555
+ status: 'completed',
556
+ phase: state.currentPhase ?? undefined,
557
+ state: blockingStateForRequiredActions([requiredAction]) ?? undefined,
558
+ message: requiredAction.message,
559
+ requiredAction,
560
+ });
561
+ }
562
+ throwIfAborted(options.abortSignal);
563
+ text = await ensureFinalText(options, prompt, finishReason, state.journal, text, completionDecision.requiredActions, completionDecision.accepted);
564
+ if (state.currentPhase && state.currentPhase !== 'summarize') {
565
+ await transitionPhase(state, options, state.currentPhase, 'completed', `${state.currentPhase} phase completed.`);
566
+ }
567
+ await transitionPhase(state, options, 'summarize', 'started', 'Summarizing run outcome.');
568
+ await transitionPhase(state, options, 'summarize', 'completed', 'Run summary ready.');
569
+ if (completionDecision.accepted) {
570
+ await transitionAgentState(state, options, 'completed', 'Task execution completed.');
571
+ }
572
+ else {
573
+ await transitionAgentState(state, options, completionDecision.state, completionDecision.reasons[0] ?? 'Task requires further action before completion.');
574
+ }
575
+ await emitJournal(state, options, {
576
+ type: 'run',
577
+ status: 'completed',
578
+ phase: 'summarize',
579
+ message: 'Yagr run completed.',
580
+ runId: state.runId,
581
+ });
582
+ return {
583
+ result: {
584
+ runId: state.runId,
585
+ text,
586
+ finishReason,
587
+ steps,
588
+ toolCalls: collectToolNames(state.journal).length > 0 ? collectToolNames(state.journal) : toolCalls,
589
+ completionAccepted: completionDecision.accepted,
590
+ requiredActions: completionDecision.requiredActions,
591
+ compactions: state.compactions,
592
+ finalState: state.currentAgentState,
593
+ finalPhase: 'summarize',
594
+ journal: state.journal,
595
+ },
596
+ persistedMessages,
597
+ };
598
+ }
599
+ catch (error) {
600
+ if (isAbortError(error)) {
601
+ const abortMessage = error.message || 'Yagr run stopped by user.';
602
+ await transitionAgentState(state, options, 'stopped', abortMessage);
603
+ await emitJournal(state, options, {
604
+ type: 'run',
605
+ status: 'completed',
606
+ phase: state.currentPhase ?? undefined,
607
+ message: abortMessage,
608
+ runId: state.runId,
609
+ });
610
+ throw error;
611
+ }
612
+ await transitionAgentState(state, options, 'failed_terminal', 'Task execution failed with a terminal blocker.');
613
+ await emitJournal(state, options, {
614
+ type: 'run',
615
+ status: 'failed',
616
+ phase: state.currentPhase ?? undefined,
617
+ message: error instanceof Error ? error.message : String(error),
618
+ runId: state.runId,
619
+ });
620
+ throw error;
621
+ }
622
+ }
623
+ }
624
+ //# sourceMappingURL=run-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-engine.js","sourceRoot":"","sources":["../../src/runtime/run-engine.ts"],"names":[],"mappings":"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"}