@amodalai/runtime 0.3.22 → 0.3.23

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 (100) 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 +55 -1
  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/scope.d.ts +18 -0
  32. package/dist/src/scope.js +15 -0
  33. package/dist/src/scope.js.map +1 -0
  34. package/dist/src/scope.test.d.ts +6 -0
  35. package/dist/src/scope.test.js +64 -0
  36. package/dist/src/scope.test.js.map +1 -0
  37. package/dist/src/session/drizzle-session-store.d.ts +12 -0
  38. package/dist/src/session/drizzle-session-store.js +33 -1
  39. package/dist/src/session/drizzle-session-store.js.map +1 -1
  40. package/dist/src/session/manager.d.ts +3 -1
  41. package/dist/src/session/manager.js +15 -1
  42. package/dist/src/session/manager.js.map +1 -1
  43. package/dist/src/session/session-builder.d.ts +11 -0
  44. package/dist/src/session/session-builder.js +22 -7
  45. package/dist/src/session/session-builder.js.map +1 -1
  46. package/dist/src/session/store.d.ts +6 -0
  47. package/dist/src/session/store.js +2 -3
  48. package/dist/src/session/store.js.map +1 -1
  49. package/dist/src/session/store.test.js +4 -0
  50. package/dist/src/session/store.test.js.map +1 -1
  51. package/dist/src/session/tool-context-factory.d.ts +17 -1
  52. package/dist/src/session/tool-context-factory.js +95 -9
  53. package/dist/src/session/tool-context-factory.js.map +1 -1
  54. package/dist/src/session/tool-context-factory.test.js +2 -1
  55. package/dist/src/session/tool-context-factory.test.js.map +1 -1
  56. package/dist/src/session/types.d.ts +6 -0
  57. package/dist/src/stores/drizzle-store-backend.d.ts +6 -6
  58. package/dist/src/stores/drizzle-store-backend.js +24 -19
  59. package/dist/src/stores/drizzle-store-backend.js.map +1 -1
  60. package/dist/src/stores/drizzle-store-backend.test.js +41 -41
  61. package/dist/src/stores/drizzle-store-backend.test.js.map +1 -1
  62. package/dist/src/stores/index.d.ts +1 -0
  63. package/dist/src/stores/index.js +1 -0
  64. package/dist/src/stores/index.js.map +1 -1
  65. package/dist/src/stores/scoped-store-backend.d.ts +36 -0
  66. package/dist/src/stores/scoped-store-backend.js +59 -0
  67. package/dist/src/stores/scoped-store-backend.js.map +1 -0
  68. package/dist/src/stores/scoped-store-backend.test.d.ts +6 -0
  69. package/dist/src/stores/scoped-store-backend.test.js +159 -0
  70. package/dist/src/stores/scoped-store-backend.test.js.map +1 -0
  71. package/dist/src/tools/custom-tool-adapter.d.ts +1 -1
  72. package/dist/src/tools/custom-tool-adapter.js +1 -1
  73. package/dist/src/tools/custom-tool-adapter.js.map +1 -1
  74. package/dist/src/tools/custom-tool-adapter.test.js +2 -1
  75. package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
  76. package/dist/src/tools/fetch-url-tool.test.js +1 -0
  77. package/dist/src/tools/fetch-url-tool.test.js.map +1 -1
  78. package/dist/src/tools/mcp-tool-adapter.test.js +1 -0
  79. package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -1
  80. package/dist/src/tools/memory-tool.d.ts +5 -3
  81. package/dist/src/tools/memory-tool.js +30 -30
  82. package/dist/src/tools/memory-tool.js.map +1 -1
  83. package/dist/src/tools/memory-tool.test.js +1 -0
  84. package/dist/src/tools/memory-tool.test.js.map +1 -1
  85. package/dist/src/tools/registry.test.js +1 -0
  86. package/dist/src/tools/registry.test.js.map +1 -1
  87. package/dist/src/tools/request-tool.test.js +1 -0
  88. package/dist/src/tools/request-tool.test.js.map +1 -1
  89. package/dist/src/tools/store-tools.js +7 -7
  90. package/dist/src/tools/store-tools.js.map +1 -1
  91. package/dist/src/tools/store-tools.test.js +8 -7
  92. package/dist/src/tools/store-tools.test.js.map +1 -1
  93. package/dist/src/tools/types.d.ts +4 -0
  94. package/dist/src/tools/web-search-tool.test.js +1 -0
  95. package/dist/src/tools/web-search-tool.test.js.map +1 -1
  96. package/dist/src/types.d.ts +8 -0
  97. package/dist/src/types.js +4 -0
  98. package/dist/src/types.js.map +1 -1
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +4 -4
@@ -45,94 +45,94 @@ function runSuite(makeBackend) {
45
45
  });
