@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,197 @@
1
+ import { generateText } from 'ai';
2
+ import { createLanguageModel } from '../llm/create-language-model.js';
3
+ import { analyzeRunOutcome, formatObservedAction } from './outcome.js';
4
+ import { collectRequiredActions } from './required-actions.js';
5
+ const DEFAULT_CHARS_PER_TOKEN = 4;
6
+ const DEFAULT_THRESHOLD_PERCENT = 70;
7
+ const DEFAULT_PRESERVE_RECENT_MESSAGES = 6;
8
+ const MAX_TRANSCRIPT_CHARS = 24_000;
9
+ function contentToText(content) {
10
+ if (typeof content === 'string') {
11
+ return content;
12
+ }
13
+ if (Array.isArray(content)) {
14
+ return content
15
+ .map((part) => {
16
+ if (typeof part === 'string') {
17
+ return part;
18
+ }
19
+ if (part && typeof part === 'object') {
20
+ if ('text' in part && typeof part.text === 'string') {
21
+ return part.text;
22
+ }
23
+ return JSON.stringify(part);
24
+ }
25
+ return String(part ?? '');
26
+ })
27
+ .join('\n');
28
+ }
29
+ return '';
30
+ }
31
+ function estimateTokensFromText(text, charsPerToken) {
32
+ if (!text) {
33
+ return 0;
34
+ }
35
+ return Math.ceil(text.length / charsPerToken);
36
+ }
37
+ function estimateMessageTokens(messages, charsPerToken) {
38
+ return messages.reduce((total, message) => total + estimateTokensFromText(contentToText(message.content), charsPerToken), 0);
39
+ }
40
+ function buildAllowedTokenThreshold(budget) {
41
+ const thresholdPercent = budget.thresholdPercent ?? DEFAULT_THRESHOLD_PERCENT;
42
+ const cappedThreshold = Math.max(5, Math.min(95, thresholdPercent));
43
+ const thresholdBudget = Math.floor((budget.contextWindowTokens * cappedThreshold) / 100);
44
+ return Math.max(0, thresholdBudget - budget.reservedOutputTokens);
45
+ }
46
+ function sanitizeTranscriptText(text) {
47
+ const trimmed = text.trim();
48
+ if (!trimmed) {
49
+ return '';
50
+ }
51
+ if (trimmed.startsWith('Yagr internal phase:')) {
52
+ return '';
53
+ }
54
+ if (trimmed.startsWith('Original request:')) {
55
+ return '';
56
+ }
57
+ if (trimmed === 'Do not claim completion in this phase.') {
58
+ return '';
59
+ }
60
+ return trimmed;
61
+ }
62
+ function transcriptAsText(messages) {
63
+ const lines = messages
64
+ .map((message) => {
65
+ const text = sanitizeTranscriptText(contentToText(message.content));
66
+ if (!text) {
67
+ return '';
68
+ }
69
+ return `[${message.role}]\n${text}`;
70
+ })
71
+ .filter((line) => line.length > 0)
72
+ .join('\n\n');
73
+ if (lines.length <= MAX_TRANSCRIPT_CHARS) {
74
+ return lines;
75
+ }
76
+ return `${lines.slice(0, MAX_TRANSCRIPT_CHARS)}\n\n[Transcript truncated for condensation]`;
77
+ }
78
+ function buildJournalDigest(prompt, journal) {
79
+ const outcome = analyzeRunOutcome(journal);
80
+ const requiredActions = collectRequiredActions(journal);
81
+ const lines = [];
82
+ lines.push(`Original request: ${prompt}`);
83
+ if (outcome.writtenFiles.length > 0) {
84
+ lines.push(`Written files: ${outcome.writtenFiles.join(', ')}`);
85
+ }
86
+ if (outcome.updatedFiles.length > 0) {
87
+ lines.push(`Updated files: ${outcome.updatedFiles.join(', ')}`);
88
+ }
89
+ if (outcome.successfulActions.length > 0) {
90
+ lines.push(`Successful actions: ${outcome.successfulActions.map(formatObservedAction).join(', ')}`);
91
+ }
92
+ if (outcome.unresolvedFailedActions.length > 0) {
93
+ lines.push(`Unresolved failures: ${outcome.unresolvedFailedActions.map(formatObservedAction).join(', ')}`);
94
+ }
95
+ if (requiredActions.length > 0) {
96
+ lines.push(`Open required actions: ${requiredActions.map((action) => `${action.title} [${action.kind}]`).join(', ')}`);
97
+ }
98
+ return lines.join('\n');
99
+ }
100
+ function buildFallbackSummary(prompt, journal, compactedMessages) {
101
+ const transcript = transcriptAsText(compactedMessages)
102
+ .split('\n')
103
+ .slice(-12)
104
+ .join('\n');
105
+ return [
106
+ '## Yagr Context Checkpoint',
107
+ buildJournalDigest(prompt, journal),
108
+ transcript ? `Compressed transcript excerpts:\n${transcript}` : '',
109
+ 'Continue from this checkpoint without redoing completed work. Re-read files or instructions if exact wording or structure is needed.',
110
+ ].filter(Boolean).join('\n\n');
111
+ }
112
+ function buildSummaryPrompt(prompt, journal, compactedMessages) {
113
+ return [
114
+ 'You are condensing Yagr runtime context for continuation inside the same task.',
115
+ 'Produce a concise but loss-aware checkpoint summary.',
116
+ 'Keep facts that are necessary for the next agent call: user objective, confirmed decisions, files created or modified, validated or pushed actions, unresolved failures, open blockers, and any exact constraints that must continue to govern the work.',
117
+ 'Do not repeat generic boilerplate. Do not invent facts. Do not mention that you are an AI model.',
118
+ 'Preserve actionable exactness when a rule, filename, identifier, or required next step matters.',
119
+ 'Output plain text only. Start with the heading "## Yagr Context Checkpoint".',
120
+ '',
121
+ 'Journal digest:',
122
+ buildJournalDigest(prompt, journal),
123
+ '',
124
+ 'Conversation to condense:',
125
+ transcriptAsText(compactedMessages),
126
+ ].join('\n');
127
+ }
128
+ async function generateCheckpointSummary(prompt, journal, compactedMessages, abortSignal, llmConfig, condense) {
129
+ try {
130
+ const summaryPrompt = buildSummaryPrompt(prompt, journal, compactedMessages);
131
+ const summary = condense
132
+ ? (await condense(summaryPrompt)).trim()
133
+ : (await generateText({
134
+ abortSignal,
135
+ model: createLanguageModel(llmConfig),
136
+ system: 'This is a context condensation operation. Do not call tools. Return only the checkpoint summary text.',
137
+ messages: [
138
+ {
139
+ role: 'user',
140
+ content: summaryPrompt,
141
+ },
142
+ ],
143
+ maxSteps: 1,
144
+ })).text.trim();
145
+ if (summary.length > 0) {
146
+ return { summary, source: 'llm' };
147
+ }
148
+ return {
149
+ summary: buildFallbackSummary(prompt, journal, compactedMessages),
150
+ source: 'fallback',
151
+ fallbackReason: 'LLM condensation returned empty text.',
152
+ };
153
+ }
154
+ catch (error) {
155
+ if (error instanceof Error && error.name === 'AbortError') {
156
+ throw error;
157
+ }
158
+ return {
159
+ summary: buildFallbackSummary(prompt, journal, compactedMessages),
160
+ source: 'fallback',
161
+ fallbackReason: error instanceof Error ? error.message : String(error),
162
+ };
163
+ }
164
+ }
165
+ export async function compactConversationContext(input) {
166
+ const charsPerToken = input.budget.charsPerToken ?? DEFAULT_CHARS_PER_TOKEN;
167
+ const preserveRecentMessages = Math.max(2, input.budget.preserveRecentMessages ?? DEFAULT_PRESERVE_RECENT_MESSAGES);
168
+ const estimatedTokens = estimateTokensFromText(input.systemPrompt, charsPerToken) + estimateMessageTokens(input.messages, charsPerToken);
169
+ const thresholdTokens = buildAllowedTokenThreshold(input.budget);
170
+ if (estimatedTokens <= thresholdTokens) {
171
+ return { messages: input.messages };
172
+ }
173
+ if (input.messages.length <= preserveRecentMessages + 1) {
174
+ return { messages: input.messages };
175
+ }
176
+ const splitIndex = Math.max(1, input.messages.length - preserveRecentMessages);
177
+ const compactedMessages = input.messages.slice(0, splitIndex);
178
+ const recentMessages = input.messages.slice(splitIndex);
179
+ const checkpoint = await generateCheckpointSummary(input.prompt, input.journal, compactedMessages, input.abortSignal, input.llmConfig, input.condense);
180
+ const summaryMessage = {
181
+ role: 'user',
182
+ content: checkpoint.summary,
183
+ };
184
+ return {
185
+ messages: [summaryMessage, ...recentMessages],
186
+ event: {
187
+ summary: checkpoint.summary,
188
+ source: checkpoint.source,
189
+ fallbackReason: checkpoint.fallbackReason,
190
+ estimatedTokens,
191
+ thresholdTokens,
192
+ messagesCompacted: compactedMessages.length,
193
+ preservedRecentMessages: recentMessages.length,
194
+ },
195
+ };
196
+ }
197
+ //# sourceMappingURL=context-compaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compaction.js","sourceRoot":"","sources":["../../src/runtime/context-compaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { YagrRunJournalEntry } from '../types.js';
2
+ export type ObservedN8nacAction = {
3
+ action: string;
4
+ success: boolean;
5
+ filename?: string;
6
+ workflowId?: string;
7
+ validateFile?: string;
8
+ exitCode?: number;
9
+ };
10
+ export type RunOutcome = {
11
+ writtenFiles: string[];
12
+ updatedFiles: string[];
13
+ successfulActions: ObservedN8nacAction[];
14
+ failedActions: ObservedN8nacAction[];
15
+ unresolvedFailedActions: ObservedN8nacAction[];
16
+ successfulValidate?: ObservedN8nacAction;
17
+ successfulPush?: ObservedN8nacAction;
18
+ successfulVerify?: ObservedN8nacAction;
19
+ hasWorkflowWrites: boolean;
20
+ };
21
+ export declare function formatObservedAction(action: ObservedN8nacAction): string;
22
+ export declare function analyzeRunOutcome(journal: YagrRunJournalEntry[]): RunOutcome;
23
+ //# sourceMappingURL=outcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/runtime/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IACzC,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,uBAAuB,EAAE,mBAAmB,EAAE,CAAC;IAC/C,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AA6EF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGxE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAsB5E"}
@@ -0,0 +1,89 @@
1
+ function asRecord(value) {
2
+ return value && typeof value === 'object' ? value : undefined;
3
+ }
4
+ function asString(value) {
5
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
6
+ }
7
+ function asNumber(value) {
8
+ return typeof value === 'number' ? value : undefined;
9
+ }
10
+ function extractObservedFacts(journal) {
11
+ const writtenFiles = new Set();
12
+ const updatedFiles = new Set();
13
+ const n8nacActions = [];
14
+ for (const entry of journal) {
15
+ if (entry.type !== 'step' || !entry.step) {
16
+ continue;
17
+ }
18
+ const step = entry.step;
19
+ for (let index = 0; index < step.toolCalls.length; index += 1) {
20
+ const toolCall = step.toolCalls[index];
21
+ const toolResult = step.toolResults[index];
22
+ const args = asRecord(toolCall.args);
23
+ const result = asRecord(toolResult?.result);
24
+ if (toolCall.toolName === 'writeWorkspaceFile') {
25
+ const filePath = asString(result?.path) ?? asString(args?.path);
26
+ if (filePath) {
27
+ writtenFiles.add(filePath);
28
+ }
29
+ continue;
30
+ }
31
+ if (toolCall.toolName === 'replaceInWorkspaceFile') {
32
+ const filePath = asString(result?.path) ?? asString(args?.path);
33
+ if (filePath) {
34
+ updatedFiles.add(filePath);
35
+ }
36
+ continue;
37
+ }
38
+ if (toolCall.toolName === 'n8nac') {
39
+ const action = asString(args?.action) ?? 'unknown';
40
+ n8nacActions.push({
41
+ action,
42
+ success: (asNumber(result?.exitCode) ?? 1) === 0,
43
+ filename: asString(args?.filename),
44
+ workflowId: asString(args?.workflowId),
45
+ validateFile: asString(args?.validateFile),
46
+ exitCode: asNumber(result?.exitCode),
47
+ });
48
+ }
49
+ }
50
+ }
51
+ return {
52
+ writtenFiles: [...writtenFiles],
53
+ updatedFiles: [...updatedFiles],
54
+ n8nacActions,
55
+ };
56
+ }
57
+ function findSuccessfulAction(actions, actionName) {
58
+ return actions.find((action) => action.action === actionName && action.success);
59
+ }
60
+ function actionKey(action) {
61
+ return `${action.action}::${action.filename ?? action.validateFile ?? action.workflowId ?? ''}`;
62
+ }
63
+ export function formatObservedAction(action) {
64
+ const target = action.filename ?? action.validateFile ?? action.workflowId;
65
+ return target ? `${action.action} (${target})` : action.action;
66
+ }
67
+ export function analyzeRunOutcome(journal) {
68
+ const facts = extractObservedFacts(journal);
69
+ const successfulActions = facts.n8nacActions.filter((action) => action.success);
70
+ const failedActions = facts.n8nacActions.filter((action) => !action.success);
71
+ const resolvedFailureKeys = new Set(successfulActions.map(actionKey));
72
+ const unresolvedFailedActions = failedActions.filter((action) => !resolvedFailureKeys.has(actionKey(action)));
73
+ const hasWorkflowWrites = [...facts.writtenFiles, ...facts.updatedFiles].some((filePath) => filePath.endsWith('.workflow.ts'));
74
+ const successfulPush = findSuccessfulAction(facts.n8nacActions, 'push');
75
+ const successfulValidate = findSuccessfulAction(facts.n8nacActions, 'validate') ?? successfulPush;
76
+ const successfulVerify = findSuccessfulAction(facts.n8nacActions, 'verify') ?? successfulPush;
77
+ return {
78
+ writtenFiles: facts.writtenFiles,
79
+ updatedFiles: facts.updatedFiles,
80
+ successfulActions,
81
+ failedActions,
82
+ unresolvedFailedActions,
83
+ successfulValidate,
84
+ successfulPush,
85
+ successfulVerify,
86
+ hasWorkflowWrites,
87
+ };
88
+ }
89
+ //# sourceMappingURL=outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/runtime/outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { YagrAgentState, YagrRunPhase, YagrRuntimeHook } from '../types.js';
2
+ type ToolLike = {
3
+ description?: string;
4
+ parameters: any;
5
+ experimental_toToolResultContent?: ((result: any) => any) | undefined;
6
+ execute?: (args: any, options: any) => PromiseLike<any>;
7
+ };
8
+ type ToolMap = Record<string, ToolLike>;
9
+ export declare function wrapToolsWithRuntimeHooks<T extends ToolMap>(tools: T, hooks: YagrRuntimeHook[] | undefined, getContext: () => {
10
+ runId: string;
11
+ phase: YagrRunPhase | null;
12
+ state: YagrAgentState;
13
+ }, satisfiedRequiredActionIds?: string[] | undefined): T;
14
+ export {};
15
+ //# sourceMappingURL=policy-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-hooks.d.ts","sourceRoot":"","sources":["../../src/runtime/policy-hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAsB,eAAe,EAAE,MAAM,aAAa,CAAC;AAErG,KAAK,QAAQ,GAAG;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,gCAAgC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;CACzD,CAAC;AAEF,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAExC,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EACzD,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,eAAe,EAAE,GAAG,SAAS,EACpC,UAAU,EAAE,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,EACtF,0BAA0B,GAAE,MAAM,EAAE,GAAG,SAAc,GACpD,CAAC,CA6DH"}
@@ -0,0 +1,54 @@
1
+ import { tool } from 'ai';
2
+ export function wrapToolsWithRuntimeHooks(tools, hooks, getContext, satisfiedRequiredActionIds = []) {
3
+ if (!hooks || hooks.length === 0) {
4
+ return tools;
5
+ }
6
+ const approvedActionIds = new Set(satisfiedRequiredActionIds);
7
+ const wrappedEntries = Object.entries(tools).map(([toolName, originalTool]) => {
8
+ if (typeof originalTool.execute !== 'function') {
9
+ return [toolName, originalTool];
10
+ }
11
+ const wrappedTool = tool({
12
+ description: originalTool.description,
13
+ parameters: originalTool.parameters,
14
+ experimental_toToolResultContent: originalTool.experimental_toToolResultContent,
15
+ execute: async (args, toolOptions) => {
16
+ const runtimeContext = {
17
+ runId: getContext().runId,
18
+ phase: getContext().phase ?? undefined,
19
+ state: getContext().state,
20
+ };
21
+ const hookContext = {
22
+ ...runtimeContext,
23
+ toolName,
24
+ args,
25
+ };
26
+ for (const hook of hooks) {
27
+ const decision = await hook.beforeTool?.(hookContext);
28
+ if (decision && decision.allowed === false) {
29
+ if (decision.requiredAction && approvedActionIds.has(decision.requiredAction.id)) {
30
+ continue;
31
+ }
32
+ return {
33
+ ok: false,
34
+ blocked: true,
35
+ error: decision.message ?? `Tool ${toolName} blocked by runtime policy.`,
36
+ requiredAction: decision.requiredAction,
37
+ };
38
+ }
39
+ }
40
+ const result = await originalTool.execute?.(args, toolOptions);
41
+ for (const hook of hooks) {
42
+ await hook.afterTool?.({
43
+ ...hookContext,
44
+ result,
45
+ });
46
+ }
47
+ return result;
48
+ },
49
+ });
50
+ return [toolName, wrappedTool];
51
+ });
52
+ return Object.fromEntries(wrappedEntries);
53
+ }
54
+ //# sourceMappingURL=policy-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-hooks.js","sourceRoot":"","sources":["../../src/runtime/policy-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAY1B,MAAM,UAAU,yBAAyB,CACvC,KAAQ,EACR,KAAoC,EACpC,UAAsF,EACtF,6BAAmD,EAAE;IAErD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE;QAC5E,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC;YACvB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,gCAAgC,EAAE,YAAY,CAAC,gCAAgC;YAC/E,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,WAAgB,EAAE,EAAE;gBAC7C,MAAM,cAAc,GAAuB;oBACzC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK;oBACzB,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK,IAAI,SAAS;oBACtC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK;iBAC1B,CAAC;gBACF,MAAM,WAAW,GAAG;oBAClB,GAAG,cAAc;oBACjB,QAAQ;oBACR,IAAI;iBACL,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;oBACtD,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;wBAC3C,IAAI,QAAQ,CAAC,cAAc,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;4BACjF,SAAS;wBACX,CAAC;wBAED,OAAO;4BACL,EAAE,EAAE,KAAK;4BACT,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,QAAQ,6BAA6B;4BACxE,cAAc,EAAE,QAAQ,CAAC,cAAc;yBACxC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;wBACrB,GAAG,WAAW;wBACd,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACK,CAAC,CAAC;QAEV,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,WAAW,CAAC,cAAc,CAAM,CAAC;AACjD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { YagrAgentState, YagrRequiredAction, YagrRunJournalEntry } from '../types.js';
2
+ export declare function collectRequiredActions(journal: YagrRunJournalEntry[]): YagrRequiredAction[];
3
+ export declare function agentStateForRequiredAction(action: YagrRequiredAction): YagrAgentState;
4
+ export declare function blockingStateForRequiredActions(actions: YagrRequiredAction[]): YagrAgentState | null;
5
+ //# sourceMappingURL=required-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"required-actions.d.ts","sourceRoot":"","sources":["../../src/runtime/required-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAsC3F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CA4B3F;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAUtF;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,cAAc,GAAG,IAAI,CAgBpG"}
@@ -0,0 +1,77 @@
1
+ function asRecord(value) {
2
+ return value && typeof value === 'object' ? value : undefined;
3
+ }
4
+ function asString(value) {
5
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
6
+ }
7
+ function asBoolean(value) {
8
+ return typeof value === 'boolean' ? value : undefined;
9
+ }
10
+ function normalizeRequiredAction(value, fallbackId) {
11
+ const record = asRecord(value);
12
+ if (!record) {
13
+ return undefined;
14
+ }
15
+ const kind = asString(record.kind);
16
+ const title = asString(record.title);
17
+ const message = asString(record.message);
18
+ if (!kind || !title || !message || (kind !== 'input' && kind !== 'permission' && kind !== 'external')) {
19
+ return undefined;
20
+ }
21
+ return {
22
+ id: asString(record.id) ?? fallbackId,
23
+ kind,
24
+ title,
25
+ message,
26
+ detail: asString(record.detail),
27
+ resumable: asBoolean(record.resumable) ?? true,
28
+ };
29
+ }
30
+ export function collectRequiredActions(journal) {
31
+ const actions = new Map();
32
+ for (const entry of journal) {
33
+ if (entry.requiredAction) {
34
+ actions.set(entry.requiredAction.id, entry.requiredAction);
35
+ }
36
+ if (entry.type !== 'step' || !entry.step) {
37
+ continue;
38
+ }
39
+ for (let index = 0; index < entry.step.toolCalls.length; index += 1) {
40
+ const toolCall = entry.step.toolCalls[index];
41
+ if (toolCall.toolName !== 'requestRequiredAction') {
42
+ continue;
43
+ }
44
+ const toolResult = entry.step.toolResults[index];
45
+ const fallbackId = `${entry.step.stepNumber}:${index}`;
46
+ const action = normalizeRequiredAction(toolResult?.result ?? toolCall.args, fallbackId);
47
+ if (action) {
48
+ actions.set(action.id, action);
49
+ }
50
+ }
51
+ }
52
+ return [...actions.values()];
53
+ }
54
+ export function agentStateForRequiredAction(action) {
55
+ if (action.kind === 'permission') {
56
+ return 'waiting_for_permission';
57
+ }
58
+ if (action.kind === 'input') {
59
+ return 'waiting_for_input';
60
+ }
61
+ return action.resumable ? 'resumable' : 'failed_terminal';
62
+ }
63
+ export function blockingStateForRequiredActions(actions) {
64
+ if (actions.length === 0) {
65
+ return null;
66
+ }
67
+ const permissionAction = actions.find((action) => action.kind === 'permission');
68
+ if (permissionAction) {
69
+ return agentStateForRequiredAction(permissionAction);
70
+ }
71
+ const inputAction = actions.find((action) => action.kind === 'input');
72
+ if (inputAction) {
73
+ return agentStateForRequiredAction(inputAction);
74
+ }
75
+ return agentStateForRequiredAction(actions[0]);
76
+ }
77
+ //# sourceMappingURL=required-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"required-actions.js","sourceRoot":"","sources":["../../src/runtime/required-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type CoreMessage } from 'ai';
2
+ import type { Engine } from '../engine/engine.js';
3
+ import type { YagrRunOptions, YagrRunResult } from '../types.js';
4
+ type ExecuteRunResult = {
5
+ result: YagrRunResult;
6
+ persistedMessages: CoreMessage[];
7
+ };
8
+ export declare class YagrRunEngine {
9
+ private readonly engine;
10
+ private readonly history;
11
+ constructor(engine: Engine, history: readonly CoreMessage[]);
12
+ execute(prompt: string, options?: YagrRunOptions): Promise<ExecuteRunResult>;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=run-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-engine.d.ts","sourceRoot":"","sources":["../../src/runtime/run-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAOV,cAAc,EAEd,aAAa,EAId,MAAM,aAAa,CAAC;AAerB,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,WAAW,EAAE,CAAC;CAClC,CAAC;AAqiBF,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,WAAW,EAAE;IAG5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAoOvF"}