@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.
- package/LICENSE +201 -0
- package/README.md +257 -0
- package/dist/agent.d.ts +21 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +47 -0
- package/dist/agent.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +293 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/init-yagr-home.d.ts +2 -0
- package/dist/config/init-yagr-home.d.ts.map +1 -0
- package/dist/config/init-yagr-home.js +6 -0
- package/dist/config/init-yagr-home.js.map +1 -0
- package/dist/config/load-env.d.ts +2 -0
- package/dist/config/load-env.d.ts.map +1 -0
- package/dist/config/load-env.js +20 -0
- package/dist/config/load-env.js.map +1 -0
- package/dist/config/load-n8n-engine-config.d.ts +6 -0
- package/dist/config/load-n8n-engine-config.d.ts.map +1 -0
- package/dist/config/load-n8n-engine-config.js +39 -0
- package/dist/config/load-n8n-engine-config.js.map +1 -0
- package/dist/config/yagr-config-service.d.ts +51 -0
- package/dist/config/yagr-config-service.d.ts.map +1 -0
- package/dist/config/yagr-config-service.js +103 -0
- package/dist/config/yagr-config-service.js.map +1 -0
- package/dist/config/yagr-home.d.ts +4 -0
- package/dist/config/yagr-home.d.ts.map +1 -0
- package/dist/config/yagr-home.js +25 -0
- package/dist/config/yagr-home.js.map +1 -0
- package/dist/engine/engine.d.ts +15 -0
- package/dist/engine/engine.d.ts.map +1 -0
- package/dist/engine/engine.js +2 -0
- package/dist/engine/engine.js.map +1 -0
- package/dist/engine/n8n-engine.d.ts +26 -0
- package/dist/engine/n8n-engine.d.ts.map +1 -0
- package/dist/engine/n8n-engine.js +200 -0
- package/dist/engine/n8n-engine.js.map +1 -0
- package/dist/engine/yagr-engine.d.ts +17 -0
- package/dist/engine/yagr-engine.d.ts.map +1 -0
- package/dist/engine/yagr-engine.js +37 -0
- package/dist/engine/yagr-engine.js.map +1 -0
- package/dist/gateway/cli.d.ts +8 -0
- package/dist/gateway/cli.d.ts.map +1 -0
- package/dist/gateway/cli.js +50 -0
- package/dist/gateway/cli.js.map +1 -0
- package/dist/gateway/history-viewport.d.ts +14 -0
- package/dist/gateway/history-viewport.d.ts.map +1 -0
- package/dist/gateway/history-viewport.js +51 -0
- package/dist/gateway/history-viewport.js.map +1 -0
- package/dist/gateway/interactive-ui.d.ts +4 -0
- package/dist/gateway/interactive-ui.d.ts.map +1 -0
- package/dist/gateway/interactive-ui.js +430 -0
- package/dist/gateway/interactive-ui.js.map +1 -0
- package/dist/gateway/manager.d.ts +25 -0
- package/dist/gateway/manager.d.ts.map +1 -0
- package/dist/gateway/manager.js +204 -0
- package/dist/gateway/manager.js.map +1 -0
- package/dist/gateway/telegram.d.ts +30 -0
- package/dist/gateway/telegram.d.ts.map +1 -0
- package/dist/gateway/telegram.js +406 -0
- package/dist/gateway/telegram.js.map +1 -0
- package/dist/gateway/types.d.ts +19 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/gateway/webui.d.ts +13 -0
- package/dist/gateway/webui.d.ts.map +1 -0
- package/dist/gateway/webui.js +663 -0
- package/dist/gateway/webui.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/create-language-model.d.ts +31 -0
- package/dist/llm/create-language-model.d.ts.map +1 -0
- package/dist/llm/create-language-model.js +129 -0
- package/dist/llm/create-language-model.js.map +1 -0
- package/dist/prompt/build-system-prompt.d.ts +3 -0
- package/dist/prompt/build-system-prompt.d.ts.map +1 -0
- package/dist/prompt/build-system-prompt.js +64 -0
- package/dist/prompt/build-system-prompt.js.map +1 -0
- package/dist/runtime/completion-gate.d.ts +21 -0
- package/dist/runtime/completion-gate.d.ts.map +1 -0
- package/dist/runtime/completion-gate.js +59 -0
- package/dist/runtime/completion-gate.js.map +1 -0
- package/dist/runtime/context-compaction.d.ts +25 -0
- package/dist/runtime/context-compaction.d.ts.map +1 -0
- package/dist/runtime/context-compaction.js +197 -0
- package/dist/runtime/context-compaction.js.map +1 -0
- package/dist/runtime/outcome.d.ts +23 -0
- package/dist/runtime/outcome.d.ts.map +1 -0
- package/dist/runtime/outcome.js +89 -0
- package/dist/runtime/outcome.js.map +1 -0
- package/dist/runtime/policy-hooks.d.ts +15 -0
- package/dist/runtime/policy-hooks.d.ts.map +1 -0
- package/dist/runtime/policy-hooks.js +54 -0
- package/dist/runtime/policy-hooks.js.map +1 -0
- package/dist/runtime/required-actions.d.ts +5 -0
- package/dist/runtime/required-actions.d.ts.map +1 -0
- package/dist/runtime/required-actions.js +77 -0
- package/dist/runtime/required-actions.js.map +1 -0
- package/dist/runtime/run-engine.d.ts +15 -0
- package/dist/runtime/run-engine.d.ts.map +1 -0
- package/dist/runtime/run-engine.js +624 -0
- package/dist/runtime/run-engine.js.map +1 -0
- package/dist/setup/setup-wizard.d.ts +52 -0
- package/dist/setup/setup-wizard.d.ts.map +1 -0
- package/dist/setup/setup-wizard.js +613 -0
- package/dist/setup/setup-wizard.js.map +1 -0
- package/dist/setup/start-launcher.d.ts +22 -0
- package/dist/setup/start-launcher.d.ts.map +1 -0
- package/dist/setup/start-launcher.js +76 -0
- package/dist/setup/start-launcher.js.map +1 -0
- package/dist/setup.d.ts +20 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +247 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/build-tools.d.ts +608 -0
- package/dist/tools/build-tools.d.ts.map +1 -0
- package/dist/tools/build-tools.js +35 -0
- package/dist/tools/build-tools.js.map +1 -0
- package/dist/tools/delete-workspace-file.d.ts +38 -0
- package/dist/tools/delete-workspace-file.d.ts.map +1 -0
- package/dist/tools/delete-workspace-file.js +31 -0
- package/dist/tools/delete-workspace-file.js.map +1 -0
- package/dist/tools/deploy.d.ts +110 -0
- package/dist/tools/deploy.d.ts.map +1 -0
- package/dist/tools/deploy.js +28 -0
- package/dist/tools/deploy.js.map +1 -0
- package/dist/tools/generate-workflow.d.ts +180 -0
- package/dist/tools/generate-workflow.d.ts.map +1 -0
- package/dist/tools/generate-workflow.js +46 -0
- package/dist/tools/generate-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +20 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +20 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-directory.d.ts +48 -0
- package/dist/tools/list-directory.d.ts.map +1 -0
- package/dist/tools/list-directory.js +61 -0
- package/dist/tools/list-directory.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +18 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +17 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/manage-workflow.d.ts +42 -0
- package/dist/tools/manage-workflow.d.ts.map +1 -0
- package/dist/tools/manage-workflow.js +26 -0
- package/dist/tools/manage-workflow.js.map +1 -0
- package/dist/tools/move-workspace-file.d.ts +42 -0
- package/dist/tools/move-workspace-file.d.ts.map +1 -0
- package/dist/tools/move-workspace-file.js +45 -0
- package/dist/tools/move-workspace-file.js.map +1 -0
- package/dist/tools/n8nac.d.ts +144 -0
- package/dist/tools/n8nac.d.ts.map +1 -0
- package/dist/tools/n8nac.js +349 -0
- package/dist/tools/n8nac.js.map +1 -0
- package/dist/tools/node-info.d.ts +18 -0
- package/dist/tools/node-info.d.ts.map +1 -0
- package/dist/tools/node-info.js +15 -0
- package/dist/tools/node-info.js.map +1 -0
- package/dist/tools/observer.d.ts +32 -0
- package/dist/tools/observer.d.ts.map +1 -0
- package/dist/tools/observer.js +10 -0
- package/dist/tools/observer.js.map +1 -0
- package/dist/tools/read-workspace-file.d.ts +54 -0
- package/dist/tools/read-workspace-file.d.ts.map +1 -0
- package/dist/tools/read-workspace-file.js +49 -0
- package/dist/tools/read-workspace-file.js.map +1 -0
- package/dist/tools/replace-in-workspace-file.d.ts +62 -0
- package/dist/tools/replace-in-workspace-file.d.ts.map +1 -0
- package/dist/tools/replace-in-workspace-file.js +46 -0
- package/dist/tools/replace-in-workspace-file.js.map +1 -0
- package/dist/tools/report-progress.d.ts +20 -0
- package/dist/tools/report-progress.d.ts.map +1 -0
- package/dist/tools/report-progress.js +20 -0
- package/dist/tools/report-progress.js.map +1 -0
- package/dist/tools/request-required-action.d.ts +31 -0
- package/dist/tools/request-required-action.d.ts.map +1 -0
- package/dist/tools/request-required-action.js +33 -0
- package/dist/tools/request-required-action.js.map +1 -0
- package/dist/tools/search-nodes.d.ts +18 -0
- package/dist/tools/search-nodes.d.ts.map +1 -0
- package/dist/tools/search-nodes.js +15 -0
- package/dist/tools/search-nodes.js.map +1 -0
- package/dist/tools/search-templates.d.ts +18 -0
- package/dist/tools/search-templates.d.ts.map +1 -0
- package/dist/tools/search-templates.js +15 -0
- package/dist/tools/search-templates.js.map +1 -0
- package/dist/tools/search-workspace.d.ts +55 -0
- package/dist/tools/search-workspace.d.ts.map +1 -0
- package/dist/tools/search-workspace.js +86 -0
- package/dist/tools/search-workspace.js.map +1 -0
- package/dist/tools/validate.d.ts +110 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +28 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/workspace-utils.d.ts +10 -0
- package/dist/tools/workspace-utils.d.ts.map +1 -0
- package/dist/tools/workspace-utils.js +63 -0
- package/dist/tools/workspace-utils.js.map +1 -0
- package/dist/tools/write-workspace-file.d.ts +46 -0
- package/dist/tools/write-workspace-file.d.ts.map +1 -0
- package/dist/tools/write-workspace-file.js +39 -0
- package/dist/tools/write-workspace-file.js.map +1 -0
- package/dist/types.d.ts +243 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webui/app.js +26759 -0
- package/dist/webui/app.js.map +7 -0
- package/dist/webui/styles.css +740 -0
- package/dist/webui/styles.css.map +7 -0
- 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":"AAuBA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA8B;IAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,YAAY,GAA0B,EAAE,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE5C,IAAI,QAAQ,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChE,IAAI,QAAQ,EAAE,CAAC;oBACb,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChE,IAAI,QAAQ,EAAE,CAAC;oBACb,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;gBACnD,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM;oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;oBAChD,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAClC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;oBACtC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;oBAC1C,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;QAC/B,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;QAC/B,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA8B,EAAE,UAAkB;IAC9E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,MAA2B;IAC5C,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA2B;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA8B;IAC9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/H,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,cAAc,CAAC;IAClG,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC;IAE9F,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,iBAAiB;QACjB,aAAa;QACb,uBAAuB;QACvB,kBAAkB;QAClB,cAAc;QACd,gBAAgB;QAChB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|