@amodalai/runtime 0.3.22 → 0.3.24

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 (105) hide show
  1. package/dist/src/__fixtures__/smoke.test.js +127 -25
  2. package/dist/src/__fixtures__/smoke.test.js.map +1 -1
  3. package/dist/src/agent/local-server.js +4 -180
  4. package/dist/src/agent/local-server.js.map +1 -1
  5. package/dist/src/agent/routes/stores.js +5 -5
  6. package/dist/src/agent/routes/stores.js.map +1 -1
  7. package/dist/src/agent/routes/stores.test.js +1 -1
  8. package/dist/src/agent/routes/stores.test.js.map +1 -1
  9. package/dist/src/credentials.d.ts +44 -0
  10. package/dist/src/credentials.js +58 -0
  11. package/dist/src/credentials.js.map +1 -0
  12. package/dist/src/credentials.test.d.ts +6 -0
  13. package/dist/src/credentials.test.js +108 -0
  14. package/dist/src/credentials.test.js.map +1 -0
  15. package/dist/src/events/store-event-wrapper.js +12 -12
  16. package/dist/src/events/store-event-wrapper.js.map +1 -1
  17. package/dist/src/events/store-event-wrapper.test.js +9 -9
  18. package/dist/src/events/store-event-wrapper.test.js.map +1 -1
  19. package/dist/src/index.d.ts +5 -0
  20. package/dist/src/index.js +6 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/middleware/auth.d.ts +4 -0
  23. package/dist/src/middleware/auth.js.map +1 -1
  24. package/dist/src/routes/chat-stream.js +12 -0
  25. package/dist/src/routes/chat-stream.js.map +1 -1
  26. package/dist/src/routes/chat.js +12 -0
  27. package/dist/src/routes/chat.js.map +1 -1
  28. package/dist/src/routes/session-resolver.d.ts +11 -0
  29. package/dist/src/routes/session-resolver.js +30 -6
  30. package/dist/src/routes/session-resolver.js.map +1 -1
  31. package/dist/src/routes/sessions-history.d.ts +22 -0
  32. package/dist/src/routes/sessions-history.js +186 -0
  33. package/dist/src/routes/sessions-history.js.map +1 -0
  34. package/dist/src/scope.d.ts +18 -0
  35. package/dist/src/scope.js +15 -0
  36. package/dist/src/scope.js.map +1 -0
  37. package/dist/src/scope.test.d.ts +6 -0
  38. package/dist/src/scope.test.js +64 -0
  39. package/dist/src/scope.test.js.map +1 -0
  40. package/dist/src/server.js +12 -0
  41. package/dist/src/server.js.map +1 -1
  42. package/dist/src/session/drizzle-session-store.d.ts +12 -0
  43. package/dist/src/session/drizzle-session-store.js +33 -1
  44. package/dist/src/session/drizzle-session-store.js.map +1 -1
  45. package/dist/src/session/manager.d.ts +3 -1
  46. package/dist/src/session/manager.js +15 -1
  47. package/dist/src/session/manager.js.map +1 -1
  48. package/dist/src/session/session-builder.d.ts +11 -0
  49. package/dist/src/session/session-builder.js +22 -7
  50. package/dist/src/session/session-builder.js.map +1 -1
  51. package/dist/src/session/store.d.ts +6 -0
  52. package/dist/src/session/store.js +2 -3
  53. package/dist/src/session/store.js.map +1 -1
  54. package/dist/src/session/store.test.js +4 -0
  55. package/dist/src/session/store.test.js.map +1 -1
  56. package/dist/src/session/tool-context-factory.d.ts +17 -1
  57. package/dist/src/session/tool-context-factory.js +95 -9
  58. package/dist/src/session/tool-context-factory.js.map +1 -1
  59. package/dist/src/session/tool-context-factory.test.js +2 -1
  60. package/dist/src/session/tool-context-factory.test.js.map +1 -1
  61. package/dist/src/session/types.d.ts +6 -0
  62. package/dist/src/stores/drizzle-store-backend.d.ts +6 -6
  63. package/dist/src/stores/drizzle-store-backend.js +24 -19
  64. package/dist/src/stores/drizzle-store-backend.js.map +1 -1
  65. package/dist/src/stores/drizzle-store-backend.test.js +41 -41
  66. package/dist/src/stores/drizzle-store-backend.test.js.map +1 -1
  67. package/dist/src/stores/index.d.ts +1 -0
  68. package/dist/src/stores/index.js +1 -0
  69. package/dist/src/stores/index.js.map +1 -1
  70. package/dist/src/stores/scoped-store-backend.d.ts +36 -0
  71. package/dist/src/stores/scoped-store-backend.js +59 -0
  72. package/dist/src/stores/scoped-store-backend.js.map +1 -0
  73. package/dist/src/stores/scoped-store-backend.test.d.ts +6 -0
  74. package/dist/src/stores/scoped-store-backend.test.js +159 -0
  75. package/dist/src/stores/scoped-store-backend.test.js.map +1 -0
  76. package/dist/src/tools/custom-tool-adapter.d.ts +1 -1
  77. package/dist/src/tools/custom-tool-adapter.js +1 -1
  78. package/dist/src/tools/custom-tool-adapter.js.map +1 -1
  79. package/dist/src/tools/custom-tool-adapter.test.js +2 -1
  80. package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
  81. package/dist/src/tools/fetch-url-tool.test.js +1 -0
  82. package/dist/src/tools/fetch-url-tool.test.js.map +1 -1
  83. package/dist/src/tools/mcp-tool-adapter.test.js +1 -0
  84. package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -1
  85. package/dist/src/tools/memory-tool.d.ts +5 -3
  86. package/dist/src/tools/memory-tool.js +30 -30
  87. package/dist/src/tools/memory-tool.js.map +1 -1
  88. package/dist/src/tools/memory-tool.test.js +1 -0
  89. package/dist/src/tools/memory-tool.test.js.map +1 -1
  90. package/dist/src/tools/registry.test.js +1 -0
  91. package/dist/src/tools/registry.test.js.map +1 -1
  92. package/dist/src/tools/request-tool.test.js +1 -0
  93. package/dist/src/tools/request-tool.test.js.map +1 -1
  94. package/dist/src/tools/store-tools.js +7 -7
  95. package/dist/src/tools/store-tools.js.map +1 -1
  96. package/dist/src/tools/store-tools.test.js +8 -7
  97. package/dist/src/tools/store-tools.test.js.map +1 -1
  98. package/dist/src/tools/types.d.ts +4 -0
  99. package/dist/src/tools/web-search-tool.test.js +1 -0
  100. package/dist/src/tools/web-search-tool.test.js.map +1 -1
  101. package/dist/src/types.d.ts +10 -0
  102. package/dist/src/types.js +4 -0
  103. package/dist/src/types.js.map +1 -1
  104. package/dist/tsconfig.tsbuildinfo +1 -1
  105. package/package.json +4 -4
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Session history REST routes.
8
+ *
9
+ * Provides GET/PATCH/DELETE for /sessions/history endpoints.
10
+ * Used by both local-server and hosted runtime via createServer.
11
+ */
12
+ import { Router } from 'express';
13
+ import type { SessionStore } from '../session/store.js';
14
+ import type { StandaloneSessionManager } from '../session/manager.js';
15
+ import type { RuntimeEventBus } from '../events/event-bus.js';
16
+ export interface SessionsHistoryRouterOptions {
17
+ sessionStore: SessionStore;
18
+ sessionManager: StandaloneSessionManager;
19
+ eventBus: RuntimeEventBus;
20
+ appId: string;
21
+ }
22
+ export declare function createSessionsHistoryRouter(options: SessionsHistoryRouterOptions): Router;
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Session history REST routes.
8
+ *
9
+ * Provides GET/PATCH/DELETE for /sessions/history endpoints.
10
+ * Used by both local-server and hosted runtime via createServer.
11
+ */
12
+ import { Router } from 'express';
13
+ import { asyncHandler } from './route-helpers.js';
14
+ // ---------------------------------------------------------------------------
15
+ // Helpers
16
+ // ---------------------------------------------------------------------------
17
+ const SUMMARY_EXCERPT_MAX = 80;
18
+ function isRecord(x) {
19
+ return typeof x === 'object' && x !== null && !Array.isArray(x);
20
+ }
21
+ function isTextPart(part) {
22
+ return isRecord(part) && part['type'] === 'text' && typeof part['text'] === 'string';
23
+ }
24
+ function isToolCallPart(part) {
25
+ return (isRecord(part) &&
26
+ part['type'] === 'tool-call' &&
27
+ typeof part['toolCallId'] === 'string' &&
28
+ typeof part['toolName'] === 'string');
29
+ }
30
+ function getMessageRole(raw) {
31
+ if (!isRecord(raw))
32
+ return null;
33
+ const role = raw['role'];
34
+ return typeof role === 'string' ? role : null;
35
+ }
36
+ function getMessageContent(raw) {
37
+ if (!isRecord(raw))
38
+ return undefined;
39
+ return raw['content'];
40
+ }
41
+ function excerpt(s) {
42
+ return s.length > SUMMARY_EXCERPT_MAX ? `${s.slice(0, SUMMARY_EXCERPT_MAX)}…` : s;
43
+ }
44
+ function extractStringArray(value) {
45
+ if (!Array.isArray(value))
46
+ return [];
47
+ return value.filter((v) => typeof v === 'string');
48
+ }
49
+ function extractFirstUserText(messages) {
50
+ for (const raw of messages) {
51
+ if (getMessageRole(raw) !== 'user')
52
+ continue;
53
+ const content = getMessageContent(raw);
54
+ if (typeof content === 'string')
55
+ return excerpt(content);
56
+ if (Array.isArray(content)) {
57
+ const firstText = content.find(isTextPart);
58
+ if (firstText)
59
+ return excerpt(firstText.text);
60
+ }
61
+ }
62
+ return undefined;
63
+ }
64
+ function flattenModelMessage(raw) {
65
+ const role = getMessageRole(raw);
66
+ if (role !== 'user' && role !== 'assistant')
67
+ return null;
68
+ const content = getMessageContent(raw);
69
+ if (typeof content === 'string') {
70
+ return { role, text: content };
71
+ }
72
+ if (Array.isArray(content)) {
73
+ const text = content.filter(isTextPart).map((p) => p.text).join('');
74
+ const toolCalls = role === 'assistant'
75
+ ? content.filter(isToolCallPart).map((p) => ({
76
+ toolId: p.toolCallId,
77
+ toolName: p.toolName,
78
+ parameters: isRecord(p.input) ? p.input : {},
79
+ }))
80
+ : [];
81
+ if (text.length === 0 && toolCalls.length === 0)
82
+ return null;
83
+ return toolCalls.length > 0 ? { role, text, toolCalls } : { role, text };
84
+ }
85
+ return null;
86
+ }
87
+ const SESSION_LIST_LIMIT = 500;
88
+ export function createSessionsHistoryRouter(options) {
89
+ const { sessionStore, sessionManager, eventBus, appId } = options;
90
+ const router = Router();
91
+ // List sessions
92
+ router.get('/sessions/history', asyncHandler(async (_req, res) => {
93
+ const filter = { appId };
94
+ const { sessions: rows } = await sessionStore.list({ limit: SESSION_LIST_LIMIT, filter });
95
+ const items = rows.map((s) => {
96
+ const title = typeof s.metadata['title'] === 'string' ? s.metadata['title'] : undefined;
97
+ return {
98
+ id: s.id,
99
+ app_id: typeof s.metadata['appId'] === 'string' ? s.metadata['appId'] : appId,
100
+ title: title ?? extractFirstUserText(s.messages) ?? 'Untitled',
101
+ tags: extractStringArray(s.metadata['tags']),
102
+ status: 'active',
103
+ message_count: s.messages.length,
104
+ created_at: s.createdAt.toISOString(),
105
+ updated_at: s.updatedAt.toISOString(),
106
+ };
107
+ });
108
+ res.json(items);
109
+ }));
110
+ // Get single session with messages
111
+ router.get('/sessions/history/:id', asyncHandler(async (req, res) => {
112
+ const persisted = await sessionStore.load(req.params['id'] ?? '');
113
+ if (!persisted) {
114
+ res.status(404).json({ error: 'Session not found' });
115
+ return;
116
+ }
117
+ const title = typeof persisted.metadata['title'] === 'string' ? persisted.metadata['title'] : undefined;
118
+ const rawMessages = persisted.messages.map(flattenModelMessage).filter((m) => m !== null);
119
+ const messages = rawMessages.map((m) => ({
120
+ type: m.role === 'user' ? 'user' : 'assistant_text',
121
+ id: `hist-${Math.random().toString(36).slice(2)}`,
122
+ text: m.text,
123
+ timestamp: persisted.updatedAt.toISOString(),
124
+ ...(m.toolCalls ? { toolCalls: m.toolCalls } : {}),
125
+ }));
126
+ res.json({
127
+ id: persisted.id,
128
+ app_id: typeof persisted.metadata['appId'] === 'string' ? persisted.metadata['appId'] : appId,
129
+ title: title ?? extractFirstUserText(persisted.messages) ?? 'Untitled',
130
+ tags: extractStringArray(persisted.metadata['tags']),
131
+ status: 'active',
132
+ message_count: persisted.messages.length,
133
+ created_at: persisted.createdAt.toISOString(),
134
+ updated_at: persisted.updatedAt.toISOString(),
135
+ messages,
136
+ });
137
+ }));
138
+ // Rename session
139
+ router.patch('/sessions/history/:id', asyncHandler(async (req, res) => {
140
+ const sessionId = req.params['id'] ?? '';
141
+ const body = req.body;
142
+ if (!body || typeof body !== 'object') {
143
+ res.status(400).json({ error: 'Request body required' });
144
+ return;
145
+ }
146
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- validated above: body is a non-null object
147
+ const updates = body;
148
+ const live = sessionManager.get(sessionId);
149
+ if (live) {
150
+ if (typeof updates['title'] === 'string')
151
+ live.metadata.title = updates['title'];
152
+ if (Array.isArray(updates['tags']))
153
+ live.metadata['tags'] = updates['tags'];
154
+ await sessionManager.persist(live);
155
+ }
156
+ else {
157
+ const persisted = await sessionStore.load(sessionId);
158
+ if (!persisted) {
159
+ res.status(404).json({ error: 'Session not found' });
160
+ return;
161
+ }
162
+ if (typeof updates['title'] === 'string')
163
+ persisted.metadata.title = updates['title'];
164
+ if (Array.isArray(updates['tags']))
165
+ persisted.metadata['tags'] = updates['tags'];
166
+ persisted.updatedAt = new Date();
167
+ await sessionStore.save(persisted);
168
+ }
169
+ eventBus.emit({ type: 'session_updated', sessionId, appId, title: typeof updates['title'] === 'string' ? updates['title'] : undefined });
170
+ res.json({ ok: true });
171
+ }));
172
+ // Delete session
173
+ router.delete('/sessions/history/:id', asyncHandler(async (req, res) => {
174
+ const sessionId = req.params['id'] ?? '';
175
+ await sessionManager.destroy(sessionId);
176
+ const deleted = await sessionStore.delete(sessionId);
177
+ if (!deleted) {
178
+ res.status(404).json({ error: 'Session not found' });
179
+ return;
180
+ }
181
+ eventBus.emit({ type: 'session_deleted', sessionId });
182
+ res.json({ ok: true });
183
+ }));
184
+ return router;
185
+ }
186
+ //# sourceMappingURL=sessions-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-history.js","sourceRoot":"","sources":["../../../src/routes/sessions-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { AuthContext } from './middleware/auth.js';
7
+ export interface ResolvedScope {
8
+ scopeId: string;
9
+ scopeContext?: Record<string, string>;
10
+ }
11
+ /**
12
+ * Resolve scope from JWT claims (auth context) or request body.
13
+ * JWT takes precedence. Defaults to '' (agent-level, no scope).
14
+ */
15
+ export declare function resolveScope(req: {
16
+ scope_id?: string;
17
+ context?: Record<string, string>;
18
+ }, auth?: AuthContext): ResolvedScope;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Resolve scope from JWT claims (auth context) or request body.
8
+ * JWT takes precedence. Defaults to '' (agent-level, no scope).
9
+ */
10
+ export function resolveScope(req, auth) {
11
+ const scopeId = auth?.scopeId ?? req.scope_id ?? '';
12
+ const scopeContext = auth?.scopeContext ?? req.context;
13
+ return { scopeId, scopeContext };
14
+ }
15
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,GAA0D,EAC1D,IAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC;IACvD,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { resolveScope } from './scope.js';
8
+ function makeAuth(overrides = {}) {
9
+ return {
10
+ applicationId: 'app-1',
11
+ authMethod: 'api-key',
12
+ ...overrides,
13
+ };
14
+ }
15
+ describe('resolveScope', () => {
16
+ it('returns scopeId from auth context when present', () => {
17
+ const auth = makeAuth({ scopeId: 'user-42' });
18
+ const result = resolveScope({}, auth);
19
+ expect(result.scopeId).toBe('user-42');
20
+ });
21
+ it('returns scopeId from request body when auth has none', () => {
22
+ const auth = makeAuth();
23
+ const result = resolveScope({ scope_id: 'body-scope' }, auth);
24
+ expect(result.scopeId).toBe('body-scope');
25
+ });
26
+ it('auth scopeId takes precedence over request body scopeId', () => {
27
+ const auth = makeAuth({ scopeId: 'auth-scope' });
28
+ const result = resolveScope({ scope_id: 'body-scope' }, auth);
29
+ expect(result.scopeId).toBe('auth-scope');
30
+ });
31
+ it('defaults to empty string when neither auth nor body has scopeId', () => {
32
+ const auth = makeAuth();
33
+ const result = resolveScope({}, auth);
34
+ expect(result.scopeId).toBe('');
35
+ });
36
+ it('defaults to empty string when no auth and no body scopeId', () => {
37
+ const result = resolveScope({});
38
+ expect(result.scopeId).toBe('');
39
+ });
40
+ it('returns scopeContext from auth when present', () => {
41
+ const ctx = { plan: 'pro', region: 'us-west' };
42
+ const auth = makeAuth({ scopeId: 'u1', scopeContext: ctx });
43
+ const result = resolveScope({}, auth);
44
+ expect(result.scopeContext).toEqual(ctx);
45
+ });
46
+ it('falls back to context from request body when auth has none', () => {
47
+ const ctx = { plan: 'free' };
48
+ const auth = makeAuth();
49
+ const result = resolveScope({ context: ctx }, auth);
50
+ expect(result.scopeContext).toEqual(ctx);
51
+ });
52
+ it('auth scopeContext takes precedence over request body context', () => {
53
+ const authCtx = { plan: 'enterprise' };
54
+ const bodyCtx = { plan: 'free' };
55
+ const auth = makeAuth({ scopeContext: authCtx });
56
+ const result = resolveScope({ context: bodyCtx }, auth);
57
+ expect(result.scopeContext).toEqual(authCtx);
58
+ });
59
+ it('scopeContext is undefined when neither auth nor body has it', () => {
60
+ const result = resolveScope({});
61
+ expect(result.scopeContext).toBeUndefined();
62
+ });
63
+ });
64
+ //# sourceMappingURL=scope.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.test.js","sourceRoot":"","sources":["../../src/scope.test.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ import { MessageDedupCache } from './channels/dedup-cache.js';
21
21
  import { log, createLogger } from './logger.js';
