@amodalai/runtime 0.2.1 → 0.2.3
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/local-server.js +70 -3
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/local-server.test.js +0 -3
- package/dist/src/agent/local-server.test.js.map +1 -1
- package/dist/src/agent/loop-types.d.ts +0 -5
- package/dist/src/agent/loop.test.js +1 -2
- package/dist/src/agent/loop.test.js.map +1 -1
- package/dist/src/agent/page-builder.js +20 -17
- package/dist/src/agent/page-builder.js.map +1 -1
- package/dist/src/agent/proactive/proactive-runner.test.js +0 -1
- package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
- package/dist/src/agent/routes/admin-chat-abort.test.js +1 -0
- package/dist/src/agent/routes/admin-chat-abort.test.js.map +1 -1
- package/dist/src/agent/routes/admin-chat.js +0 -1
- package/dist/src/agent/routes/admin-chat.js.map +1 -1
- package/dist/src/agent/routes/files.js +46 -52
- package/dist/src/agent/routes/files.js.map +1 -1
- package/dist/src/agent/routes/inspect.js +4 -6
- package/dist/src/agent/routes/inspect.js.map +1 -1
- package/dist/src/agent/routes/task.test.js +0 -1
- package/dist/src/agent/routes/task.test.js.map +1 -1
- package/dist/src/agent/snapshot-server.js +37 -1
- package/dist/src/agent/snapshot-server.js.map +1 -1
- package/dist/src/agent/states/dispatching.js +0 -1
- package/dist/src/agent/states/dispatching.js.map +1 -1
- package/dist/src/agent/states/streaming.js +7 -27
- package/dist/src/agent/states/streaming.js.map +1 -1
- package/dist/src/agent/states/thinking.js +28 -1
- package/dist/src/agent/states/thinking.js.map +1 -1
- package/dist/src/agent/tool-executor-local.test.js +0 -1
- package/dist/src/agent/tool-executor-local.test.js.map +1 -1
- package/dist/src/agent/tool-harness-template.js +0 -1
- package/dist/src/agent/tool-harness-template.js.map +1 -1
- package/dist/src/api/create-agent.js +1 -2
- package/dist/src/api/create-agent.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -3
- package/dist/src/channels/bootstrap.d.ts +59 -0
- package/dist/src/channels/bootstrap.js +89 -0
- package/dist/src/channels/bootstrap.js.map +1 -0
- package/dist/src/channels/channel-session-mapper.d.ts +42 -0
- package/dist/src/channels/channel-session-mapper.js +91 -0
- package/dist/src/channels/channel-session-mapper.js.map +1 -0
- package/dist/src/channels/dedup-cache.d.ts +17 -0
- package/dist/src/channels/dedup-cache.js +51 -0
- package/dist/src/channels/dedup-cache.js.map +1 -0
- package/dist/src/{agent/user-context-fetcher.test.d.ts → channels/dedup-cache.test.d.ts} +1 -1
- package/dist/src/channels/dedup-cache.test.js +51 -0
- package/dist/src/channels/dedup-cache.test.js.map +1 -0
- package/dist/src/channels/errors.d.ts +28 -0
- package/dist/src/channels/errors.js +38 -0
- package/dist/src/channels/errors.js.map +1 -0
- package/dist/src/channels/in-memory-session-mapper.d.ts +34 -0
- package/dist/src/channels/in-memory-session-mapper.js +50 -0
- package/dist/src/channels/in-memory-session-mapper.js.map +1 -0
- package/dist/src/channels/plugin-loader.d.ts +20 -0
- package/dist/src/channels/plugin-loader.js +136 -0
- package/dist/src/channels/plugin-loader.js.map +1 -0
- package/dist/src/channels/plugin-loader.test.d.ts +6 -0
- package/dist/src/channels/plugin-loader.test.js +113 -0
- package/dist/src/channels/plugin-loader.test.js.map +1 -0
- package/dist/src/channels/routes.d.ts +29 -0
- package/dist/src/channels/routes.js +165 -0
- package/dist/src/channels/routes.js.map +1 -0
- package/dist/src/config.d.ts +0 -2
- package/dist/src/config.js +0 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/config.test.js +0 -2
- package/dist/src/config.test.js.map +1 -1
- package/dist/src/context/compiler.js +11 -34
- package/dist/src/context/compiler.js.map +1 -1
- package/dist/src/context/compiler.test.js +7 -60
- package/dist/src/context/compiler.test.js.map +1 -1
- package/dist/src/context/types.d.ts +0 -4
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/create-provider.js +1 -0
- package/dist/src/providers/create-provider.js.map +1 -1
- package/dist/src/providers/failover.js +8 -0
- package/dist/src/providers/failover.js.map +1 -1
- package/dist/src/providers/search-provider.js +9 -2
- package/dist/src/providers/search-provider.js.map +1 -1
- package/dist/src/providers/types.d.ts +10 -3
- package/dist/src/routes/ai-stream.d.ts +3 -4
- package/dist/src/routes/ai-stream.js +1 -2
- package/dist/src/routes/ai-stream.js.map +1 -1
- package/dist/src/routes/chat-stream.d.ts +3 -1
- package/dist/src/routes/chat-stream.js +1 -1
- package/dist/src/routes/chat-stream.js.map +1 -1
- package/dist/src/routes/chat.js +0 -1
- package/dist/src/routes/chat.js.map +1 -1
- package/dist/src/routes/session-resolver.d.ts +10 -2
- package/dist/src/routes/session-resolver.js +21 -10
- package/dist/src/routes/session-resolver.js.map +1 -1
- package/dist/src/routes/session-resolver.test.js +110 -14
- package/dist/src/routes/session-resolver.test.js.map +1 -1
- package/dist/src/server.d.ts +29 -1
- package/dist/src/server.js +27 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/session/drizzle-session-store.d.ts +2 -1
- package/dist/src/session/drizzle-session-store.js +1 -0
- package/dist/src/session/drizzle-session-store.js.map +1 -1
- package/dist/src/session/manager.js +0 -3
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/manager.test.js +1 -0
- package/dist/src/session/manager.test.js.map +1 -1
- package/dist/src/session/pglite-session-store.js +16 -0
- package/dist/src/session/pglite-session-store.js.map +1 -1
- package/dist/src/session/postgres-session-store.js +15 -0
- package/dist/src/session/postgres-session-store.js.map +1 -1
- package/dist/src/session/session-builder.d.ts +0 -3
- package/dist/src/session/session-builder.js +1 -5
- package/dist/src/session/session-builder.js.map +1 -1
- package/dist/src/session/session-builder.test.js +3 -6
- package/dist/src/session/session-builder.test.js.map +1 -1
- package/dist/src/session/tool-context-factory.d.ts +0 -5
- package/dist/src/session/tool-context-factory.js +0 -1
- package/dist/src/session/tool-context-factory.js.map +1 -1
- package/dist/src/session/tool-context-factory.test.js +1 -3
- package/dist/src/session/tool-context-factory.test.js.map +1 -1
- package/dist/src/session/types.d.ts +0 -4
- package/dist/src/stores/schema.d.ts +111 -0
- package/dist/src/stores/schema.js +15 -0
- package/dist/src/stores/schema.js.map +1 -1
- package/dist/src/tools/admin-file-tools.js +2 -2
- package/dist/src/tools/admin-file-tools.js.map +1 -1
- package/dist/src/tools/admin-file-tools.test.js +9 -7
- package/dist/src/tools/admin-file-tools.test.js.map +1 -1
- package/dist/src/tools/custom-tool-adapter.js +0 -1
- package/dist/src/tools/custom-tool-adapter.js.map +1 -1
- package/dist/src/tools/custom-tool-adapter.test.js +0 -1
- package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
- package/dist/src/tools/fetch-url-tool.test.js +0 -1
- package/dist/src/tools/fetch-url-tool.test.js.map +1 -1
- package/dist/src/tools/mcp-tool-adapter.test.js +0 -1
- package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -1
- package/dist/src/tools/registry.test.js +0 -1
- package/dist/src/tools/registry.test.js.map +1 -1
- package/dist/src/tools/request-tool.test.js +0 -1
- package/dist/src/tools/request-tool.test.js.map +1 -1
- package/dist/src/tools/store-tools.test.js +0 -1
- package/dist/src/tools/store-tools.test.js.map +1 -1
- package/dist/src/tools/types.d.ts +0 -5
- package/dist/src/tools/web-search-tool.test.js +0 -1
- package/dist/src/tools/web-search-tool.test.js.map +1 -1
- package/dist/src/types.d.ts +0 -4
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +1 -1
- package/dist/src/types.test.js +0 -3
- package/dist/src/types.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/agent/user-context-fetcher.d.ts +0 -25
- package/dist/src/agent/user-context-fetcher.js +0 -79
- package/dist/src/agent/user-context-fetcher.js.map +0 -1
- package/dist/src/agent/user-context-fetcher.test.js +0 -121
- package/dist/src/agent/user-context-fetcher.test.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amodalai/runtime",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Agent Runtime Platform — HTTP server for repo and platform modes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"pg": "^8.13.1",
|
|
37
37
|
"zod": "^3.25.0",
|
|
38
38
|
"zod-to-json-schema": "^3.25.2",
|
|
39
|
-
"@amodalai/core": "0.2.
|
|
40
|
-
"@amodalai/types": "0.2.
|
|
39
|
+
"@amodalai/core": "0.2.3",
|
|
40
|
+
"@amodalai/types": "0.2.3"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/express": "^4.17.21",
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import type { AgentBundle } from '@amodalai/core';
|
|
7
|
-
import type { ConnectionsMap } from '@amodalai/core';
|
|
8
|
-
/**
|
|
9
|
-
* Fetches user context from a configured endpoint.
|
|
10
|
-
*
|
|
11
|
-
* The `config.userContext` value is a string like "GET crm/users/me"
|
|
12
|
-
* (method connection/path). The connection auth is resolved from
|
|
13
|
-
* the connections map.
|
|
14
|
-
*/
|
|
15
|
-
export declare function fetchUserContext(repo: AgentBundle, appToken: string, connectionsMap: ConnectionsMap): Promise<Record<string, unknown>>;
|
|
16
|
-
interface ParsedSpec {
|
|
17
|
-
method: string;
|
|
18
|
-
connection: string;
|
|
19
|
-
path: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Parse "GET crm/users/me" → {method: "GET", connection: "crm", path: "users/me"}
|
|
23
|
-
*/
|
|
24
|
-
declare function parseUserContextSpec(spec: string): ParsedSpec | null;
|
|
25
|
-
export { parseUserContextSpec as _parseUserContextSpecForTesting };
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Fetches user context from a configured endpoint.
|
|
8
|
-
*
|
|
9
|
-
* The `config.userContext` value is a string like "GET crm/users/me"
|
|
10
|
-
* (method connection/path). The connection auth is resolved from
|
|
11
|
-
* the connections map.
|
|
12
|
-
*/
|
|
13
|
-
export async function fetchUserContext(repo, appToken, connectionsMap) {
|
|
14
|
-
const spec = repo.config.userContext;
|
|
15
|
-
if (!spec) {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
18
|
-
const parsed = parseUserContextSpec(spec);
|
|
19
|
-
if (!parsed) {
|
|
20
|
-
return {};
|
|
21
|
-
}
|
|
22
|
-
const connConfig = connectionsMap[parsed.connection];
|
|
23
|
-
if (!connConfig) {
|
|
24
|
-
return {};
|
|
25
|
-
}
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- SDK boundary: connections map values are records
|
|
27
|
-
const baseUrl = connConfig['base_url'];
|
|
28
|
-
if (!baseUrl) {
|
|
29
|
-
return {};
|
|
30
|
-
}
|
|
31
|
-
const url = `${baseUrl.replace(/\/$/, '')}/${parsed.path.replace(/^\//, '')}`;
|
|
32
|
-
const headers = {
|
|
33
|
-
'Content-Type': 'application/json',
|
|
34
|
-
'Authorization': `Bearer ${appToken}`,
|
|
35
|
-
};
|
|
36
|
-
const controller = new AbortController();
|
|
37
|
-
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
38
|
-
try {
|
|
39
|
-
const response = await fetch(url, {
|
|
40
|
-
method: parsed.method,
|
|
41
|
-
headers,
|
|
42
|
-
signal: controller.signal,
|
|
43
|
-
});
|
|
44
|
-
if (!response.ok) {
|
|
45
|
-
return {};
|
|
46
|
-
}
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- SDK boundary: expecting JSON object from API
|
|
48
|
-
const data = (await response.json());
|
|
49
|
-
return data;
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return {};
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
clearTimeout(timeout);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Parse "GET crm/users/me" → {method: "GET", connection: "crm", path: "users/me"}
|
|
60
|
-
*/
|
|
61
|
-
function parseUserContextSpec(spec) {
|
|
62
|
-
const parts = spec.trim().split(/\s+/);
|
|
63
|
-
if (parts.length < 2) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
const method = parts[0]?.toUpperCase() ?? '';
|
|
67
|
-
const fullPath = parts[1] ?? '';
|
|
68
|
-
const slashIdx = fullPath.indexOf('/');
|
|
69
|
-
if (slashIdx === -1) {
|
|
70
|
-
return { method, connection: fullPath, path: '/' };
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
method,
|
|
74
|
-
connection: fullPath.substring(0, slashIdx),
|
|
75
|
-
path: fullPath.substring(slashIdx),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export { parseUserContextSpec as _parseUserContextSpecForTesting };
|
|
79
|
-
//# sourceMappingURL=user-context-fetcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-context-fetcher.js","sourceRoot":"","sources":["../../../src/agent/user-context-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
-
import { fetchUserContext, _parseUserContextSpecForTesting as parseSpec } from './user-context-fetcher.js';
|
|
8
|
-
function makeRepo(userContext) {
|
|
9
|
-
return {
|
|
10
|
-
source: 'local',
|
|
11
|
-
origin: '/test',
|
|
12
|
-
config: {
|
|
13
|
-
name: 'test',
|
|
14
|
-
version: '1.0.0',
|
|
15
|
-
userContext,
|
|
16
|
-
models: {
|
|
17
|
-
main: { provider: 'anthropic', model: 'claude-sonnet-4-20250514' },
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
connections: new Map(),
|
|
21
|
-
skills: [],
|
|
22
|
-
agents: { subagents: [] },
|
|
23
|
-
automations: [],
|
|
24
|
-
knowledge: [],
|
|
25
|
-
evals: [],
|
|
26
|
-
tools: [],
|
|
27
|
-
stores: [],
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
describe('parseUserContextSpec', () => {
|
|
31
|
-
it('should parse "GET crm/users/me"', () => {
|
|
32
|
-
const result = parseSpec('GET crm/users/me');
|
|
33
|
-
expect(result).toEqual({
|
|
34
|
-
method: 'GET',
|
|
35
|
-
connection: 'crm',
|
|
36
|
-
path: '/users/me',
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
it('should parse "POST api/auth"', () => {
|
|
40
|
-
const result = parseSpec('POST api/auth');
|
|
41
|
-
expect(result).toEqual({
|
|
42
|
-
method: 'POST',
|
|
43
|
-
connection: 'api',
|
|
44
|
-
path: '/auth',
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
it('should handle connection with no path', () => {
|
|
48
|
-
const result = parseSpec('GET crm');
|
|
49
|
-
expect(result).toEqual({
|
|
50
|
-
method: 'GET',
|
|
51
|
-
connection: 'crm',
|
|
52
|
-
path: '/',
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
it('should return null for empty string', () => {
|
|
56
|
-
const result = parseSpec('');
|
|
57
|
-
expect(result).toBeNull();
|
|
58
|
-
});
|
|
59
|
-
it('should return null for single word', () => {
|
|
60
|
-
const result = parseSpec('GET');
|
|
61
|
-
expect(result).toBeNull();
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('fetchUserContext', () => {
|
|
65
|
-
beforeEach(() => {
|
|
66
|
-
vi.restoreAllMocks();
|
|
67
|
-
});
|
|
68
|
-
it('should return empty object when no userContext configured', async () => {
|
|
69
|
-
const repo = makeRepo();
|
|
70
|
-
const result = await fetchUserContext(repo, 'token', {});
|
|
71
|
-
expect(result).toEqual({});
|
|
72
|
-
});
|
|
73
|
-
it('should return empty object when connection not found', async () => {
|
|
74
|
-
const repo = makeRepo('GET unknown/users/me');
|
|
75
|
-
const result = await fetchUserContext(repo, 'token', {});
|
|
76
|
-
expect(result).toEqual({});
|
|
77
|
-
});
|
|
78
|
-
it('should return empty object when base_url missing', async () => {
|
|
79
|
-
const repo = makeRepo('GET crm/users/me');
|
|
80
|
-
const connMap = {
|
|
81
|
-
crm: { no_base_url: true },
|
|
82
|
-
};
|
|
83
|
-
const result = await fetchUserContext(repo, 'token', connMap);
|
|
84
|
-
expect(result).toEqual({});
|
|
85
|
-
});
|
|
86
|
-
it('should fetch user context successfully', async () => {
|
|
87
|
-
const repo = makeRepo('GET crm/users/me');
|
|
88
|
-
const connMap = {
|
|
89
|
-
crm: { base_url: 'https://api.example.com' },
|
|
90
|
-
};
|
|
91
|
-
const mockResponse = { role: 'admin', name: 'Test User' };
|
|
92
|
-
vi.spyOn(globalThis, 'fetch').mockResolvedValue(new Response(JSON.stringify(mockResponse), { status: 200 }));
|
|
93
|
-
const result = await fetchUserContext(repo, 'my-token', connMap);
|
|
94
|
-
expect(result).toEqual(mockResponse);
|
|
95
|
-
expect(fetch).toHaveBeenCalledWith('https://api.example.com/users/me', expect.objectContaining({
|
|
96
|
-
method: 'GET',
|
|
97
|
-
headers: expect.objectContaining({
|
|
98
|
-
Authorization: 'Bearer my-token',
|
|
99
|
-
}),
|
|
100
|
-
}));
|
|
101
|
-
});
|
|
102
|
-
it('should return empty object on HTTP error', async () => {
|
|
103
|
-
const repo = makeRepo('GET crm/users/me');
|
|
104
|
-
const connMap = {
|
|
105
|
-
crm: { base_url: 'https://api.example.com' },
|
|
106
|
-
};
|
|
107
|
-
vi.spyOn(globalThis, 'fetch').mockResolvedValue(new Response('Not Found', { status: 404 }));
|
|
108
|
-
const result = await fetchUserContext(repo, 'token', connMap);
|
|
109
|
-
expect(result).toEqual({});
|
|
110
|
-
});
|
|
111
|
-
it('should return empty object on fetch error', async () => {
|
|
112
|
-
const repo = makeRepo('GET crm/users/me');
|
|
113
|
-
const connMap = {
|
|
114
|
-
crm: { base_url: 'https://api.example.com' },
|
|
115
|
-
};
|
|
116
|
-
vi.spyOn(globalThis, 'fetch').mockRejectedValue(new Error('Network error'));
|
|
117
|
-
const result = await fetchUserContext(repo, 'token', connMap);
|
|
118
|
-
expect(result).toEqual({});
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
//# sourceMappingURL=user-context-fetcher.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-context-fetcher.test.js","sourceRoot":"","sources":["../../../src/agent/user-context-fetcher.test.ts"],"names":[],"mappings":"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"}
|