@getpaseo/server 0.1.106-beta.1 → 0.1.106
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/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.js +29 -1
- package/dist/server/server/agent/providers/opencode-agent.d.ts +1 -0
- package/dist/server/server/agent/providers/opencode-agent.js +16 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js → desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js.br → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js.gz → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{index-a86ce534865713cb7c387be3cc801600.js → index-99324562861cdf9cf8a835708e73fb2d.js} +380 -379
- package/dist/server/web-ui/_expo/static/js/web/index-99324562861cdf9cf8a835708e73fb2d.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-99324562861cdf9cf8a835708e73fb2d.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js → indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-9899da911b6f974f8abe2559f72ba1f7.js → native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js} +3 -3
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js.gz +0 -0
- package/dist/server/web-ui/index.html +1 -1
- package/dist/server/web-ui/index.html.br +0 -0
- package/dist/server/web-ui/index.html.gz +0 -0
- package/package.json +5 -5
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js.br +0 -4
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-a86ce534865713cb7c387be3cc801600.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-a86ce534865713cb7c387be3cc801600.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-9899da911b6f974f8abe2559f72ba1f7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-9899da911b6f974f8abe2559f72ba1f7.js.gz +0 -0
|
@@ -127,7 +127,10 @@ export class TestOpenCodeClient {
|
|
|
127
127
|
global: {
|
|
128
128
|
event: async (options) => {
|
|
129
129
|
this.calls.globalEvent.push(options);
|
|
130
|
-
|
|
130
|
+
const signal = options.signal;
|
|
131
|
+
return {
|
|
132
|
+
stream: signal ? stopEventStreamOnAbort(this.eventStream, signal) : this.eventStream,
|
|
133
|
+
};
|
|
131
134
|
},
|
|
132
135
|
},
|
|
133
136
|
mcp: {
|
|
@@ -217,6 +220,31 @@ export class TestOpenCodeClient {
|
|
|
217
220
|
};
|
|
218
221
|
}
|
|
219
222
|
}
|
|
223
|
+
function stopEventStreamOnAbort(stream, signal) {
|
|
224
|
+
return {
|
|
225
|
+
[Symbol.asyncIterator]: () => {
|
|
226
|
+
const iterator = stream[Symbol.asyncIterator]();
|
|
227
|
+
return {
|
|
228
|
+
next: () => {
|
|
229
|
+
if (signal.aborted) {
|
|
230
|
+
return Promise.resolve({ done: true, value: undefined });
|
|
231
|
+
}
|
|
232
|
+
return new Promise((resolve, reject) => {
|
|
233
|
+
const onAbort = () => resolve({ done: true, value: undefined });
|
|
234
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
235
|
+
void iterator.next().then((result) => {
|
|
236
|
+
signal.removeEventListener("abort", onAbort);
|
|
237
|
+
return resolve(result);
|
|
238
|
+
}, (error) => {
|
|
239
|
+
signal.removeEventListener("abort", onAbort);
|
|
240
|
+
return reject(error);
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
}
|
|
220
248
|
export function createEventStream(events) {
|
|
221
249
|
return (async function* () {
|
|
222
250
|
for (const event of events) {
|
|
@@ -228,6 +228,7 @@ declare class OpenCodeAgentSession implements AgentSession {
|
|
|
228
228
|
private releaseServer;
|
|
229
229
|
private eventStreamAbortController;
|
|
230
230
|
private eventStreamReady;
|
|
231
|
+
private eventStreamTask;
|
|
231
232
|
private suppressTerminalUntilNextUserMessage;
|
|
232
233
|
private closed;
|
|
233
234
|
private readonly persistSession;
|
|
@@ -1999,6 +1999,7 @@ class OpenCodeAgentSession {
|
|
|
1999
1999
|
this.pendingChildToolPartsBySessionId = new Map();
|
|
2000
2000
|
this.eventStreamAbortController = null;
|
|
2001
2001
|
this.eventStreamReady = null;
|
|
2002
|
+
this.eventStreamTask = null;
|
|
2002
2003
|
this.suppressTerminalUntilNextUserMessage = false;
|
|
2003
2004
|
this.closed = false;
|
|
2004
2005
|
this.deletedFromProvider = false;
|
|
@@ -2287,11 +2288,18 @@ class OpenCodeAgentSession {
|
|
|
2287
2288
|
const eventStreamReady = createDeferred();
|
|
2288
2289
|
this.eventStreamAbortController = eventStreamAbortController;
|
|
2289
2290
|
this.eventStreamReady = eventStreamReady;
|
|
2290
|
-
|
|
2291
|
+
const eventStreamTask = this.consumeEventStream(eventStreamAbortController, eventStreamReady).finally(() => {
|
|
2291
2292
|
if (this.eventStreamAbortController === eventStreamAbortController) {
|
|
2292
2293
|
this.eventStreamAbortController = null;
|
|
2293
2294
|
this.eventStreamReady = null;
|
|
2294
2295
|
}
|
|
2296
|
+
if (this.eventStreamTask === eventStreamTask) {
|
|
2297
|
+
this.eventStreamTask = null;
|
|
2298
|
+
}
|
|
2299
|
+
});
|
|
2300
|
+
this.eventStreamTask = eventStreamTask;
|
|
2301
|
+
void eventStreamTask.catch((error) => {
|
|
2302
|
+
this.logger.warn({ err: error, sessionId: this.sessionId }, "OpenCode event stream task failed");
|
|
2295
2303
|
});
|
|
2296
2304
|
return eventStreamReady.promise;
|
|
2297
2305
|
}
|
|
@@ -2630,9 +2638,16 @@ class OpenCodeAgentSession {
|
|
|
2630
2638
|
// unhandled rejection in whichever test the daemon hops to next.
|
|
2631
2639
|
this.closed = true;
|
|
2632
2640
|
this.abortController?.abort();
|
|
2641
|
+
const eventStreamTask = this.eventStreamTask;
|
|
2633
2642
|
this.eventStreamAbortController?.abort();
|
|
2643
|
+
if (eventStreamTask) {
|
|
2644
|
+
await eventStreamTask.catch((error) => {
|
|
2645
|
+
this.logger.debug({ err: error, sessionId: this.sessionId }, "OpenCode event stream failed during close");
|
|
2646
|
+
});
|
|
2647
|
+
}
|
|
2634
2648
|
this.eventStreamAbortController = null;
|
|
2635
2649
|
this.eventStreamReady = null;
|
|
2650
|
+
this.eventStreamTask = null;
|
|
2636
2651
|
this.subscribers.clear();
|
|
2637
2652
|
await reconcileOpenCodeSessionClose({
|
|
2638
2653
|
client: this.client,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentBridge=function(){const l=(0,s.createDesktopPreviewUrlResolver)({reader:(0,s.createDesktopFileReader)(),objectUrls:(0,s.createBrowserObjectUrlMinter)()});return{copyFile:t.copyDesktopAttachmentFile,writeBase64:t.writeDesktopAttachmentBase64,writeBytes:t.writeDesktopAttachmentBytes,deleteFile:t.deleteDesktopAttachmentFile,garbageCollect:t.garbageCollectDesktopAttachmentFiles,readFileBase64:s.readDesktopFileBase64,resolvePreviewUrl:t=>l.resolve(t),releasePreviewUrl:t=>l.release(t)}};var t=r(d[0]),s=r(d[1])},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentBridge=function(){const l=(0,s.createDesktopPreviewUrlResolver)({reader:(0,s.createDesktopFileReader)(),objectUrls:(0,s.createBrowserObjectUrlMinter)()});return{copyFile:t.copyDesktopAttachmentFile,writeBase64:t.writeDesktopAttachmentBase64,writeBytes:t.writeDesktopAttachmentBytes,deleteFile:t.deleteDesktopAttachmentFile,garbageCollect:t.garbageCollectDesktopAttachmentFiles,readFileBase64:s.readDesktopFileBase64,resolvePreviewUrl:t=>l.resolve(t),releasePreviewUrl:t=>l.release(t)}};var t=r(d[0]),s=r(d[1])},4449,[3947,3948]);
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentStore=function(n){return{storageType:"desktop-file",async save(s){const o=s.id??(0,t.generateAttachmentId)(),l=s.fileName??null;if("file_uri"===s.source.kind)return await c(n,{id:o,uri:s.source.uri,mimeType:s.mimeType,fileName:l});if("data_url"===s.source.kind){const c=(0,t.parseDataUrl)(s.source.dataUrl),p=(0,t.normalizeMimeType)(s.mimeType??c.mimeType);return await y(n,{id:o,base64:c.base64,mimeType:p,fileName:l})}if("bytes"===s.source.kind){const c=(0,t.normalizeMimeType)(s.mimeType);return await p(n,{id:o,bytes:s.source.bytes,mimeType:c,fileName:l})}const f=(0,t.normalizeMimeType)(s.mimeType??s.source.blob.type),u=await(0,t.blobToBase64)(s.source.blob);return await y(n,{id:o,base64:u,mimeType:f,fileName:l})},encodeBase64:async({attachment:t})=>(f(t),await n.readFileBase64(t.storageKey)),resolvePreviewUrl:async({attachment:t})=>(f(t),await n.resolvePreviewUrl(t)),async releasePreviewUrl({attachment:t,url:s}){f(t),await n.releasePreviewUrl({url:s})},async delete({attachment:t}){f(t),await n.deleteFile({path:t.storageKey})},async garbageCollect({referencedIds:t}){await n.garbageCollect({referencedIds:Array.from(t)})}}};var t=r(d[0]);const n={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/gif":".gif","image/webp":".webp","image/avif":".avif","image/heic":".heic","image/heif":".heif","image/tiff":".tiff","image/bmp":".bmp","image/svg+xml":".svg"};function s(t){const n=t.replace(/\\/g,"/").split("/"),s=n[n.length-1];return s&&s.length>0?s:null}function o(s){const o=(0,t.getFileExtensionFromName)(s.fileName);if(o)return o;const l=(0,t.getFileExtensionFromName)(s.sourcePath);return l||(n[s.mimeType]??".img")}function l(t){return{id:t.id,mimeType:t.mimeType,storageType:"desktop-file",storageKey:t.storagePath,fileName:t.fileName??null,byteSize:t.byteSize,createdAt:Date.now()}}async function c(n,c){const y=(0,t.fileUriToPath)(c.uri),p=c.fileName??s(y),f=(0,t.normalizeMimeType)(c.mimeType),u=o({fileName:p,sourcePath:y,mimeType:f}),T=await n.copyFile({attachmentId:c.id,sourcePath:y,extension:u});return l({id:c.id,mimeType:f,storagePath:T.path,byteSize:T.byteSize,fileName:p})}async function y(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBase64({attachmentId:n.id,base64:n.base64,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}async function p(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBytes({attachmentId:n.id,bytes:n.bytes,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}function f(t){if("desktop-file"!==t.storageType)throw new Error(`Unsupported desktop attachment storage type '${t.storageType}'.`)}},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createDesktopAttachmentStore=function(n){return{storageType:"desktop-file",async save(s){const o=s.id??(0,t.generateAttachmentId)(),l=s.fileName??null;if("file_uri"===s.source.kind)return await c(n,{id:o,uri:s.source.uri,mimeType:s.mimeType,fileName:l});if("data_url"===s.source.kind){const c=(0,t.parseDataUrl)(s.source.dataUrl),p=(0,t.normalizeMimeType)(s.mimeType??c.mimeType);return await y(n,{id:o,base64:c.base64,mimeType:p,fileName:l})}if("bytes"===s.source.kind){const c=(0,t.normalizeMimeType)(s.mimeType);return await p(n,{id:o,bytes:s.source.bytes,mimeType:c,fileName:l})}const f=(0,t.normalizeMimeType)(s.mimeType??s.source.blob.type),u=await(0,t.blobToBase64)(s.source.blob);return await y(n,{id:o,base64:u,mimeType:f,fileName:l})},encodeBase64:async({attachment:t})=>(f(t),await n.readFileBase64(t.storageKey)),resolvePreviewUrl:async({attachment:t})=>(f(t),await n.resolvePreviewUrl(t)),async releasePreviewUrl({attachment:t,url:s}){f(t),await n.releasePreviewUrl({url:s})},async delete({attachment:t}){f(t),await n.deleteFile({path:t.storageKey})},async garbageCollect({referencedIds:t}){await n.garbageCollect({referencedIds:Array.from(t)})}}};var t=r(d[0]);const n={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/gif":".gif","image/webp":".webp","image/avif":".avif","image/heic":".heic","image/heif":".heif","image/tiff":".tiff","image/bmp":".bmp","image/svg+xml":".svg"};function s(t){const n=t.replace(/\\/g,"/").split("/"),s=n[n.length-1];return s&&s.length>0?s:null}function o(s){const o=(0,t.getFileExtensionFromName)(s.fileName);if(o)return o;const l=(0,t.getFileExtensionFromName)(s.sourcePath);return l||(n[s.mimeType]??".img")}function l(t){return{id:t.id,mimeType:t.mimeType,storageType:"desktop-file",storageKey:t.storagePath,fileName:t.fileName??null,byteSize:t.byteSize,createdAt:Date.now()}}async function c(n,c){const y=(0,t.fileUriToPath)(c.uri),p=c.fileName??s(y),f=(0,t.normalizeMimeType)(c.mimeType),u=o({fileName:p,sourcePath:y,mimeType:f}),T=await n.copyFile({attachmentId:c.id,sourcePath:y,extension:u});return l({id:c.id,mimeType:f,storagePath:T.path,byteSize:T.byteSize,fileName:p})}async function y(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBase64({attachmentId:n.id,base64:n.base64,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}async function p(t,n){const s=o({fileName:n.fileName,mimeType:n.mimeType}),c=await t.writeBytes({attachmentId:n.id,bytes:n.bytes,extension:s});return l({id:n.id,mimeType:n.mimeType,storagePath:c.path,byteSize:c.byteSize,fileName:n.fileName})}function f(t){if("desktop-file"!==t.storageType)throw new Error(`Unsupported desktop attachment storage type '${t.storageType}'.`)}},4448,[3949]);
|
|
Binary file
|