@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tools.js","sourceRoot":"","sources":["../../../src/tools/admin-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Integration test for Phase 0.3 — confirms the existing tool-loader
|
|
8
|
+
* (`@amodalai/core/repo/tool-loader.ts`) walks an agent package's
|
|
9
|
+
* `tools/<name>/{tool.json, handler.ts}` layout and that the new
|
|
10
|
+
* permission loader (`@amodalai/runtime/tools/permissions.ts`) reads
|
|
11
|
+
* the same package's `package.json#amodal.permissions` declaration.
|
|
12
|
+
*
|
|
13
|
+
* The build plan calls for "auto-discovery from `<agentPackage>/tools/*\/`"
|
|
14
|
+
* — same path the runtime already uses for user-authored custom tools.
|
|
15
|
+
* This test pins that contract so future refactors can't silently drop
|
|
16
|
+
* agent-package support.
|
|
17
|
+
*/
|
|
18
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
19
|
+
import { tmpdir } from 'node:os';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
22
|
+
import { loadTools } from '@amodalai/core';
|
|
23
|
+
import { loadPackagePermissions } from './permissions.js';
|
|
24
|
+
describe('agent-package tool auto-discovery (Phase 0.3 contract)', () => {
|
|
25
|
+
let pkgDir;
|
|
26
|
+
beforeEach(async () => {
|
|
27
|
+
pkgDir = await mkdtemp(path.join(tmpdir(), 'agent-pkg-'));
|
|
28
|
+
});
|
|
29
|
+
afterEach(async () => {
|
|
30
|
+
await rm(pkgDir, { recursive: true, force: true });
|
|
31
|
+
});
|
|
32
|
+
it('discovers tools under <pkgDir>/tools/<name>/ and reads declared permissions from package.json#amodal.permissions', async () => {
|
|
33
|
+
// Lay out an agent package the way agent-admin / connection-* / template-* do.
|
|
34
|
+
await writeFile(path.join(pkgDir, 'package.json'), JSON.stringify({
|
|
35
|
+
name: '@amodalai/agent-admin',
|
|
36
|
+
amodal: {
|
|
37
|
+
permissions: ['fs.read', 'fs.write', 'db.read', 'db.write'],
|
|
38
|
+
},
|
|
39
|
+
}), 'utf-8');
|
|
40
|
+
const toolDir = path.join(pkgDir, 'tools', 'show_preview');
|
|
41
|
+
await mkdir(toolDir, { recursive: true });
|
|
42
|
+
await writeFile(path.join(toolDir, 'tool.json'), JSON.stringify({
|
|
43
|
+
description: 'Show an agent card preview inline in chat.',
|
|
44
|
+
parameters: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: { title: { type: 'string' } },
|
|
47
|
+
required: ['title'],
|
|
48
|
+
},
|
|
49
|
+
}), 'utf-8');
|
|
50
|
+
await writeFile(path.join(toolDir, 'handler.ts'),
|
|
51
|
+
// No imports — just the bare shape that the runtime's tool executor
|
|
52
|
+
// dynamically loads. Phase 0 doesn't compile/execute it; the
|
|
53
|
+
// discovery test only cares that the loader sees the file.
|
|
54
|
+
'export default async () => ({ ok: true });\n', 'utf-8');
|
|
55
|
+
const [tools, permissions] = await Promise.all([
|
|
56
|
+
loadTools(pkgDir),
|
|
57
|
+
loadPackagePermissions(pkgDir),
|
|
58
|
+
]);
|
|
59
|
+
expect(tools).toHaveLength(1);
|
|
60
|
+
expect(tools[0]).toMatchObject({
|
|
61
|
+
name: 'show_preview',
|
|
62
|
+
description: 'Show an agent card preview inline in chat.',
|
|
63
|
+
handlerPath: path.join(toolDir, 'handler.ts'),
|
|
64
|
+
});
|
|
65
|
+
expect(permissions).toEqual({
|
|
66
|
+
packageName: '@amodalai/agent-admin',
|
|
67
|
+
permissions: ['fs.read', 'fs.write', 'db.read', 'db.write'],
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it('returns empty permissions when an agent package omits the amodal.permissions block (default-deny)', async () => {
|
|
71
|
+
await writeFile(path.join(pkgDir, 'package.json'), JSON.stringify({ name: '@amodalai/some-template' }), 'utf-8');
|
|
72
|
+
// Tool dir present but no permissions declared.
|
|
73
|
+
const toolDir = path.join(pkgDir, 'tools', 'noop');
|
|
74
|
+
await mkdir(toolDir, { recursive: true });
|
|
75
|
+
await writeFile(path.join(toolDir, 'tool.json'), JSON.stringify({ description: 'Does nothing.' }), 'utf-8');
|
|
76
|
+
await writeFile(path.join(toolDir, 'handler.ts'), 'export default async () => ({});\n', 'utf-8');
|
|
77
|
+
const [tools, permissions] = await Promise.all([
|
|
78
|
+
loadTools(pkgDir),
|
|
79
|
+
loadPackagePermissions(pkgDir),
|
|
80
|
+
]);
|
|
81
|
+
expect(tools).toHaveLength(1);
|
|
82
|
+
expect(permissions.permissions).toEqual([]);
|
|
83
|
+
});
|
|
84
|
+
it('returns empty arrays for a directory without tools/', async () => {
|
|
85
|
+
await writeFile(path.join(pkgDir, 'package.json'), JSON.stringify({ name: '@amodalai/empty' }), 'utf-8');
|
|
86
|
+
const tools = await loadTools(pkgDir);
|
|
87
|
+
expect(tools).toEqual([]);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=agent-package-discovery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-package-discovery.test.js","sourceRoot":"","sources":["../../../src/tools/agent-package-discovery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolDefinition } from '../types.js';
|
|
7
|
+
export declare const ASK_CHOICE_TOOL_NAME = "ask_choice";
|
|
8
|
+
export declare function createAskChoiceTool(): ToolDefinition;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* `ask_choice` — runtime built-in tool that emits a single- or
|
|
8
|
+
* multi-select question rendered inline in chat as a row of buttons.
|
|
9
|
+
*
|
|
10
|
+
* Promoted from `registerAdminTools` to a runtime built-in (Phase 0.6)
|
|
11
|
+
* so every agent gets it automatically without needing to declare a
|
|
12
|
+
* custom tool. Templates and custom agents can use the same primitive
|
|
13
|
+
* to ask the user a structured question with concrete options — no
|
|
14
|
+
* need to reinvent button-based prompts per agent package.
|
|
15
|
+
*
|
|
16
|
+
* The tool emits the existing `ask_choice` SSE event so the chat
|
|
17
|
+
* widget's existing renderer keeps working unchanged.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
import { SSEEventType } from '../../types.js';
|
|
21
|
+
export const ASK_CHOICE_TOOL_NAME = 'ask_choice';
|
|
22
|
+
export function createAskChoiceTool() {
|
|
23
|
+
return {
|
|
24
|
+
description: "Ask the user a single- or multi-select question with predefined options. Renders inline as buttons; the user's choice arrives as their next message.",
|
|
25
|
+
parameters: z.object({
|
|
26
|
+
question: z.string().describe('Short question shown above the buttons'),
|
|
27
|
+
options: z
|
|
28
|
+
.array(z.object({ label: z.string(), value: z.string() }))
|
|
29
|
+
.min(2)
|
|
30
|
+
.describe('Choice options. `label` is shown on the button; `value` is what the user "says".'),
|
|
31
|
+
multi: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.default(false)
|
|
34
|
+
.describe('When true, the user can pick more than one option before submitting'),
|
|
35
|
+
}),
|
|
36
|
+
readOnly: true,
|
|
37
|
+
metadata: { category: 'system' },
|
|
38
|
+
runningLabel: 'Asking',
|
|
39
|
+
completedLabel: 'Asked',
|
|
40
|
+
async execute(params, ctx) {
|
|
41
|
+
const askId = `choice_${ctx.sessionId}_${Date.now().toString(36)}`;
|
|
42
|
+
ctx.emit?.({
|
|
43
|
+
type: SSEEventType.AskChoice,
|
|
44
|
+
ask_id: askId,
|
|
45
|
+
question: params.question,
|
|
46
|
+
options: params.options,
|
|
47
|
+
multi: params.multi,
|
|
48
|
+
timestamp: new Date().toISOString(),
|
|
49
|
+
});
|
|
50
|
+
return { ok: true, ask_id: askId };
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ask-choice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-choice.js","sourceRoot":"","sources":["../../../../src/tools/builtin/ask-choice.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,WAAW,EACT,sJAAsJ;QACxJ,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACvE,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;iBACvD,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,kFAAkF,CACnF;YACH,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,qEAAqE,CAAC;SACnF,CAAC;QACF,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;QAC9B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,OAAO;QAEvB,KAAK,CAAC,OAAO,CACX,MAA0F,EAC1F,GAAgB;YAEhB,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,IAAI,EAAE,CAAC;gBACT,IAAI,EAAE,YAAY,CAAC,SAAS;gBAC5B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YACH,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Custom-tool SDK — `ToolContext` and supporting types.
|
|
8
|
+
*
|
|
9
|
+
* This is the public surface custom tool handlers in agent packages
|
|
10
|
+
* (`agent-admin`, `connection-*`, `template-*`) program against. It sits
|
|
11
|
+
* alongside (and is structurally a superset of) the legacy
|
|
12
|
+
* `CustomToolContext` from `@amodalai/types`: existing v0 tools keep
|
|
13
|
+
* working through that interface, while new tools opt into the richer
|
|
14
|
+
* shape here.
|
|
15
|
+
*
|
|
16
|
+
* Authoring contract:
|
|
17
|
+
* - Tools live at `<agentPackage>/tools/<name>/{tool.json, handler.ts}`.
|
|
18
|
+
* - The runtime auto-discovers them on agent load (Phase 0.3).
|
|
19
|
+
* - The package's `package.json#amodal.permissions` declares which
|
|
20
|
+
* `ctx.*` capabilities the handlers may use; the runtime throws
|
|
21
|
+
* `PermissionError` at the boundary if a handler reaches for a
|
|
22
|
+
* capability the package didn't declare (Phase 0.4 + 0.5).
|
|
23
|
+
*
|
|
24
|
+
* Deliberate omission: there is no `ctx.saveSecret`. Credentials enter
|
|
25
|
+
* the system through the Configure modal (`POST /api/secrets/:name`)
|
|
26
|
+
* or the OAuth callback — never through tool args, never through chat
|
|
27
|
+
* history, never through the LLM's reasoning. Phase 0 closes that
|
|
28
|
+
* surface; future phases must keep it closed.
|
|
29
|
+
*/
|
|
30
|
+
import type { Block } from '@amodalai/types';
|
|
31
|
+
import type { FsBackend } from './fs/index.js';
|
|
32
|
+
/**
|
|
33
|
+
* Permissions a tool's package can declare in
|
|
34
|
+
* `package.json#amodal.permissions` to opt into capability tiers.
|
|
35
|
+
*
|
|
36
|
+
* Default-deny: a handler that reaches for `ctx.fs.writeRepoFile` from a
|
|
37
|
+
* package that didn't declare `fs.write` throws `PermissionError`.
|
|
38
|
+
*
|
|
39
|
+
* Note the absence of a `secrets.*` tier — secrets are not reachable
|
|
40
|
+
* through any tool. That is the core security invariant of the SDK.
|
|
41
|
+
*/
|
|
42
|
+
export type ToolPermission = 'fs.read' | 'fs.write' | 'db.read' | 'db.write' | 'net.fetch';
|
|
43
|
+
/**
|
|
44
|
+
* Structured event a tool emits to the chat surface. The widget routes
|
|
45
|
+
* each variant to the right rendering path:
|
|
46
|
+
* - `text` is appended as agent prose alongside the LLM's stream.
|
|
47
|
+
* - `block` is dispatched into the message list and rendered by the
|
|
48
|
+
* widget's built-in renderers (or by Studio's `inlineBlockRenderers`
|
|
49
|
+
* for Studio-owned types like `connection_panel`).
|
|
50
|
+
* - `error` surfaces an inline error notice and is logged server-side.
|
|
51
|
+
*/
|
|
52
|
+
export type EmitEvent = {
|
|
53
|
+
type: 'text';
|
|
54
|
+
text: string;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'block';
|
|
57
|
+
block: Block;
|
|
58
|
+
} | {
|
|
59
|
+
type: 'error';
|
|
60
|
+
message: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Minimal Drizzle-shaped query interface exposed via `ctx.db`. Kept
|
|
64
|
+
* intentionally narrow — handlers should use the per-domain query
|
|
65
|
+
* modules in `@amodalai/db/queries/<domain>.ts` (Midday pattern), which
|
|
66
|
+
* accept a `db` first arg and return typed results.
|
|
67
|
+
*
|
|
68
|
+
* `ctx.db` is scoped to the agent's session: the runtime injects the
|
|
69
|
+
* connection bound to the current agent + scope.
|
|
70
|
+
*/
|
|
71
|
+
export interface ToolDbHandle {
|
|
72
|
+
/**
|
|
73
|
+
* Execute a parameterized query and return raw rows. Prefer the
|
|
74
|
+
* per-domain query modules over raw SQL; this is here for cases where
|
|
75
|
+
* a tool genuinely needs to compose its own statement.
|
|
76
|
+
*/
|
|
77
|
+
execute<T = unknown>(query: {
|
|
78
|
+
sql: string;
|
|
79
|
+
params?: unknown[];
|
|
80
|
+
}): Promise<T[]>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The context object passed as the second argument to every custom-tool
|
|
84
|
+
* handler. The first argument is the validated `params` object; the
|
|
85
|
+
* runtime parses `tool.json#parameters` and rejects malformed calls
|
|
86
|
+
* before reaching `execute`.
|
|
87
|
+
*
|
|
88
|
+
* **What the runtime guarantees:**
|
|
89
|
+
* - `signal` is aborted on cancellation, timeout, or session end.
|
|
90
|
+
* - `agentId` and `scopeId` reflect the live session, not stale state.
|
|
91
|
+
* - `fs`, `db`, and `fetch` throw `PermissionError` when the package
|
|
92
|
+
* didn't declare the matching capability.
|
|
93
|
+
* - `emit` may be called any number of times per invocation — events
|
|
94
|
+
* are streamed in the order they're emitted.
|
|
95
|
+
*/
|
|
96
|
+
export interface ToolContext {
|
|
97
|
+
/** The agent this tool is running on behalf of. */
|
|
98
|
+
agentId: string;
|
|
99
|
+
/** Per-user session isolation key. Empty string = agent-level (no scope). */
|
|
100
|
+
scopeId: string;
|
|
101
|
+
/** Scope context key-value pairs associated with this scope, if any. */
|
|
102
|
+
scopeContext?: Record<string, string>;
|
|
103
|
+
/** Session id for log correlation. */
|
|
104
|
+
sessionId: string;
|
|
105
|
+
/**
|
|
106
|
+
* Emit a structured event. The chat surface routes the event to the
|
|
107
|
+
* right renderer (text into the agent prose stream, blocks into the
|
|
108
|
+
* inline-block list, errors into the error notice line).
|
|
109
|
+
*
|
|
110
|
+
* Tools that don't produce inline UI never call `emit`.
|
|
111
|
+
*/
|
|
112
|
+
emit(event: EmitEvent): void;
|
|
113
|
+
/** Append a single text fragment — sugar for `emit({type:'text', text})`. */
|
|
114
|
+
log(message: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Repo-relative file access. Requires `fs.read` / `fs.write` in
|
|
117
|
+
* `package.json#amodal.permissions`. Sandboxed to the agent's repo
|
|
118
|
+
* root — paths that escape the sandbox throw `FsSandboxError`.
|
|
119
|
+
*/
|
|
120
|
+
fs: FsBackend;
|
|
121
|
+
/**
|
|
122
|
+
* Drizzle handle scoped to the agent's session. Requires `db.read` /
|
|
123
|
+
* `db.write` in `package.json#amodal.permissions`.
|
|
124
|
+
*/
|
|
125
|
+
db: ToolDbHandle;
|
|
126
|
+
/**
|
|
127
|
+
* HTTP fetch. Requires `net.fetch` in `package.json#amodal.permissions`.
|
|
128
|
+
* The signature mirrors `globalThis.fetch`. The runtime injects
|
|
129
|
+
* `ctx.signal` automatically when the caller doesn't pass one, so
|
|
130
|
+
* outbound requests are cancelled with the tool invocation.
|
|
131
|
+
*/
|
|
132
|
+
fetch(input: string | URL, init?: RequestInit): Promise<Response>;
|
|
133
|
+
/**
|
|
134
|
+
* Aborted on tool timeout, session cancellation, or runtime shutdown.
|
|
135
|
+
* Tools that perform their own awaits (sleep, polling) should listen
|
|
136
|
+
* to this rather than spinning past it.
|
|
137
|
+
*/
|
|
138
|
+
signal: AbortSignal;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Thrown when a tool reaches for a capability its package didn't
|
|
142
|
+
* declare in `package.json#amodal.permissions`. The message names both
|
|
143
|
+
* the offending tool and the missing permission so the author can fix
|
|
144
|
+
* the manifest in one place.
|
|
145
|
+
*/
|
|
146
|
+
export declare class PermissionError extends Error {
|
|
147
|
+
/** Tool that triggered the check. */
|
|
148
|
+
readonly toolName: string;
|
|
149
|
+
/** Permission that was missing. */
|
|
150
|
+
readonly permission: ToolPermission;
|
|
151
|
+
/** npm package name that owns the tool. */
|
|
152
|
+
readonly packageName: string;
|
|
153
|
+
constructor(toolName: string, permission: ToolPermission, packageName: string);
|
|
154
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Thrown when a tool reaches for a capability its package didn't
|
|
8
|
+
* declare in `package.json#amodal.permissions`. The message names both
|
|
9
|
+
* the offending tool and the missing permission so the author can fix
|
|
10
|
+
* the manifest in one place.
|
|
11
|
+
*/
|
|
12
|
+
export class PermissionError extends Error {
|
|
13
|
+
/** Tool that triggered the check. */
|
|
14
|
+
toolName;
|
|
15
|
+
/** Permission that was missing. */
|
|
16
|
+
permission;
|
|
17
|
+
/** npm package name that owns the tool. */
|
|
18
|
+
packageName;
|
|
19
|
+
constructor(toolName, permission, packageName) {
|
|
20
|
+
super(`Tool "${toolName}" tried to use capability "${permission}" but ` +
|
|
21
|
+
`package "${packageName}" did not declare it in ` +
|
|
22
|
+
`package.json#amodal.permissions. Add "${permission}" to the ` +
|
|
23
|
+
`permissions array to grant access.`);
|
|
24
|
+
this.name = 'PermissionError';
|
|
25
|
+
this.toolName = toolName;
|
|
26
|
+
this.permission = permission;
|
|
27
|
+
this.packageName = packageName;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/tools/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmKH;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,qCAAqC;IAC5B,QAAQ,CAAS;IAC1B,mCAAmC;IAC1B,UAAU,CAAiB;IACpC,2CAA2C;IAClC,WAAW,CAAS;IAE7B,YACE,QAAgB,EAChB,UAA0B,EAC1B,WAAmB;QAEnB,KAAK,CACH,SAAS,QAAQ,8BAA8B,UAAU,QAAQ;YAC/D,YAAY,WAAW,0BAA0B;YACjD,yCAAyC,UAAU,WAAW;YAC9D,oCAAoC,CACvC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2026 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { CustomToolCompletionOps, CustomToolExecutor, CustomToolPlanOps, CustomToolSetupStateOps, FsBackend, LoadedTool } from '@amodalai/types';
|
|
7
7
|
import type { ToolDefinition } from './types.js';
|
|
8
8
|
export interface CustomToolSessionContext {
|
|
9
9
|
config: {
|
|
@@ -30,7 +30,38 @@ export interface CustomToolSessionContext {
|
|
|
30
30
|
exitCode: number;
|
|
31
31
|
}>;
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Sandboxed fs backend the runtime exposes to handlers via `ctx.fs`.
|
|
35
|
+
* Phase A's `validate_connection` is the first heavy consumer (reads
|
|
36
|
+
* `node_modules/<pkg>/validate.ts` for connection probes); future
|
|
37
|
+
* tools follow the same pattern. Undefined when no `repoRoot` is
|
|
38
|
+
* resolvable for the session.
|
|
39
|
+
*/
|
|
40
|
+
fs?: FsBackend;
|
|
41
|
+
/** Repo root the fs backend is sandboxed against, for path computations. */
|
|
42
|
+
repoRoot?: string;
|
|
43
|
+
/** Stable id of the agent the tool is running on behalf of. */
|
|
44
|
+
agentId?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Factory that produces a `CustomToolSetupStateOps` bound to the
|
|
47
|
+
* active scope (Phase B). The session ctx caller passes a function
|
|
48
|
+
* rather than the ops directly because `scopeId` is per-runtime-call,
|
|
49
|
+
* not per-session — the adapter calls this with the live runtime
|
|
50
|
+
* scope when building each handler ctx.
|
|
51
|
+
*/
|
|
52
|
+
setupStateFactory?: (scopeId: string) => CustomToolSetupStateOps;
|
|
53
|
+
/**
|
|
54
|
+
* Plan composer ops (Phase C). The session ctx provides this when
|
|
55
|
+
* a `repoPath` is available; the handler calls `ctx.plan.compose`
|
|
56
|
+
* with the template package name and gets back a typed SetupPlan.
|
|
57
|
+
*/
|
|
58
|
+
plan?: CustomToolPlanOps;
|
|
59
|
+
/**
|
|
60
|
+
* Setup-completion ops factory (Phase E). The session ctx caller
|
|
61
|
+
* passes a function rather than the ops directly because `scopeId`
|
|
62
|
+
* varies per runtime call. Same shape as `setupStateFactory`.
|
|
63
|
+
*/
|
|
64
|
+
completionFactory?: (scopeId: string) => CustomToolCompletionOps;
|
|
34
65
|
}
|
|
35
66
|
/**
|
|
36
67
|
* Create a ToolDefinition from a LoadedTool.
|
|
@@ -132,8 +132,42 @@ function buildCustomToolContext(tool, sessionCtx, runtimeCtx) {
|
|
|
132
132
|
log(message) {
|
|
133
133
|
runtimeCtx.log(message);
|
|
134
134
|
},
|
|
135
|
+
emit(event) {
|
|
136
|
+
// Structural pass-through — the @amodalai/types CustomToolInlineEvent
|
|
137
|
+
// union and the runtime-internal ToolInlineEvent are structurally
|
|
138
|
+
// identical (same SSE event shapes) but live in two packages that
|
|
139
|
+
// each declare their own SSEEventType enum. Cast through unknown
|
|
140
|
+
// at the boundary; the legacy custom-tool surface keeps emitting
|
|
141
|
+
// exactly the same SSE wire shape it always did.
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- cross-package SSE type alignment
|
|
143
|
+
runtimeCtx.emit?.(event);
|
|
144
|
+
},
|
|
145
|
+
setLabel(labelOpts) {
|
|
146
|
+
runtimeCtx.setLabel?.(labelOpts);
|
|
147
|
+
},
|
|
135
148
|
signal: combinedSignal,
|
|
136
|
-
|
|
149
|
+
// Phase A: optional SDK fields populated when the runtime knows them.
|
|
150
|
+
// Handlers that don't reach for these (i.e. legacy custom tools) keep
|
|
151
|
+
// working unchanged because every field below is optional.
|
|
152
|
+
...(sessionCtx.fs ? { fs: sessionCtx.fs } : {}),
|
|
153
|
+
...(sessionCtx.agentId ? { agentId: sessionCtx.agentId } : {}),
|
|
154
|
+
// Phase B: setupState ops factory closes over the live scopeId so
|
|
155
|
+
// the handler doesn't need to plumb identity through every call.
|
|
156
|
+
...(sessionCtx.setupStateFactory
|
|
157
|
+
? { setupState: sessionCtx.setupStateFactory(runtimeCtx.scopeId) }
|
|
158
|
+
: {}),
|
|
159
|
+
// Phase C: plan composer ops. Bound to the agent's repoPath at
|
|
160
|
+
// session-build time; identity is repo-scoped, not scope-scoped,
|
|
161
|
+
// so the same ops object works for every handler in the session.
|
|
162
|
+
...(sessionCtx.plan ? { plan: sessionCtx.plan } : {}),
|
|
163
|
+
// Phase E: completion ops factory. Like setupStateFactory, the
|
|
164
|
+
// factory closes over (agentId, db, fs) and binds the live
|
|
165
|
+
// scopeId per call so concurrent scopes don't collide.
|
|
166
|
+
...(sessionCtx.completionFactory
|
|
167
|
+
? { completion: sessionCtx.completionFactory(runtimeCtx.scopeId) }
|
|
168
|
+
: {}),
|
|
169
|
+
scopeId: runtimeCtx.scopeId,
|
|
170
|
+
sessionId: runtimeCtx.sessionId,
|
|
137
171
|
};
|
|
138
172
|
}
|
|
139
173
|
// ---------------------------------------------------------------------------
|
|
@@ -157,6 +191,9 @@ export function createCustomToolDefinition(tool, executor, sessionCtx) {
|
|
|
157
191
|
metadata: {
|
|
158
192
|
category: 'custom',
|
|
159
193
|
},
|
|
194
|
+
...(tool.runningLabel ? { runningLabel: tool.runningLabel } : {}),
|
|
195
|
+
...(tool.completedLabel ? { completedLabel: tool.completedLabel } : {}),
|
|
196
|
+
...(tool.internal ? { internal: true } : {}),
|
|
160
197
|
async execute(params, ctx) {
|
|
161
198
|
const customCtx = buildCustomToolContext(tool, sessionCtx, ctx);
|
|
162
199
|
const validatedParams = typeof params === 'object' && params !== null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-tool-adapter.js","sourceRoot":"","sources":["../../../src/tools/custom-tool-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"custom-tool-adapter.js","sourceRoot":"","sources":["../../../src/tools/custom-tool-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -239,5 +239,53 @@ describe('createCustomToolDefinition', () => {
|
|
|
239
239
|
expect(envResult).toBeUndefined();
|
|
240
240
|
});
|
|
241
241
|
});
|
|
242
|
+
describe('SDK fields (Phase A)', () => {
|
|
243
|
+
it('populates ctx.fs / ctx.agentId / ctx.scopeId / ctx.sessionId from session ctx + runtime ctx', async () => {
|
|
244
|
+
let captured;
|
|
245
|
+
const executor = {
|
|
246
|
+
execute: vi.fn().mockImplementation(async (_tool, _params, ctx) => {
|
|
247
|
+
captured = ctx;
|
|
248
|
+
return { ok: true };
|
|
249
|
+
}),
|
|
250
|
+
};
|
|
251
|
+
const fakeFs = {
|
|
252
|
+
readRepoFile: vi.fn().mockResolvedValue('content'),
|
|
253
|
+
writeRepoFile: vi.fn(),
|
|
254
|
+
readManyRepoFiles: vi.fn(),
|
|
255
|
+
listRepoFiles: vi.fn(),
|
|
256
|
+
deleteRepoFile: vi.fn(),
|
|
257
|
+
};
|
|
258
|
+
const def = createCustomToolDefinition(makeTool(), executor, makeSessionCtx({ fs: fakeFs, agentId: 'agent_1', repoRoot: '/tmp/repo' }));
|
|
259
|
+
await def.execute({}, makeToolContext({ scopeId: 'scope_a', sessionId: 'sess_42' }));
|
|
260
|
+
expect(captured?.fs).toBe(fakeFs);
|
|
261
|
+
expect(captured?.agentId).toBe('agent_1');
|
|
262
|
+
expect(captured?.scopeId).toBe('scope_a');
|
|
263
|
+
expect(captured?.sessionId).toBe('sess_42');
|
|
264
|
+
});
|
|
265
|
+
it('omits ctx.fs when no fs backend is on the session ctx', async () => {
|
|
266
|
+
let captured;
|
|
267
|
+
const executor = {
|
|
268
|
+
execute: vi.fn().mockImplementation(async (_tool, _params, ctx) => {
|
|
269
|
+
captured = ctx;
|
|
270
|
+
return { ok: true };
|
|
271
|
+
}),
|
|
272
|
+
};
|
|
273
|
+
const def = createCustomToolDefinition(makeTool(), executor, makeSessionCtx());
|
|
274
|
+
await def.execute({}, makeToolContext());
|
|
275
|
+
expect(captured?.fs).toBeUndefined();
|
|
276
|
+
});
|
|
277
|
+
it('forwards ctx.emit through to the runtime ctx', async () => {
|
|
278
|
+
const runtimeEmit = vi.fn();
|
|
279
|
+
const executor = {
|
|
280
|
+
execute: vi.fn().mockImplementation(async (_tool, _params, ctx) => {
|
|
281
|
+
ctx.emit?.({ type: 'show_preview' });
|
|
282
|
+
return { ok: true };
|
|
283
|
+
}),
|
|
284
|
+
};
|
|
285
|
+
const def = createCustomToolDefinition(makeTool(), executor, makeSessionCtx());
|
|
286
|
+
await def.execute({}, makeToolContext({ emit: runtimeEmit }));
|
|
287
|
+
expect(runtimeEmit).toHaveBeenCalledWith(expect.objectContaining({ type: 'show_preview' }));
|
|
288
|
+
});
|
|
289
|
+
});
|
|
242
290
|
});
|
|
243
291
|
//# sourceMappingURL=custom-tool-adapter.test.js.map
|