22
22
  import { defaultRoleProvider } from './role-provider.js';
23
23
  import { asyncHandler } from './routes/route-helpers.js';
24
+ import { createSessionsHistoryRouter } from './routes/sessions-history.js';
24
25
  /**
25
26
  * Create the Express server with all routes, session management, and graceful shutdown.
26
27
  */
@@ -40,6 +41,8 @@ export function createServer(options) {
40
41
  mcpManager: null,
41
42
  logger: log,
42
43
  };
44
+ // Event bus for session lifecycle events
45
+ const eventBus = new RuntimeEventBus();
43
46
  // --- Express app ---
44
47
  const app = express();
45
48
  // CORS middleware
@@ -145,6 +148,15 @@ export function createServer(options) {
145
148
  }));
146
149
  log.info('channels_router_mounted', { channels: [...options.channelAdapters.keys()] });
147
150
  }
151
+ // Session history routes (when session store is available)
152
+ if (options.sessionStore) {
153
+ app.use(createSessionsHistoryRouter({
154
+ sessionStore: options.sessionStore,
155
+ sessionManager,
156
+ eventBus,
157
+ appId: config.appId ?? 'local',
158
+ }));
159
+ }
148
160
  // Additional routers (e.g., session history proxy from hosting layer)
149
161
  if (options.additionalRouters) {
150
162
  for (const router of options.additionalRouters) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;GAMG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAK9D,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,mBAAmB,EAAoB,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAgFvD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,EAAC,MAAM,EAAC,GAAG,OAAO,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,6BAA6B;IAC7B,MAAM,aAAa,GAAG,YAAY,CAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,IAAI,wBAAwB,CAAC;QAClD,MAAM,EAAE,aAAa;QACrB,KAAK,EAAE,MAAM,CAAC,YAAY;QAC1B,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,OAAO,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,cAAc,CAAC,KAAK,EAAE,CAAC;IAEvB,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;QAC1C,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,GAAG;KACZ,CAAC;IAEF,sBAAsB;IACtB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,kBAAkB;IAClB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1B,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;QACtD,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,+DAA+D,CAAC,CAAC;QAC5G,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,wCAAwC,CAAC,CAAC;QACrF,GAAG,CAAC,MAAM,CAAC,+BAA+B,EAAE,+BAA+B,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,iEAAiE;IACjE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;IACT,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACjC,eAAe,EAAE,cAAc,CAAC,IAAI;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,qEAAqE;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAEjE,iDAAiD;IACjD,8EAA8E;IAC9E,0DAA0D;IAC1D,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAC,CAAC,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,EAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,yBAAyB,EAAC;aACrE,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC,CAAC;IAEJ,wCAAwC;IACxC,wFAAwF;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,uBAAuB,GAC3B,OAAO,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,UAAU,SAAS,EAAE,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG;gBAC1B,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS;gBACnD,UAAU,EAAE,OAAO;aACpB,CAAC;YACF,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,IAAI,uBAAuB,EAAE,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC7B,cAAc;QACd,cAAc,EAAE,EAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAC;QACxD,MAAM;QACN,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC,CAAC;IACJ,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC3B,cAAc;QACd,cAAc,EAAE,EAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAC;QACxD,MAAM;QACN,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC,CAAC;IAEJ,qBAAqB;IACrB,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAChG,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,eAAe,CAAC;YACrE,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAC9B,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE;oBAC3C,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC;YACxC,QAAQ,EAAE,OAAO,CAAC,eAAe;YACjC,aAAa,EAAE,OAAO,CAAC,oBAAoB;YAC3C,cAAc;YACd,UAAU,EAAE,IAAI,iBAAiB,EAAE;YACnC,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;IACvF,CAAC;IAED,sEAAsE;IACtE,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,+BAA+B;IAC/B,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEtB,IAAI,MAAM,GAAuB,IAAI,CAAC;IAEtC,OAAO;QACL,GAAG;QAEH,KAAK,CAAC,KAAK;YACT,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC3D,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;oBAC1E,OAAO,CAAC,UAAU,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI;YACR,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,MAAM,CAAC;gBACjB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBACd,IAAI,GAAG;4BAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;4BAChB,OAAO,EAAE,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,mBAAmB,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;YAEhC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,18 @@ export declare class DrizzleSessionStore implements SessionStore {
49
49
  list(opts?: SessionListOptions): Promise<SessionListResult>;
50
50
  delete(sessionId: string): Promise<boolean>;
51
51
  cleanup(before: Date): Promise<number>;
52
+ /**
53
+ * Find the most recent session ID for a given scope_id.
54
+ * Returns null if no session exists for that scope.
55
+ *
56
+ * Note: this queries by scope_id only, without filtering by appId.
57
+ * The sessions table stores appId in metadata JSONB (not a column),
58
+ * so it can't be efficiently indexed or filtered here. This is safe
59
+ * in production (Neon per agent — only one agent's data in the DB).
60
+ * In shared-DB local dev, scope_ids are opaque ISV-controlled
61
+ * identifiers that won't collide across agents in practice.
62
+ */
63
+ findByScopeId(scopeId: string): Promise<string | null>;
52
64
  close(): Promise<void>;
53
65
  private ensureOpen;
54
66
  }
@@ -15,7 +15,7 @@
15
15
  * Errors bubble up as SessionStoreError — callers at module edges
16
16
  * (session manager, routes) are responsible for handling.
17
17
  */
18
- import { eq, lt, desc } from 'drizzle-orm';
18
+ import { eq, lt, desc, and } from 'drizzle-orm';
19
19
  import { SessionStoreError } from '../errors.js';
20
20
  import { notifySessionUpdated } from '@amodalai/db';
21
21
  import { buildListConditions, encodeCursor, rowToPersistedSession, sessionToRow, } from './store.js';
@@ -55,6 +55,7 @@ export class DrizzleSessionStore {
55
55
  .onConflictDoUpdate({
56
56
  target: this.table.id,
57
57
  set: {
58
+ scopeId: values.scopeId,
58
59
  messages: values.messages,
59
60
  tokenUsage: values.tokenUsage,
60
61
  metadata: values.metadata,
@@ -188,6 +189,37 @@ export class DrizzleSessionStore {
188
189
  }
189
190
  return result.length;
190
191
  }
192
+ /**
193
+ * Find the most recent session ID for a given scope_id.
194
+ * Returns null if no session exists for that scope.
195
+ *
196
+ * Note: this queries by scope_id only, without filtering by appId.
197
+ * The sessions table stores appId in metadata JSONB (not a column),
198
+ * so it can't be efficiently indexed or filtered here. This is safe
199
+ * in production (Neon per agent — only one agent's data in the DB).
200
+ * In shared-DB local dev, scope_ids are opaque ISV-controlled
201
+ * identifiers that won't collide across agents in practice.
202
+ */
203
+ async findByScopeId(scopeId) {
204
+ this.ensureOpen('findByScopeId');
205
+ try {
206
+ const rows = await this.db
207
+ .select({ id: this.table.id })
208
+ .from(this.table)
209
+ .where(and(eq(this.table.scopeId, scopeId)))
210
+ .orderBy(desc(this.table.updatedAt))
211
+ .limit(1);
212
+ return rows[0]?.id ?? null;
213
+ }
214
+ catch (cause) {
215
+ throw new SessionStoreError('Failed to find session by scope', {
216
+ backend: this.backendName,
217
+ operation: 'findByScopeId',
218
+ cause,
219
+ context: { scopeId },
220
+ });
221
+ }
222
+ }
191
223
  async close() {
192
224
  if (this.closed)
193
225
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle-session-store.js","sourceRoot":"","sources":["../../../src/session/drizzle-session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drizzle-session-store.js","sourceRoot":"","sources":["../../../src/session/drizzle-session-store.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ import type { Session, SessionManagerOptions, CreateSessionOptions, PersistedSes
17
17
  export declare class StandaloneSessionManager {
18
18
  private readonly sessions;
19
19
  private readonly pendingResumes;
20
- private readonly store;
20
+ readonly store: SessionStore | null;
21
21
  private readonly logger;
22
22
  private readonly ttlMs;
23
23
  private readonly cleanupIntervalMs;
@@ -90,6 +90,8 @@ export declare class StandaloneSessionManager {
90
90
  }): Promise<PersistedSession[]>;
91
91
  /** Number of active in-memory sessions. */
92
92
  get size(): number;
93
+ /** Get the backing session store (for advanced queries like findByScopeId). */
94
+ getStore(): SessionStore | null;
93
95
  /**
94
96
  * Destroy a session. Removes from memory and optionally from store.
95
97
  */
@@ -109,21 +109,28 @@ export class StandaloneSessionManager {
109
109
  const id = randomUUID();
110
110
  const now = Date.now();
111
111
  const appId = opts.appId ?? 'local';
112
+ const scopeId = opts.scopeId ?? '';
112
113
  // Persist appId into metadata so SessionStore.list() can filter by it
113
114
  // (e.g. exclude eval-runner / admin sessions from the chat history UI).
114
115
  const metadata = { ...(opts.metadata ?? {}), appId };
116
+ // Create a child logger with scopeId so all downstream log events for this
117
+ // session automatically include scope_id for correlation and filtering.
118
+ const sessionLogger = scopeId
119
+ ? this.logger.child({ scopeId })
120
+ : this.logger;
115
121
  const session = {
116
122
  id,
117
123
  provider: opts.provider,
118
124
  toolRegistry: opts.toolRegistry,
119
125
  permissionChecker: opts.permissionChecker,
120
- logger: this.logger,
126
+ logger: sessionLogger,
121
127
  systemPrompt: opts.systemPrompt,
122
128
  messages: opts.messages ?? [],
123
129
  usage: opts.usage ?? { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
124
130
  model: opts.provider.model,
125
131
  providerName: opts.provider.provider,
126
132
  appId,
133
+ scopeId,
127
134
  metadata,
128
135
  createdAt: now,
129
136
  lastAccessedAt: now,
@@ -138,6 +145,7 @@ export class StandaloneSessionManager {
138
145
  model: session.model,
139
146
  provider: session.providerName,
140
147
  appId: session.appId,
148
+ scopeId: session.scopeId,
141
149
  toolCount: opts.toolRegistry.size,
142
150
  });
143
151
  this.eventBus?.emit({
@@ -245,6 +253,7 @@ export class StandaloneSessionManager {
245
253
  const persisted = {
246
254
  version: 1,
247
255
  id: session.id,
256
+ scopeId: session.scopeId,
248
257
  messages: session.messages,
249
258
  tokenUsage: session.usage,
250
259
  metadata: session.metadata,
@@ -338,6 +347,10 @@ export class StandaloneSessionManager {
338
347
  get size() {
339
348
  return this.sessions.size;
340
349
  }
350
+ /** Get the backing session store (for advanced queries like findByScopeId). */
351
+ getStore() {
352
+ return this.store;
353
+ }
341
354
  // -------------------------------------------------------------------------
342
355
  // Destroy / Cleanup
343
356
  // -------------------------------------------------------------------------
@@ -413,6 +426,7 @@ function makeNoOpToolContext(session) {
413
426
  log: (message) => { session.logger.debug('tool_log', { session: session.id, message }); },
414
427
  signal: AbortSignal.timeout(30_000),
415
428
  sessionId: session.id,
429
+ scopeId: '',
416
430
  });
417
431
  }
418
432
  //# sourceMappingURL=manager.js.map