46
46
  describe('tenant isolation', () => {
47
47
  it('same (store, key) across different appIds do not collide', async () => {
48
- await backend.put('tenant-a', 'test-store', 'shared', { id: 'shared', value: 'A' }, {});
49
- await backend.put('tenant-b', 'test-store', 'shared', { id: 'shared', value: 'B' }, {});
50
- const a = await backend.get('tenant-a', 'test-store', 'shared');
51
- const b = await backend.get('tenant-b', 'test-store', 'shared');
48
+ await backend.put('tenant-a', '', 'test-store', 'shared', { id: 'shared', value: 'A' }, {});
49
+ await backend.put('tenant-b', '', 'test-store', 'shared', { id: 'shared', value: 'B' }, {});
50
+ const a = await backend.get('tenant-a', '', 'test-store', 'shared');
51
+ const b = await backend.get('tenant-b', '', 'test-store', 'shared');
52
52
  expect(a?.payload['value']).toBe('A');
53
53
  expect(b?.payload['value']).toBe('B');
54
54
  });
55
55
  it('list only returns the caller\'s appId rows', async () => {
56
- await backend.put('tenant-a', 'test-store', 'a1', { id: 'a1' }, {});
57
- await backend.put('tenant-a', 'test-store', 'a2', { id: 'a2' }, {});
58
- await backend.put('tenant-b', 'test-store', 'b1', { id: 'b1' }, {});
59
- const resA = await backend.list('tenant-a', 'test-store');
60
- const resB = await backend.list('tenant-b', 'test-store');
56
+ await backend.put('tenant-a', '', 'test-store', 'a1', { id: 'a1' }, {});
57
+ await backend.put('tenant-a', '', 'test-store', 'a2', { id: 'a2' }, {});
58
+ await backend.put('tenant-b', '', 'test-store', 'b1', { id: 'b1' }, {});
59
+ const resA = await backend.list('tenant-a', '', 'test-store');
60
+ const resB = await backend.list('tenant-b', '', 'test-store');
61
61
  expect(resA.total).toBe(2);
62
62
  expect(resB.total).toBe(1);
63
63
  expect(resA.documents.every((d) => d.appId === 'tenant-a')).toBe(true);
64
64
  expect(resB.documents.every((d) => d.appId === 'tenant-b')).toBe(true);
65
65
  });
66
66
  it('delete on one tenant does not affect the other', async () => {
67
- await backend.put('tenant-a', 'test-store', 'k', { id: 'k' }, {});
68
- await backend.put('tenant-b', 'test-store', 'k', { id: 'k' }, {});
69
- await backend.delete('tenant-a', 'test-store', 'k');
70
- expect(await backend.get('tenant-a', 'test-store', 'k')).toBeNull();
71
- expect(await backend.get('tenant-b', 'test-store', 'k')).not.toBeNull();
67
+ await backend.put('tenant-a', '', 'test-store', 'k', { id: 'k' }, {});
68
+ await backend.put('tenant-b', '', 'test-store', 'k', { id: 'k' }, {});
69
+ await backend.delete('tenant-a', '', 'test-store', 'k');
70
+ expect(await backend.get('tenant-a', '', 'test-store', 'k')).toBeNull();
71
+ expect(await backend.get('tenant-b', '', 'test-store', 'k')).not.toBeNull();
72
72
  });
73
73
  });
74
74
  describe('concurrent writes', () => {
75
75
  it('serializes parallel puts to the same key via write queue', async () => {
76
- const writes = Array.from({ length: 20 }, (_, i) => backend.put('app', 'test-store', 'same-key', { id: 'same-key', n: i }, {}));
76
+ const writes = Array.from({ length: 20 }, (_, i) => backend.put('app', '', 'test-store', 'same-key', { id: 'same-key', n: i }, {}));
77
77
  const results = await Promise.all(writes);
78
78
  expect(results.every((r) => r.stored)).toBe(true);
79
- const final = await backend.get('app', 'test-store', 'same-key');
79
+ const final = await backend.get('app', '', 'test-store', 'same-key');
80
80
  expect(final?.version).toBe(20);
81
81
  });
82
82
  });
