@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.
Files changed (30) hide show
  1. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.js +29 -1
  2. package/dist/server/server/agent/providers/opencode-agent.d.ts +1 -0
  3. package/dist/server/server/agent/providers/opencode-agent.js +16 -1
  4. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js → desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js} +1 -1
  5. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js.br +0 -0
  6. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-2b3819d996f3da06b9ef2e0071991dfb.js.gz +0 -0
  7. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js} +1 -1
  8. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js.br → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js.br} +0 -0
  9. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-df574a40f43b0e91694b0ca79c3299e6.js.gz → desktop-attachment-store-b1d469f6f44e518d9e70bc1ec06182b6.js.gz} +0 -0
  10. package/dist/server/web-ui/_expo/static/js/web/{index-a86ce534865713cb7c387be3cc801600.js → index-99324562861cdf9cf8a835708e73fb2d.js} +380 -379
  11. package/dist/server/web-ui/_expo/static/js/web/index-99324562861cdf9cf8a835708e73fb2d.js.br +0 -0
  12. package/dist/server/web-ui/_expo/static/js/web/index-99324562861cdf9cf8a835708e73fb2d.js.gz +0 -0
  13. package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js → indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js} +1 -1
  14. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js.br +0 -0
  15. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-c9a78be69cddc2202fd0c6f9ed72c7de.js.gz +0 -0
  16. package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-9899da911b6f974f8abe2559f72ba1f7.js → native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js} +3 -3
  17. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js.br +0 -0
  18. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-5d2c6fb454e69df77d2619abfe866566.js.gz +0 -0
  19. package/dist/server/web-ui/index.html +1 -1
  20. package/dist/server/web-ui/index.html.br +0 -0
  21. package/dist/server/web-ui/index.html.gz +0 -0
  22. package/package.json +5 -5
  23. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js.br +0 -4
  24. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-a27322ec2896c9c579993dfff09dcbaa.js.gz +0 -0
  25. package/dist/server/web-ui/_expo/static/js/web/index-a86ce534865713cb7c387be3cc801600.js.br +0 -0
  26. package/dist/server/web-ui/_expo/static/js/web/index-a86ce534865713cb7c387be3cc801600.js.gz +0 -0
  27. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js.br +0 -0
  28. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-e1424009bb94ab9d5d40a2376dba91d5.js.gz +0 -0
  29. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-9899da911b6f974f8abe2559f72ba1f7.js.br +0 -0
  30. 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
- return { stream: this.eventStream };
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
- void this.consumeEventStream(eventStreamAbortController, eventStreamReady).finally(() => {
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])},4448,[3947,3948]);
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]);
@@ -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}'.`)}},4447,[3949]);
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]);