@nodetool-ai/websocket 0.8.3 → 0.8.4-a24.1

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 (169) hide show
  1. package/README.md +5 -0
  2. package/dist/.nodetool-build-stamp +1 -1
  3. package/dist/agent/run-node-tool.d.ts.map +1 -1
  4. package/dist/agent/run-node-tool.js +11 -1
  5. package/dist/agent/run-node-tool.js.map +1 -1
  6. package/dist/chat-prediction-forwarder.d.ts +5 -3
  7. package/dist/chat-prediction-forwarder.d.ts.map +1 -1
  8. package/dist/chat-prediction-forwarder.js +6 -4
  9. package/dist/chat-prediction-forwarder.js.map +1 -1
  10. package/dist/e2e-server.js +1 -1
  11. package/dist/e2e-server.js.map +1 -1
  12. package/dist/example-workflows.js +1 -1
  13. package/dist/example-workflows.js.map +1 -1
  14. package/dist/fake-runtime.d.ts +14 -3
  15. package/dist/fake-runtime.d.ts.map +1 -1
  16. package/dist/fake-runtime.js +23 -4
  17. package/dist/fake-runtime.js.map +1 -1
  18. package/dist/headless-job-runner.d.ts.map +1 -1
  19. package/dist/headless-job-runner.js +3 -1
  20. package/dist/headless-job-runner.js.map +1 -1
  21. package/dist/http-api.d.ts +1 -1
  22. package/dist/http-api.d.ts.map +1 -1
  23. package/dist/http-api.js +16 -7
  24. package/dist/http-api.js.map +1 -1
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/job-control.d.ts +8 -0
  30. package/dist/job-control.d.ts.map +1 -1
  31. package/dist/job-control.js +12 -0
  32. package/dist/job-control.js.map +1 -1
  33. package/dist/lib/admin.d.ts.map +1 -1
  34. package/dist/lib/admin.js +1 -2
  35. package/dist/lib/admin.js.map +1 -1
  36. package/dist/lib/asset-export.d.ts +1 -1
  37. package/dist/lib/asset-export.js +1 -1
  38. package/dist/lib/asset-paths.d.ts +1 -1
  39. package/dist/lib/asset-paths.js +1 -1
  40. package/dist/lib/asset-response.d.ts.map +1 -1
  41. package/dist/lib/asset-response.js +12 -6
  42. package/dist/lib/asset-response.js.map +1 -1
  43. package/dist/lib/example-apps.d.ts +3 -0
  44. package/dist/lib/example-apps.d.ts.map +1 -1
  45. package/dist/lib/example-apps.js +3 -2
  46. package/dist/lib/example-apps.js.map +1 -1
  47. package/dist/lib/project-archive-host.d.ts +14 -0
  48. package/dist/lib/project-archive-host.d.ts.map +1 -0
  49. package/dist/lib/project-archive-host.js +24 -0
  50. package/dist/lib/project-archive-host.js.map +1 -0
  51. package/dist/lib/project-archive.d.ts +103 -0
  52. package/dist/lib/project-archive.d.ts.map +1 -0
  53. package/dist/lib/project-archive.js +610 -0
  54. package/dist/lib/project-archive.js.map +1 -0
  55. package/dist/lib/thumbnail.d.ts.map +1 -1
  56. package/dist/lib/thumbnail.js +3 -1
  57. package/dist/lib/thumbnail.js.map +1 -1
  58. package/dist/lib/timeline-bundle.d.ts +60 -1
  59. package/dist/lib/timeline-bundle.d.ts.map +1 -1
  60. package/dist/lib/timeline-bundle.js +7 -5
  61. package/dist/lib/timeline-bundle.js.map +1 -1
  62. package/dist/lib/timeline-premiere-import.d.ts.map +1 -1
  63. package/dist/lib/timeline-premiere-import.js +31 -21
  64. package/dist/lib/timeline-premiere-import.js.map +1 -1
  65. package/dist/lib/zip-stream.d.ts +3 -0
  66. package/dist/lib/zip-stream.d.ts.map +1 -1
  67. package/dist/lib/zip-stream.js +6 -0
  68. package/dist/lib/zip-stream.js.map +1 -1
  69. package/dist/mcp-agent-tools.d.ts +48 -0
  70. package/dist/mcp-agent-tools.d.ts.map +1 -1
  71. package/dist/mcp-agent-tools.js +13 -2
  72. package/dist/mcp-agent-tools.js.map +1 -1
  73. package/dist/model-download-runtime.d.ts.map +1 -1
  74. package/dist/model-download-runtime.js +2 -1
  75. package/dist/model-download-runtime.js.map +1 -1
  76. package/dist/node-registry-setup.d.ts +8 -5
  77. package/dist/node-registry-setup.d.ts.map +1 -1
  78. package/dist/node-registry-setup.js +22 -10
  79. package/dist/node-registry-setup.js.map +1 -1
  80. package/dist/pack-source.d.ts +15 -0
  81. package/dist/pack-source.d.ts.map +1 -0
  82. package/dist/pack-source.js +85 -0
  83. package/dist/pack-source.js.map +1 -0
  84. package/dist/plugins/websocket.d.ts.map +1 -1
  85. package/dist/plugins/websocket.js +24 -3
  86. package/dist/plugins/websocket.js.map +1 -1
  87. package/dist/routes/documents.d.ts.map +1 -1
  88. package/dist/routes/documents.js +8 -1
  89. package/dist/routes/documents.js.map +1 -1
  90. package/dist/routes/games.d.ts.map +1 -1
  91. package/dist/routes/games.js +2 -1
  92. package/dist/routes/games.js.map +1 -1
  93. package/dist/routes/kie-pricing.js +1 -1
  94. package/dist/routes/kie-pricing.js.map +1 -1
  95. package/dist/routes/nodes.d.ts.map +1 -1
  96. package/dist/routes/nodes.js +11 -1
  97. package/dist/routes/nodes.js.map +1 -1
  98. package/dist/routes/project-archive.d.ts +18 -0
  99. package/dist/routes/project-archive.d.ts.map +1 -0
  100. package/dist/routes/project-archive.js +98 -0
  101. package/dist/routes/project-archive.js.map +1 -0
  102. package/dist/screenshot-docs-seed.d.ts.map +1 -1
  103. package/dist/screenshot-docs-seed.js +8 -1
  104. package/dist/screenshot-docs-seed.js.map +1 -1
  105. package/dist/screenshot-server.js +164 -2
  106. package/dist/screenshot-server.js.map +1 -1
  107. package/dist/sdk/sdk-node-type-inventory-service.d.ts +1 -1
  108. package/dist/sdk/sdk-node-type-inventory-service.d.ts.map +1 -1
  109. package/dist/sdk/sdk-node-type-inventory-service.js +4 -4
  110. package/dist/sdk/sdk-node-type-inventory-service.js.map +1 -1
  111. package/dist/sdk/sdk-v1-service.js +1 -1
  112. package/dist/sdk/sdk-v1-service.js.map +1 -1
  113. package/dist/server.d.ts +7 -1
  114. package/dist/server.d.ts.map +1 -1
  115. package/dist/server.js +1468 -1470
  116. package/dist/server.js.map +1 -1
  117. package/dist/session/chat-prompt.d.ts.map +1 -1
  118. package/dist/session/chat-prompt.js +6 -0
  119. package/dist/session/chat-prompt.js.map +1 -1
  120. package/dist/session/chat-turn.d.ts.map +1 -1
  121. package/dist/session/chat-turn.js +36 -11
  122. package/dist/session/chat-turn.js.map +1 -1
  123. package/dist/session/client-tool-gate.d.ts +23 -0
  124. package/dist/session/client-tool-gate.d.ts.map +1 -0
  125. package/dist/session/client-tool-gate.js +59 -0
  126. package/dist/session/client-tool-gate.js.map +1 -0
  127. package/dist/session/inference.d.ts.map +1 -1
  128. package/dist/session/inference.js +19 -13
  129. package/dist/session/inference.js.map +1 -1
  130. package/dist/session/job-execution.d.ts.map +1 -1
  131. package/dist/session/job-execution.js +9 -2
  132. package/dist/session/job-execution.js.map +1 -1
  133. package/dist/test-ui-server.d.ts +4 -3
  134. package/dist/test-ui-server.d.ts.map +1 -1
  135. package/dist/test-ui-server.js +11 -9
  136. package/dist/test-ui-server.js.map +1 -1
  137. package/dist/triggers/file-watch.d.ts +2 -2
  138. package/dist/triggers/file-watch.d.ts.map +1 -1
  139. package/dist/triggers/file-watch.js +10 -3
  140. package/dist/triggers/file-watch.js.map +1 -1
  141. package/dist/trpc/routers/extension.d.ts +16 -2
  142. package/dist/trpc/routers/extension.d.ts.map +1 -1
  143. package/dist/trpc/routers/extension.js +33 -4
  144. package/dist/trpc/routers/extension.js.map +1 -1
  145. package/dist/trpc/routers/games.d.ts +17387 -57244
  146. package/dist/trpc/routers/games.d.ts.map +1 -1
  147. package/dist/trpc/routers/games.js +9 -4
  148. package/dist/trpc/routers/games.js.map +1 -1
  149. package/dist/trpc/routers/jobs.d.ts.map +1 -1
  150. package/dist/trpc/routers/jobs.js +6 -1
  151. package/dist/trpc/routers/jobs.js.map +1 -1
  152. package/dist/trpc/routers/models.d.ts.map +1 -1
  153. package/dist/trpc/routers/models.js +40 -9
  154. package/dist/trpc/routers/models.js.map +1 -1
  155. package/dist/trpc/routers/packs.js +1 -1
  156. package/dist/trpc/routers/packs.js.map +1 -1
  157. package/dist/trpc/routers/threads.d.ts.map +1 -1
  158. package/dist/trpc/routers/threads.js +3 -0
  159. package/dist/trpc/routers/threads.js.map +1 -1
  160. package/dist/trpc/routers/timeline.d.ts +364 -0
  161. package/dist/trpc/routers/timeline.d.ts.map +1 -1
  162. package/dist/trpc/routers/workflows.d.ts +44 -0
  163. package/dist/trpc/routers/workflows.d.ts.map +1 -1
  164. package/dist/trpc/routers/workflows.js +4 -2
  165. package/dist/trpc/routers/workflows.js.map +1 -1
  166. package/dist/trpc/sandbox-coverage.d.ts.map +1 -1
  167. package/dist/trpc/sandbox-coverage.js +5 -0
  168. package/dist/trpc/sandbox-coverage.js.map +1 -1
  169. package/package.json +51 -48
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The storage this install's project files read from and write to. The HTTP
3
+ * routes and the `nodetool projects` CLI commands share it, so a file
4
+ * exported by one imports through the other.
5
+ */
6
+ import { getAssetFileName, getAssetStorageKey, getAssetThumbnailKey } from "./asset-paths.js";
7
+ import { getAssetAdapter } from "./storage.js";
8
+ import { storeAssetWithThumbnail } from "./thumbnail.js";
9
+ import { workspaceFromRow } from "./workflow-workspace.js";
10
+ export function projectArchiveHost() {
11
+ return {
12
+ storage: getAssetAdapter(),
13
+ openWorkspace: workspaceFromRow,
14
+ removeAssetBytes: async (userId, assetId, contentType) => {
15
+ const storage = getAssetAdapter();
16
+ await Promise.all([
17
+ storage.delete(storage.uriForKey(getAssetStorageKey(userId, assetId, contentType))),
18
+ storage.delete(storage.uriForKey(getAssetThumbnailKey(userId, assetId)))
19
+ ]);
20
+ },
21
+ storeAssetBytes: ({ userId, assetId, contentType, bytes }) => storeAssetWithThumbnail(userId, assetId, getAssetFileName(assetId, contentType), bytes, contentType)
22
+ };
23
+ }
24
+ //# sourceMappingURL=project-archive-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-archive-host.js","sourceRoot":"","sources":["../../src/lib/project-archive-host.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,UAAU,kBAAkB;IAWhC,OAAO;QACL,OAAO,EAAE,eAAe,EAAE;QAC1B,aAAa,EAAE,gBAAgB;QAC/B,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;YACvD,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;YAClC,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;aACzE,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3D,uBAAuB,CACrB,MAAM,EACN,OAAO,EACP,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,EACtC,KAAK,EACL,WAAW,CACZ;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { z } from "zod";
2
+ import { Project, Workspace } from "@nodetool-ai/models";
3
+ import type { Workspace as RuntimeWorkspace } from "@nodetool-ai/runtime";
4
+ import type { StorageAdapter } from "@nodetool-ai/storage";
5
+ import { type ZipStreamWriter } from "./zip-stream.js";
6
+ export declare const PROJECT_ARCHIVE_FORMAT = "nodetool-project";
7
+ export declare const PROJECT_ARCHIVE_VERSION = 1;
8
+ export declare const PROJECT_ARCHIVE_EXTENSION = ".nodetool-project";
9
+ /** Largest project file an import inflates, summed over its entries. */
10
+ export declare const MAX_PROJECT_ARCHIVE_BYTES: number;
11
+ /** Most entries a project file may hold. */
12
+ export declare const MAX_PROJECT_ARCHIVE_ENTRIES = 100000;
13
+ declare const manifestSchema: z.ZodObject<{
14
+ format: z.ZodLiteral<"nodetool-project">;
15
+ version: z.ZodNumber;
16
+ nodetool_version: z.ZodOptional<z.ZodString>;
17
+ created_at: z.ZodString;
18
+ project: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ kind: z.ZodString;
22
+ thread_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
23
+ }, z.core.$strip>;
24
+ counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
25
+ assets: z.ZodArray<z.ZodObject<{
26
+ file: z.ZodString;
27
+ bytes: z.ZodNumber;
28
+ sha256: z.ZodString;
29
+ id: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ workspace_files: z.ZodArray<z.ZodObject<{
32
+ file: z.ZodString;
33
+ bytes: z.ZodNumber;
34
+ sha256: z.ZodString;
35
+ workspace_id: z.ZodString;
36
+ path: z.ZodString;
37
+ }, z.core.$strip>>;
38
+ skipped: z.ZodArray<z.ZodObject<{
39
+ kind: z.ZodString;
40
+ id: z.ZodString;
41
+ reason: z.ZodString;
42
+ }, z.core.$strip>>;
43
+ }, z.core.$strip>;
44
+ export type ProjectArchiveManifest = z.infer<typeof manifestSchema>;
45
+ /** Opens a workspace row for reading or writing its files. */
46
+ export type OpenWorkspace = (row: Workspace) => RuntimeWorkspace | null;
47
+ export interface WriteProjectArchiveOptions {
48
+ readonly userId: string;
49
+ readonly projectId: string;
50
+ readonly storage: StorageAdapter;
51
+ readonly openWorkspace: OpenWorkspace;
52
+ readonly nodetoolVersion?: string;
53
+ /** Aggregate decompressed limit, shared with the importer. */
54
+ readonly maxBytes?: number;
55
+ }
56
+ /**
57
+ * Write a project to `writer`. The caller has checked that `userId` owns the
58
+ * project. Returns the manifest that was written.
59
+ */
60
+ export declare function writeProjectArchive(options: WriteProjectArchiveOptions, writer: ZipStreamWriter): Promise<ProjectArchiveManifest>;
61
+ export interface ImportProjectArchiveOptions {
62
+ readonly userId: string;
63
+ /** The new project's name. Defaults to the name in the file. */
64
+ readonly name?: string | undefined;
65
+ readonly storage: StorageAdapter;
66
+ readonly openWorkspace: OpenWorkspace;
67
+ /** Where a new workspace keeps its files. Defaults to a managed folder. */
68
+ readonly workspacePath?: (userId: string, workspaceId: string) => Promise<string>;
69
+ /**
70
+ * Stores one asset's bytes. Defaults to writing them under the asset's
71
+ * storage key in `storage`; the server also renders a thumbnail.
72
+ */
73
+ readonly storeAssetBytes?: (args: {
74
+ userId: string;
75
+ assetId: string;
76
+ contentType: string;
77
+ bytes: Uint8Array;
78
+ }) => Promise<void>;
79
+ /** Removes every object created by the asset hook, including thumbnails. */
80
+ readonly removeAssetBytes?: (userId: string, assetId: string, contentType: string) => Promise<void>;
81
+ readonly maxBytes?: number;
82
+ }
83
+ export interface ImportProjectArchiveResult {
84
+ readonly project: Project;
85
+ readonly counts: Record<string, number>;
86
+ /** Files the manifest lists that the archive does not carry. */
87
+ readonly missing: string[];
88
+ /** Files whose bytes do not match the manifest checksum. */
89
+ readonly checksumMismatches: string[];
90
+ /** What the exporting install could not include, from the manifest. */
91
+ readonly skipped: ProjectArchiveManifest["skipped"];
92
+ }
93
+ export declare class ProjectArchiveError extends Error {
94
+ constructor(message: string);
95
+ }
96
+ /** A managed folder for an imported workspace, the shape `isManaged` accepts. */
97
+ export declare function managedImportWorkspacePath(userId: string, workspaceId: string): Promise<string>;
98
+ /** Reads a project file's manifest without importing it. */
99
+ export declare function readProjectArchiveManifest(zipBytes: Uint8Array): ProjectArchiveManifest;
100
+ /** Import a project file as a new project owned by `userId`. */
101
+ export declare function importProjectArchive(zipBytes: Uint8Array, options: ImportProjectArchiveOptions): Promise<ImportProjectArchiveResult>;
102
+ export {};
103
+ //# sourceMappingURL=project-archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-archive.d.ts","sourceRoot":"","sources":["../../src/lib/project-archive.ts"],"names":[],"mappings":"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"}