83
83
  describe('purgeExpired', () => {
84
84
  it('removes only expired rows and returns the count', async () => {
85
- await backend.put('app', 'ttl-store', 'e1', { id: 'e1' }, {});
86
- await backend.put('app', 'ttl-store', 'e2', { id: 'e2' }, {});
87
- await backend.put('app', 'test-store', 'keep', { id: 'keep' }, {});
85
+ await backend.put('app', '', 'ttl-store', 'e1', { id: 'e1' }, {});
86
+ await backend.put('app', '', 'ttl-store', 'e2', { id: 'e2' }, {});
87
+ await backend.put('app', '', 'test-store', 'keep', { id: 'keep' }, {});
88
88
  await new Promise((r) => setTimeout(r, 1100));
89
- const purged = await backend.purgeExpired('app');
89
+ const purged = await backend.purgeExpired('app', '');
90
90
  expect(purged).toBe(2);
91
- expect(await backend.get('app', 'ttl-store', 'e1')).toBeNull();
92
- expect(await backend.get('app', 'ttl-store', 'e2')).toBeNull();
93
- expect(await backend.get('app', 'test-store', 'keep')).not.toBeNull();
91
+ expect(await backend.get('app', '', 'ttl-store', 'e1')).toBeNull();
92
+ expect(await backend.get('app', '', 'ttl-store', 'e2')).toBeNull();
93
+ expect(await backend.get('app', '', 'test-store', 'keep')).not.toBeNull();
94
94
  });
95
95
  it('scoped purge only touches the named store', async () => {
96
- await backend.put('app', 'ttl-store', 'a', { id: 'a' }, {});
97
- await backend.put('app', 'test-store', 'b', { id: 'b' }, {});
96
+ await backend.put('app', '', 'ttl-store', 'a', { id: 'a' }, {});
97
+ await backend.put('app', '', 'test-store', 'b', { id: 'b' }, {});
98
98
  await new Promise((r) => setTimeout(r, 1100));
99
- const purged = await backend.purgeExpired('app', 'ttl-store');
99
+ const purged = await backend.purgeExpired('app', '', 'ttl-store');
100
100
  expect(purged).toBe(1);
101
- expect(await backend.get('app', 'test-store', 'b')).not.toBeNull();
101
+ expect(await backend.get('app', '', 'test-store', 'b')).not.toBeNull();
102
102
  });
103
103
  it('excludes expired rows from list() when includeStale is false', async () => {
104
- await backend.put('app', 'ttl-store', 'x', { id: 'x' }, {});
104
+ await backend.put('app', '', 'ttl-store', 'x', { id: 'x' }, {});
105
105
  await new Promise((r) => setTimeout(r, 1100));
106
- const defaultList = await backend.list('app', 'ttl-store');
106
+ const defaultList = await backend.list('app', '', 'ttl-store');
107
107
  expect(defaultList.total).toBe(0);
108
- const withStale = await backend.list('app', 'ttl-store', { includeStale: true });
108
+ const withStale = await backend.list('app', '', 'ttl-store', { includeStale: true });
109
109
  expect(withStale.total).toBe(1);
110
110
  expect(withStale.documents[0].meta.stale).toBe(true);
111
111
  });
112
112
  });
113
113
  describe('filter-field validation', () => {
114
114
  it('rejects filter field names with injection characters', async () => {
115
- await backend.put('app', 'test-store', 'k', { id: 'k' }, {});
116
- await expect(backend.list('app', 'test-store', { filter: { "'; DROP TABLE store_documents; --": 'x' } })).rejects.toBeInstanceOf(StoreError);
115
+ await backend.put('app', '', 'test-store', 'k', { id: 'k' }, {});
116
+ await expect(backend.list('app', '', 'test-store', { filter: { "'; DROP TABLE store_documents; --": 'x' } })).rejects.toBeInstanceOf(StoreError);
117
117
  });
118
118
  it('rejects filter fields containing whitespace or punctuation', async () => {
119
- await expect(backend.list('app', 'test-store', { filter: { 'value OR 1=1': 'x' } })).rejects.toBeInstanceOf(StoreError);
119
+ await expect(backend.list('app', '', 'test-store', { filter: { 'value OR 1=1': 'x' } })).rejects.toBeInstanceOf(StoreError);
120
120
  });
121
121
  it('rejects sort field with injection characters', async () => {
122
- await expect(backend.list('app', 'test-store', { sort: "value); DROP TABLE x; --" })).rejects.toBeInstanceOf(StoreError);
122
+ await expect(backend.list('app', '', 'test-store', { sort: "value); DROP TABLE x; --" })).rejects.toBeInstanceOf(StoreError);
123
123
  });
124
124
  it('accepts valid snake_case filter field', async () => {
125
- await backend.put('app', 'test-store', 'k', { id: 'k', my_field: 'yes' }, {});
126
- const result = await backend.list('app', 'test-store', { filter: { my_field: 'yes' } });
125
+ await backend.put('app', '', 'test-store', 'k', { id: 'k', my_field: 'yes' }, {});
126
+ const result = await backend.list('app', '', 'test-store', { filter: { my_field: 'yes' } });
127
127
  expect(result.total).toBe(1);
128
128
  });
129
129
  });
