@amodalai/runtime 0.3.49 → 0.3.50

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 (161) hide show
  1. package/dist/src/agent/completion-tools.integration.test.d.ts +6 -0
  2. package/dist/src/agent/completion-tools.integration.test.js +263 -0
  3. package/dist/src/agent/completion-tools.integration.test.js.map +1 -0
  4. package/dist/src/agent/load-template-plan.integration.test.d.ts +6 -0
  5. package/dist/src/agent/load-template-plan.integration.test.js +152 -0
  6. package/dist/src/agent/load-template-plan.integration.test.js.map +1 -0
  7. package/dist/src/agent/local-server.js +64 -9
  8. package/dist/src/agent/local-server.js.map +1 -1
  9. package/dist/src/agent/loop-types.d.ts +12 -2
  10. package/dist/src/agent/loop.test.js +5 -2
  11. package/dist/src/agent/loop.test.js.map +1 -1
  12. package/dist/src/agent/propose-plan.integration.test.d.ts +6 -0
  13. package/dist/src/agent/propose-plan.integration.test.js +186 -0
  14. package/dist/src/agent/propose-plan.integration.test.js.map +1 -0
  15. package/dist/src/agent/routes/package-updates.d.ts +42 -0
  16. package/dist/src/agent/routes/package-updates.js +207 -0
  17. package/dist/src/agent/routes/package-updates.js.map +1 -0
  18. package/dist/src/agent/routes/package-updates.test.d.ts +6 -0
  19. package/dist/src/agent/routes/package-updates.test.js +25 -0
  20. package/dist/src/agent/routes/package-updates.test.js.map +1 -0
  21. package/dist/src/agent/setup-state.integration.test.d.ts +6 -0
  22. package/dist/src/agent/setup-state.integration.test.js +182 -0
  23. package/dist/src/agent/setup-state.integration.test.js.map +1 -0
  24. package/dist/src/agent/snapshot-server.js +1 -0
  25. package/dist/src/agent/snapshot-server.js.map +1 -1
  26. package/dist/src/agent/states/executing.d.ts +6 -0
  27. package/dist/src/agent/states/executing.js +63 -27
  28. package/dist/src/agent/states/executing.js.map +1 -1
  29. package/dist/src/agent/states/streaming.js +18 -2
  30. package/dist/src/agent/states/streaming.js.map +1 -1
  31. package/dist/src/agent/tool-executor-local.js +11 -2
  32. package/dist/src/agent/tool-executor-local.js.map +1 -1
  33. package/dist/src/agent/validate-connection.integration.test.d.ts +6 -0
  34. package/dist/src/agent/validate-connection.integration.test.js +160 -0
  35. package/dist/src/agent/validate-connection.integration.test.js.map +1 -0
  36. package/dist/src/api/create-agent.js +1 -0
  37. package/dist/src/api/create-agent.js.map +1 -1
  38. package/dist/src/index.d.ts +2 -0
  39. package/dist/src/index.js +9 -0
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/intent/executor.d.ts +48 -0
  42. package/dist/src/intent/executor.js +420 -0
  43. package/dist/src/intent/executor.js.map +1 -0
  44. package/dist/src/intent/executor.test.d.ts +6 -0
  45. package/dist/src/intent/executor.test.js +543 -0
  46. package/dist/src/intent/executor.test.js.map +1 -0
  47. package/dist/src/intent/index.d.ts +10 -0
  48. package/dist/src/intent/index.js +9 -0
  49. package/dist/src/intent/index.js.map +1 -0
  50. package/dist/src/intent/loader.d.ts +16 -0
  51. package/dist/src/intent/loader.js +112 -0
  52. package/dist/src/intent/loader.js.map +1 -0
  53. package/dist/src/intent/loader.test.d.ts +6 -0
  54. package/dist/src/intent/loader.test.js +86 -0
  55. package/dist/src/intent/loader.test.js.map +1 -0
  56. package/dist/src/intent/matcher.d.ts +26 -0
  57. package/dist/src/intent/matcher.js +29 -0
  58. package/dist/src/intent/matcher.js.map +1 -0
  59. package/dist/src/intent/matcher.test.d.ts +6 -0
  60. package/dist/src/intent/matcher.test.js +53 -0
  61. package/dist/src/intent/matcher.test.js.map +1 -0
  62. package/dist/src/intent/onboarding.e2e.test.d.ts +6 -0
  63. package/dist/src/intent/onboarding.e2e.test.js +394 -0
  64. package/dist/src/intent/onboarding.e2e.test.js.map +1 -0
  65. package/dist/src/routes/ai-stream.js +96 -3
  66. package/dist/src/routes/ai-stream.js.map +1 -1
  67. package/dist/src/routes/session-resolver.js +16 -0
  68. package/dist/src/routes/session-resolver.js.map +1 -1
  69. package/dist/src/session/credential-scrubber.d.ts +35 -0
  70. package/dist/src/session/credential-scrubber.js +150 -0
  71. package/dist/src/session/credential-scrubber.js.map +1 -0
  72. package/dist/src/session/credential-scrubber.test.d.ts +6 -0
  73. package/dist/src/session/credential-scrubber.test.js +192 -0
  74. package/dist/src/session/credential-scrubber.test.js.map +1 -0
  75. package/dist/src/session/manager.intent.test.d.ts +6 -0
  76. package/dist/src/session/manager.intent.test.js +197 -0
  77. package/dist/src/session/manager.intent.test.js.map +1 -0
  78. package/dist/src/session/manager.js +114 -0
  79. package/dist/src/session/manager.js.map +1 -1
  80. package/dist/src/session/session-builder.d.ts +16 -1
  81. package/dist/src/session/session-builder.js +209 -41
  82. package/dist/src/session/session-builder.js.map +1 -1
  83. package/dist/src/session/store.js +48 -2
  84. package/dist/src/session/store.js.map +1 -1
  85. package/dist/src/session/tool-context-factory.js +12 -0
  86. package/dist/src/session/tool-context-factory.js.map +1 -1
  87. package/dist/src/session/types.d.ts +12 -1
  88. package/dist/src/setup/commit-setup.d.ts +94 -0
  89. package/dist/src/setup/commit-setup.js +154 -0
  90. package/dist/src/setup/commit-setup.js.map +1 -0
  91. package/dist/src/setup/commit-setup.test.d.ts +6 -0
  92. package/dist/src/setup/commit-setup.test.js +310 -0
  93. package/dist/src/setup/commit-setup.test.js.map +1 -0
  94. package/dist/src/tools/README.md +270 -0
  95. package/dist/src/tools/admin-tools.d.ts +27 -0
  96. package/dist/src/tools/admin-tools.js +734 -0
  97. package/dist/src/tools/admin-tools.js.map +1 -0
  98. package/dist/src/tools/agent-package-discovery.test.d.ts +6 -0
  99. package/dist/src/tools/agent-package-discovery.test.js +90 -0
  100. package/dist/src/tools/agent-package-discovery.test.js.map +1 -0
  101. package/dist/src/tools/builtin/ask-choice.d.ts +8 -0
  102. package/dist/src/tools/builtin/ask-choice.js +54 -0
  103. package/dist/src/tools/builtin/ask-choice.js.map +1 -0
  104. package/dist/src/tools/context.d.ts +154 -0
  105. package/dist/src/tools/context.js +30 -0
  106. package/dist/src/tools/context.js.map +1 -0
  107. package/dist/src/tools/custom-tool-adapter.d.ts +33 -2
  108. package/dist/src/tools/custom-tool-adapter.js +38 -1
  109. package/dist/src/tools/custom-tool-adapter.js.map +1 -1
  110. package/dist/src/tools/custom-tool-adapter.test.js +48 -0
  111. package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
  112. package/dist/src/tools/fetch-url-tool.js +2 -0
  113. package/dist/src/tools/fetch-url-tool.js.map +1 -1
  114. package/dist/src/tools/file-tools.js +16 -0
  115. package/dist/src/tools/file-tools.js.map +1 -1
  116. package/dist/src/tools/fs/local.test.d.ts +6 -0
  117. package/dist/src/tools/fs/local.test.js +126 -0
  118. package/dist/src/tools/fs/local.test.js.map +1 -0
  119. package/dist/src/tools/index.d.ts +35 -0
  120. package/dist/src/tools/index.js +11 -0
  121. package/dist/src/tools/index.js.map +1 -0
  122. package/dist/src/tools/mcp-tool-adapter.js +2 -0
  123. package/dist/src/tools/mcp-tool-adapter.js.map +1 -1
  124. package/dist/src/tools/memory-tool.js +23 -1
  125. package/dist/src/tools/memory-tool.js.map +1 -1
  126. package/dist/src/tools/permissions.d.ts +36 -0
  127. package/dist/src/tools/permissions.js +97 -0
  128. package/dist/src/tools/permissions.js.map +1 -0
  129. package/dist/src/tools/permissions.test.d.ts +6 -0
  130. package/dist/src/tools/permissions.test.js +62 -0
  131. package/dist/src/tools/permissions.test.js.map +1 -0
  132. package/dist/src/tools/request-tool.js +2 -0
  133. package/dist/src/tools/request-tool.js.map +1 -1
  134. package/dist/src/tools/sdk-context.d.ts +43 -0
  135. package/dist/src/tools/sdk-context.js +94 -0
  136. package/dist/src/tools/sdk-context.js.map +1 -0
  137. package/dist/src/tools/sdk-context.test.d.ts +6 -0
  138. package/dist/src/tools/sdk-context.test.js +134 -0
  139. package/dist/src/tools/sdk-context.test.js.map +1 -0
  140. package/dist/src/tools/store-tools.js +6 -0
  141. package/dist/src/tools/store-tools.js.map +1 -1
  142. package/dist/src/tools/types.d.ts +53 -14
  143. package/dist/src/tools/web-search-tool.js +2 -0
  144. package/dist/src/tools/web-search-tool.js.map +1 -1
  145. package/dist/src/types.d.ts +164 -28
  146. package/dist/src/types.js +9 -3
  147. package/dist/src/types.js.map +1 -1
  148. package/dist/tsconfig.tsbuildinfo +1 -1
  149. package/package.json +16 -4
  150. package/dist/src/tools/agent-config-tool.d.ts +0 -7
  151. package/dist/src/tools/agent-config-tool.js +0 -78
  152. package/dist/src/tools/agent-config-tool.js.map +0 -1
  153. package/dist/src/tools/collect-secret-tool.d.ts +0 -7
  154. package/dist/src/tools/collect-secret-tool.js +0 -47
  155. package/dist/src/tools/collect-secret-tool.js.map +0 -1
  156. package/dist/src/tools/fs/http.d.ts +0 -37
  157. package/dist/src/tools/fs/http.js +0 -88
  158. package/dist/src/tools/fs/http.js.map +0 -1
  159. package/dist/src/tools/http-file-tools.d.ts +0 -13
  160. package/dist/src/tools/http-file-tools.js +0 -146
  161. 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 { HttpFsBackend } from '../tools/fs/http.js';
26
- import { registerHttpFileTools } from '../tools/http-file-tools.js';
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 { registerCollectSecretTool } from '../tools/collect-secret-tool.js';
41
- import { registerAgentConfigTool } from '../tools/agent-config-tool.js';
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, fs) {
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
- ...(fs ? { fs } : {}),
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, fsBackend);
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
- const repoRoot = process.env['REPO_PATH'] ?? bundle.origin;
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', { mode: 'local', repoRoot });
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
- // 10b. Admin agent tools
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
- const isAdminAgent = process.env['AMODAL_NO_ADMIN'] === '1';
353
- const userRepoPath = process.env['REPO_PATH'];
354
- if (isAdminAgent) {
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
  // ---------------------------------------------------------------------------