@cyanheads/mcp-ts-core 0.8.7 → 0.8.9

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 (77) hide show
  1. package/CLAUDE.md +2 -0
  2. package/README.md +1 -1
  3. package/biome.json +1 -1
  4. package/changelog/0.8.x/0.8.8.md +11 -0
  5. package/changelog/0.8.x/0.8.9.md +34 -0
  6. package/dist/canvas/core/CanvasInstance.d.ts +43 -0
  7. package/dist/canvas/core/CanvasInstance.d.ts.map +1 -0
  8. package/dist/canvas/core/CanvasInstance.js +63 -0
  9. package/dist/canvas/core/CanvasInstance.js.map +1 -0
  10. package/dist/canvas/core/CanvasRegistry.d.ts +96 -0
  11. package/dist/canvas/core/CanvasRegistry.d.ts.map +1 -0
  12. package/dist/canvas/core/CanvasRegistry.js +250 -0
  13. package/dist/canvas/core/CanvasRegistry.js.map +1 -0
  14. package/dist/canvas/core/DataCanvas.d.ts +49 -0
  15. package/dist/canvas/core/DataCanvas.d.ts.map +1 -0
  16. package/dist/canvas/core/DataCanvas.js +85 -0
  17. package/dist/canvas/core/DataCanvas.js.map +1 -0
  18. package/dist/canvas/core/IDataCanvasProvider.d.ts +47 -0
  19. package/dist/canvas/core/IDataCanvasProvider.d.ts.map +1 -0
  20. package/dist/canvas/core/IDataCanvasProvider.js +10 -0
  21. package/dist/canvas/core/IDataCanvasProvider.js.map +1 -0
  22. package/dist/canvas/core/canvasFactory.d.ts +26 -0
  23. package/dist/canvas/core/canvasFactory.d.ts.map +1 -0
  24. package/dist/canvas/core/canvasFactory.js +63 -0
  25. package/dist/canvas/core/canvasFactory.js.map +1 -0
  26. package/dist/canvas/core/sqlGate.d.ts +107 -0
  27. package/dist/canvas/core/sqlGate.d.ts.map +1 -0
  28. package/dist/canvas/core/sqlGate.js +267 -0
  29. package/dist/canvas/core/sqlGate.js.map +1 -0
  30. package/dist/canvas/index.d.ts +21 -0
  31. package/dist/canvas/index.d.ts.map +1 -0
  32. package/dist/canvas/index.js +19 -0
  33. package/dist/canvas/index.js.map +1 -0
  34. package/dist/canvas/providers/duckdb/DuckdbProvider.d.ts +56 -0
  35. package/dist/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -0
  36. package/dist/canvas/providers/duckdb/DuckdbProvider.js +600 -0
  37. package/dist/canvas/providers/duckdb/DuckdbProvider.js.map +1 -0
  38. package/dist/canvas/providers/duckdb/exportWriter.d.ts +48 -0
  39. package/dist/canvas/providers/duckdb/exportWriter.d.ts.map +1 -0
  40. package/dist/canvas/providers/duckdb/exportWriter.js +119 -0
  41. package/dist/canvas/providers/duckdb/exportWriter.js.map +1 -0
  42. package/dist/canvas/providers/duckdb/schemaSniffer.d.ts +44 -0
  43. package/dist/canvas/providers/duckdb/schemaSniffer.d.ts.map +1 -0
  44. package/dist/canvas/providers/duckdb/schemaSniffer.js +134 -0
  45. package/dist/canvas/providers/duckdb/schemaSniffer.js.map +1 -0
  46. package/dist/canvas/types.d.ts +134 -0
  47. package/dist/canvas/types.d.ts.map +1 -0
  48. package/dist/canvas/types.js +9 -0
  49. package/dist/canvas/types.js.map +1 -0
  50. package/dist/config/index.d.ts +51 -15
  51. package/dist/config/index.d.ts.map +1 -1
  52. package/dist/config/index.js +44 -0
  53. package/dist/config/index.js.map +1 -1
  54. package/dist/core/app.d.ts +8 -0
  55. package/dist/core/app.d.ts.map +1 -1
  56. package/dist/core/app.js +11 -0
  57. package/dist/core/app.js.map +1 -1
  58. package/dist/core/worker.d.ts +7 -0
  59. package/dist/core/worker.d.ts.map +1 -1
  60. package/dist/core/worker.js +1 -0
  61. package/dist/core/worker.js.map +1 -1
  62. package/dist/logs/combined.log +4 -4
  63. package/dist/logs/error.log +4 -4
  64. package/dist/storage/core/storageValidation.d.ts.map +1 -1
  65. package/dist/storage/core/storageValidation.js +7 -1
  66. package/dist/storage/core/storageValidation.js.map +1 -1
  67. package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
  68. package/dist/utils/internal/error-handler/errorHandler.js +2 -1
  69. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
  70. package/package.json +18 -8
  71. package/skills/api-canvas/SKILL.md +260 -0
  72. package/skills/api-config/SKILL.md +18 -0
  73. package/skills/api-workers/SKILL.md +6 -0
  74. package/skills/report-issue-framework/SKILL.md +1 -0
  75. package/skills/report-issue-local/SKILL.md +2 -0
  76. package/templates/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
  77. package/templates/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview Public barrel for the DataCanvas primitive. Servers import