130
130
  describe('versioning edge cases', () => {
131
131
  it('history respects maxVersions trim', async () => {
132
132
  for (let i = 1; i <= 6; i++) {
133
- await backend.put('app', 'versioned-store', 'k', { id: 'k', n: i }, {});
133
+ await backend.put('app', '', 'versioned-store', 'k', { id: 'k', n: i }, {});
134
134
  }
135
- const history = await backend.history('app', 'versioned-store', 'k');
135
+ const history = await backend.history('app', '', 'versioned-store', 'k');
136
136
  expect(history).toHaveLength(3);
137
137
  expect(history[0].version).toBe(5);
138
138
  expect(history[2].version).toBe(3);
@@ -140,11 +140,11 @@ function runSuite(makeBackend) {
140
140
  });
141
141
  describe('close() idempotency', () => {
142
142
  it('double-close is safe and ops after close throw StoreError', async () => {
143
- await backend.put('app', 'test-store', 'k', { id: 'k' }, {});
143
+ await backend.put('app', '', 'test-store', 'k', { id: 'k' }, {});
144
144
  await backend.close();
145
145
  await backend.close();
146
- await expect(backend.get('app', 'test-store', 'k')).rejects.toBeInstanceOf(StoreError);
147
- await expect(backend.put('app', 'test-store', 'k', { id: 'k' }, {})).rejects.toBeInstanceOf(StoreError);
146
+ await expect(backend.get('app', '', 'test-store', 'k')).rejects.toBeInstanceOf(StoreError);
147
+ await expect(backend.put('app', '', 'test-store', 'k', { id: 'k' }, {})).rejects.toBeInstanceOf(StoreError);
148
148
  });
149
149
  });
150
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle-store-backend.test.js","sourceRoot":"","sources":["../../../src/stores/drizzle-store-backend.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drizzle-store-backend.test.js","sourceRoot":"","sources":["../../../src/stores/drizzle-store-backend.test.ts"],"names":[],"mappings":"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"}
@@ -8,3 +8,4 @@ export { createPostgresStoreBackend } from './postgres-store-backend.js';
8
8
  export type { PostgresStoreBackendOptions } from './postgres-store-backend.js';
9
9
  export { resolveKey } from './key-resolver.js';
10
10
  export { resolveTtl, evaluateCondition } from './ttl-resolver.js';
11
+ export { ScopedStoreBackend } from './scoped-store-backend.js';
@@ -7,4 +7,5 @@ export { DrizzleStoreBackend } from './drizzle-store-backend.js';
7
7
  export { createPostgresStoreBackend } from './postgres-store-backend.js';
8
8
  export { resolveKey } from './key-resolver.js';
9
9
  export { resolveTtl, evaluateCondition } from './ttl-resolver.js';
10
+ export { ScopedStoreBackend } from './scoped-store-backend.js';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAC,0BAA0B,EAAC,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAC,0BAA0B,EAAC,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * ScopedStoreBackend — wraps a StoreBackend and enforces scope isolation.
8
+ *
9
+ * Shared stores (marked with `shared: true` in the store JSON) are readable
10
+ * by all scopes but write-protected. Scoped stores read and write with the
11
+ * provided scopeId for per-user isolation.
12
+ *
13
+ * Scope resolution:
14
+ * - Reads (get, list, history): use '' for shared stores, scopeId otherwise
15
+ * - Writes (put, delete): throw StoreError for shared stores (read-only)
16
+ * - purgeExpired/initialize/close: delegate directly, no scope resolution
17
+ */
18
+ import type { StoreBackend, StoreDocument, StoreDocumentMeta, StorePutResult, StoreListResult, StoreListOptions, LoadedStore } from '@amodalai/types';
19
+ export declare class ScopedStoreBackend implements StoreBackend {
20
+ private readonly inner;
21
+ private readonly scopeId;
22
+ private readonly sharedStores;
23
+ constructor(inner: StoreBackend, scopeId: string, sharedStores: Set<string>);
24
+ /** Resolve the scopeId to use for read operations. Shared stores always use ''. */
25
+ private readScopeId;
26
+ /** Assert a store is writable (not shared). Throws StoreError otherwise. */
27
+ private assertWritable;
28
+ initialize(stores: LoadedStore[]): Promise<void>;
29
+ get(appId: string, _scopeId: string, store: string, key: string): Promise<StoreDocument | null>;
30
+ put(appId: string, _scopeId: string, store: string, key: string, payload: Record<string, unknown>, meta: Partial<StoreDocumentMeta>): Promise<StorePutResult>;
31
+ list(appId: string, _scopeId: string, store: string, options?: StoreListOptions): Promise<StoreListResult>;
32
+ delete(appId: string, _scopeId: string, store: string, key: string): Promise<boolean>;
33
+ history(appId: string, _scopeId: string, store: string, key: string): Promise<StoreDocument[]>;
34
+ purgeExpired(appId: string, scopeId: string, store?: string): Promise<number>;
35
+ close(): Promise<void>;
36
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { StoreError } from '../errors.js';
7
+ export class ScopedStoreBackend {
8
+ inner;
9
+ scopeId;
10
+ sharedStores;
11
+ constructor(inner, scopeId, sharedStores) {
12
+ this.inner = inner;
13
+ this.scopeId = scopeId;
14
+ this.sharedStores = sharedStores;
15
+ }
16
+ // ---------------------------------------------------------------------------
17
+ // Scope helpers
18
+ // ---------------------------------------------------------------------------
19
+ /** Resolve the scopeId to use for read operations. Shared stores always use ''. */
20
+ readScopeId(store) {
21
+ return this.sharedStores.has(store) ? '' : this.scopeId;
22
+ }
23
+ /** Assert a store is writable (not shared). Throws StoreError otherwise. */
24
+ assertWritable(store, operation) {
25
+ if (this.sharedStores.has(store)) {
26
+ throw new StoreError(`Store "${store}" is shared (read-only) — writes are not allowed`, { store, operation, context: { scopeId: this.scopeId } });
27
+ }
28
+ }
29
+ // ---------------------------------------------------------------------------
30
+ // StoreBackend implementation
31
+ // ---------------------------------------------------------------------------
32
+ initialize(stores) {
33
+ return this.inner.initialize(stores);
34
+ }
35
+ get(appId, _scopeId, store, key) {
36
+ return this.inner.get(appId, this.readScopeId(store), store, key);
37
+ }
38
+ put(appId, _scopeId, store, key, payload, meta) {
39
+ this.assertWritable(store, 'put');
40
+ return this.inner.put(appId, this.scopeId, store, key, payload, meta);
41
+ }
42
+ list(appId, _scopeId, store, options) {
43
+ return this.inner.list(appId, this.readScopeId(store), store, options);
44
+ }
45
+ delete(appId, _scopeId, store, key) {
46
+ this.assertWritable(store, 'delete');
47
+ return this.inner.delete(appId, this.scopeId, store, key);
48
+ }
49
+ history(appId, _scopeId, store, key) {
50
+ return this.inner.history(appId, this.readScopeId(store), store, key);
51
+ }
52
+ purgeExpired(appId, scopeId, store) {
53
+ return this.inner.purgeExpired(appId, scopeId, store);
54
+ }
55
+ close() {
56
+ return this.inner.close();
57
+ }
58
+ }
59
+ //# sourceMappingURL=scoped-store-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-store-backend.js","sourceRoot":"","sources":["../../../src/stores/scoped-store-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IAHnB,YACmB,KAAmB,EACnB,OAAe,EACf,YAAyB;QAFzB,UAAK,GAAL,KAAK,CAAc;QACnB,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAa;IACzC,CAAC;IAEJ,8EAA8E;IAC9E,gBAAgB;IAChB,8EAA8E;IAE9E,mFAAmF;IAC3E,WAAW,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,4EAA4E;IACpE,cAAc,CAAC,KAAa,EAAE,SAAiB;QACrD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAClB,UAAU,KAAK,kDAAkD,EACjE,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,EAAC,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,8BAA8B;IAC9B,8EAA8E;IAE9E,UAAU,CAAC,MAAqB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAW;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,GAAG,CACD,KAAa,EACb,QAAgB,EAChB,KAAa,EACb,GAAW,EACX,OAAgC,EAChC,IAAgC;QAEhC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CACF,KAAa,EACb,QAAgB,EAChB,KAAa,EACb,OAA0B;QAE1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAW;QAChE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAW;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,OAAe,EAAE,KAAc;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};
@@ -0,0 +1,159 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
7
+ import { ScopedStoreBackend } from './scoped-store-backend.js';
8
+ import { StoreError } from '../errors.js';
9
+ // ---------------------------------------------------------------------------
10
+ // Minimal mock backend
11
+ // ---------------------------------------------------------------------------
12
+ function makeMockBackend() {
13
+ return {
14
+ initialize: vi.fn().mockResolvedValue(undefined),
15
+ get: vi.fn().mockResolvedValue(null),
16
+ put: vi.fn().mockResolvedValue({ stored: true, key: 'k', version: 1 }),
17
+ list: vi.fn().mockResolvedValue({ documents: [], total: 0, hasMore: false }),
18
+ delete: vi.fn().mockResolvedValue(true),
19
+ history: vi.fn().mockResolvedValue([]),
20
+ purgeExpired: vi.fn().mockResolvedValue(0),
21
+ close: vi.fn().mockResolvedValue(undefined),
22
+ };
23
+ }
24
+ function makeDoc() {
25
+ return {
26
+ key: 'k',
27
+ appId: 'app',
28
+ store: 'scoped-store',
29
+ version: 1,
30
+ payload: { id: 'k' },
31
+ meta: {},
32
+ };
33
+ }
34
+ const APP_ID = 'my-app';
35
+ const SCOPE_ID = 'user-99';
36
+ const SCOPED_STORE = 'scoped-store';
37
+ const SHARED_STORE = 'shared-catalog';
38
+ // ---------------------------------------------------------------------------
39
+ // Tests
40
+ // ---------------------------------------------------------------------------
41
+ describe('ScopedStoreBackend', () => {
42
+ let inner;
43
+ let backend;
44
+ beforeEach(() => {
45
+ inner = makeMockBackend();
46
+ backend = new ScopedStoreBackend(inner, SCOPE_ID, new Set([SHARED_STORE]));
47
+ });
48
+ // -------------------------------------------------------------------------
49
+ // get
50
+ // -------------------------------------------------------------------------
51
+ describe('get', () => {
52
+ it('normal store: passes scopeId to inner backend', async () => {
53
+ vi.mocked(inner.get).mockResolvedValueOnce(makeDoc());
54
+ await backend.get(APP_ID, '', SCOPED_STORE, 'k');
55
+ expect(inner.get).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, 'k');
56
+ });
57
+ it('shared store: passes empty scopeId to inner backend', async () => {
58
+ await backend.get(APP_ID, '', SHARED_STORE, 'k');
59
+ expect(inner.get).toHaveBeenCalledWith(APP_ID, '', SHARED_STORE, 'k');
60
+ });
61
+ });
62
+ // -------------------------------------------------------------------------
63
+ // list
64
+ // -------------------------------------------------------------------------
65
+ describe('list', () => {
66
+ it('normal store: passes scopeId to inner backend', async () => {
67
+ await backend.list(APP_ID, '', SCOPED_STORE);
68
+ expect(inner.list).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, undefined);
69
+ });
70
+ it('shared store: passes empty scopeId to inner backend', async () => {
71
+ await backend.list(APP_ID, '', SHARED_STORE);
72
+ expect(inner.list).toHaveBeenCalledWith(APP_ID, '', SHARED_STORE, undefined);
73
+ });
74
+ it('forwards list options to inner backend', async () => {
75
+ const opts = { filter: { status: 'active' }, limit: 10 };
76
+ await backend.list(APP_ID, '', SCOPED_STORE, opts);
77
+ expect(inner.list).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, opts);
78
+ });
79
+ });
80
+ // -------------------------------------------------------------------------
81
+ // put
82
+ // -------------------------------------------------------------------------
83
+ describe('put', () => {
84
+ it('normal store: passes scopeId to inner backend', async () => {
85
+ const payload = { id: 'k', name: 'test' };
86
+ const meta = { computedAt: '2026-01-01T00:00:00Z' };
87
+ await backend.put(APP_ID, '', SCOPED_STORE, 'k', payload, meta);
88
+ expect(inner.put).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, 'k', payload, meta);
89
+ });
90
+ it('shared store: throws StoreError', async () => {
91
+ await expect(async () => backend.put(APP_ID, '', SHARED_STORE, 'k', { id: 'k' }, {})).rejects.toBeInstanceOf(StoreError);
92
+ });
93
+ it('shared store: StoreError message mentions the store name', async () => {
94
+ await expect(async () => backend.put(APP_ID, '', SHARED_STORE, 'k', { id: 'k' }, {})).rejects.toThrow(SHARED_STORE);
95
+ });
96
+ it('shared store: inner put is never called', async () => {
97
+ await expect(async () => backend.put(APP_ID, '', SHARED_STORE, 'k', { id: 'k' }, {})).rejects.toBeInstanceOf(StoreError);
98
+ expect(inner.put).not.toHaveBeenCalled();
99
+ });
100
+ });
101
+ // -------------------------------------------------------------------------
102
+ // delete
103
+ // -------------------------------------------------------------------------
104
+ describe('delete', () => {
105
+ it('normal store: passes scopeId to inner backend', async () => {
106
+ await backend.delete(APP_ID, '', SCOPED_STORE, 'k');
107
+ expect(inner.delete).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, 'k');
108
+ });
109
+ it('shared store: throws StoreError', async () => {
110
+ await expect(async () => backend.delete(APP_ID, '', SHARED_STORE, 'k')).rejects.toBeInstanceOf(StoreError);
111
+ });
112
+ it('shared store: inner delete is never called', async () => {
113
+ await expect(async () => backend.delete(APP_ID, '', SHARED_STORE, 'k')).rejects.toBeInstanceOf(StoreError);
114
+ expect(inner.delete).not.toHaveBeenCalled();
115
+ });
116
+ });
117
+ // -------------------------------------------------------------------------
118
+ // history
119
+ // -------------------------------------------------------------------------
120
+ describe('history', () => {
121
+ it('normal store: passes scopeId to inner backend', async () => {
122
+ await backend.history(APP_ID, '', SCOPED_STORE, 'k');
123
+ expect(inner.history).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE, 'k');
124
+ });
125
+ it('shared store: passes empty scopeId to inner backend', async () => {
126
+ await backend.history(APP_ID, '', SHARED_STORE, 'k');
127
+ expect(inner.history).toHaveBeenCalledWith(APP_ID, '', SHARED_STORE, 'k');
128
+ });
129
+ });
130
+ // -------------------------------------------------------------------------
131
+ // Delegation — initialize, close, purgeExpired
132
+ // -------------------------------------------------------------------------
133
+ describe('initialize', () => {
134
+ it('delegates to inner backend', async () => {
135
+ const stores = [];
136
+ await backend.initialize(stores);
137
+ expect(inner.initialize).toHaveBeenCalledWith(stores);
138
+ });
139
+ });
140
+ describe('close', () => {
141
+ it('delegates to inner backend', async () => {
142
+ await backend.close();
143
+ expect(inner.close).toHaveBeenCalled();
144
+ });
145
+ });
146
+ describe('purgeExpired', () => {
147
+ it('delegates to inner backend with the provided args', async () => {
148
+ vi.mocked(inner.purgeExpired).mockResolvedValueOnce(5);
149
+ const count = await backend.purgeExpired(APP_ID, SCOPE_ID, SCOPED_STORE);
150
+ expect(inner.purgeExpired).toHaveBeenCalledWith(APP_ID, SCOPE_ID, SCOPED_STORE);
151
+ expect(count).toBe(5);
152
+ });
153
+ it('delegates purgeExpired without a store name', async () => {
154
+ await backend.purgeExpired(APP_ID, SCOPE_ID);
155
+ expect(inner.purgeExpired).toHaveBeenCalledWith(APP_ID, SCOPE_ID, undefined);
156
+ });
157
+ });
158
+ });
159
+ //# sourceMappingURL=scoped-store-backend.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-store-backend.test.js","sourceRoot":"","sources":["../../../src/stores/scoped-store-backend.test.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export interface CustomToolSessionContext {
17
17
  }>;
