@spotpatch/shared 1.8.0 → 1.10.0

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 (39) hide show
  1. package/dist/chunk-2LVIH7OA.js +75 -0
  2. package/dist/chunk-2LVIH7OA.js.map +1 -0
  3. package/dist/chunk-MOGITGPP.js +431 -0
  4. package/dist/chunk-MOGITGPP.js.map +1 -0
  5. package/dist/chunk-RK46Y7LD.js +34 -0
  6. package/dist/chunk-RK46Y7LD.js.map +1 -0
  7. package/dist/chunk-ZCG3DLSW.js +28 -0
  8. package/dist/chunk-ZCG3DLSW.js.map +1 -0
  9. package/dist/data-flow-runtime-BMm3F-eV.d.cts +658 -0
  10. package/dist/data-flow-runtime-Dp-xznQW.d.ts +658 -0
  11. package/dist/data-flow-runtime.cjs +78 -0
  12. package/dist/data-flow-runtime.cjs.map +1 -0
  13. package/dist/data-flow-runtime.d.cts +3 -0
  14. package/dist/data-flow-runtime.d.ts +3 -0
  15. package/dist/data-flow-runtime.js +13 -0
  16. package/dist/data-flow-runtime.js.map +1 -0
  17. package/dist/endpoints-BT-Bl1WS.d.cts +20 -0
  18. package/dist/endpoints-BT-Bl1WS.d.ts +20 -0
  19. package/dist/external-agent-node.cjs +692 -0
  20. package/dist/external-agent-node.cjs.map +1 -0
  21. package/dist/external-agent-node.d.cts +556 -0
  22. package/dist/external-agent-node.d.ts +556 -0
  23. package/dist/external-agent-node.js +210 -0
  24. package/dist/external-agent-node.js.map +1 -0
  25. package/dist/external-handoff-CWoooqhp.d.cts +720 -0
  26. package/dist/external-handoff-CWoooqhp.d.ts +720 -0
  27. package/dist/external-handoff-browser.cjs +163 -0
  28. package/dist/external-handoff-browser.cjs.map +1 -0
  29. package/dist/external-handoff-browser.d.cts +32 -0
  30. package/dist/external-handoff-browser.d.ts +32 -0
  31. package/dist/external-handoff-browser.js +58 -0
  32. package/dist/external-handoff-browser.js.map +1 -0
  33. package/dist/index.cjs +938 -154
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +212 -110
  36. package/dist/index.d.ts +212 -110
  37. package/dist/index.js +616 -302
  38. package/dist/index.js.map +1 -1
  39. package/package.json +45 -2
