@amodalai/runtime 0.3.46 → 0.3.48

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.
@@ -1 +1 @@
1
- {"version":3,"file":"custom-tool-adapter.js","sourceRoot":"","sources":["../../../src/tools/custom-tool-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custom-tool-adapter.js","sourceRoot":"","sources":["../../../src/tools/custom-tool-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * `HttpFsBackend` — implements `FsBackend` by calling a remote runtime's
8
+ * workspace API over HTTP. Used when the admin agent needs to read/write
9
+ * files on a different agent's Fly machine.
10
+ *
11
+ * Endpoints:
12
+ * GET /api/files → file tree
13
+ * GET /api/files/{path} → { path, content }
14
+ * PUT /api/files/{path} → write file
15
+ * DELETE /api/files/{path} → delete file
16
+ */
17
+ import type { FsBackend, RepoFileEntry, RepoDirListing } from '@amodalai/types';
18
+ export interface HttpFsBackendOptions {
19
+ /** Base URL of the target runtime (e.g., https://tesseric-agent.amodalapp.com) */
20
+ runtimeUrl: string;
21
+ /** Auth token to include in requests */
22
+ authToken?: string;
23
+ /** Timeout per request in ms (default: 10_000) */
24
+ timeoutMs?: number;
25
+ }
26
+ export declare class HttpFsBackend implements FsBackend {
27
+ private readonly baseUrl;
28
+ private readonly authToken?;
29
+ private readonly timeoutMs;
30
+ constructor(opts: HttpFsBackendOptions);
31
+ private headers;
32
+ readRepoFile(repoPath: string): Promise<string>;
33
+ writeRepoFile(repoPath: string, content: string): Promise<void>;
34
+ readManyRepoFiles(repoPaths: string[]): Promise<RepoFileEntry[]>;
35
+ listRepoFiles(repoPath: string): Promise<RepoDirListing>;
36
+ deleteRepoFile(repoPath: string): Promise<void>;
37
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export class HttpFsBackend {
7
+ baseUrl;
8
+ authToken;
9
+ timeoutMs;
10
+ constructor(opts) {
11
+ this.baseUrl = opts.runtimeUrl.replace(/\/+$/, '');
12
+ this.authToken = opts.authToken;
13
+ this.timeoutMs = opts.timeoutMs ?? 10_000;
14
+ }
15
+ headers() {
16
+ const h = { 'Content-Type': 'application/json' };
17
+ if (this.authToken)
18
+ h['Authorization'] = `Bearer ${this.authToken}`;
19
+ return h;
20
+ }
21
+ async readRepoFile(repoPath) {
22
+ const res = await fetch(`${this.baseUrl}/api/files/${encodeURIComponent(repoPath)}`, {
23
+ headers: this.headers(),
24
+ signal: AbortSignal.timeout(this.timeoutMs),
25
+ });
26
+ if (!res.ok)
27
+ throw new Error(`Failed to read ${repoPath}: ${res.status}`);
28
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- system boundary: parsing workspace API JSON
29
+ const data = await res.json();
30
+ return data.content;
31
+ }
32
+ async writeRepoFile(repoPath, content) {
33
+ const res = await fetch(`${this.baseUrl}/api/files/${encodeURIComponent(repoPath)}`, {
34
+ method: 'PUT',
35
+ headers: this.headers(),
36
+ body: JSON.stringify({ content }),
37
+ signal: AbortSignal.timeout(this.timeoutMs),
38
+ });
39
+ if (!res.ok)
40
+ throw new Error(`Failed to write ${repoPath}: ${res.status}`);
41
+ }
42
+ async readManyRepoFiles(repoPaths) {
43
+ const results = [];
44
+ for (const p of repoPaths) {
45
+ try {
46
+ const content = await this.readRepoFile(p);
47
+ results.push({ path: p, content });
48
+ }
49
+ catch {
50
+ // Skip missing files (matches LocalFsBackend behavior)
51
+ }
52
+ }
53
+ return results;
54
+ }
55
+ async listRepoFiles(repoPath) {
56
+ const res = await fetch(`${this.baseUrl}/api/files`, {
57
+ headers: this.headers(),
58
+ signal: AbortSignal.timeout(this.timeoutMs),
59
+ });
60
+ if (!res.ok)
61
+ return { directories: [], files: [] };
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- system boundary: parsing workspace API JSON
63
+ const data = await res.json();
64
+ // Find the requested directory in the tree
65
+ const parts = repoPath.split('/').filter((p) => p && p !== '.');
66
+ let nodes = data.tree;
67
+ for (const part of parts) {
68
+ const dir = nodes.find((n) => n.name === part && n.type === 'directory');
69
+ if (!dir?.children)
70
+ return { directories: [], files: [] };
71
+ nodes = dir.children;
72
+ }
73
+ return {
74
+ directories: nodes.filter((n) => n.type === 'directory').map((n) => n.name),
75
+ files: nodes.filter((n) => n.type === 'file').map((n) => n.name),
76
+ };
77
+ }
78
+ async deleteRepoFile(repoPath) {
79
+ const res = await fetch(`${this.baseUrl}/api/files/${encodeURIComponent(repoPath)}`, {
80
+ method: 'DELETE',
81
+ headers: this.headers(),
82
+ signal: AbortSignal.timeout(this.timeoutMs),
83
+ });
84
+ if (!res.ok)
85
+ throw new Error(`Failed to delete ${repoPath}: ${res.status}`);
86
+ }
87
+ }
88
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../src/tools/fs/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Filesystem backend implementations for custom tool handlers.
8
+ *
9
+ * The contract (`FsBackend`, `RepoFileEntry`, `RepoDirListing`,
10
+ * `RepoMode`) lives in `@amodalai/types/fs` so the legacy
11
+ * `CustomToolContext` and the new SDK `ToolContext` can share the same
12
+ * shape. This file re-exports those types and adds the runtime-only
13
+ * pieces (the `FsSandboxError` class, plus the concrete `LocalFsBackend`
14
+ * exported from `./local.js`).
15
+ *
16
+ * The runtime picks an implementation based on `AMODAL_REPO_MODE`:
17
+ * - `local` (default, used by `amodal dev`) — `LocalFsBackend` reads and
18
+ * writes the repo directly via `fs/promises`, sandboxed to the repo root.
19
+ * - `cloud` — `PlatformApiFsBackend` (tracked under Phase 0G) wraps
20
+ * `cloud-phase-4/platform-api`'s `/api/repo/files/*` routes so the same
21
+ * handler code commits to platform-api's persistent clone.
22
+ *
23
+ * Handlers don't reason about which backend they're talking to. The
24
+ * observable difference is latency (local: sub-ms, cloud: ~20-50ms per
25
+ * write per the Phase 0G plan); semantics are identical.
26
+ */
27
+ export type { FsBackend, RepoFileEntry, RepoDirListing, RepoMode } from '@amodalai/types';
28
+ /**
29
+ * Thrown by an `FsBackend` when the input path escapes the repo sandbox
30
+ * or is otherwise rejected. Lives here (not in `@amodalai/types`)
31
+ * because it's an Error class, not a pure type.
32
+ */
33
+ export declare class FsSandboxError extends Error {
34
+ constructor(message: string);
35
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Thrown by an `FsBackend` when the input path escapes the repo sandbox
8
+ * or is otherwise rejected. Lives here (not in `@amodalai/types`)
9
+ * because it's an Error class, not a pure type.
10
+ */
11
+ export class FsSandboxError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = 'FsSandboxError';
15
+ }
16
+ }
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/fs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0BH;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { type FsBackend, type RepoDirListing, type RepoFileEntry } from './index.js';
7
+ export interface LocalFsBackendOptions {
8
+ /** Absolute path to the repo root. Every read/write resolves against this. */
9
+ repoRoot: string;
10
+ }
11
+ export declare class LocalFsBackend implements FsBackend {
12
+ #private;
13
+ constructor(opts: LocalFsBackendOptions);
14
+ readRepoFile(repoPath: string): Promise<string>;
15
+ writeRepoFile(repoPath: string, content: string): Promise<void>;
16
+ readManyRepoFiles(repoPaths: string[]): Promise<RepoFileEntry[]>;
17
+ listRepoFiles(repoPath: string): Promise<RepoDirListing>;
18
+ deleteRepoFile(repoPath: string): Promise<void>;
19
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * `LocalFsBackend` — direct fs/promises implementation of `FsBackend`,
8
+ * used by `amodal dev` and any other runtime that operates against a
9
+ * physical repo on disk.
10
+ *
11
+ * Sandboxing: every input path is normalized and rejected if the
12
+ * resolved absolute path does not sit under `repoRoot`. Both `..`
13
+ * traversal and absolute paths are caught by the same prefix check —
14
+ * `path.resolve(repoRoot, repoPath)` collapses traversal, then the
15
+ * result is asserted against `repoRoot` before any fs call runs.
16
+ *
17
+ * Writes are atomic: write-to-temp followed by `rename`. The temp file
18
+ * lives next to the destination so the rename never crosses devices.
19
+ */
20
+ import { randomBytes } from 'node:crypto';
21
+ import { mkdir, readFile, readdir, rename, rm, stat, unlink, writeFile, } from 'node:fs/promises';
22
+ import * as path from 'node:path';
23
+ import { FsSandboxError } from './index.js';
24
+ export class LocalFsBackend {
25
+ #repoRoot;
26
+ constructor(opts) {
27
+ if (!path.isAbsolute(opts.repoRoot)) {
28
+ throw new Error(`LocalFsBackend repoRoot must be absolute, got: ${opts.repoRoot}`);
29
+ }
30
+ // Resolve to canonical form so `..` segments inside repoRoot itself don't fool the prefix check.
31
+ this.#repoRoot = path.resolve(opts.repoRoot);
32
+ }
33
+ /**
34
+ * Resolve a repo-relative path to an absolute path inside the sandbox.
35
+ * Throws `FsSandboxError` when the resolved path escapes `repoRoot`.
36
+ */
37
+ #resolveSandboxed(repoPath) {
38
+ const normalized = path.resolve(this.#repoRoot, repoPath);
39
+ // Prefix check with separator guard — `/repo` must not match `/repo-evil`.
40
+ const rootWithSep = this.#repoRoot.endsWith(path.sep)
41
+ ? this.#repoRoot
42
+ : `${this.#repoRoot}${path.sep}`;
43
+ if (normalized !== this.#repoRoot && !normalized.startsWith(rootWithSep)) {
44
+ throw new FsSandboxError(`Path "${repoPath}" resolves outside the repo sandbox (${this.#repoRoot})`);
45
+ }
46
+ return normalized;
47
+ }
48
+ async readRepoFile(repoPath) {
49
+ const abs = this.#resolveSandboxed(repoPath);
50
+ return readFile(abs, 'utf-8');
51
+ }
52
+ async writeRepoFile(repoPath, content) {
53
+ const abs = this.#resolveSandboxed(repoPath);
54
+ const dir = path.dirname(abs);
55
+ await mkdir(dir, { recursive: true });
56
+ // Atomic write: write to a temp sibling, then rename.
57
+ const tempPath = `${abs}.${randomBytes(8).toString('hex')}.tmp`;
58
+ try {
59
+ await writeFile(tempPath, content, 'utf-8');
60
+ await rename(tempPath, abs);
61
+ }
62
+ catch (err) {
63
+ // Best-effort cleanup of the temp file; don't mask the original error.
64
+ await rm(tempPath, { force: true }).catch(() => undefined);
65
+ throw err;
66
+ }
67
+ }
68
+ async readManyRepoFiles(repoPaths) {
69
+ const results = await Promise.all(repoPaths.map(async (p) => {
70
+ const abs = this.#resolveSandboxed(p);
71
+ try {
72
+ const content = await readFile(abs, 'utf-8');
73
+ return { path: p, content };
74
+ }
75
+ catch (err) {
76
+ if (isNotFoundError(err))
77
+ return null;
78
+ throw err;
79
+ }
80
+ }));
81
+ return results.filter((entry) => entry !== null);
82
+ }
83
+ async listRepoFiles(repoPath) {
84
+ const abs = this.#resolveSandboxed(repoPath);
85
+ const directories = [];
86
+ const files = [];
87
+ try {
88
+ const entries = await readdir(abs, { withFileTypes: true, encoding: 'utf8' });
89
+ for (const entry of entries) {
90
+ // String coercion keeps newer @types/node happy — the default
91
+ // overload widens entry.name to NonSharedBuffer otherwise.
92
+ const name = String(entry.name);
93
+ if (entry.isDirectory())
94
+ directories.push(name);
95
+ else if (entry.isFile())
96
+ files.push(name);
97
+ // Symlinks and special files are ignored — handlers shouldn't be
98
+ // chasing them during repo edits.
99
+ }
100
+ }
101
+ catch (err) {
102
+ if (isNotFoundError(err))
103
+ return { directories: [], files: [] };
104
+ throw err;
105
+ }
106
+ return { directories, files };
107
+ }
108
+ async deleteRepoFile(repoPath) {
109
+ const abs = this.#resolveSandboxed(repoPath);
110
+ // Pre-check that the target is a regular file — never delete a directory.
111
+ const s = await stat(abs);
112
+ if (!s.isFile()) {
113
+ throw new Error(`deleteRepoFile expects a file, got a directory at "${repoPath}"`);
114
+ }
115
+ await unlink(abs);
116
+ }
117
+ }
118
+ function isNotFoundError(err) {
119
+ return (typeof err === 'object' &&
120
+ err !== null &&
121
+ 'code' in err &&
122
+ err.code === 'ENOENT');
123
+ }
124
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../src/tools/fs/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { ToolRegistry } from './types.js';
7
+ import type { FsBackend } from '@amodalai/types';
8
+ import type { Logger } from '../logger.js';
9
+ export interface HttpFileToolsOptions {
10
+ fs: FsBackend;
11
+ logger: Logger;
12
+ }
13
+ export declare function registerHttpFileTools(registry: ToolRegistry, opts: HttpFileToolsOptions): void;
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * HTTP-backed file tools — same tool names and schemas as the local file-tools,
8
+ * but reads/writes go through a remote runtime's workspace API via HttpFsBackend.
9
+ *
10
+ * Used when the admin agent runs on a different machine than the main agent
11
+ * (Cloud mode). Set WORKSPACE_API_URL to activate.
12
+ */
13
+ import { z } from 'zod';
14
+ export function registerHttpFileTools(registry, opts) {
15
+ const { fs, logger } = opts;
16
+ registry.register('read_repo_file', {
17
+ description: 'Read a file from the agent repository.',
18
+ parameters: z.object({
19
+ path: z.string().describe('Relative path to the file within the repo'),
20
+ offset: z.number().optional().describe('Line offset to start reading from'),
21
+ limit: z.number().optional().describe('Max number of lines to return'),
22
+ }),
23
+ readOnly: true,
24
+ metadata: { category: 'system' },
25
+ async execute(params) {
26
+ try {
27
+ logger.debug('file_tool_call', { tool: 'read_repo_file', path: params.path });
28
+ let content = await fs.readRepoFile(params.path);
29
+ if (params.offset !== undefined || params.limit !== undefined) {
30
+ const lines = content.split('\n');
31
+ const start = params.offset ?? 0;
32
+ const end = params.limit !== undefined ? start + params.limit : lines.length;
33
+ content = lines.slice(start, end).join('\n');
34
+ }
35
+ return content;
36
+ }
37
+ catch (err) {
38
+ return { error: err instanceof Error ? err.message : String(err) };
39
+ }
40
+ },
41
+ });
42
+ registry.register('write_repo_file', {
43
+ description: 'Write content to a file in the agent repository. Creates parent directories as needed.',
44
+ parameters: z.object({
45
+ path: z.string().describe('Relative path to the file within the repo'),
46
+ content: z.string().describe('The content to write to the file'),
47
+ }),
48
+ readOnly: false,
49
+ metadata: { category: 'system' },
50
+ async execute(params) {
51
+ try {
52
+ logger.debug('file_tool_call', { tool: 'write_repo_file', path: params.path });
53
+ await fs.writeRepoFile(params.path, params.content);
54
+ return { ok: true, path: params.path };
55
+ }
56
+ catch (err) {
57
+ return { error: err instanceof Error ? err.message : String(err) };
58
+ }
59
+ },
60
+ });
61
+ registry.register('edit_repo_file', {
62
+ description: 'Edit a file by replacing a specific string. Use for targeted changes.',
63
+ parameters: z.object({
64
+ path: z.string().describe('Relative path to the file'),
65
+ old_string: z.string().describe('The exact text to find'),
66
+ new_string: z.string().describe('The replacement text'),
67
+ }),
68
+ readOnly: false,
69
+ metadata: { category: 'system' },
70
+ async execute(params) {
71
+ try {
72
+ logger.debug('file_tool_call', { tool: 'edit_repo_file', path: params.path });
73
+ const content = await fs.readRepoFile(params.path);
74
+ if (!content.includes(params.old_string)) {
75
+ return { error: `String not found in ${params.path}` };
76
+ }
77
+ const updated = content.replace(params.old_string, params.new_string);
78
+ await fs.writeRepoFile(params.path, updated);
79
+ return { ok: true, path: params.path };
80
+ }
81
+ catch (err) {
82
+ return { error: err instanceof Error ? err.message : String(err) };
83
+ }
84
+ },
85
+ });
86
+ registry.register('delete_repo_file', {
87
+ description: 'Delete a file from the agent repository.',
88
+ parameters: z.object({
89
+ path: z.string().describe('Relative path to the file'),
90
+ }),
91
+ readOnly: false,
92
+ metadata: { category: 'system' },
93
+ async execute(params) {
94
+ try {
95
+ logger.debug('file_tool_call', { tool: 'delete_repo_file', path: params.path });
96
+ await fs.deleteRepoFile(params.path);
97
+ return { ok: true, path: params.path };
98
+ }
99
+ catch (err) {
100
+ return { error: err instanceof Error ? err.message : String(err) };
101
+ }
102
+ },
103
+ });
104
+ registry.register('list_repo_files', {
105
+ description: 'List files and directories at a path in the agent repository.',
106
+ parameters: z.object({
107
+ dir: z.string().optional().describe('Directory to list (default: repo root)'),
108
+ }),
109
+ readOnly: true,
110
+ metadata: { category: 'system' },
111
+ async execute(params) {
112
+ try {
113
+ logger.debug('file_tool_call', { tool: 'list_repo_files', dir: params.dir });
114
+ const listing = await fs.listRepoFiles(params.dir ?? '.');
115
+ const entries = [
116
+ ...listing.directories.map((d) => `${d}/`),
117
+ ...listing.files,
118
+ ];
119
+ return entries.join('\n') || '(empty directory)';
120
+ }
121
+ catch (err) {
122
+ return { error: err instanceof Error ? err.message : String(err) };
123
+ }
124
+ },
125
+ });
126
+ registry.register('read_many_repo_files', {
127
+ description: 'Read multiple files at once. Missing files are silently skipped.',
128
+ parameters: z.object({
129
+ paths: z.array(z.string()).describe('Array of relative file paths'),
130
+ }),
131
+ readOnly: true,
132
+ metadata: { category: 'system' },
133
+ async execute(params) {
134
+ try {
135
+ logger.debug('file_tool_call', { tool: 'read_many_repo_files', count: params.paths.length });
136
+ const files = await fs.readManyRepoFiles(params.paths);
137
+ return files.map((f) => `--- ${f.path} ---\n${f.content}`).join('\n\n');
138
+ }
139
+ catch (err) {
140
+ return { error: err instanceof Error ? err.message : String(err) };
141
+ }
142
+ },
143
+ });
144
+ logger.debug('http_file_tools_registered', { tools: 6 });
145
+ }
146
+ //# sourceMappingURL=http-file-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-file-tools.js","sourceRoot":"","sources":["../../../src/tools/http-file-tools.ts"],"names":[],"mappings":"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"}