18
18
  };
19
19
  storeBackend?: {
20
- put(appId: string, store: string, key: string, payload: Record<string, unknown>, meta: Record<string, unknown>): Promise<void>;
20
+ put(appId: string, scopeId: string, store: string, key: string, payload: Record<string, unknown>, meta: Record<string, unknown>): Promise<void>;
21
21
  };
22
22
  appId?: string;
23
23
  shellExecutor?: {
@@ -100,7 +100,7 @@ function buildCustomToolContext(tool, sessionCtx, runtimeCtx) {
100
100
  }
101
101
  const key = resolveKey(storeDef.entity.key, payload);
102
102
  const appId = sessionCtx.appId ?? LOCAL_APP_ID;
103
- await sessionCtx.storeBackend.put(appId, storeName, key, payload, {});
103
+ await sessionCtx.storeBackend.put(appId, runtimeCtx.scopeId, storeName, key, payload, {});
104
104
  return { key };
105
105
  },
106
106
  async exec(command, options) {
@@ -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;AAG9B,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,GAAG,EAAC,MAAM,cAAc,CAAC;AACjC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAqB7C,SAAS,sBAAsB,CAC7B,IAAgB,EAChB,UAAoC,EACpC,UAAuB;IAEvB,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3E,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM;YACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,kBAAkB,CAAC,eAAe,UAAU,aAAa,EAAE;oBACnE,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,EAAC,UAAU,EAAC;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC;YACvC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC/C,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,IAAI,uDAAuD,EACzE,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAC,MAAM,EAAC,EAAC,CACrD,CAAC;YACJ,CAAC;YAED,2HAA2H;YAC3H,MAAM,IAAI,GAAG,UAAqC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,kBAAkB,CAAC,eAAe,UAAU,mBAAmB,EAAE;oBACzE,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,EAAC,UAAU,EAAC;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,uEAAuE;YACvE,MAAM,OAAO,GAA2B,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC;YAE7E,gGAAgG;YAChG,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAG3B,CAAC;YAEd,IAAI,SAAS,EAAE,eAAe,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;oBACvC,wDAAwD;oBACxD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC;YACpC,MAAM,SAAS,GAAgB;gBAC7B,MAAM;gBACN,MAAM,EAAE,cAAc;gBACtB,OAAO;aACR,CAAC;YACF,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;gBACjB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,kBAAkB,CAC1B,GAAG,MAAM,IAAI,GAAG,aAAa,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EACxE,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,EAAC,CACvF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO;YAC5B,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC7B,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,EAAE;oBAC1D,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,EAAC,SAAS,EAAC;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,kBAAkB,CAAC,UAAU,SAAS,aAAa,EAAE;oBAC7D,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,EAAC,SAAS,EAAC;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,YAAY,CAAC;YAC/C,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACtE,OAAO,EAAC,GAAG,EAAC,CAAC;QACf,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;YACzB,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC7B,OAAO,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;oBAChD,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;oBACzC,GAAG,EAAE,OAAO,EAAE,GAAG;iBAClB,CAAC,CAAC;gBACH,OAAO,EAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,2FAA2F;gBAC3F,MAAM,CAAC,GAAG,GAAwD,CAAC;gBACnE,OAAO,EAAC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,GAAG,CAAC,OAAO;YACT,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,EAAE,cAAc;KACvB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAgB,EAChB,QAA4B,EAC5B,UAAoC;IAEpC,qEAAqE;IACrE,8EAA8E;IAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE3C,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK;QAChC,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ;SACnB;QAED,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,GAAgB;YAC7C,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,eAAe,GACnB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;gBAC3C,iIAAiI;gBACjI,CAAC,CAAC,MAAiC;gBACnC,CAAC,CAAC,EAAE,CAAC;YAET,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,MAAM;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtD,MAAM,IAAI,kBAAkB,CAAC,SAAS,IAAI,CAAC,IAAI,eAAe,EAAE;wBAC9D,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,MAAM,EAAE,EAAE;qBACX,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,IAAI,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACjF;oBACE,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;iBAC9C,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"custom-tool-adapter.js","sourceRoot":"","sources":["../../../src/tools/custom-tool-adapter.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ function makeToolContext(overrides) {
70
70
  log: vi.fn(),
71
71
  signal: AbortSignal.timeout(30_000),
72
72
  sessionId: 'sess-1',
73
+ scopeId: '',
73
74
  ...overrides,
74
75
  };
75
76
  }
@@ -197,7 +198,7 @@ describe('createCustomToolDefinition', () => {
197
198
  };
198
199
  const def = createCustomToolDefinition(makeTool(), executor, sessionCtx);
199
200
  const result = await def.execute({}, makeToolContext());
200
- expect(sessionCtx.storeBackend?.put).toHaveBeenCalledWith('test-app', 'alerts', 'a-1', { alert_id: 'a-1', severity: 'high' }, {});
201
+ expect(sessionCtx.storeBackend?.put).toHaveBeenCalledWith('test-app', '', 'alerts', 'a-1', { alert_id: 'a-1', severity: 'high' }, {});
201
202
  expect(result).toEqual({ key: 'a-1' });
202
203
  });
203
204
  it('throws when store backend is not available', async () => {