3
+ * from `@cyanheads/mcp-ts-core/canvas` to interact with `core.canvas` —
4
+ * either via tool handlers (acquire → register → query → export) or directly
5
+ * for advanced lifecycle work.
6
+ *
7
+ * The DuckDB provider is lazy-loaded; pulling this barrel does not pull in
8
+ * `@duckdb/node-api` until {@link DataCanvas.acquire} runs against an active
9
+ * canvas configuration.
10
+ *
11
+ * @module src/canvas/index
12
+ */
13
+ export { CanvasInstance } from './core/CanvasInstance.js';
14
+ export { type AcquireResult, CanvasRegistry, type CanvasRegistryOptions, DEFAULT_CANVAS_REGISTRY_OPTIONS, } from './core/CanvasRegistry.js';
15
+ export { createCanvasService } from './core/canvasFactory.js';
16
+ export { DataCanvas } from './core/DataCanvas.js';
17
+ export type { IDataCanvasProvider } from './core/IDataCanvasProvider.js';
18
+ export { ALLOWED_PLAN_OPERATORS, ALLOWED_STATEMENT_TYPES, assertReadOnlyQuery, assertValidIdentifier, collectDisallowedOperators, type DuckdbStatementType, quoteIdentifier, } from './core/sqlGate.js';
19
+ export { DuckdbProvider, type DuckdbProviderOptions, } from './providers/duckdb/DuckdbProvider.js';
20
+ export type { AcquireOptions, ColumnSchema, ColumnType, DescribeOptions, ExportFormat, ExportOptions, ExportResult, ExportTarget, QueryOptions, QueryResult, RegisterRows, RegisterTableOptions, RegisterTableResult, TableInfo, } from './types.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,KAAK,aAAa,EAClB,cAAc,EACd,KAAK,qBAAqB,EAC1B,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Public barrel for the DataCanvas primitive. Servers import
3
+ * from `@cyanheads/mcp-ts-core/canvas` to interact with `core.canvas` —
4
+ * either via tool handlers (acquire → register → query → export) or directly
5
+ * for advanced lifecycle work.
6
+ *
7
+ * The DuckDB provider is lazy-loaded; pulling this barrel does not pull in
8
+ * `@duckdb/node-api` until {@link DataCanvas.acquire} runs against an active
9
+ * canvas configuration.
10
+ *
11
+ * @module src/canvas/index
12
+ */
13
+ export { CanvasInstance } from './core/CanvasInstance.js';
14
+ export { CanvasRegistry, DEFAULT_CANVAS_REGISTRY_OPTIONS, } from './core/CanvasRegistry.js';
15
+ export { createCanvasService } from './core/canvasFactory.js';
16
+ export { DataCanvas } from './core/DataCanvas.js';
17
+ export { ALLOWED_PLAN_OPERATORS, ALLOWED_STATEMENT_TYPES, assertReadOnlyQuery, assertValidIdentifier, collectDisallowedOperators, quoteIdentifier, } from './core/sqlGate.js';
18
+ export { DuckdbProvider, } from './providers/duckdb/DuckdbProvider.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAEL,cAAc,EAEd,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAE1B,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,GAEf,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @fileoverview DuckDB-backed implementation of {@link IDataCanvasProvider}.
3
+ * One DuckDB instance per canvasId for memory isolation; a shared connection
4
+ * for control-plane work (DDL, describe, drop) and per-query connections for
5
+ * data-plane work so that {@link DuckDBConnection.interrupt} cancels exactly
6
+ * the in-flight query without disturbing concurrent ops on the same canvas.
7
+ *
8
+ * Lazy-loaded via {@link lazyImport} so `@duckdb/node-api` stays a true peer
9
+ * dependency — servers that don't enable canvas pay no install cost.
10
+ *
11
+ * @module src/canvas/providers/duckdb/DuckdbProvider
12
+ */
13
+ import { type RequestContext } from '../../../utils/internal/requestContext.js';
14
+ import type { IDataCanvasProvider } from '../../core/IDataCanvasProvider.js';
15
+ import type { DescribeOptions, ExportOptions, ExportResult, ExportTarget, QueryOptions, QueryResult, RegisterRows, RegisterTableOptions, RegisterTableResult, TableInfo } from '../../types.js';
16
+ /** Configuration for {@link DuckdbProvider}. Mirrors the AppConfig.canvas block. */
17
+ export interface DuckdbProviderOptions {
18
+ /** Default row cap for `query()` results. */
19
+ defaultRowLimit: number;
20
+ /** Sandbox root for path-targeted exports. */
21
+ exportRootPath: string;
22
+ /** Per-canvas `memory_limit` PRAGMA value, in MB. */
23
+ memoryLimitMb: number;
24
+ /** Number of rows to sniff for schema inference. */
25
+ schemaSniffRows: number;
26
+ }
27
+ /** DuckDB SELECT statement-type id (matches `StatementType.SELECT === 1`). */
28
+ declare const STATEMENT_TYPE_SELECT_ID = 1;
29
+ export declare class DuckdbProvider implements IDataCanvasProvider {
30
+ private readonly options;
31
+ readonly name = "duckdb";
32
+ private duck;
33
+ private readonly canvases;
34
+ constructor(options: DuckdbProviderOptions);
35
+ initCanvas(canvasId: string, _context: RequestContext): Promise<void>;
36
+ destroyCanvas(canvasId: string, _context: RequestContext): Promise<void>;
37
+ healthCheck(): Promise<boolean>;
38
+ shutdown(): Promise<void>;
39
+ registerTable(canvasId: string, name: string, rows: RegisterRows, _context: RequestContext, options?: RegisterTableOptions): Promise<RegisterTableResult>;
40
+ query(canvasId: string, sql: string, _context: RequestContext, options?: QueryOptions): Promise<QueryResult>;
41
+ export(canvasId: string, tableName: string, target: ExportTarget, _context: RequestContext, options?: ExportOptions): Promise<ExportResult>;
42
+ describe(canvasId: string, _context: RequestContext, options?: DescribeOptions): Promise<TableInfo[]>;
43
+ drop(canvasId: string, name: string, _context: RequestContext): Promise<boolean>;
44
+ clear(canvasId: string, _context: RequestContext): Promise<number>;
45
+ private requireCanvas;
46
+ private getModule;
47
+ private runExplain;
48
+ }
49
+ /** Re-export for tests and consumer-side parsing. */
50
+ export { STATEMENT_TYPE_SELECT_ID };
51
+ /**
52
+ * Map a DuckDB-thrown error to a framework error class.
53
+ * @internal Exported for unit testing — not re-exported from the canvas barrel.
54
+ */
55
+ export declare function classifyDuckdbError(err: unknown): Error;
56
+ //# sourceMappingURL=DuckdbProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DuckdbProvider.d.ts","sourceRoot":"","sources":["../../../../src/canvas/providers/duckdb/DuckdbProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;AAEhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAO7E,OAAO,KAAK,EAGV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACV,MAAM,gBAAgB,CAAC;AAqBxB,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,8EAA8E;AAC9E,QAAA,MAAM,wBAAwB,IAAI,CAAC;AAQnC,qBAAa,cAAe,YAAW,mBAAmB;IAM5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAE/B,OAAO,EAAE,qBAAqB;IAMrD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAc/B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAczB,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAoFzB,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC;IAsGjB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IA8DlB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC;IA2CjB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhF,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxE,OAAO,CAAC,aAAa;YAQP,SAAS;YAKT,UAAU;CAezB;AAsHD,qDAAqD;AACrD,OAAO,EAAE,wBAAwB,EAAE,CAAC;AA4EpC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CA0BvD"}