@panorama-ai/gateway 2.30.207 → 2.30.279

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 (57) hide show
  1. package/README.md +10 -0
  2. package/dist/cli-providers/types.d.ts +1 -1
  3. package/dist/cli-providers/types.d.ts.map +1 -1
  4. package/dist/database.types.d.ts +1723 -172
  5. package/dist/database.types.d.ts.map +1 -1
  6. package/dist/database.types.js.map +1 -1
  7. package/dist/finalize-subagent-run.d.ts +2 -1
  8. package/dist/finalize-subagent-run.d.ts.map +1 -1
  9. package/dist/finalize-subagent-run.js.map +1 -1
  10. package/dist/index.js +3384 -241
  11. package/dist/index.js.map +4 -4
  12. package/dist/managed-runtime/config.d.ts +13 -0
  13. package/dist/managed-runtime/config.d.ts.map +1 -1
  14. package/dist/managed-runtime/config.js +31 -0
  15. package/dist/managed-runtime/config.js.map +1 -1
  16. package/dist/managed-runtime/dependencies.d.ts +2 -0
  17. package/dist/managed-runtime/dependencies.d.ts.map +1 -1
  18. package/dist/managed-runtime/dependencies.js +2 -0
  19. package/dist/managed-runtime/dependencies.js.map +1 -1
  20. package/dist/managed-runtime/drive-sync-filesystem.d.ts +39 -0
  21. package/dist/managed-runtime/drive-sync-filesystem.d.ts.map +1 -0
  22. package/dist/managed-runtime/drive-sync-filesystem.js +434 -0
  23. package/dist/managed-runtime/drive-sync-filesystem.js.map +1 -0
  24. package/dist/managed-runtime/drive-sync-planner.d.ts +76 -0
  25. package/dist/managed-runtime/drive-sync-planner.d.ts.map +1 -0
  26. package/dist/managed-runtime/drive-sync-planner.js +363 -0
  27. package/dist/managed-runtime/drive-sync-planner.js.map +1 -0
  28. package/dist/managed-runtime/drive-sync-remote-planner.d.ts +52 -0
  29. package/dist/managed-runtime/drive-sync-remote-planner.d.ts.map +1 -0
  30. package/dist/managed-runtime/drive-sync-remote-planner.js +77 -0
  31. package/dist/managed-runtime/drive-sync-remote-planner.js.map +1 -0
  32. package/dist/managed-runtime/drive-sync-scheduler.d.ts +50 -0
  33. package/dist/managed-runtime/drive-sync-scheduler.d.ts.map +1 -0
  34. package/dist/managed-runtime/drive-sync-scheduler.js +302 -0
  35. package/dist/managed-runtime/drive-sync-scheduler.js.map +1 -0
  36. package/dist/managed-runtime/drive-sync-state-applier.d.ts +84 -0
  37. package/dist/managed-runtime/drive-sync-state-applier.d.ts.map +1 -0
  38. package/dist/managed-runtime/drive-sync-state-applier.js +153 -0
  39. package/dist/managed-runtime/drive-sync-state-applier.js.map +1 -0
  40. package/dist/managed-runtime/drive-sync-transfer.d.ts +86 -0
  41. package/dist/managed-runtime/drive-sync-transfer.d.ts.map +1 -0
  42. package/dist/managed-runtime/drive-sync-transfer.js +245 -0
  43. package/dist/managed-runtime/drive-sync-transfer.js.map +1 -0
  44. package/dist/managed-runtime/drive-sync.d.ts +416 -0
  45. package/dist/managed-runtime/drive-sync.d.ts.map +1 -0
  46. package/dist/managed-runtime/drive-sync.js +1641 -0
  47. package/dist/managed-runtime/drive-sync.js.map +1 -0
  48. package/dist/managed-runtime.d.ts.map +1 -1
  49. package/dist/managed-runtime.js +44 -0
  50. package/dist/managed-runtime.js.map +1 -1
  51. package/dist/subagent-adapters/types.d.ts +1 -1
  52. package/dist/subagent-adapters/types.d.ts.map +1 -1
  53. package/dist/subagent-output-persistence.d.ts +1 -1
  54. package/dist/subagent-output-persistence.d.ts.map +1 -1
  55. package/dist/subagent-output-persistence.js +1 -1
  56. package/dist/subagent-output-persistence.js.map +1 -1
  57. package/package.json +5 -5
