@amodalai/runtime 0.3.49 → 0.3.51
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/dist/src/agent/completion-tools.integration.test.d.ts +6 -0
- package/dist/src/agent/completion-tools.integration.test.js +263 -0
- package/dist/src/agent/completion-tools.integration.test.js.map +1 -0
- package/dist/src/agent/load-template-plan.integration.test.d.ts +6 -0
- package/dist/src/agent/load-template-plan.integration.test.js +152 -0
- package/dist/src/agent/load-template-plan.integration.test.js.map +1 -0
- package/dist/src/agent/local-server.js +64 -9
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/loop-types.d.ts +12 -2
- package/dist/src/agent/loop.test.js +5 -2
- package/dist/src/agent/loop.test.js.map +1 -1
- package/dist/src/agent/propose-plan.integration.test.d.ts +6 -0
- package/dist/src/agent/propose-plan.integration.test.js +186 -0
- package/dist/src/agent/propose-plan.integration.test.js.map +1 -0
- package/dist/src/agent/routes/package-updates.d.ts +42 -0
- package/dist/src/agent/routes/package-updates.js +207 -0
- package/dist/src/agent/routes/package-updates.js.map +1 -0
- package/dist/src/agent/routes/package-updates.test.d.ts +6 -0
- package/dist/src/agent/routes/package-updates.test.js +25 -0
- package/dist/src/agent/routes/package-updates.test.js.map +1 -0
- package/dist/src/agent/setup-state.integration.test.d.ts +6 -0
- package/dist/src/agent/setup-state.integration.test.js +182 -0
- package/dist/src/agent/setup-state.integration.test.js.map +1 -0
- package/dist/src/agent/snapshot-server.js +1 -0
- package/dist/src/agent/snapshot-server.js.map +1 -1
- package/dist/src/agent/states/executing.d.ts +6 -0
- package/dist/src/agent/states/executing.js +63 -27
- package/dist/src/agent/states/executing.js.map +1 -1
- package/dist/src/agent/states/streaming.js +18 -2
- package/dist/src/agent/states/streaming.js.map +1 -1
- package/dist/src/agent/tool-executor-local.js +11 -2
- package/dist/src/agent/tool-executor-local.js.map +1 -1
- package/dist/src/agent/validate-connection.integration.test.d.ts +6 -0
- package/dist/src/agent/validate-connection.integration.test.js +160 -0
- package/dist/src/agent/validate-connection.integration.test.js.map +1 -0
- package/dist/src/api/create-agent.js +1 -0
- package/dist/src/api/create-agent.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/intent/executor.d.ts +48 -0
- package/dist/src/intent/executor.js +420 -0
- package/dist/src/intent/executor.js.map +1 -0
- package/dist/src/intent/executor.test.d.ts +6 -0
- package/dist/src/intent/executor.test.js +543 -0
- package/dist/src/intent/executor.test.js.map +1 -0
- package/dist/src/intent/index.d.ts +10 -0
- package/dist/src/intent/index.js +9 -0
- package/dist/src/intent/index.js.map +1 -0
- package/dist/src/intent/loader.d.ts +16 -0
- package/dist/src/intent/loader.js +112 -0
- package/dist/src/intent/loader.js.map +1 -0
- package/dist/src/intent/loader.test.d.ts +6 -0
- package/dist/src/intent/loader.test.js +86 -0
- package/dist/src/intent/loader.test.js.map +1 -0
- package/dist/src/intent/matcher.d.ts +26 -0
- package/dist/src/intent/matcher.js +29 -0
- package/dist/src/intent/matcher.js.map +1 -0
- package/dist/src/intent/matcher.test.d.ts +6 -0
- package/dist/src/intent/matcher.test.js +53 -0
- package/dist/src/intent/matcher.test.js.map +1 -0
- package/dist/src/intent/onboarding.e2e.test.d.ts +6 -0
- package/dist/src/intent/onboarding.e2e.test.js +394 -0
- package/dist/src/intent/onboarding.e2e.test.js.map +1 -0
- package/dist/src/routes/ai-stream.js +96 -3
- package/dist/src/routes/ai-stream.js.map +1 -1
- package/dist/src/routes/session-resolver.js +16 -0
- package/dist/src/routes/session-resolver.js.map +1 -1
- package/dist/src/session/credential-scrubber.d.ts +35 -0
- package/dist/src/session/credential-scrubber.js +150 -0
- package/dist/src/session/credential-scrubber.js.map +1 -0
- package/dist/src/session/credential-scrubber.test.d.ts +6 -0
- package/dist/src/session/credential-scrubber.test.js +192 -0
- package/dist/src/session/credential-scrubber.test.js.map +1 -0
- package/dist/src/session/manager.intent.test.d.ts +6 -0
- package/dist/src/session/manager.intent.test.js +197 -0
- package/dist/src/session/manager.intent.test.js.map +1 -0
- package/dist/src/session/manager.js +114 -0
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/session-builder.d.ts +16 -1
- package/dist/src/session/session-builder.js +209 -41
- package/dist/src/session/session-builder.js.map +1 -1
- package/dist/src/session/store.js +48 -2
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/tool-context-factory.js +12 -0
- package/dist/src/session/tool-context-factory.js.map +1 -1
- package/dist/src/session/types.d.ts +12 -1
- package/dist/src/setup/commit-setup.d.ts +94 -0
- package/dist/src/setup/commit-setup.js +154 -0
- package/dist/src/setup/commit-setup.js.map +1 -0
- package/dist/src/setup/commit-setup.test.d.ts +6 -0
- package/dist/src/setup/commit-setup.test.js +310 -0
- package/dist/src/setup/commit-setup.test.js.map +1 -0
- package/dist/src/tools/README.md +270 -0
- package/dist/src/tools/admin-tools.d.ts +27 -0
- package/dist/src/tools/admin-tools.js +734 -0
- package/dist/src/tools/admin-tools.js.map +1 -0
- package/dist/src/tools/agent-package-discovery.test.d.ts +6 -0
- package/dist/src/tools/agent-package-discovery.test.js +90 -0
- package/dist/src/tools/agent-package-discovery.test.js.map +1 -0
- package/dist/src/tools/builtin/ask-choice.d.ts +8 -0
- package/dist/src/tools/builtin/ask-choice.js +54 -0
- package/dist/src/tools/builtin/ask-choice.js.map +1 -0
- package/dist/src/tools/context.d.ts +154 -0
- package/dist/src/tools/context.js +30 -0
- package/dist/src/tools/context.js.map +1 -0
- package/dist/src/tools/custom-tool-adapter.d.ts +33 -2
- package/dist/src/tools/custom-tool-adapter.js +38 -1
- package/dist/src/tools/custom-tool-adapter.js.map +1 -1
- package/dist/src/tools/custom-tool-adapter.test.js +48 -0
- package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
- package/dist/src/tools/fetch-url-tool.js +2 -0
- package/dist/src/tools/fetch-url-tool.js.map +1 -1
- package/dist/src/tools/file-tools.js +16 -0
- package/dist/src/tools/file-tools.js.map +1 -1
- package/dist/src/tools/fs/local.test.d.ts +6 -0
- package/dist/src/tools/fs/local.test.js +126 -0
- package/dist/src/tools/fs/local.test.js.map +1 -0
- package/dist/src/tools/index.d.ts +35 -0
- package/dist/src/tools/index.js +11 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/mcp-tool-adapter.js +2 -0
- package/dist/src/tools/mcp-tool-adapter.js.map +1 -1
- package/dist/src/tools/memory-tool.js +23 -1
- package/dist/src/tools/memory-tool.js.map +1 -1
- package/dist/src/tools/permissions.d.ts +36 -0
- package/dist/src/tools/permissions.js +97 -0
- package/dist/src/tools/permissions.js.map +1 -0
- package/dist/src/tools/permissions.test.d.ts +6 -0
- package/dist/src/tools/permissions.test.js +62 -0
- package/dist/src/tools/permissions.test.js.map +1 -0
- package/dist/src/tools/request-tool.js +2 -0
- package/dist/src/tools/request-tool.js.map +1 -1
- package/dist/src/tools/sdk-context.d.ts +43 -0
- package/dist/src/tools/sdk-context.js +94 -0
- package/dist/src/tools/sdk-context.js.map +1 -0
- package/dist/src/tools/sdk-context.test.d.ts +6 -0
- package/dist/src/tools/sdk-context.test.js +134 -0
- package/dist/src/tools/sdk-context.test.js.map +1 -0
- package/dist/src/tools/store-tools.js +6 -0
- package/dist/src/tools/store-tools.js.map +1 -1
- package/dist/src/tools/types.d.ts +53 -14
- package/dist/src/tools/web-search-tool.js +2 -0
- package/dist/src/tools/web-search-tool.js.map +1 -1
- package/dist/src/types.d.ts +164 -28
- package/dist/src/types.js +9 -3
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -4
- package/dist/src/tools/agent-config-tool.d.ts +0 -7
- package/dist/src/tools/agent-config-tool.js +0 -78
- package/dist/src/tools/agent-config-tool.js.map +0 -1
- package/dist/src/tools/collect-secret-tool.d.ts +0 -7
- package/dist/src/tools/collect-secret-tool.js +0 -47
- package/dist/src/tools/collect-secret-tool.js.map +0 -1
- package/dist/src/tools/fs/http.d.ts +0 -37
- package/dist/src/tools/fs/http.js +0 -88
- package/dist/src/tools/fs/http.js.map +0 -1
- package/dist/src/tools/http-file-tools.d.ts +0 -13
- package/dist/src/tools/http-file-tools.js +0 -146
- package/dist/src/tools/http-file-tools.js.map +0 -1
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import { randomUUID } from 'node:crypto';
|
|
16
16
|
import { runAgent } from '../agent/loop.js';
|
|
17
17
|
import { DEFAULT_LOOP_CONFIG } from '../agent/loop-types.js';
|
|
18
|
+
import { matchIntent, runIntent } from '../intent/index.js';
|
|
18
19
|
import { SSEEventType } from '../types.js';
|
|
19
20
|
import { SessionError } from '../errors.js';
|
|
20
21
|
import { VISION_PROVIDERS } from '../providers/types.js';
|
|
@@ -132,6 +133,7 @@ export class StandaloneSessionManager {
|
|
|
132
133
|
maxContextTokens: opts.maxContextTokens ?? this.defaultMaxContextTokens,
|
|
133
134
|
maxSessionTokens: opts.maxSessionTokens ?? this.defaultMaxSessionTokens,
|
|
134
135
|
toolContextFactory: opts.toolContextFactory,
|
|
136
|
+
intents: opts.intents ?? [],
|
|
135
137
|
};
|
|
136
138
|
this.sessions.set(id, session);
|
|
137
139
|
this.logger.info('session_created', {
|
|
@@ -186,6 +188,118 @@ export class StandaloneSessionManager {
|
|
|
186
188
|
timestamp: new Date().toISOString(),
|
|
187
189
|
};
|
|
188
190
|
}
|
|
191
|
+
// Intent routing — deterministic shortcut layer in front of the
|
|
192
|
+
// agent loop. Tested only when the user message is plain text;
|
|
193
|
+
// multimodal turns (image-bearing) always go to the LLM since
|
|
194
|
+
// intent regexes are textual. First-match-wins; on a clean
|
|
195
|
+
// completion we skip the agent loop entirely. On fall-through
|
|
196
|
+
// (handler returned null before any tool ran) we proceed to the
|
|
197
|
+
// LLM as if no intent existed.
|
|
198
|
+
if (session.intents.length > 0 && images.length === 0) {
|
|
199
|
+
const matched = matchIntent(session.intents, userMessage);
|
|
200
|
+
if (matched) {
|
|
201
|
+
// Single-line route marker — easy to grep + visible in dev
|
|
202
|
+
// (passesQuietFilter passes `intent_` lines through). Pairs
|
|
203
|
+
// with the route_llm log below so each turn reports exactly
|
|
204
|
+
// one route decision.
|
|
205
|
+
session.logger.info('route_intent', {
|
|
206
|
+
sessionId: session.id,
|
|
207
|
+
intentId: matched.intent.id,
|
|
208
|
+
userMessagePreview: userMessage.slice(0, 80),
|
|
209
|
+
});
|
|
210
|
+
const buildToolContext = opts?.buildToolContext ?? makeNoOpToolContext(session);
|
|
211
|
+
const intentGen = runIntent({
|
|
212
|
+
match: matched,
|
|
213
|
+
userMessage,
|
|
214
|
+
sessionId: session.id,
|
|
215
|
+
scopeId: session.scopeId,
|
|
216
|
+
toolRegistry: session.toolRegistry,
|
|
217
|
+
buildToolContext,
|
|
218
|
+
logger: session.logger,
|
|
219
|
+
});
|
|
220
|
+
let next = await intentGen.next();
|
|
221
|
+
while (!next.done) {
|
|
222
|
+
yield next.value;
|
|
223
|
+
next = await intentGen.next();
|
|
224
|
+
}
|
|
225
|
+
const outcome = next.value;
|
|
226
|
+
if (outcome.kind === 'completed') {
|
|
227
|
+
session.messages = [
|
|
228
|
+
...session.messages,
|
|
229
|
+
outcome.assistantMessage,
|
|
230
|
+
...outcome.toolMessages,
|
|
231
|
+
];
|
|
232
|
+
if (this.store) {
|
|
233
|
+
await this.persist(session);
|
|
234
|
+
}
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
if (outcome.kind === 'completedContinue') {
|
|
238
|
+
// Intent did its deterministic part — validate, persist,
|
|
239
|
+
// whatever — then handed off to the LLM for the next-step
|
|
240
|
+
// rendering (multi-option ask_choice, conversational
|
|
241
|
+
// framing, optional-batch copy). Append the synthetic
|
|
242
|
+
// messages so the LLM sees the new state, then fall
|
|
243
|
+
// through to the agent loop. The agent loop emits its own
|
|
244
|
+
// Done event when the LLM turn finishes; runIntent
|
|
245
|
+
// suppresses the intent-side Done so we don't double-fire.
|
|
246
|
+
session.messages = [
|
|
247
|
+
...session.messages,
|
|
248
|
+
outcome.assistantMessage,
|
|
249
|
+
...outcome.toolMessages,
|
|
250
|
+
];
|
|
251
|
+
if (this.store) {
|
|
252
|
+
await this.persist(session);
|
|
253
|
+
}
|
|
254
|
+
session.logger.info('route_llm', {
|
|
255
|
+
sessionId: session.id,
|
|
256
|
+
reason: 'intent_continued',
|
|
257
|
+
intentId: matched.intent.id,
|
|
258
|
+
});
|
|
259
|
+
// Fall through to agent loop below.
|
|
260
|
+
}
|
|
261
|
+
else if (outcome.kind === 'errored') {
|
|
262
|
+
// Intent emitted an error SSE; the user has the failure
|
|
263
|
+
// visible. Don't fall through — they retry or type
|
|
264
|
+
// something more general (which won't match any intent
|
|
265
|
+
// and will hit the LLM next turn).
|
|
266
|
+
if (this.store) {
|
|
267
|
+
await this.persist(session);
|
|
268
|
+
}
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
// outcome.kind === 'fellThrough' — fall through to the LLM.
|
|
273
|
+
// No SSE events emitted, no messages appended; the agent
|
|
274
|
+
// loop runs as if intent routing never happened. Log the
|
|
275
|
+
// route flip so the dev terminal shows why the LLM ran.
|
|
276
|
+
session.logger.info('route_llm', {
|
|
277
|
+
sessionId: session.id,
|
|
278
|
+
reason: 'intent_fell_through',
|
|
279
|
+
intentId: matched.intent.id,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
session.logger.info('route_llm', {
|
|
285
|
+
sessionId: session.id,
|
|
286
|
+
reason: 'no_intent_match',
|
|
287
|
+
userMessagePreview: userMessage.slice(0, 80),
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else if (session.intents.length === 0) {
|
|
292
|
+
session.logger.info('route_llm', {
|
|
293
|
+
sessionId: session.id,
|
|
294
|
+
reason: 'no_intents_loaded',
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
else if (images.length > 0) {
|
|
298
|
+
session.logger.info('route_llm', {
|
|
299
|
+
sessionId: session.id,
|
|
300
|
+
reason: 'multimodal_skips_intent',
|
|
301
|
+
});
|
|
302
|
+
}
|
|
189
303
|
// Build AgentContext from Session
|
|
190
304
|
const ctx = {
|
|
191
305
|
provider: session.provider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2026 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import type { AgentBundle, CustomToolExecutor, StoreBackend } from '@amodalai/types';
|
|
6
|
+
import type { AgentBundle, CustomToolExecutor, StoreBackend, IntentDefinition } from '@amodalai/types';
|
|
7
7
|
import type { McpManager, AdminAgentContent, FieldScrubber } from '@amodalai/core';
|
|
8
8
|
import type { LLMProvider } from '../providers/types.js';
|
|
9
9
|
import type { ToolRegistry, ToolContext } from '../tools/types.js';
|
|
@@ -21,6 +21,13 @@ export interface SessionComponents {
|
|
|
21
21
|
permissionChecker: PermissionChecker;
|
|
22
22
|
systemPrompt: string;
|
|
23
23
|
toolContextFactory: (callId: string) => ToolContext;
|
|
24
|
+
/**
|
|
25
|
+
* Deterministic intents loaded from `<repoPath>/intents/` at session
|
|
26
|
+
* build time. Empty when the repo doesn't have an `intents/` dir
|
|
27
|
+
* (most agents) — `runMessage` short-circuits the intent path on
|
|
28
|
+
* empty arrays so this is zero-cost when unused.
|
|
29
|
+
*/
|
|
30
|
+
intents: IntentDefinition[];
|
|
24
31
|
}
|
|
25
32
|
/** Options for building session components. */
|
|
26
33
|
export interface BuildSessionComponentsOptions {
|
|
@@ -71,6 +78,14 @@ export interface BuildSessionComponentsOptions {
|
|
|
71
78
|
* resolver rather than left as literal strings.
|
|
72
79
|
*/
|
|
73
80
|
credentialResolver?: CredentialResolver;
|
|
81
|
+
/**
|
|
82
|
+
* Pre-loaded intents from the agent's `intents/` directory. The
|
|
83
|
+
* caller is responsible for loading these (via `loadIntents`)
|
|
84
|
+
* because intent loading involves esbuild compile + dynamic
|
|
85
|
+
* import, which is async — `buildSessionComponents` itself stays
|
|
86
|
+
* sync. Default: empty array.
|
|
87
|
+
*/
|
|
88
|
+
intents?: IntentDefinition[];
|
|
74
89
|
}
|
|
75
90
|
declare const PRESENT_TOOL_NAME = "present";
|
|
76
91
|
declare const STOP_EXECUTION_TOOL_NAME = "stop_execution";
|
|
@@ -22,8 +22,9 @@ import { registerStoreTools } from '../tools/store-tools.js';
|
|
|
22
22
|
import { createRequestTool, REQUEST_TOOL_NAME } from '../tools/request-tool.js';
|
|
23
23
|
import { createCustomToolDefinition } from '../tools/custom-tool-adapter.js';
|
|
24
24
|
import { LocalFsBackend } from '../tools/fs/local.js';
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
25
|
+
import { getDb, getSetupState, upsertSetupState, markComplete, deleteSetupState, } from '@amodalai/db';
|
|
26
|
+
import { composePlan } from '@amodalai/core';
|
|
27
|
+
import { commitSetup } from '../setup/commit-setup.js';
|
|
27
28
|
import { registerMcpTools } from '../tools/mcp-tool-adapter.js';
|
|
28
29
|
import { AccessJsonPermissionChecker, } from '../security/permission-checker.js';
|
|
29
30
|
import { compileContext } from '../context/compiler.js';
|
|
@@ -37,8 +38,8 @@ import { createWebSearchTool, WEB_SEARCH_TOOL_NAME } from '../tools/web-search-t
|
|
|
37
38
|
import { createFetchUrlTool, FETCH_URL_TOOL_NAME } from '../tools/fetch-url-tool.js';
|
|
38
39
|
import { createMemoryTool, MEMORY_TOOL_NAME } from '../tools/memory-tool.js';
|
|
39
40
|
import { registerFileTools, DEFAULT_ALLOWED_DIRS, DEFAULT_BLOCKED_FILES } from '../tools/file-tools.js';
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
41
|
+
import { registerAdminTools } from '../tools/admin-tools.js';
|
|
42
|
+
import { ASK_CHOICE_TOOL_NAME, createAskChoiceTool } from '../tools/builtin/ask-choice.js';
|
|
42
43
|
// ---------------------------------------------------------------------------
|
|
43
44
|
// Present tool (system tool)
|
|
44
45
|
// ---------------------------------------------------------------------------
|
|
@@ -74,6 +75,8 @@ Widget selection:
|
|
|
74
75
|
}),
|
|
75
76
|
readOnly: true,
|
|
76
77
|
metadata: { category: 'system' },
|
|
78
|
+
runningLabel: 'Showing widget',
|
|
79
|
+
completedLabel: 'Showed widget',
|
|
77
80
|
async execute(params) {
|
|
78
81
|
// The present tool's result is consumed by the SSE layer to emit a
|
|
79
82
|
// Widget event. The execute function just passes the data through.
|
|
@@ -93,6 +96,8 @@ function createStopExecutionTool() {
|
|
|
93
96
|
}),
|
|
94
97
|
readOnly: true,
|
|
95
98
|
metadata: { category: 'system' },
|
|
99
|
+
runningLabel: 'Stopping',
|
|
100
|
+
completedLabel: 'Stopped',
|
|
96
101
|
async execute(params) {
|
|
97
102
|
// The __stop sentinel is checked by the EXECUTING state handler.
|
|
98
103
|
// When detected, it transitions to DONE(model_stop) instead of continuing.
|
|
@@ -126,7 +131,7 @@ function bundleConnectionToCompilerConnection(name, conn) {
|
|
|
126
131
|
// ---------------------------------------------------------------------------
|
|
127
132
|
// Custom tool session context bridge
|
|
128
133
|
// ---------------------------------------------------------------------------
|
|
129
|
-
function buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, appId,
|
|
134
|
+
function buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, appId, repoRoot) {
|
|
130
135
|
// Adapt StoreBackend.put (returns StorePutResult) to CustomToolSessionContext.storeBackend.put (returns void)
|
|
131
136
|
const adaptedBackend = storeBackend
|
|
132
137
|
? {
|
|
@@ -135,6 +140,35 @@ function buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, app
|
|
|
135
140
|
},
|
|
136
141
|
}
|
|
137
142
|
: undefined;
|
|
143
|
+
// Phase A: expose ctx.fs to handlers when we know the repo root.
|
|
144
|
+
// Defaults to LocalFsBackend; the cloud backend will plug in here in
|
|
145
|
+
// Phase 0G via the same factory selection used for the SDK ToolContext.
|
|
146
|
+
const fs = repoRoot ? new LocalFsBackend({ repoRoot }) : undefined;
|
|
147
|
+
// Phase B: expose ctx.setupState. The factory closes over the agent
|
|
148
|
+
// id + a Drizzle handle pulled lazily from the runtime's pool so
|
|
149
|
+
// session-builder doesn't need to wire the db connection through
|
|
150
|
+
// its existing flow. Skipped when the pool isn't initialized
|
|
151
|
+
// (e.g. unit tests with no DATABASE_URL).
|
|
152
|
+
//
|
|
153
|
+
// Identity resolution: prefer `process.env.AGENT_ID` when the
|
|
154
|
+
// process was spawned with one (the CLI sets it for both Studio
|
|
155
|
+
// and the admin agent so all three subprocesses key
|
|
156
|
+
// `setup_state` rows by the SAME id). Fall back to
|
|
157
|
+
// `bundle.config.name` for the standalone runtime case where no
|
|
158
|
+
// CLI is in front. Without this, the admin-agent process — whose
|
|
159
|
+
// bundle is loaded from ~/.amodal/admin-agent (name: "admin") —
|
|
160
|
+
// would write/read rows under "admin" while Studio's repo-state
|
|
161
|
+
// probe queries under "default", and `commit_setup` would mark
|
|
162
|
+
// the wrong row complete.
|
|
163
|
+
const agentId = process.env['AGENT_ID'] ?? bundle.config.name;
|
|
164
|
+
const setupStateFactory = buildSetupStateFactory(agentId);
|
|
165
|
+
// Phase C: expose ctx.plan. The composer reads node_modules under
|
|
166
|
+
// repoPath, so this is undefined when no repoPath is resolvable.
|
|
167
|
+
const plan = repoRoot ? buildPlanOps(repoRoot) : undefined;
|
|
168
|
+
// Phase E: expose ctx.completion. Needs both a db pool (to read
|
|
169
|
+
// setup_state + write completed_at) and a fs backend (to write
|
|
170
|
+
// amodal.json). Skipped when either is missing.
|
|
171
|
+
const completionFactory = fs ? buildCompletionFactory(agentId, fs) : undefined;
|
|
138
172
|
return {
|
|
139
173
|
config: {
|
|
140
174
|
getConnections() {
|
|
@@ -151,9 +185,158 @@ function buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, app
|
|
|
151
185
|
},
|
|
152
186
|
storeBackend: adaptedBackend,
|
|
153
187
|
appId,
|
|
154
|
-
|
|
188
|
+
repoRoot: repoRoot ?? undefined,
|
|
189
|
+
fs,
|
|
190
|
+
agentId,
|
|
191
|
+
...(setupStateFactory ? { setupStateFactory } : {}),
|
|
192
|
+
...(plan ? { plan } : {}),
|
|
193
|
+
...(completionFactory ? { completionFactory } : {}),
|
|
155
194
|
};
|
|
156
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Build the `ctx.plan` ops bound to the agent's repo path. The
|
|
198
|
+
* composer reads files under `<repoPath>/node_modules/<pkg>/`; when
|
|
199
|
+
* the package isn't installed we surface a typed `not_installed`
|
|
200
|
+
* soft-fail instead of throwing the underlying ENOENT.
|
|
201
|
+
*/
|
|
202
|
+
function buildPlanOps(repoPath) {
|
|
203
|
+
return {
|
|
204
|
+
async compose(templatePackageName) {
|
|
205
|
+
try {
|
|
206
|
+
const composed = await composePlan({ repoPath, templatePackage: templatePackageName });
|
|
207
|
+
return { ok: true, plan: composed };
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
if (err !== null &&
|
|
211
|
+
typeof err === 'object' &&
|
|
212
|
+
'code' in err &&
|
|
213
|
+
err.code === 'CONFIG_NOT_FOUND') {
|
|
214
|
+
return {
|
|
215
|
+
ok: false,
|
|
216
|
+
reason: 'not_installed',
|
|
217
|
+
message: `Template "${templatePackageName}" is not installed. Call install_package first.`,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
if (err !== null &&
|
|
221
|
+
typeof err === 'object' &&
|
|
222
|
+
'code' in err &&
|
|
223
|
+
(err.code === 'CONFIG_PARSE_FAILED' ||
|
|
224
|
+
err.code === 'CONFIG_VALIDATION_FAILED')) {
|
|
225
|
+
return {
|
|
226
|
+
ok: false,
|
|
227
|
+
reason: 'malformed',
|
|
228
|
+
message: err instanceof Error ? err.message : String(err),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
ok: false,
|
|
233
|
+
reason: 'error',
|
|
234
|
+
message: err instanceof Error ? err.message : String(err),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Build a `setupState` ops factory closed over the runtime's Drizzle
|
|
242
|
+
* pool. Returns undefined when no pool is initialized — `amodal dev`
|
|
243
|
+
* always has one (it requires DATABASE_URL), but unit tests that
|
|
244
|
+
* exercise the session-builder without a db pool see this as a soft
|
|
245
|
+
* skip and the handler falls back to its own no-db error path.
|
|
246
|
+
*/
|
|
247
|
+
function buildSetupStateFactory(agentId) {
|
|
248
|
+
let db;
|
|
249
|
+
try {
|
|
250
|
+
db = getDb();
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// No DATABASE_URL configured — setupState ops not available for this session.
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
return (scopeId) => ({
|
|
257
|
+
async read() {
|
|
258
|
+
const row = await getSetupState(db, agentId, scopeId);
|
|
259
|
+
if (!row)
|
|
260
|
+
return null;
|
|
261
|
+
return {
|
|
262
|
+
state: row.state,
|
|
263
|
+
completedAt: row.completedAt ? row.completedAt.toISOString() : null,
|
|
264
|
+
};
|
|
265
|
+
},
|
|
266
|
+
async upsert(patch) {
|
|
267
|
+
const row = await upsertSetupState(db, agentId, scopeId, patch);
|
|
268
|
+
return {
|
|
269
|
+
state: row.state,
|
|
270
|
+
completedAt: row.completedAt ? row.completedAt.toISOString() : null,
|
|
271
|
+
};
|
|
272
|
+
},
|
|
273
|
+
async markComplete() {
|
|
274
|
+
const dt = await markComplete(db, agentId, scopeId);
|
|
275
|
+
return dt ? dt.toISOString() : null;
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Build the `ctx.completion` ops factory closed over (agentId, db,
|
|
281
|
+
* fs). The factory takes scopeId at call-time so concurrent
|
|
282
|
+
* per-scope sessions don't share the same ops object — same
|
|
283
|
+
* pattern as `buildSetupStateFactory`.
|
|
284
|
+
*/
|
|
285
|
+
function buildCompletionFactory(agentId, fs) {
|
|
286
|
+
let db;
|
|
287
|
+
try {
|
|
288
|
+
db = getDb();
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
// No DATABASE_URL — completion ops not available.
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
return (scopeId) => ({
|
|
295
|
+
async commit(opts) {
|
|
296
|
+
try {
|
|
297
|
+
const result = await commitSetup({
|
|
298
|
+
db,
|
|
299
|
+
fs,
|
|
300
|
+
agentId,
|
|
301
|
+
scopeId,
|
|
302
|
+
force: opts?.force ?? false,
|
|
303
|
+
...(opts?.connectionsStatus ? { connectionsStatus: opts.connectionsStatus } : {}),
|
|
304
|
+
});
|
|
305
|
+
if (result.ok) {
|
|
306
|
+
return {
|
|
307
|
+
ok: true,
|
|
308
|
+
alreadyComplete: result.alreadyComplete,
|
|
309
|
+
completedAt: result.completedAt.toISOString(),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (result.reason === 'not_ready') {
|
|
313
|
+
return { ok: false, reason: 'not_ready', warnings: result.warnings };
|
|
314
|
+
}
|
|
315
|
+
return { ok: false, reason: 'no_state', message: result.message };
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
return {
|
|
319
|
+
ok: false,
|
|
320
|
+
reason: 'error',
|
|
321
|
+
message: err instanceof Error ? err.message : String(err),
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
async cancel() {
|
|
326
|
+
try {
|
|
327
|
+
const deleted = await deleteSetupState(db, agentId, scopeId);
|
|
328
|
+
return { ok: true, deleted };
|
|
329
|
+
}
|
|
330
|
+
catch (err) {
|
|
331
|
+
return {
|
|
332
|
+
ok: false,
|
|
333
|
+
reason: 'error',
|
|
334
|
+
message: err instanceof Error ? err.message : String(err),
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
}
|
|
157
340
|
// ---------------------------------------------------------------------------
|
|
158
341
|
// Env allowlist
|
|
159
342
|
// ---------------------------------------------------------------------------
|
|
@@ -178,7 +361,7 @@ function collectEnvAllowlist(bundle) {
|
|
|
178
361
|
* create a session.
|
|
179
362
|
*/
|
|
180
363
|
export function buildSessionComponents(opts) {
|
|
181
|
-
const { bundle, storeBackend, mcpManager, sessionType = 'chat', pinnedModel, logger, appId = LOCAL_APP_ID, toolExecutor, adminContent, sessionId = 'pending', scopeId = '', scopeContext, fieldScrubber, memoryContent, memoryDb, credentialResolver, } = opts;
|
|
364
|
+
const { bundle, storeBackend, mcpManager, sessionType = 'chat', pinnedModel, logger, appId = LOCAL_APP_ID, toolExecutor, adminContent, sessionId = 'pending', scopeId = '', scopeContext, fieldScrubber, memoryContent, memoryDb, credentialResolver, intents = [], } = opts;
|
|
182
365
|
// -------------------------------------------------------------------------
|
|
183
366
|
// 1. Create LLM provider
|
|
184
367
|
// -------------------------------------------------------------------------
|
|
@@ -232,27 +415,14 @@ export function buildSessionComponents(opts) {
|
|
|
232
415
|
}));
|
|
233
416
|
}
|
|
234
417
|
// -------------------------------------------------------------------------
|
|
235
|
-
// 4b. Create fs backend (shared by custom tools + file tools)
|
|
236
|
-
// -------------------------------------------------------------------------
|
|
237
|
-
// TODO: refactor file-tools.ts to use FsBackend directly instead of
|
|
238
|
-
// duplicating tool implementations in http-file-tools.ts
|
|
239
|
-
let fsBackend;
|
|
240
|
-
const workspaceApiUrl = process.env['WORKSPACE_API_URL'];
|
|
241
|
-
const fsRepoRoot = process.env['REPO_PATH'] ?? bundle.origin;
|
|
242
|
-
const isRealPath = fsRepoRoot && fsRepoRoot.startsWith('/');
|
|
243
|
-
if (workspaceApiUrl) {
|
|
244
|
-
fsBackend = new HttpFsBackend({ runtimeUrl: workspaceApiUrl, authToken: process.env['WORKSPACE_AUTH_TOKEN'] });
|
|
245
|
-
logger.debug('fs_backend_http', { url: workspaceApiUrl });
|
|
246
|
-
}
|
|
247
|
-
else if (isRealPath) {
|
|
248
|
-
fsBackend = new LocalFsBackend({ repoRoot: fsRepoRoot });
|
|
249
|
-
logger.debug('fs_backend_local', { repoRoot: fsRepoRoot });
|
|
250
|
-
}
|
|
251
|
-
// -------------------------------------------------------------------------
|
|
252
418
|
// 5. Register custom tools
|
|
253
419
|
// -------------------------------------------------------------------------
|
|
420
|
+
// repoRoot is needed both for custom tools (so handlers can read repo
|
|
421
|
+
// files via ctx.fs, Phase A) and the file-tools / admin-tools registration
|
|
422
|
+
// further down. Compute it once here.
|
|
423
|
+
const repoRoot = process.env['REPO_PATH'] ?? bundle.origin;
|
|
254
424
|
if (toolExecutor) {
|
|
255
|
-
const customToolSessionCtx = buildCustomToolSessionContext(bundle, connectionsMap, scopedBackend, appId,
|
|
425
|
+
const customToolSessionCtx = buildCustomToolSessionContext(bundle, connectionsMap, scopedBackend, appId, repoRoot);
|
|
256
426
|
for (const tool of bundle.tools) {
|
|
257
427
|
// Skip tools with confirm: 'never' — they exist but are not callable
|
|
258
428
|
if (tool.confirm === 'never')
|
|
@@ -279,6 +449,12 @@ export function buildSessionComponents(opts) {
|
|
|
279
449
|
// -------------------------------------------------------------------------
|
|
280
450
|
registry.register(DISPATCH_TOOL_NAME, createDispatchTool());
|
|
281
451
|
// -------------------------------------------------------------------------
|
|
452
|
+
// 10a-pre. Register ask_choice as a runtime built-in (Phase 0.6).
|
|
453
|
+
// Every agent gets it without declaring — templates and custom
|
|
454
|
+
// agents can prompt the user with structured options.
|
|
455
|
+
// -------------------------------------------------------------------------
|
|
456
|
+
registry.register(ASK_CHOICE_TOOL_NAME, createAskChoiceTool());
|
|
457
|
+
// -------------------------------------------------------------------------
|
|
282
458
|
// 10a. Build search provider + register web tools (if webTools configured)
|
|
283
459
|
// -------------------------------------------------------------------------
|
|
284
460
|
let searchProvider;
|
|
@@ -326,13 +502,7 @@ export function buildSessionComponents(opts) {
|
|
|
326
502
|
// -------------------------------------------------------------------------
|
|
327
503
|
const fileToolsConfig = bundle.config.fileTools;
|
|
328
504
|
const fileToolsEnabled = fileToolsConfig === true || (typeof fileToolsConfig === 'object' && fileToolsConfig !== null);
|
|
329
|
-
|
|
330
|
-
if (fileToolsEnabled && workspaceApiUrl && fsBackend) {
|
|
331
|
-
// Cloud mode: file tools call the remote runtime's workspace API
|
|
332
|
-
registerHttpFileTools(registry, { fs: fsBackend, logger });
|
|
333
|
-
logger.debug('file_tools_registered', { mode: 'http', url: workspaceApiUrl });
|
|
334
|
-
}
|
|
335
|
-
else if (fileToolsEnabled && repoRoot) {
|
|
505
|
+
if (fileToolsEnabled && repoRoot) {
|
|
336
506
|
const customConfig = typeof fileToolsConfig === 'object' ? fileToolsConfig : {};
|
|
337
507
|
registerFileTools(registry, {
|
|
338
508
|
repoRoot,
|
|
@@ -341,21 +511,18 @@ export function buildSessionComponents(opts) {
|
|
|
341
511
|
studioUrl: process.env['STUDIO_URL'],
|
|
342
512
|
logger,
|
|
343
513
|
});
|
|
344
|
-
logger.debug('file_tools_registered', {
|
|
514
|
+
logger.debug('file_tools_registered', { repoRoot });
|
|
345
515
|
}
|
|
346
516
|
else if (fileToolsConfig) {
|
|
347
517
|
logger.debug('file_tools_not_registered', { reason: 'no_repo_root' });
|
|
348
518
|
}
|
|
349
519
|
// -------------------------------------------------------------------------
|
|
350
|
-
//
|
|
520
|
+
// 10d. Register admin onboarding tools when this is an admin session
|
|
521
|
+
// (show_preview, ask_choice, search_packages, install_package, write_skill)
|
|
351
522
|
// -------------------------------------------------------------------------
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
registerCollectSecretTool(registry);
|
|
356
|
-
if (userRepoPath) {
|
|
357
|
-
registerAgentConfigTool(registry, userRepoPath);
|
|
358
|
-
}
|
|
523
|
+
if (sessionType === 'admin' && repoRoot) {
|
|
524
|
+
registerAdminTools(registry, { repoRoot, logger });
|
|
525
|
+
logger.debug('admin_tools_registered', { repoRoot });
|
|
359
526
|
}
|
|
360
527
|
// -------------------------------------------------------------------------
|
|
361
528
|
// 11. Build permission checker (session-level)
|
|
@@ -448,6 +615,7 @@ export function buildSessionComponents(opts) {
|
|
|
448
615
|
permissionChecker: sessionPermissionChecker,
|
|
449
616
|
systemPrompt: compiled.systemPrompt,
|
|
450
617
|
toolContextFactory,
|
|
618
|
+
intents,
|
|
451
619
|
};
|
|
452
620
|
}
|
|
453
621
|
// ---------------------------------------------------------------------------
|