@@ -0,0 +1,210 @@
1
+ import {
2
+ ERROR_CODES,
3
+ SpotPatchError,
4
+ activeAdapterSummarySchema,
5
+ dispatchSummarySchema,
6
+ externalHandoffReportableDispatchPhaseSchema,
7
+ externalHandoffSnapshotSchema,
8
+ externalHandoffSummarySchema
9
+ } from "./chunk-MOGITGPP.js";
10
+ import {
11
+ EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,
12
+ EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,
13
+ EXTERNAL_HANDOFF_FRAMEWORKS,
14
+ EXTERNAL_HANDOFF_LIMITS
15
+ } from "./chunk-2LVIH7OA.js";
16
+
17
+ // src/external-agent-node.ts
18
+ import { createHash } from "crypto";
19
+ import { lstat, mkdir, realpath } from "fs/promises";
20
+ import os from "os";
21
+ import path from "path";
22
+ import { z } from "zod";
23
+ var SPOTPATCH_BRIDGE_TOKEN_HEADER = "X-SpotPatch-Bridge-Token";
24
+ var SPOTPATCH_BRIDGE_PATHS = Object.freeze({
25
+ status: "/bridge/v1/status",
26
+ current: "/bridge/v1/handoff/current",
27
+ wait: "/bridge/v1/handoff/wait",
28
+ ack: "/bridge/v1/handoff/ack",
29
+ activeClaim: "/bridge/v1/active/claim",
30
+ activeHeartbeat: "/bridge/v1/active/heartbeat",
31
+ activeReport: "/bridge/v1/active/report",
32
+ activeRelease: "/bridge/v1/active/release"
33
+ });
34
+ var EXTERNAL_HANDOFF_PROJECT_KEY_SALT = "spotpatch-external-agent-project-v1";
35
+ var opaqueIdSchema = z.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/u);
36
+ var projectKeySchema = z.string().length(64).regex(/^[a-f0-9]+$/u);
37
+ var loopbackEndpointSchema = z.url().refine((value) => {
38
+ const match = /^http:\/\/127\.0\.0\.1:([1-9][0-9]{0,4})$/u.exec(value);
39
+ if (match?.[1] === void 0) {
40
+ return false;
41
+ }
42
+ const port = Number(match[1]);
43
+ return Number.isSafeInteger(port) && port <= 65535;
44
+ });
45
+ var externalHandoffDescriptorSchema = z.strictObject({
46
+ schemaVersion: z.literal(1),
47
+ brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),
48
+ projectKey: projectKeySchema,
49
+ sessionId: opaqueIdSchema,
50
+ framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),
51
+ endpoint: loopbackEndpointSchema,
52
+ bridgeToken: z.string().min(43).max(128).regex(/^[A-Za-z0-9_-]+$/u),
53
+ pid: z.number().int().positive(),
54
+ createdAt: z.iso.datetime()
55
+ });
56
+ var bridgeStatusRequestSchema = z.strictObject({});
57
+ var bridgeCurrentRequestSchema = z.strictObject({
58
+ cursor: opaqueIdSchema.optional()
59
+ });
60
+ var bridgeWaitRequestSchema = z.strictObject({
61
+ afterCursor: opaqueIdSchema.optional(),
62
+ timeoutMs: z.number().int().positive().max(EXTERNAL_HANDOFF_LIMITS.maximumWaitMs).default(EXTERNAL_HANDOFF_LIMITS.defaultWaitMs)
63
+ });
64
+ var bridgeAckRequestSchema = z.strictObject({
65
+ cursor: opaqueIdSchema,
66
+ connectorInstanceId: opaqueIdSchema
67
+ });
68
+ var bridgeActiveClaimRequestSchema = z.strictObject({
69
+ adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),
70
+ connectorInstanceId: opaqueIdSchema
71
+ });
72
+ var bridgeActiveHeartbeatRequestSchema = z.strictObject({
73
+ leaseToken: opaqueIdSchema
74
+ });
75
+ var bridgeActiveReportRequestSchema = z.strictObject({
76
+ leaseToken: opaqueIdSchema,
77
+ cursor: opaqueIdSchema,
78
+ phase: externalHandoffReportableDispatchPhaseSchema
79
+ });
80
+ var bridgeActiveReleaseRequestSchema = z.strictObject({
81
+ leaseToken: opaqueIdSchema
82
+ });
83
+ var bridgeStatusSchema = z.strictObject({
84
+ brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),
85
+ projectKey: projectKeySchema,
86
+ sessionId: opaqueIdSchema,
87
+ framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),
88
+ current: externalHandoffSummarySchema.nullable()
89
+ });
90
+ var bridgeCurrentResultSchema = z.strictObject({
91
+ outcome: z.literal("handoff"),
92
+ snapshot: externalHandoffSnapshotSchema
93
+ });
94
+ var bridgeWaitResultSchema = z.discriminatedUnion("outcome", [
95
+ bridgeCurrentResultSchema,
96
+ z.strictObject({ outcome: z.literal("timeout") })
97
+ ]);
98
+ var bridgeAckResultSchema = z.strictObject({
99
+ summary: externalHandoffSummarySchema
100
+ });
101
+ var bridgeActiveClaimResultSchema = z.strictObject({
102
+ leaseToken: opaqueIdSchema,
103
+ heartbeatIntervalMs: z.literal(EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs),
104
+ baselineCursor: opaqueIdSchema.nullable(),
105
+ activeAdapter: activeAdapterSummarySchema
106
+ });
107
+ var bridgeActiveStateResultSchema = z.strictObject({
108
+ activeAdapter: activeAdapterSummarySchema.nullable(),
109
+ dispatch: dispatchSummarySchema.nullable()
110
+ });
111
+ var bridgeActiveHeartbeatResultSchema = bridgeActiveStateResultSchema;
112
+ var bridgeActiveReportResultSchema = bridgeActiveStateResultSchema;
113
+ var bridgeActiveReleaseResultSchema = bridgeActiveStateResultSchema;
114
+ function currentUid() {
115
+ const uid = process.getuid?.();
116
+ if (uid === void 0) {
117
+ throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);
118
+ }
119
+ return uid;
120
+ }
121
+ async function assertPrivateDirectory(directory, uid) {
122
+ const status = await lstat(directory);
123
+ if (!status.isDirectory() || status.isSymbolicLink() || status.uid !== uid || (status.mode & 63) !== 0) {
124
+ throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);
125
+ }
126
+ }
127
+ async function ensurePrivateSubdirectory(base, uid, create) {
128
+ const directory = path.join(base, "spotpatch");
129
+ if (create) {
130
+ try {
131
+ await mkdir(directory, { mode: 448 });
132
+ } catch (error) {
133
+ if (error.code !== "EEXIST") {
134
+ throw error;
135
+ }
136
+ }
137
+ }
138
+ await assertPrivateDirectory(directory, uid);
139
+ return directory;
140
+ }
141
+ async function resolveExternalHandoffRuntimeDirectory(create) {
142
+ if (process.platform === "win32") {
143
+ throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);
144
+ }
145
+ const uid = currentUid();
146
+ const xdgRuntimeDirectory = process.env.XDG_RUNTIME_DIR;
147
+ if (xdgRuntimeDirectory !== void 0 && !path.isAbsolute(xdgRuntimeDirectory)) {
148
+ throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);
149
+ }
150
+ if (xdgRuntimeDirectory !== void 0) {
151
+ try {
152
+ await assertPrivateDirectory(xdgRuntimeDirectory, uid);
153
+ return await ensurePrivateSubdirectory(xdgRuntimeDirectory, uid, create);
154
+ } catch (error) {
155
+ if (!create && error.code === "ENOENT") {
156
+ throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);
157
+ }
158
+ throw error;
159
+ }
160
+ }
161
+ const fallback = path.join(os.tmpdir(), `spotpatch-${String(uid)}`);
162
+ if (create) {
163
+ try {
164
+ await mkdir(fallback, { mode: 448 });
165
+ } catch (error) {
166
+ if (error.code !== "EEXIST") {
167
+ throw error;
168
+ }
169
+ }
170
+ }
171
+ try {
172
+ await assertPrivateDirectory(fallback, uid);
173
+ } catch (error) {
174
+ if (!create && error.code === "ENOENT") {
175
+ throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);
176
+ }
177
+ throw error;
178
+ }
179
+ return fallback;
180
+ }
181
+ async function computeExternalHandoffProjectKey(root) {
182
+ const canonicalRoot = await realpath(root);
183
+ return createHash("sha256").update(`${EXTERNAL_HANDOFF_PROJECT_KEY_SALT}\0${canonicalRoot}`).digest("hex");
184
+ }
185
+ export {
186
+ EXTERNAL_HANDOFF_PROJECT_KEY_SALT,
187
+ SPOTPATCH_BRIDGE_PATHS,
188
+ SPOTPATCH_BRIDGE_TOKEN_HEADER,
189
+ bridgeAckRequestSchema,
190
+ bridgeAckResultSchema,
191
+ bridgeActiveClaimRequestSchema,
192
+ bridgeActiveClaimResultSchema,
193
+ bridgeActiveHeartbeatRequestSchema,
194
+ bridgeActiveHeartbeatResultSchema,
195
+ bridgeActiveReleaseRequestSchema,
196
+ bridgeActiveReleaseResultSchema,
197
+ bridgeActiveReportRequestSchema,
198
+ bridgeActiveReportResultSchema,
199
+ bridgeActiveStateResultSchema,
200
+ bridgeCurrentRequestSchema,
201
+ bridgeCurrentResultSchema,
202
+ bridgeStatusRequestSchema,
203
+ bridgeStatusSchema,
204
+ bridgeWaitRequestSchema,
205
+ bridgeWaitResultSchema,
206
+ computeExternalHandoffProjectKey,
207
+ externalHandoffDescriptorSchema,
208
+ resolveExternalHandoffRuntimeDirectory
209
+ };
210
+ //# sourceMappingURL=external-agent-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/external-agent-node.ts"],"sourcesContent":["/// <reference types=\"node\" />\n\nimport { createHash } from \"node:crypto\";\nimport { lstat, mkdir, realpath } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { z } from \"zod\";\n\nimport {\n EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,\n EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,\n EXTERNAL_HANDOFF_FRAMEWORKS,\n EXTERNAL_HANDOFF_LIMITS,\n activeAdapterSummarySchema,\n dispatchSummarySchema,\n externalHandoffReportableDispatchPhaseSchema,\n externalHandoffSnapshotSchema,\n externalHandoffSummarySchema,\n type ActiveAdapterSummary,\n type DispatchSummary,\n type ExternalHandoffSnapshot,\n} from \"./protocol/external-handoff.js\";\nimport { ERROR_CODES } from \"./errors/error-code.js\";\nimport { SpotPatchError } from \"./errors/spotpatch-error.js\";\n\nexport const SPOTPATCH_BRIDGE_TOKEN_HEADER = \"X-SpotPatch-Bridge-Token\" as const;\nexport const SPOTPATCH_BRIDGE_PATHS = Object.freeze({\n status: \"/bridge/v1/status\",\n current: \"/bridge/v1/handoff/current\",\n wait: \"/bridge/v1/handoff/wait\",\n ack: \"/bridge/v1/handoff/ack\",\n activeClaim: \"/bridge/v1/active/claim\",\n activeHeartbeat: \"/bridge/v1/active/heartbeat\",\n activeReport: \"/bridge/v1/active/report\",\n activeRelease: \"/bridge/v1/active/release\",\n});\nexport const EXTERNAL_HANDOFF_PROJECT_KEY_SALT =\n \"spotpatch-external-agent-project-v1\" as const;\n\nconst opaqueIdSchema = z\n .string()\n .min(22)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst projectKeySchema = z\n .string()\n .length(64)\n .regex(/^[a-f0-9]+$/u);\nconst loopbackEndpointSchema = z.url().refine((value) => {\n const match = /^http:\\/\\/127\\.0\\.0\\.1:([1-9][0-9]{0,4})$/u.exec(value);\n\n if (match?.[1] === undefined) {\n return false;\n }\n\n const port = Number(match[1]);\n return Number.isSafeInteger(port) && port <= 65_535;\n});\n\nexport const externalHandoffDescriptorSchema = z.strictObject({\n schemaVersion: z.literal(1),\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n endpoint: loopbackEndpointSchema,\n bridgeToken: z\n .string()\n .min(43)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u),\n pid: z.number().int().positive(),\n createdAt: z.iso.datetime(),\n});\n\nexport const bridgeStatusRequestSchema = z.strictObject({});\nexport const bridgeCurrentRequestSchema = z.strictObject({\n cursor: opaqueIdSchema.optional(),\n});\nexport const bridgeWaitRequestSchema = z.strictObject({\n afterCursor: opaqueIdSchema.optional(),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .max(EXTERNAL_HANDOFF_LIMITS.maximumWaitMs)\n .default(EXTERNAL_HANDOFF_LIMITS.defaultWaitMs),\n});\nexport const bridgeAckRequestSchema = z.strictObject({\n cursor: opaqueIdSchema,\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveClaimRequestSchema = z.strictObject({\n adapterKind: z.enum(EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS),\n connectorInstanceId: opaqueIdSchema,\n});\nexport const bridgeActiveHeartbeatRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeActiveReportRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n cursor: opaqueIdSchema,\n phase: externalHandoffReportableDispatchPhaseSchema,\n});\nexport const bridgeActiveReleaseRequestSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n});\nexport const bridgeStatusSchema = z.strictObject({\n brokerProtocolVersion: z.literal(EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION),\n projectKey: projectKeySchema,\n sessionId: opaqueIdSchema,\n framework: z.enum(EXTERNAL_HANDOFF_FRAMEWORKS),\n current: externalHandoffSummarySchema.nullable(),\n});\nexport const bridgeCurrentResultSchema = z.strictObject({\n outcome: z.literal(\"handoff\"),\n snapshot: externalHandoffSnapshotSchema,\n});\nexport const bridgeWaitResultSchema = z.discriminatedUnion(\"outcome\", [\n bridgeCurrentResultSchema,\n z.strictObject({ outcome: z.literal(\"timeout\") }),\n]);\nexport const bridgeAckResultSchema = z.strictObject({\n summary: externalHandoffSummarySchema,\n});\nexport const bridgeActiveClaimResultSchema = z.strictObject({\n leaseToken: opaqueIdSchema,\n heartbeatIntervalMs: z.literal(EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs),\n baselineCursor: opaqueIdSchema.nullable(),\n activeAdapter: activeAdapterSummarySchema,\n});\nexport const bridgeActiveStateResultSchema = z.strictObject({\n activeAdapter: activeAdapterSummarySchema.nullable(),\n dispatch: dispatchSummarySchema.nullable(),\n});\nexport const bridgeActiveHeartbeatResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReportResultSchema = bridgeActiveStateResultSchema;\nexport const bridgeActiveReleaseResultSchema = bridgeActiveStateResultSchema;\n\nexport type ExternalHandoffDescriptor = z.infer<typeof externalHandoffDescriptorSchema>;\nexport type BridgeStatus = z.infer<typeof bridgeStatusSchema>;\nexport type BridgeWaitResult =\n | Readonly<{ outcome: \"handoff\"; snapshot: ExternalHandoffSnapshot }>\n | Readonly<{ outcome: \"timeout\" }>;\nexport interface BridgeActiveClaimResult {\n readonly leaseToken: string;\n readonly heartbeatIntervalMs: typeof EXTERNAL_HANDOFF_LIMITS.activeHeartbeatIntervalMs;\n readonly baselineCursor: string | null;\n readonly activeAdapter: ActiveAdapterSummary;\n}\nexport interface BridgeActiveStateResult {\n readonly activeAdapter: ActiveAdapterSummary | null;\n readonly dispatch: DispatchSummary | null;\n}\n\nfunction currentUid(): number {\n const uid = process.getuid?.();\n\n if (uid === undefined) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n return uid;\n}\n\nasync function assertPrivateDirectory(directory: string, uid: number): Promise<void> {\n const status = await lstat(directory);\n\n if (\n !status.isDirectory() ||\n status.isSymbolicLink() ||\n status.uid !== uid ||\n (status.mode & 0o077) !== 0\n ) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n}\n\nasync function ensurePrivateSubdirectory(\n base: string,\n uid: number,\n create: boolean,\n): Promise<string> {\n const directory = path.join(base, \"spotpatch\");\n\n if (create) {\n try {\n await mkdir(directory, { mode: 0o700 });\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n await assertPrivateDirectory(directory, uid);\n return directory;\n}\n\nexport async function resolveExternalHandoffRuntimeDirectory(\n create: boolean,\n): Promise<string> {\n if (process.platform === \"win32\") {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n const uid = currentUid();\n const xdgRuntimeDirectory = process.env.XDG_RUNTIME_DIR;\n\n if (xdgRuntimeDirectory !== undefined && !path.isAbsolute(xdgRuntimeDirectory)) {\n throw new SpotPatchError(ERROR_CODES.BRIDGE_UNAUTHORIZED);\n }\n\n if (xdgRuntimeDirectory !== undefined) {\n try {\n await assertPrivateDirectory(xdgRuntimeDirectory, uid);\n return await ensurePrivateSubdirectory(xdgRuntimeDirectory, uid, create);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n }\n\n const fallback = path.join(os.tmpdir(), `spotpatch-${String(uid)}`);\n\n if (create) {\n try {\n await mkdir(fallback, { mode: 0o700 });\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n try {\n await assertPrivateDirectory(fallback, uid);\n } catch (error: unknown) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new SpotPatchError(ERROR_CODES.SESSION_NOT_FOUND);\n }\n\n throw error;\n }\n\n return fallback;\n}\n\nexport async function computeExternalHandoffProjectKey(root: string): Promise<string> {\n const canonicalRoot = await realpath(root);\n return createHash(\"sha256\")\n .update(`${EXTERNAL_HANDOFF_PROJECT_KEY_SALT}\\0${canonicalRoot}`)\n .digest(\"hex\");\n}\n"],"mappings":"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","names":[]}