@@ -0,0 +1,86 @@
1
+ import { type LocalDriveMutation } from './drive-sync-planner.js';
2
+ export type DriveObjectSignedRequest = {
3
+ method: 'GET' | 'PUT' | 'DELETE';
4
+ url: string;
5
+ headers: Record<string, string>;
6
+ expires_at: string;
7
+ };
8
+ export type PrepareDriveFileUploadResult = {
9
+ success: true;
10
+ drive_id: string;
11
+ path: string;
12
+ version_id: string;
13
+ storage_backend: 'object';
14
+ storage_key: string;
15
+ content_sha256: string;
16
+ size_bytes: number;
17
+ mime_type: string | null;
18
+ upload_id?: string;
19
+ upload_expires_at?: string;
20
+ upload_status?: 'pending' | 'committed';
21
+ upload_request: DriveObjectSignedRequest | null;
22
+ };
23
+ export type DownloadDriveFileVersionResult = {
24
+ success: true;
25
+ file: {
26
+ path: string;
27
+ version_id: string;
28
+ content_sha256: string;
29
+ mime_type: string | null;
30
+ size_bytes: number;
31
+ transfer_mode?: 'direct';
32
+ download_request?: DriveObjectSignedRequest;
33
+ content_format?: 'base64' | 'text';
34
+ is_utf8_text?: boolean;
35
+ content_base64?: string;
36
+ text_content?: string;
37
+ };
38
+ };
39
+ export type DriveUploadApi = {
40
+ prepareFileUpload?(body: {
41
+ sync_client_id: string;
42
+ drive_id: string;
43
+ path: string;
44
+ version_id: string;
45
+ content_sha256: string;
46
+ size_bytes: number;
47
+ mime_type?: string | null;
48
+ }): Promise<PrepareDriveFileUploadResult>;
49
+ };
50
+ export type DriveDownloadApi = {
51
+ downloadFileVersion(body: {
52
+ sync_client_id: string;
53
+ drive_id: string;
54
+ version_id: string;
55
+ format: 'base64';
56
+ transfer_mode?: 'direct';
57
+ }): Promise<DownloadDriveFileVersionResult>;
58
+ };
59
+ export type PrepareLocalMutationUploadsResult = {
60
+ preparedMutations: LocalDriveMutation[];
61
+ deferredPaths: string[];
62
+ };
63
+ export declare class LocalDriveFileDeferredError extends Error {
64
+ readonly drivePath: string;
65
+ constructor(drivePath: string, message?: string);
66
+ }
67
+ export declare function isLocalDriveFileDeferredError(error: unknown): error is LocalDriveFileDeferredError;
68
+ export declare function prepareLocalMutationUploads(params: {
69
+ syncClientId: string;
70
+ driveId: string;
71
+ api: DriveUploadApi;
72
+ mutations: LocalDriveMutation[];
73
+ }): Promise<PrepareLocalMutationUploadsResult>;
74
+ export declare function downloadDriveVersionToLocalFile(params: {
75
+ api: DriveDownloadApi;
76
+ syncClientId: string;
77
+ driveId: string;
78
+ versionId: string;
79
+ targetPath: string;
80
+ expectedSizeBytes: number | null;
81
+ expectedSha256: string | null;
82
+ }): Promise<{
83
+ sizeBytes: number;
84
+ contentSha256: string;
85
+ }>;
86
+ //# sourceMappingURL=drive-sync-transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-sync-transfer.d.ts","sourceRoot":"","sources":["../../src/managed-runtime/drive-sync-transfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { createReadStream, createWriteStream } from 'node:fs';
3
+ import { lstat, mkdir, rename, rm, writeFile } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import { Readable } from 'node:stream';
6
+ import { pipeline } from 'node:stream/promises';
7
+ import { DRIVE_TRANSFER_POLICY } from '@panorama/shared/drive-transfer-policy';
8
+ import { normalizeDrivePath } from './drive-sync-filesystem.js';
9
+ const DEFAULT_DRIVE_SYNC_TRANSFER_TIMEOUT_MS = DRIVE_TRANSFER_POLICY.networkRequestTimeoutMs;
10
+ export class LocalDriveFileDeferredError extends Error {
11
+ drivePath;
12
+ constructor(drivePath, message) {
13
+ super(message ?? `Local drive file changed while it was being read; deferring sync for ${drivePath}`);
14
+ this.name = 'LocalDriveFileDeferredError';
15
+ this.drivePath = drivePath;
16
+ }
17
+ }
18
+ export function isLocalDriveFileDeferredError(error) {
19
+ return error instanceof LocalDriveFileDeferredError;
20
+ }
21
+ export async function prepareLocalMutationUploads(params) {
22
+ const preparedMutations = [];
23
+ const deferredPaths = [];
24
+ const requiresUploadApi = params.mutations.some((mutation) => mutation.request.type === 'write_file' &&
25
+ mutation.localFilePath &&
26
+ typeof mutation.request.storage_key !== 'string');
27
+ if (requiresUploadApi && !params.api.prepareFileUpload) {
28
+ throw new Error('Drive sync direct upload API is not configured');
29
+ }
30
+ for (const mutation of params.mutations) {
31
+ const localFilePath = mutation.localFilePath;
32
+ if (mutation.request.type !== 'write_file' || !localFilePath) {
33
+ preparedMutations.push(mutation);
34
+ continue;
35
+ }
36
+ if (typeof mutation.request.storage_key === 'string') {
37
+ preparedMutations.push(mutation);
38
+ continue;
39
+ }
40
+ const drivePath = readMutationString(mutation.request, 'path');
41
+ try {
42
+ const contentSha256 = readMutationString(mutation.request, 'content_sha256');
43
+ const sizeBytes = readMutationNumber(mutation.request, 'size_bytes');
44
+ const versionId = buildDeterministicDriveVersionId({
45
+ driveId: params.driveId,
46
+ path: drivePath,
47
+ contentSha256,
48
+ sizeBytes,
49
+ baseVersionId: typeof mutation.request.base_version_id === 'string'
50
+ ? mutation.request.base_version_id
51
+ : null,
52
+ });
53
+ await assertLocalFileFingerprint(mutation);
54
+ const prepared = await params.api.prepareFileUpload({
55
+ sync_client_id: params.syncClientId,
56
+ drive_id: params.driveId,
57
+ path: drivePath,
58
+ version_id: versionId,
59
+ content_sha256: contentSha256,
60
+ size_bytes: sizeBytes,
61
+ mime_type: typeof mutation.request.mime_type === 'string' ? mutation.request.mime_type : null,
62
+ });
63
+ if (prepared.upload_request) {
64
+ await uploadLocalFileToSignedRequest({
65
+ filePath: localFilePath,
66
+ sizeBytes,
67
+ signedRequest: prepared.upload_request,
68
+ });
69
+ }
70
+ else if (prepared.upload_status !== 'committed') {
71
+ throw new Error('Prepared drive upload did not include an upload request');
72
+ }
73
+ await assertLocalFileFingerprint(mutation);
74
+ mutation.request.version_id = prepared.version_id;
75
+ mutation.request.storage_key = prepared.storage_key;
76
+ preparedMutations.push(mutation);
77
+ }
78
+ catch (error) {
79
+ if (!isLocalDriveFileDeferredError(error)) {
80
+ throw error;
81
+ }
82
+ deferredPaths.push(error.drivePath);
83
+ }
84
+ }
85
+ return { preparedMutations, deferredPaths };
86
+ }
87
+ export async function downloadDriveVersionToLocalFile(params) {
88
+ const response = await params.api.downloadFileVersion({
89
+ sync_client_id: params.syncClientId,
90
+ drive_id: params.driveId,
91
+ version_id: params.versionId,
92
+ format: 'base64',
93
+ transfer_mode: 'direct',
94
+ });
95
+ if (response.file.transfer_mode === 'direct' && response.file.download_request) {
96
+ return await downloadSignedRequestToFile({
97
+ signedRequest: response.file.download_request,
98
+ targetPath: params.targetPath,
99
+ expectedSizeBytes: params.expectedSizeBytes,
100
+ expectedSha256: params.expectedSha256,
101
+ });
102
+ }
103
+ if (response.file.content_format !== 'base64' || !response.file.content_base64) {
104
+ throw new Error(`Drive file version ${params.versionId} was not returned as base64`);
105
+ }
106
+ const bytes = Buffer.from(response.file.content_base64, 'base64');
107
+ const contentSha256 = sha256Hex(bytes);
108
+ if (params.expectedSizeBytes !== null && bytes.byteLength !== params.expectedSizeBytes) {
109
+ throw new Error(`Downloaded drive file size mismatch for ${params.versionId}`);
110
+ }
111
+ if (params.expectedSha256 && contentSha256 !== params.expectedSha256) {
112
+ throw new Error(`Downloaded drive file hash mismatch for ${params.versionId}`);
113
+ }
114
+ await mkdir(path.dirname(params.targetPath), { recursive: true });
115
+ await writeFile(params.targetPath, bytes);
116
+ return { sizeBytes: bytes.byteLength, contentSha256 };
117
+ }
118
+ async function assertLocalFileFingerprint(mutation) {
119
+ if (!mutation.localFilePath || !mutation.localFingerprint) {
120
+ return;
121
+ }
122
+ const current = await lstat(mutation.localFilePath);
123
+ if (!current.isFile() ||
124
+ current.size !== mutation.localFingerprint.sizeBytes ||
125
+ current.mtimeMs !== mutation.localFingerprint.mtimeMs ||
126
+ current.ctimeMs !== mutation.localFingerprint.ctimeMs) {
127
+ const drivePath = readMutationString(mutation.request, 'path');
128
+ throw new LocalDriveFileDeferredError(drivePath);
129
+ }
130
+ }
131
+ async function uploadLocalFileToSignedRequest(params) {
132
+ const headers = new Headers(params.signedRequest.headers);
133
+ headers.set('content-length', String(params.sizeBytes));
134
+ const response = await fetchWithTimeout(params.signedRequest.url, {
135
+ method: params.signedRequest.method,
136
+ headers,
137
+ body: createReadStream(params.filePath),
138
+ duplex: 'half',
139
+ }, {
140
+ timeoutMs: DEFAULT_DRIVE_SYNC_TRANSFER_TIMEOUT_MS,
141
+ label: 'Drive object upload',
142
+ });
143
+ if (!response.ok) {
144
+ const body = await response.text().catch(() => '');
145
+ throw new Error(`Drive object upload failed with status ${response.status}${body ? ` body=${body.slice(0, 500)}` : ''}`);
146
+ }
147
+ }
148
+ async function downloadSignedRequestToFile(params) {
149
+ const response = await fetchWithTimeout(params.signedRequest.url, {
150
+ method: params.signedRequest.method,
151
+ headers: params.signedRequest.headers,
152
+ }, {
153
+ timeoutMs: DEFAULT_DRIVE_SYNC_TRANSFER_TIMEOUT_MS,
154
+ label: 'Drive object download',
155
+ });
156
+ if (!response.ok || !response.body) {
157
+ const body = await response.text().catch(() => '');
158
+ throw new Error(`Drive object download failed with status ${response.status}${body ? ` body=${body.slice(0, 500)}` : ''}`);
159
+ }
160
+ await mkdir(path.dirname(params.targetPath), { recursive: true });
161
+ const tempPath = `${params.targetPath}.panorama-download-${randomUUID()}.tmp`;
162
+ const hash = createHash('sha256');
163
+ let sizeBytes = 0;
164
+ try {
165
+ const source = Readable.fromWeb(response.body);
166
+ await pipeline(source, async function* hashChunks(chunks) {
167
+ for await (const chunk of chunks) {
168
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
169
+ sizeBytes += buffer.byteLength;
170
+ hash.update(buffer);
171
+ yield buffer;
172
+ }
173
+ }, createWriteStream(tempPath));
174
+ const contentSha256 = hash.digest('hex');
175
+ if (params.expectedSizeBytes !== null && sizeBytes !== params.expectedSizeBytes) {
176
+ throw new Error(`Downloaded drive file size mismatch for ${params.targetPath}`);
177
+ }
178
+ if (params.expectedSha256 && contentSha256 !== params.expectedSha256) {
179
+ throw new Error(`Downloaded drive file hash mismatch for ${params.targetPath}`);
180
+ }
181
+ await rename(tempPath, params.targetPath);
182
+ return { sizeBytes, contentSha256 };
183
+ }
184
+ catch (error) {
185
+ await rm(tempPath, { force: true }).catch(() => undefined);
186
+ throw error;
187
+ }
188
+ }
189
+ async function fetchWithTimeout(input, init, options) {
190
+ const controller = new AbortController();
191
+ const timer = setTimeout(() => {
192
+ controller.abort();
193
+ }, options.timeoutMs);
194
+ timer.unref?.();
195
+ try {
196
+ return await fetch(input, {
197
+ ...init,
198
+ signal: init.signal ?? controller.signal,
199
+ });
200
+ }
201
+ catch (error) {
202
+ if (controller.signal.aborted) {
203
+ throw new Error(`${options.label} timed out after ${options.timeoutMs}ms`);
204
+ }
205
+ throw error;
206
+ }
207
+ finally {
208
+ clearTimeout(timer);
209
+ }
210
+ }
211
+ function buildDeterministicDriveVersionId(params) {
212
+ const hash = createHash('sha256')
213
+ .update([
214
+ 'panorama-drive-version-v1',
215
+ params.driveId,
216
+ normalizeDrivePath(params.path),
217
+ params.contentSha256,
218
+ String(params.sizeBytes),
219
+ params.baseVersionId ?? '',
220
+ ].join('\0'))
221
+ .digest();
222
+ const bytes = Buffer.from(hash.subarray(0, 16));
223
+ bytes[6] = (bytes[6] & 0x0f) | 0x50;
224
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
225
+ const hex = bytes.toString('hex');
226
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
227
+ }
228
+ function readMutationString(request, key) {
229
+ const value = request[key];
230
+ if (typeof value !== 'string') {
231
+ throw new Error(`Local drive sync mutation is missing ${key}`);
232
+ }
233
+ return value;
234
+ }
235
+ function readMutationNumber(request, key) {
236
+ const value = request[key];
237
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
238
+ throw new Error(`Local drive sync mutation is missing numeric ${key}`);
239
+ }
240
+ return value;
241
+ }
242
+ function sha256Hex(bytes) {
243
+ return createHash('sha256').update(bytes).digest('hex');
244
+ }
245
+ //# sourceMappingURL=drive-sync-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-sync-transfer.js","sourceRoot":"","sources":["../../src/managed-runtime/drive-sync-transfer.ts"],"names":[],"mappings":"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"}