@cyanheads/mcp-ts-core 0.10.1 → 0.10.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/AGENTS.md +15 -9
- package/CLAUDE.md +15 -9
- package/README.md +5 -6
- package/changelog/0.10.x/0.10.2.md +35 -0
- package/changelog/0.10.x/0.10.3.md +46 -0
- package/dist/core/app.d.ts +36 -0
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +9 -4
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts +57 -15
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +12 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/index.d.ts +5 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/serverManifest.d.ts +18 -0
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +10 -2
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.d.ts +20 -0
- package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +74 -9
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/index.d.ts +2 -2
- package/dist/linter/rules/index.d.ts.map +1 -1
- package/dist/linter/rules/index.js +2 -2
- package/dist/linter/rules/index.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +4 -0
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +13 -0
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts +12 -0
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +48 -1
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/linter/types.d.ts +17 -0
- package/dist/linter/types.d.ts.map +1 -1
- package/dist/linter/validate.d.ts.map +1 -1
- package/dist/linter/validate.js +55 -1
- package/dist/linter/validate.js.map +1 -1
- package/dist/logs/combined.log +4 -0
- package/dist/logs/error.log +2 -0
- package/dist/logs/interactions.log +0 -0
- package/dist/mcp-server/notifications.d.ts +4 -4
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +1 -0
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +6 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +3 -0
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +9 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +13 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +23 -12
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts +18 -2
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +4 -1
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +2 -0
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +14 -2
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +37 -13
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts +1 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.js +36 -11
- package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +50 -3
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +163 -6
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/spillover.d.ts +6 -0
- package/dist/services/canvas/spillover.d.ts.map +1 -1
- package/dist/services/canvas/spillover.js +1 -0
- package/dist/services/canvas/spillover.js.map +1 -1
- package/dist/services/canvas/types.d.ts +21 -0
- package/dist/services/canvas/types.d.ts.map +1 -1
- package/dist/testing/index.d.ts +8 -14
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +10 -11
- package/dist/testing/index.js.map +1 -1
- package/package.json +7 -7
- package/skills/add-prompt/SKILL.md +33 -2
- package/skills/add-resource/SKILL.md +25 -1
- package/skills/add-service/SKILL.md +2 -2
- package/skills/add-test/SKILL.md +3 -3
- package/skills/add-tool/SKILL.md +38 -1
- package/skills/api-canvas/SKILL.md +23 -3
- package/skills/api-config/SKILL.md +12 -3
- package/skills/api-context/SKILL.md +57 -31
- package/skills/api-linter/SKILL.md +77 -3
- package/skills/api-mirror/SKILL.md +30 -1
- package/skills/api-testing/SKILL.md +2 -16
- package/skills/code-simplifier/SKILL.md +2 -2
- package/skills/design-mcp-server/SKILL.md +2 -1
- package/skills/polish-docs-meta/SKILL.md +1 -1
- package/skills/polish-docs-meta/references/agent-protocol.md +1 -1
- package/skills/report-issue-framework/SKILL.md +2 -2
- package/skills/security-pass/SKILL.md +6 -11
- package/templates/AGENTS.md +17 -5
- package/templates/CLAUDE.md +17 -5
- package/templates/Dockerfile +17 -0
- package/dist/mcp-server/roots/roots-registration.d.ts +0 -22
- package/dist/mcp-server/roots/roots-registration.d.ts.map +0 -1
- package/dist/mcp-server/roots/roots-registration.js +0 -25
- package/dist/mcp-server/roots/roots-registration.js.map +0 -1
|
@@ -30,8 +30,17 @@ export class CanvasInstance {
|
|
|
30
30
|
}
|
|
31
31
|
/** Register a table on the canvas. */
|
|
32
32
|
async registerTable(name, rows, options) {
|
|
33
|
-
this.expiresAt = this.registry.
|
|
34
|
-
|
|
33
|
+
this.expiresAt = this.registry.touchWithTable(this.canvasId, this.tenantId, name);
|
|
34
|
+
const result = await this.provider.registerTable(this.canvasId, name, rows, this.context, options);
|
|
35
|
+
if (options?.ttlMs !== undefined) {
|
|
36
|
+
this.registry.registerTableTtl(this.canvasId, this.tenantId, name, options.ttlMs);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// The provider replaces an existing table — the new registration's options
|
|
40
|
+
// fully describe its lifecycle, so a stale per-table TTL must not survive.
|
|
41
|
+
this.registry.dropTableBookkeeping(this.canvasId, this.tenantId, name);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
35
44
|
}
|
|
36
45
|
/**
|
|
37
46
|
* Register a SQL view on the canvas. `selectSql` runs through the same
|
|
@@ -49,33 +58,49 @@ export class CanvasInstance {
|
|
|
49
58
|
*/
|
|
50
59
|
async importFrom(sourceCanvasId, sourceTableName, options) {
|
|
51
60
|
this.expiresAt = this.registry.touchOrThrow(this.canvasId, this.tenantId);
|
|
52
|
-
this.registry.
|
|
53
|
-
|
|
61
|
+
this.registry.touchWithTable(sourceCanvasId, this.tenantId, sourceTableName);
|
|
62
|
+
const asName = options?.asName ?? sourceTableName;
|
|
63
|
+
const result = await this.provider.importFrom(this.canvasId, sourceCanvasId, sourceTableName, asName, this.context, options);
|
|
64
|
+
// The provider replaces an existing destination table; the imported copy
|
|
65
|
+
// carries no per-table TTL, so clear any stale entry under that name.
|
|
66
|
+
this.registry.dropTableBookkeeping(this.canvasId, this.tenantId, asName);
|
|
67
|
+
return result;
|
|
54
68
|
}
|
|
55
69
|
/** Run a SQL query against the canvas. */
|
|
56
70
|
async query(sql, options) {
|
|
57
|
-
this.expiresAt = this.registry.
|
|
58
|
-
|
|
71
|
+
this.expiresAt = this.registry.touchWithSqlTables(this.canvasId, this.tenantId, options?.registerAs, sql);
|
|
72
|
+
const result = await this.provider.query(this.canvasId, sql, this.context, options);
|
|
73
|
+
if (options?.registerAs !== undefined && options.ttlMs !== undefined) {
|
|
74
|
+
this.registry.registerTableTtl(this.canvasId, this.tenantId, options.registerAs, options.ttlMs);
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
59
77
|
}
|
|
60
78
|
/** Export a canvas table to a path or stream target. */
|
|
61
79
|
async export(tableName, target, options) {
|
|
62
|
-
this.expiresAt = this.registry.
|
|
80
|
+
this.expiresAt = this.registry.touchWithTable(this.canvasId, this.tenantId, tableName);
|
|
63
81
|
return await this.provider.export(this.canvasId, tableName, target, this.context, options);
|
|
64
82
|
}
|
|
65
|
-
/** Describe one or all canvas tables. */
|
|
83
|
+
/** Describe one or all canvas tables. Per-table `expiresAt` is injected for tables with a TTL. */
|
|
66
84
|
async describe(options) {
|
|
67
85
|
this.expiresAt = this.registry.touchOrThrow(this.canvasId, this.tenantId);
|
|
68
|
-
|
|
86
|
+
const result = await this.provider.describe(this.canvasId, this.context, options);
|
|
87
|
+
return this.registry.annotateDescribeResult(this.canvasId, this.tenantId, result);
|
|
69
88
|
}
|
|
70
89
|
/** Drop a single canvas table. Returns `true` when found and removed. */
|
|
71
90
|
async drop(name) {
|
|
72
91
|
this.expiresAt = this.registry.touchOrThrow(this.canvasId, this.tenantId);
|
|
73
|
-
|
|
92
|
+
const result = await this.provider.drop(this.canvasId, name, this.context);
|
|
93
|
+
if (result) {
|
|
94
|
+
this.registry.dropTableBookkeeping(this.canvasId, this.tenantId, name);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
74
97
|
}
|
|
75
98
|
/** Drop every table on the canvas. Returns the number dropped. */
|
|
76
99
|
async clear() {
|
|
77
100
|
this.expiresAt = this.registry.touchOrThrow(this.canvasId, this.tenantId);
|
|
78
|
-
|
|
101
|
+
const count = await this.provider.clear(this.canvasId, this.context);
|
|
102
|
+
this.registry.clearTableBookkeeping(this.canvasId, this.tenantId);
|
|
103
|
+
return count;
|
|
79
104
|
}
|
|
80
105
|
}
|
|
81
106
|
//# sourceMappingURL=CanvasInstance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasInstance.js","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasInstance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,iFAAiF;AACjF,MAAM,OAAO,cAAc;IAQd;IAEA;IAGQ;IACA;IACA;IAdnB,wFAAwF;IAC/E,KAAK,CAAU;IACxB,gFAAgF;IAChF,SAAS,CAAS;IAElB;IACE,4EAA4E;IACnE,QAAgB;IACzB,wFAAwF;IAC/E,QAAgB,EACzB,KAAc,EACd,SAAiB,EACA,QAAwB,EACxB,QAA6B,EAC7B,OAA2B;QAPnC,aAAQ,GAAR,QAAQ,CAAQ;QAEhB,aAAQ,GAAR,QAAQ,CAAQ;QAGR,aAAQ,GAAR,QAAQ,CAAgB;QACxB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,YAAO,GAAP,OAAO,CAAoB;QAE5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,IAAkB,EAClB,OAA8B;QAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"CanvasInstance.js","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
* @fileoverview Canvas lifecycle registry. Keys canvases by (tenantId, canvasId),
|
|
3
3
|
* generates crypto-secure 10-char URL-safe IDs, enforces a sliding 24h TTL
|
|
4
4
|
* with a 7-day absolute cap, runs a periodic sweeper, and caps active canvases
|
|
5
|
-
* per tenant (default 100).
|
|
5
|
+
* per tenant (default 100). Also tracks per-table TTLs; the sweep loop drops
|
|
6
|
+
* expired tables before evaluating canvas-level expiry. Public access is gated
|
|
7
|
+
* by {@link DataCanvas}.
|
|
6
8
|
* @module src/services/canvas/core/CanvasRegistry
|
|
7
9
|
*/
|
|
8
10
|
import { type RequestContextLike } from '../../../utils/internal/requestContext.js';
|
|
11
|
+
import type { TableInfo } from '../types.js';
|
|
9
12
|
import type { IDataCanvasProvider } from './IDataCanvasProvider.js';
|
|
10
13
|
/** Tunable lifecycle constants for the registry. */
|
|
11
14
|
export interface CanvasRegistryOptions {
|
|
@@ -64,9 +67,45 @@ export declare class CanvasRegistry {
|
|
|
64
67
|
/**
|
|
65
68
|
* Validate that `canvasId` belongs to `tenantId` and is not expired, then
|
|
66
69
|
* extend its TTL and return the resolved expiry. Used by {@link CanvasInstance}
|
|
67
|
-
* before every op so individual operations slide the window.
|
|
70
|
+
* before every op so individual operations slide the canvas window.
|
|
68
71
|
*/
|
|
69
72
|
touchOrThrow(canvasId: string, tenantId: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Slide the canvas TTL **and** the per-table TTL for `tableName` (if it has
|
|
75
|
+
* one). Throws `NotFound` when the canvas is gone or expired. Used by
|
|
76
|
+
* {@link CanvasInstance} on table-scoped ops (`registerTable`, `query`).
|
|
77
|
+
*/
|
|
78
|
+
touchWithTable(canvasId: string, tenantId: string, tableName: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Slide per-table TTLs for every table name that appears as a word-boundary
|
|
81
|
+
* match in `sqlText`, in addition to the canvas-level touch and an explicit
|
|
82
|
+
* `primaryTable` slide. Used by `query()` to slide all tables referenced in
|
|
83
|
+
* the SQL, not just the `registerAs` target.
|
|
84
|
+
*/
|
|
85
|
+
touchWithSqlTables(canvasId: string, tenantId: string, primaryTable: string | undefined, sqlText: string): string;
|
|
86
|
+
/**
|
|
87
|
+
* Register (or replace) a per-table TTL entry. Called by {@link CanvasInstance}
|
|
88
|
+
* after a successful `registerTable` with `ttlMs` set.
|
|
89
|
+
*/
|
|
90
|
+
registerTableTtl(canvasId: string, tenantId: string, tableName: string, ttlMs: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Remove per-table TTL bookkeeping for `tableName`. Called when a table is
|
|
93
|
+
* explicitly dropped via {@link CanvasInstance.drop} so the sweep loop does
|
|
94
|
+
* not attempt to drop a table that no longer exists.
|
|
95
|
+
*/
|
|
96
|
+
dropTableBookkeeping(canvasId: string, tenantId: string, tableName: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Clear all per-table TTL bookkeeping for a canvas. Called when
|
|
99
|
+
* {@link CanvasInstance.clear} drops all tables so stale entries don't
|
|
100
|
+
* accumulate in the map.
|
|
101
|
+
*/
|
|
102
|
+
clearTableBookkeeping(canvasId: string, tenantId: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Merge per-table `expiresAt` annotations into a `TableInfo[]` array
|
|
105
|
+
* returned by the provider's `describe()`. Tables without a per-table TTL
|
|
106
|
+
* are returned as-is; tables with one get an `expiresAt` field injected.
|
|
107
|
+
*/
|
|
108
|
+
annotateDescribeResult(canvasId: string, tenantId: string, tables: TableInfo[]): TableInfo[];
|
|
70
109
|
/**
|
|
71
110
|
* Drop a canvas explicitly (e.g. tenant-initiated cleanup). Returns true
|
|
72
111
|
* when the canvas existed and was destroyed.
|
|
@@ -78,10 +117,18 @@ export declare class CanvasRegistry {
|
|
|
78
117
|
totalActive(): number;
|
|
79
118
|
/** Stop the sweeper and tear down every active canvas. Idempotent. */
|
|
80
119
|
shutdown(context: RequestContextLike): Promise<void>;
|
|
81
|
-
/**
|
|
120
|
+
/**
|
|
121
|
+
* Run one sweep pass. Per-table expiry is checked first: expired tables are
|
|
122
|
+
* dropped via `provider.drop()` and their bookkeeping cleared. Then the
|
|
123
|
+
* existing canvas-level check runs — the two clocks are fully independent;
|
|
124
|
+
* a canvas survives a table drop as long as its own window is still live.
|
|
125
|
+
*
|
|
126
|
+
* @internal Test/diagnostic hook — also called by the periodic sweeper timer.
|
|
127
|
+
*/
|
|
82
128
|
sweep(): Promise<void>;
|
|
83
129
|
private lookup;
|
|
84
130
|
private touch;
|
|
131
|
+
private touchTableRecord;
|
|
85
132
|
private enforceTenantCap;
|
|
86
133
|
private mintId;
|
|
87
134
|
private indexByTenant;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasRegistry.d.ts","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasRegistry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CanvasRegistry.d.ts","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* @fileoverview Canvas lifecycle registry. Keys canvases by (tenantId, canvasId),
|
|
3
3
|
* generates crypto-secure 10-char URL-safe IDs, enforces a sliding 24h TTL
|
|
4
4
|
* with a 7-day absolute cap, runs a periodic sweeper, and caps active canvases
|
|
5
|
-
* per tenant (default 100).
|
|
5
|
+
* per tenant (default 100). Also tracks per-table TTLs; the sweep loop drops
|
|
6
|
+
* expired tables before evaluating canvas-level expiry. Public access is gated
|
|
7
|
+
* by {@link DataCanvas}.
|
|
6
8
|
* @module src/services/canvas/core/CanvasRegistry
|
|
7
9
|
*/
|
|
8
10
|
import { conflict, notFound, rateLimited } from '../../../types-global/errors.js';
|
|
@@ -89,6 +91,7 @@ export class CanvasRegistry {
|
|
|
89
91
|
createdAt: now,
|
|
90
92
|
lastAccessedAt: now,
|
|
91
93
|
expiresAt: now + this.options.ttlMs,
|
|
94
|
+
tableTtl: new Map(),
|
|
92
95
|
};
|
|
93
96
|
this.canvases.set(canvasId, record);
|
|
94
97
|
this.indexByTenant(tenantId, canvasId);
|
|
@@ -109,7 +112,7 @@ export class CanvasRegistry {
|
|
|
109
112
|
/**
|
|
110
113
|
* Validate that `canvasId` belongs to `tenantId` and is not expired, then
|
|
111
114
|
* extend its TTL and return the resolved expiry. Used by {@link CanvasInstance}
|
|
112
|
-
* before every op so individual operations slide the window.
|
|
115
|
+
* before every op so individual operations slide the canvas window.
|
|
113
116
|
*/
|
|
114
117
|
touchOrThrow(canvasId, tenantId) {
|
|
115
118
|
const record = this.lookup(canvasId, tenantId);
|
|
@@ -119,6 +122,91 @@ export class CanvasRegistry {
|
|
|
119
122
|
this.touch(record);
|
|
120
123
|
return new Date(record.expiresAt).toISOString();
|
|
121
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Slide the canvas TTL **and** the per-table TTL for `tableName` (if it has
|
|
127
|
+
* one). Throws `NotFound` when the canvas is gone or expired. Used by
|
|
128
|
+
* {@link CanvasInstance} on table-scoped ops (`registerTable`, `query`).
|
|
129
|
+
*/
|
|
130
|
+
touchWithTable(canvasId, tenantId, tableName) {
|
|
131
|
+
const record = this.lookup(canvasId, tenantId);
|
|
132
|
+
if (!record) {
|
|
133
|
+
throw notFound('Canvas not found or expired.', { canvasId });
|
|
134
|
+
}
|
|
135
|
+
this.touch(record);
|
|
136
|
+
this.touchTableRecord(record, tableName);
|
|
137
|
+
return new Date(record.expiresAt).toISOString();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Slide per-table TTLs for every table name that appears as a word-boundary
|
|
141
|
+
* match in `sqlText`, in addition to the canvas-level touch and an explicit
|
|
142
|
+
* `primaryTable` slide. Used by `query()` to slide all tables referenced in
|
|
143
|
+
* the SQL, not just the `registerAs` target.
|
|
144
|
+
*/
|
|
145
|
+
touchWithSqlTables(canvasId, tenantId, primaryTable, sqlText) {
|
|
146
|
+
const record = this.lookup(canvasId, tenantId);
|
|
147
|
+
if (!record) {
|
|
148
|
+
throw notFound('Canvas not found or expired.', { canvasId });
|
|
149
|
+
}
|
|
150
|
+
this.touch(record);
|
|
151
|
+
if (primaryTable !== undefined) {
|
|
152
|
+
this.touchTableRecord(record, primaryTable);
|
|
153
|
+
}
|
|
154
|
+
for (const tableName of record.tableTtl.keys()) {
|
|
155
|
+
if (tableName !== primaryTable && wordBoundaryMatch(sqlText, tableName)) {
|
|
156
|
+
this.touchTableRecord(record, tableName);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return new Date(record.expiresAt).toISOString();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Register (or replace) a per-table TTL entry. Called by {@link CanvasInstance}
|
|
163
|
+
* after a successful `registerTable` with `ttlMs` set.
|
|
164
|
+
*/
|
|
165
|
+
registerTableTtl(canvasId, tenantId, tableName, ttlMs) {
|
|
166
|
+
const record = this.lookup(canvasId, tenantId);
|
|
167
|
+
if (!record)
|
|
168
|
+
return; // canvas gone between registerTable and this call — no-op
|
|
169
|
+
const now = this.clock();
|
|
170
|
+
record.tableTtl.set(tableName, { ttlMs, expiresAt: now + ttlMs });
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Remove per-table TTL bookkeeping for `tableName`. Called when a table is
|
|
174
|
+
* explicitly dropped via {@link CanvasInstance.drop} so the sweep loop does
|
|
175
|
+
* not attempt to drop a table that no longer exists.
|
|
176
|
+
*/
|
|
177
|
+
dropTableBookkeeping(canvasId, tenantId, tableName) {
|
|
178
|
+
const record = this.lookup(canvasId, tenantId);
|
|
179
|
+
if (!record)
|
|
180
|
+
return;
|
|
181
|
+
record.tableTtl.delete(tableName);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Clear all per-table TTL bookkeeping for a canvas. Called when
|
|
185
|
+
* {@link CanvasInstance.clear} drops all tables so stale entries don't
|
|
186
|
+
* accumulate in the map.
|
|
187
|
+
*/
|
|
188
|
+
clearTableBookkeeping(canvasId, tenantId) {
|
|
189
|
+
const record = this.lookup(canvasId, tenantId);
|
|
190
|
+
if (!record)
|
|
191
|
+
return;
|
|
192
|
+
record.tableTtl.clear();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Merge per-table `expiresAt` annotations into a `TableInfo[]` array
|
|
196
|
+
* returned by the provider's `describe()`. Tables without a per-table TTL
|
|
197
|
+
* are returned as-is; tables with one get an `expiresAt` field injected.
|
|
198
|
+
*/
|
|
199
|
+
annotateDescribeResult(canvasId, tenantId, tables) {
|
|
200
|
+
const record = this.lookup(canvasId, tenantId);
|
|
201
|
+
if (!record || record.tableTtl.size === 0)
|
|
202
|
+
return tables;
|
|
203
|
+
return tables.map((t) => {
|
|
204
|
+
const entry = record.tableTtl.get(t.name);
|
|
205
|
+
if (!entry)
|
|
206
|
+
return t;
|
|
207
|
+
return { ...t, expiresAt: new Date(entry.expiresAt).toISOString() };
|
|
208
|
+
});
|
|
209
|
+
}
|
|
122
210
|
/**
|
|
123
211
|
* Drop a canvas explicitly (e.g. tenant-initiated cleanup). Returns true
|
|
124
212
|
* when the canvas existed and was destroyed.
|
|
@@ -151,11 +239,58 @@ export class CanvasRegistry {
|
|
|
151
239
|
await Promise.allSettled(records.map((r) => this.destroy(r, context)));
|
|
152
240
|
await this.provider.shutdown();
|
|
153
241
|
}
|
|
154
|
-
/**
|
|
242
|
+
/**
|
|
243
|
+
* Run one sweep pass. Per-table expiry is checked first: expired tables are
|
|
244
|
+
* dropped via `provider.drop()` and their bookkeeping cleared. Then the
|
|
245
|
+
* existing canvas-level check runs — the two clocks are fully independent;
|
|
246
|
+
* a canvas survives a table drop as long as its own window is still live.
|
|
247
|
+
*
|
|
248
|
+
* @internal Test/diagnostic hook — also called by the periodic sweeper timer.
|
|
249
|
+
*/
|
|
155
250
|
async sweep() {
|
|
156
251
|
if (this.isShuttingDown)
|
|
157
252
|
return;
|
|
158
253
|
const now = this.clock();
|
|
254
|
+
const sweepContext = requestContextService.createRequestContext({
|
|
255
|
+
operation: 'CanvasRegistry.sweep',
|
|
256
|
+
});
|
|
257
|
+
// --- Pass 1: per-table expiry ---
|
|
258
|
+
// Collect expired entries before mutating the map to avoid iterator skips.
|
|
259
|
+
const expiredTables = [];
|
|
260
|
+
for (const record of this.canvases.values()) {
|
|
261
|
+
for (const [tableName, entry] of record.tableTtl) {
|
|
262
|
+
if (now >= entry.expiresAt) {
|
|
263
|
+
expiredTables.push({ canvasId: record.canvasId, tableName });
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
let droppedTableCount = 0;
|
|
268
|
+
for (const { canvasId, tableName } of expiredTables) {
|
|
269
|
+
const record = this.canvases.get(canvasId);
|
|
270
|
+
if (!record)
|
|
271
|
+
continue; // canvas already destroyed by an earlier iteration
|
|
272
|
+
try {
|
|
273
|
+
await this.provider.drop(canvasId, tableName, sweepContext);
|
|
274
|
+
record.tableTtl.delete(tableName);
|
|
275
|
+
droppedTableCount += 1;
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
// Bookkeeping is kept so the next sweep pass retries the drop.
|
|
279
|
+
logger.warning('Provider drop failed during per-table sweep.', {
|
|
280
|
+
...sweepContext,
|
|
281
|
+
canvasId,
|
|
282
|
+
tableName,
|
|
283
|
+
error: err instanceof Error ? err.message : String(err),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (droppedTableCount > 0) {
|
|
288
|
+
logger.debug('Canvas sweeper dropped expired tables.', {
|
|
289
|
+
...sweepContext,
|
|
290
|
+
droppedTableCount,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// --- Pass 2: canvas-level expiry (unchanged semantics) ---
|
|
159
294
|
const expired = [];
|
|
160
295
|
for (const record of this.canvases.values()) {
|
|
161
296
|
if (now >= record.expiresAt || now - record.createdAt >= this.options.absoluteCapMs) {
|
|
@@ -164,9 +299,6 @@ export class CanvasRegistry {
|
|
|
164
299
|
}
|
|
165
300
|
if (expired.length === 0)
|
|
166
301
|
return;
|
|
167
|
-
const sweepContext = requestContextService.createRequestContext({
|
|
168
|
-
operation: 'CanvasRegistry.sweep',
|
|
169
|
-
});
|
|
170
302
|
await Promise.allSettled(expired.map((r) => this.destroy(r, sweepContext)));
|
|
171
303
|
logger.debug('Canvas sweeper destroyed expired canvases.', {
|
|
172
304
|
...sweepContext,
|
|
@@ -197,6 +329,12 @@ export class CanvasRegistry {
|
|
|
197
329
|
const absoluteExpiry = record.createdAt + this.options.absoluteCapMs;
|
|
198
330
|
record.expiresAt = Math.min(slidingExpiry, absoluteExpiry);
|
|
199
331
|
}
|
|
332
|
+
touchTableRecord(record, tableName) {
|
|
333
|
+
const entry = record.tableTtl.get(tableName);
|
|
334
|
+
if (!entry)
|
|
335
|
+
return;
|
|
336
|
+
entry.expiresAt = this.clock() + entry.ttlMs;
|
|
337
|
+
}
|
|
200
338
|
enforceTenantCap(tenantId) {
|
|
201
339
|
const count = this.byTenant.get(tenantId)?.size ?? 0;
|
|
202
340
|
if (count >= this.options.maxCanvasesPerTenant) {
|
|
@@ -221,6 +359,8 @@ export class CanvasRegistry {
|
|
|
221
359
|
}
|
|
222
360
|
async destroy(record, context) {
|
|
223
361
|
this.canvases.delete(record.canvasId);
|
|
362
|
+
// Clear per-table bookkeeping so stale entries don't survive a re-use.
|
|
363
|
+
record.tableTtl.clear();
|
|
224
364
|
const set = this.byTenant.get(record.tenantId);
|
|
225
365
|
if (set) {
|
|
226
366
|
set.delete(record.canvasId);
|
|
@@ -239,4 +379,21 @@ export class CanvasRegistry {
|
|
|
239
379
|
}
|
|
240
380
|
}
|
|
241
381
|
}
|
|
382
|
+
// ---------------------------------------------------------------------------
|
|
383
|
+
// Module-level helpers
|
|
384
|
+
// ---------------------------------------------------------------------------
|
|
385
|
+
/**
|
|
386
|
+
* Return true when `tableName` appears in `sqlText` as a whole word (i.e.
|
|
387
|
+
* surrounded by non-identifier characters or at text boundaries). A false
|
|
388
|
+
* positive (a name appearing inside a string literal) merely slides the table
|
|
389
|
+
* TTL unnecessarily — harmless. A SQL parser is not warranted.
|
|
390
|
+
*/
|
|
391
|
+
function wordBoundaryMatch(sqlText, tableName) {
|
|
392
|
+
// Word characters for SQL identifiers: letters, digits, underscore.
|
|
393
|
+
const pattern = new RegExp(`(?<![A-Za-z0-9_])${escapeRegExp(tableName)}(?![A-Za-z0-9_])`);
|
|
394
|
+
return pattern.test(sqlText);
|
|
395
|
+
}
|
|
396
|
+
function escapeRegExp(s) {
|
|
397
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
398
|
+
}
|
|
242
399
|
//# sourceMappingURL=CanvasRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasRegistry.js","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasRegistry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CanvasRegistry.js","sourceRoot":"","sources":["../../../../src/services/canvas/core/CanvasRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,12 @@ export interface SpilloverOptions<T extends Row> {
|
|
|
53
53
|
* before any draining begins.
|
|
54
54
|
*/
|
|
55
55
|
tableName?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Per-table sliding TTL forwarded to {@link CanvasInstance.registerTable}.
|
|
58
|
+
* When set, the spilled table ages independently of the canvas; the TTL
|
|
59
|
+
* window slides on reads or writes against this specific table.
|
|
60
|
+
*/
|
|
61
|
+
ttlMs?: number;
|
|
56
62
|
}
|
|
57
63
|
/** Return value when the source fit inside the preview budget. No canvas call was made. */
|
|
58
64
|
export interface SpilloverFitResult<T> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spillover.d.ts","sourceRoot":"","sources":["../../../src/services/canvas/spillover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpE,sDAAsD;AACtD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,qCAAqC;AACrC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,GAAG;IAC7C,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,IAAI,CAAC,EAAE;QACL;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6DAA6D;IAC7D,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"spillover.d.ts","sourceRoot":"","sources":["../../../src/services/canvas/spillover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpE,sDAAsD;AACtD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,qCAAqC;AACrC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,GAAG;IAC7C,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,IAAI,CAAC,EAAE;QACL;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6DAA6D;IAC7D,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2FAA2F;AAC3F,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,kGAAkG;AAClG,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,+EAA+E;IAC/E,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAMjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,GAAG,EAC3C,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA0E7B"}
|
|
@@ -105,6 +105,7 @@ export async function spillover(opts) {
|
|
|
105
105
|
handle = await opts.canvas.registerTable(tableName, merged, {
|
|
106
106
|
schema,
|
|
107
107
|
...(opts.signal !== undefined && { signal: opts.signal }),
|
|
108
|
+
...(opts.ttlMs !== undefined && { ttlMs: opts.ttlMs }),
|
|
108
109
|
});
|
|
109
110
|
}
|
|
110
111
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spillover.js","sourceRoot":"","sources":["../../../src/services/canvas/spillover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"spillover.js","sourceRoot":"","sources":["../../../src/services/canvas/spillover.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,12 @@ export interface TableInfo {
|
|
|
27
27
|
approxSizeBytes?: number;
|
|
28
28
|
/** Resolved schema for the table or view. */
|
|
29
29
|
columns: ColumnSchema[];
|
|
30
|
+
/**
|
|
31
|
+
* ISO 8601 wall-clock expiry for this table's per-table TTL. Present only
|
|
32
|
+
* when the table was registered with a `ttlMs` option. When absent, the
|
|
33
|
+
* table inherits the canvas lifecycle (no independent expiry).
|
|
34
|
+
*/
|
|
35
|
+
expiresAt?: string;
|
|
30
36
|
/** Whether this entry is a base table or a registered view. */
|
|
31
37
|
kind: CanvasObjectKind;
|
|
32
38
|
/** Canvas-local name. */
|
|
@@ -48,6 +54,15 @@ export interface RegisterTableOptions {
|
|
|
48
54
|
schema?: ColumnSchema[];
|
|
49
55
|
/** Cancellation signal forwarded to the provider. */
|
|
50
56
|
signal?: AbortSignal;
|
|
57
|
+
/**
|
|
58
|
+
* Per-table sliding TTL in milliseconds. When set, this table expires
|
|
59
|
+
* independently of the canvas — the sliding window is extended on any read
|
|
60
|
+
* or write against this specific table. The sweep loop drops the table and
|
|
61
|
+
* clears its bookkeeping when it expires; the canvas itself is unaffected
|
|
62
|
+
* unless its own expiry fires independently. When omitted, the table
|
|
63
|
+
* inherits the canvas lifecycle (no independent expiry).
|
|
64
|
+
*/
|
|
65
|
+
ttlMs?: number;
|
|
51
66
|
}
|
|
52
67
|
/** Result of a successful {@link CanvasInstance.registerTable} call. */
|
|
53
68
|
export interface RegisterTableResult {
|
|
@@ -80,6 +95,12 @@ export interface QueryOptions {
|
|
|
80
95
|
rowLimit?: number;
|
|
81
96
|
/** Cancellation signal — interrupts the underlying connection. */
|
|
82
97
|
signal?: AbortSignal;
|
|
98
|
+
/**
|
|
99
|
+
* Per-table sliding TTL for the table materialized via `registerAs`.
|
|
100
|
+
* Ignored when `registerAs` is not set. Semantics match
|
|
101
|
+
* {@link RegisterTableOptions.ttlMs}.
|
|
102
|
+
*/
|
|
103
|
+
ttlMs?: number;
|
|
83
104
|
}
|
|
84
105
|
/** Result of a successful {@link CanvasInstance.query} call. */
|
|
85
106
|
export interface QueryResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/canvas/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,+DAA+D;IAC/D,IAAI,EAAE,gBAAgB,CAAC;IACvB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/canvas/types.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -5,16 +5,21 @@
|
|
|
5
5
|
* `createInMemoryStorage()` for unit-testing services in isolation.
|
|
6
6
|
* @module src/testing/index
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { ElicitResult } from '@modelcontextprotocol/sdk/types.js';
|
|
9
9
|
import type { z } from 'zod';
|
|
10
|
-
import type { AuthContext, Context, ContextLogger
|
|
10
|
+
import type { AuthContext, Context, ContextLogger } from '../core/context.js';
|
|
11
11
|
import { StorageService } from '../storage/core/StorageService.js';
|
|
12
12
|
import { type InMemoryProviderOptions } from '../storage/providers/inMemory/inMemoryProvider.js';
|
|
13
13
|
import type { ErrorContract } from '../types-global/errors.js';
|
|
14
14
|
export interface MockContextOptions {
|
|
15
15
|
/** Auth context. */
|
|
16
16
|
auth?: AuthContext;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Mock elicitation handler for form-mode elicitation. When provided, the
|
|
19
|
+
* mock context's `ctx.elicit` is set to this function with a default no-op
|
|
20
|
+
* `.url(...)` stub attached — tests that only exercise form-mode elicitation
|
|
21
|
+
* don't need to supply `.url` explicitly.
|
|
22
|
+
*/
|
|
18
23
|
elicit?: (message: string, schema: z.ZodObject<z.ZodRawShape>) => Promise<ElicitResult>;
|
|
19
24
|
/**
|
|
20
25
|
* Error contract to attach a typed `ctx.fail` against. Pass the definition's
|
|
@@ -35,8 +40,6 @@ export interface MockContextOptions {
|
|
|
35
40
|
progress?: boolean;
|
|
36
41
|
/** Request ID override. Defaults to 'test-request-id'. */
|
|
37
42
|
requestId?: string;
|
|
38
|
-
/** Mock sampling handler. */
|
|
39
|
-
sample?: (messages: SamplingMessage[], opts?: SamplingOpts) => Promise<CreateMessageResult>;
|
|
40
43
|
/**
|
|
41
44
|
* HTTP session ID. Defaults to undefined. Set to exercise handlers that
|
|
42
45
|
* branch on `ctx.sessionId` — mirrors what a stateful HTTP request would
|
|
@@ -84,15 +87,6 @@ export declare function createMockLogger(): MockContextLogger;
|
|
|
84
87
|
* // With tenant (for tools that use ctx.state)
|
|
85
88
|
* const ctx = createMockContext({ tenantId: 'test-tenant' });
|
|
86
89
|
*
|
|
87
|
-
* // With sampling capability
|
|
88
|
-
* const ctx = createMockContext({
|
|
89
|
-
* sample: vi.fn().mockResolvedValue({
|
|
90
|
-
* role: 'assistant',
|
|
91
|
-
* content: { type: 'text', text: 'Response' },
|
|
92
|
-
* model: 'test',
|
|
93
|
-
* }),
|
|
94
|
-
* });
|
|
95
|
-
*
|
|
96
90
|
* // With task progress
|
|
97
91
|
* const ctx = createMockContext({ progress: true });
|
|
98
92
|
* ```
|