@getpaseo/server 0.9.2 → 0.10.0-beta.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.
- package/dist/scripts/supervisor.js +51 -21
- package/dist/server/server/agent/agent-manager.js +22 -2
- package/dist/server/server/agent/agent-prompt.js +12 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts +3 -0
- package/dist/server/server/agent/mcp-shared.d.ts +5 -1
- package/dist/server/server/agent/mcp-shared.js +2 -1
- package/dist/server/server/agent/provider-registry.js +2 -2
- package/dist/server/server/agent/providers/acp-agent.js +20 -11
- package/dist/server/server/agent/providers/claude/agent.d.ts +1 -2
- package/dist/server/server/agent/providers/claude/agent.js +10 -9
- package/dist/server/server/agent/providers/claude/models.d.ts +1 -1
- package/dist/server/server/agent/providers/claude/models.js +1 -5
- package/dist/server/server/agent/providers/claude/project-dir.d.ts +1 -0
- package/dist/server/server/agent/providers/claude/project-dir.js +5 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +6 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +10 -1
- package/dist/server/server/agent/providers/generic-acp-agent.js +3 -1
- package/dist/server/server/agent/providers/omp/agent.js +23 -6
- package/dist/server/server/agent/providers/omp/rpc-types.d.ts +1 -0
- package/dist/server/server/agent/providers/omp/rpc-types.js +1 -0
- package/dist/server/server/agent/providers/opencode/bridge.d.ts +5 -1
- package/dist/server/server/agent/providers/opencode/bridge.js +56 -5
- package/dist/server/server/agent/providers/opencode/http-error.d.ts +8 -0
- package/dist/server/server/agent/providers/opencode/http-error.js +13 -0
- package/dist/server/server/agent/providers/opencode/runtime-client.d.ts +38 -0
- package/dist/server/server/agent/providers/opencode/runtime-client.js +131 -0
- package/dist/server/server/agent/providers/opencode/runtime-notice.d.ts +3 -0
- package/dist/server/server/agent/providers/opencode/runtime-notice.js +47 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js +19 -8
- package/dist/server/server/agent/providers/opencode/v2/agent.d.ts +36 -0
- package/dist/server/server/agent/providers/opencode/v2/agent.js +208 -0
- package/dist/server/server/agent/providers/opencode/v2/api.d.ts +18 -0
- package/dist/server/server/agent/providers/opencode/v2/api.js +2 -0
- package/dist/server/server/agent/providers/opencode/v2/bridge-plugin.bundle.mjs +6693 -0
- package/dist/server/server/agent/providers/opencode/v2/capabilities.d.ts +3 -0
- package/dist/server/server/agent/providers/opencode/v2/capabilities.js +13 -0
- package/dist/server/server/agent/providers/opencode/v2/children.d.ts +20 -0
- package/dist/server/server/agent/providers/opencode/v2/children.js +75 -0
- package/dist/server/server/agent/providers/opencode/v2/commands.d.ts +4 -0
- package/dist/server/server/agent/providers/opencode/v2/commands.js +36 -0
- package/dist/server/server/agent/providers/opencode/v2/configuration.d.ts +8 -0
- package/dist/server/server/agent/providers/opencode/v2/configuration.js +64 -0
- package/dist/server/server/agent/providers/opencode/v2/history.d.ts +4 -0
- package/dist/server/server/agent/providers/opencode/v2/history.js +15 -0
- package/dist/server/server/agent/providers/opencode/v2/mapping.d.ts +7 -0
- package/dist/server/server/agent/providers/opencode/v2/mapping.js +42 -0
- package/dist/server/server/agent/providers/opencode/v2/permissions.d.ts +18 -0
- package/dist/server/server/agent/providers/opencode/v2/permissions.js +157 -0
- package/dist/server/server/agent/providers/opencode/v2/readiness.d.ts +18 -0
- package/dist/server/server/agent/providers/opencode/v2/readiness.js +51 -0
- package/dist/server/server/agent/providers/opencode/v2/runtime.d.ts +36 -0
- package/dist/server/server/agent/providers/opencode/v2/runtime.js +230 -0
- package/dist/server/server/agent/providers/opencode/v2/session.d.ts +84 -0
- package/dist/server/server/agent/providers/opencode/v2/session.js +465 -0
- package/dist/server/server/agent/providers/opencode/v2/structured-output.d.ts +8 -0
- package/dist/server/server/agent/providers/opencode/v2/structured-output.js +32 -0
- package/dist/server/server/agent/providers/opencode/v2/timeline.d.ts +28 -0
- package/dist/server/server/agent/providers/opencode/v2/timeline.js +154 -0
- package/dist/server/server/agent/providers/opencode/v2/turns.d.ts +40 -0
- package/dist/server/server/agent/providers/opencode/v2/turns.js +226 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +26 -7
- package/dist/server/server/agent/providers/opencode-agent.js +100 -40
- package/dist/server/server/agent/providers/pi/agent.d.ts +6 -6
- package/dist/server/server/agent/providers/pi/agent.js +114 -165
- package/dist/server/server/agent/providers/pi/extensions/child-session.d.ts +4 -0
- package/dist/server/server/agent/providers/pi/extensions/child-session.js +59 -0
- package/dist/server/server/agent/providers/pi/extensions/contract.d.ts +68 -0
- package/dist/server/server/agent/providers/pi/extensions/contract.js +2 -0
- package/dist/server/server/agent/providers/pi/extensions/gotgenes-pi-subagents/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/gotgenes-pi-subagents/index.js +159 -0
- package/dist/server/server/agent/providers/pi/extensions/host.d.ts +28 -0
- package/dist/server/server/agent/providers/pi/extensions/host.js +94 -0
- package/dist/server/server/agent/providers/pi/extensions/index.d.ts +7 -0
- package/dist/server/server/agent/providers/pi/extensions/index.js +6 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-ask-user/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-ask-user/index.js +138 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-example-todo/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-example-todo/index.js +38 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-goal-x/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-goal-x/index.js +63 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-mcp-adapter/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-mcp-adapter/index.js +48 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-subagents/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/pi-subagents/index.js +131 -0
- package/dist/server/server/agent/providers/pi/extensions/registry.d.ts +2 -0
- package/dist/server/server/agent/providers/pi/extensions/registry.js +21 -0
- package/dist/server/server/agent/providers/pi/extensions/rpiv-ask-user-question/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/rpiv-ask-user-question/index.js +180 -0
- package/dist/server/server/agent/providers/pi/extensions/rpiv-todo/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/rpiv-todo/index.js +51 -0
- package/dist/server/server/agent/providers/pi/extensions/subagent-fixture-test.d.ts +22 -0
- package/dist/server/server/agent/providers/pi/extensions/subagent-fixture-test.js +66 -0
- package/dist/server/server/agent/providers/pi/extensions/task-fixture-test.d.ts +4 -0
- package/dist/server/server/agent/providers/pi/extensions/task-fixture-test.js +79 -0
- package/dist/server/server/agent/providers/pi/extensions/tintinweb-pi-subagents/index.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/extensions/tintinweb-pi-subagents/index.js +149 -0
- package/dist/server/server/agent/providers/pi/history-mapper.d.ts +7 -2
- package/dist/server/server/agent/providers/pi/history-mapper.js +78 -35
- package/dist/server/server/agent/providers/pi/rpc-types.d.ts +3 -0
- package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +170 -0
- package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +355 -0
- package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +1 -6
- package/dist/server/server/agent/providers/pi/tool-call-mapper.js +1 -97
- package/dist/server/server/agent/tools/paseo-tools.js +22 -15
- package/dist/server/server/auth.d.ts +1 -2
- package/dist/server/server/auth.js +8 -14
- package/dist/server/server/bootstrap.js +10 -2
- package/dist/server/server/daemon-instance.d.ts +1 -0
- package/dist/server/server/daemon-instance.js +1 -0
- package/dist/server/server/exports.d.ts +1 -1
- package/dist/server/server/exports.js +1 -1
- package/dist/server/server/local-credential.d.ts +6 -0
- package/dist/server/server/local-credential.js +82 -0
- package/dist/server/server/session-admission-auth.d.ts +16 -0
- package/dist/server/server/session-admission-auth.js +26 -0
- package/dist/server/server/websocket-server.d.ts +6 -1
- package/dist/server/server/websocket-server.js +132 -55
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js → desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js.br → desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-9da07adb97f5e0eb726f7762afee43f5.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js → desktop-attachment-store-d5d3402a752965d3037191484127123b.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js.br → desktop-attachment-store-d5d3402a752965d3037191484127123b.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-d5d3402a752965d3037191484127123b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{index-8868523fc6d311c5da524c067d1cd426.js → index-69ce3c243032c3bedfc6f2ad379a4cdd.js} +1579 -1575
- package/dist/server/web-ui/_expo/static/js/web/index-69ce3c243032c3bedfc6f2ad379a4cdd.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-69ce3c243032c3bedfc6f2ad379a4cdd.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js → indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js.br → indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-3afc19e43c8152bd3c6d71b3ea8776dc.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js → native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.js} +3 -3
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-187a9d5c32188f357dbbf037a0f89073.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/dist/src/server/daemon-instance.js +1 -0
- package/dist/src/server/local-credential.js +82 -0
- package/package.json +8 -7
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-f41bce08c3c4ac2de0652d20234d19e9.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-9e271e161480b0d1dd35e58616a37341.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-8868523fc6d311c5da524c067d1cd426.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-8868523fc6d311c5da524c067d1cd426.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-369cdb67f5856fd2c72d640df0b7b79e.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-bcd89f6ce714279a8f4fa0e024f3a610.js.gz +0 -0
|
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.createIndexedDbAttachmentStore=function(){return{storageType:"web-indexeddb",async save(n){const o=n.id??(0,t.generateAttachmentId)(),s=Date.now(),{blob:c,mimeType:u}=await b(n),w=n.fileName??null,p=await l();try{await y(p,"readwrite",t=>t.put({id:o,blob:c,createdAt:s,fileName:w}))}finally{p.close()}return{id:o,mimeType:u,storageType:"web-indexeddb",storageKey:o,fileName:w,byteSize:c.size,createdAt:s}},async encodeBase64({attachment:n}){const o=await l();try{const s=await u(o,n.storageKey);return await(0,t.blobToBase64)(s)}finally{o.close()}},async resolvePreviewUrl({attachment:t}){const n=await l();try{const o=await u(n,t.storageKey);return URL.createObjectURL(o)}finally{n.close()}},async releasePreviewUrl({url:t}){URL.revokeObjectURL(t)},async delete({attachment:t}){const n=await l();try{await y(n,"readwrite",n=>n.delete(t.storageKey))}finally{n.close()}},async garbageCollect({referencedIds:t}){const n=await l();try{await new Promise((s,c)=>{const l=n.transaction(o,"readwrite"),y=l.objectStore(o).openCursor();y.addEventListener("error",()=>{c(y.error??new Error("Failed to iterate IndexedDB attachment store."))}),y.addEventListener("success",()=>{const n=y.result;if(!n)return void s();const o=String(n.key);t.has(o)||n.delete(),n.continue()}),l.addEventListener("error",()=>{c(l.error??new Error("Failed to garbage collect IndexedDB attachments."))})})}finally{n.close()}}}};var t=r(d[0]);const n="paseo-attachment-bytes",o="attachments",s=1;function c(){const t=globalThis.indexedDB;if(!t)throw new Error("IndexedDB is unavailable in this runtime.");return t}function l(){return new Promise((t,l)=>{const y=c().open(n,s);y.onupgradeneeded=()=>{const t=y.result;t.objectStoreNames.contains(o)||t.createObjectStore(o,{keyPath:"id"})},y.addEventListener("success",()=>{t(y.result)}),y.addEventListener("error",()=>{l(y.error??new Error("Failed to open attachment IndexedDB."))})})}function y(t,n,s){return new Promise((c,l)=>{const y=t.transaction(o,n),b=y.objectStore(o),u=s(b);u.addEventListener("success",()=>{c(u.result)}),u.addEventListener("error",()=>{l(u.error??new Error("IndexedDB transaction request failed."))}),y.addEventListener("error",()=>{l(y.error??new Error("IndexedDB transaction failed."))})})}async function b(n){const o=n.source;if("bytes"===o.kind){const s=(0,t.normalizeMimeType)(n.mimeType),c=new ArrayBuffer(o.bytes.byteLength);return new Uint8Array(c).set(o.bytes),{blob:new Blob([c],{type:s}),mimeType:s}}if("blob"===o.kind){const s=(0,t.normalizeMimeType)(n.mimeType??o.blob.type);return{blob:o.blob.type===s?o.blob:o.blob.slice(0,o.blob.size,s),mimeType:s}}if("data_url"===o.kind){const s=(0,t.parseDataUrl)(o.dataUrl),c=await fetch(o.dataUrl),l=await c.blob(),y=(0,t.normalizeMimeType)(n.mimeType??s.mimeType??l.type);return{blob:l.type===y?l:l.slice(0,l.size,y),mimeType:y}}const s=await fetch(o.uri),c=await s.blob(),l=(0,t.normalizeMimeType)(n.mimeType??c.type);return{blob:c.type===l?c:c.slice(0,c.size,l),mimeType:l}}async function u(t,n){const o=await y(t,"readonly",t=>t.get(n));if(!o?.blob)throw new Error(`Attachment ${n} was not found in IndexedDB.`);return o.blob}},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createIndexedDbAttachmentStore=function(){return{storageType:"web-indexeddb",async save(n){const o=n.id??(0,t.generateAttachmentId)(),s=Date.now(),{blob:c,mimeType:u}=await b(n),w=n.fileName??null,p=await l();try{await y(p,"readwrite",t=>t.put({id:o,blob:c,createdAt:s,fileName:w}))}finally{p.close()}return{id:o,mimeType:u,storageType:"web-indexeddb",storageKey:o,fileName:w,byteSize:c.size,createdAt:s}},async encodeBase64({attachment:n}){const o=await l();try{const s=await u(o,n.storageKey);return await(0,t.blobToBase64)(s)}finally{o.close()}},async resolvePreviewUrl({attachment:t}){const n=await l();try{const o=await u(n,t.storageKey);return URL.createObjectURL(o)}finally{n.close()}},async releasePreviewUrl({url:t}){URL.revokeObjectURL(t)},async delete({attachment:t}){const n=await l();try{await y(n,"readwrite",n=>n.delete(t.storageKey))}finally{n.close()}},async garbageCollect({referencedIds:t}){const n=await l();try{await new Promise((s,c)=>{const l=n.transaction(o,"readwrite"),y=l.objectStore(o).openCursor();y.addEventListener("error",()=>{c(y.error??new Error("Failed to iterate IndexedDB attachment store."))}),y.addEventListener("success",()=>{const n=y.result;if(!n)return void s();const o=String(n.key);t.has(o)||n.delete(),n.continue()}),l.addEventListener("error",()=>{c(l.error??new Error("Failed to garbage collect IndexedDB attachments."))})})}finally{n.close()}}}};var t=r(d[0]);const n="paseo-attachment-bytes",o="attachments",s=1;function c(){const t=globalThis.indexedDB;if(!t)throw new Error("IndexedDB is unavailable in this runtime.");return t}function l(){return new Promise((t,l)=>{const y=c().open(n,s);y.onupgradeneeded=()=>{const t=y.result;t.objectStoreNames.contains(o)||t.createObjectStore(o,{keyPath:"id"})},y.addEventListener("success",()=>{t(y.result)}),y.addEventListener("error",()=>{l(y.error??new Error("Failed to open attachment IndexedDB."))})})}function y(t,n,s){return new Promise((c,l)=>{const y=t.transaction(o,n),b=y.objectStore(o),u=s(b);u.addEventListener("success",()=>{c(u.result)}),u.addEventListener("error",()=>{l(u.error??new Error("IndexedDB transaction request failed."))}),y.addEventListener("error",()=>{l(y.error??new Error("IndexedDB transaction failed."))})})}async function b(n){const o=n.source;if("bytes"===o.kind){const s=(0,t.normalizeMimeType)(n.mimeType),c=new ArrayBuffer(o.bytes.byteLength);return new Uint8Array(c).set(o.bytes),{blob:new Blob([c],{type:s}),mimeType:s}}if("blob"===o.kind){const s=(0,t.normalizeMimeType)(n.mimeType??o.blob.type);return{blob:o.blob.type===s?o.blob:o.blob.slice(0,o.blob.size,s),mimeType:s}}if("data_url"===o.kind){const s=(0,t.parseDataUrl)(o.dataUrl),c=await fetch(o.dataUrl),l=await c.blob(),y=(0,t.normalizeMimeType)(n.mimeType??s.mimeType??l.type);return{blob:l.type===y?l:l.slice(0,l.size,y),mimeType:y}}const s=await fetch(o.uri),c=await s.blob(),l=(0,t.normalizeMimeType)(n.mimeType??c.type);return{blob:c.type===l?c:c.slice(0,c.size,l),mimeType:l}}async function u(t,n){const o=await y(t,"readonly",t=>t.get(n));if(!o?.blob)throw new Error(`Attachment ${n} was not found in IndexedDB.`);return o.blob}},5084,[4426]);
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createNativeFileAttachmentStore=function(){return(0,s.createLocalFileAttachmentStore)({storageType:"native-file",baseDirectoryName:"paseo-native-attachments",fileSystem:(0,t.createExpoAttachmentFileSystem)(),resolvePreviewUrl:async t=>t.storageKey.startsWith("file://")?t.storageKey:(0,o.isAbsolutePath)(t.storageKey)?t.storageKey.startsWith("/")?`file://${t.storageKey}`:t.storageKey.startsWith("\\\\")?`file:${t.storageKey.replace(/\\/g,"/")}`:`file:///${t.storageKey.replace(/\\/g,"/")}`:t.storageKey})};var t=r(d[0]),s=r(d[1]),o=r(d[2])},
|
|
2
|
-
__d(function(g,r,i,a,m,_e,_d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.createExpoAttachmentFileSystem=function(){return{cacheDirectory:t.cacheDirectory,async getInfo(e){const n=await t.getInfoAsync(e);if(!n.exists)return{exists:!1};const c="number"==typeof n.size?n.size:null;return{exists:!0,isDirectory:n.isDirectory??!1,size:c}},async makeDirectory(e,n){await t.makeDirectoryAsync(e,n)},async writeBytes(t,n){new e.File(t).write(n)},async copy(e){await t.copyAsync(e)},readAsBase64:async e=>await t.readAsStringAsync(e,{encoding:t.EncodingType.Base64}),async delete(e,n){await t.deleteAsync(e,n)},listDirectory:async e=>await t.readDirectoryAsync(e)}};var e=r(_d[0]),t=(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach(function(n){var c=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,c.get?c:{enumerable:!0,get:function(){return e[n]}})}),t.default=e,t})(r(_d[1]))},
|
|
3
|
-
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createLocalFileAttachmentStore=function(n){const{fileSystem:c}=n,l=c.cacheDirectory?`${c.cacheDirectory}${n.baseDirectoryName}/`:null;async function u(n){if(!l)throw new Error("Attachment file-system cacheDirectory is unavailable.");await o(c,l);const y=n.id??(0,t.generateAttachmentId)();let f;f="data_url"===n.source.kind?(0,t.parseDataUrl)(n.source.dataUrl).mimeType:"blob"===n.source.kind?n.source.blob.type:void 0;const u=(0,t.normalizeMimeType)(n.mimeType??f),p=n.fileName??null,w=s({fileName:p,mimeType:u}),b=Date.now(),U=`${l}${y}${w}`;return{id:y,mimeType:u,fileName:p,createdAt:b,targetUri:U,storageKey:(0,t.fileUriToPath)(U)}}return Object.assign({storageType:n.storageType,async save(t){const s=await u(t);await y({fileSystem:c,source:t.source,targetUri:s.targetUri,mimeType:s.mimeType});const o=await c.getInfo(s.targetUri),l=o.exists?o.size:null;return{id:s.id,mimeType:s.mimeType,storageType:n.storageType,storageKey:s.storageKey,fileName:s.fileName,byteSize:l,createdAt:s.createdAt}},encodeBase64:async({attachment:t})=>await c.readAsBase64(f(t)),resolvePreviewUrl:async({attachment:t})=>await n.resolvePreviewUrl(t)},n.releasePreviewUrl?{async releasePreviewUrl(t){await(n.releasePreviewUrl?.(t))}}:{},{async delete({attachment:t}){await c.delete(f(t),{idempotent:!0})},async garbageCollect({referencedIds:t}){if(!l)return;await o(c,l);const n=await c.listDirectory(l);await Promise.all(n.map(async n=>{const s=n.split(".",1)[0]??"";s&&!t.has(s)&&await c.delete(`${l}${n}`,{idempotent:!0})}))}})};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(s){const o=(0,t.getFileExtensionFromName)(s.fileName);return o||(n[s.mimeType]??".img")}async function o(t,n){const s=await t.getInfo(n);s.exists&&s.isDirectory||await t.makeDirectory(n,{intermediates:!0})}function c(n){const{base64:s}=(0,t.parseDataUrl)(n);return Uint8Array.from(atob(s),t=>t.charCodeAt(0))}async function l(t){return new Uint8Array(await t.arrayBuffer())}async function y(n){if("file_uri"===n.source.kind){const s=(0,t.pathToFileUri)(n.source.uri);if(s===n.targetUri)return;return void await n.fileSystem.copy({from:s,to:n.targetUri})}let s;s="data_url"===n.source.kind?c(n.source.dataUrl):"blob"===n.source.kind?await l(n.source.blob):n.source.bytes,await n.fileSystem.writeBytes(n.targetUri,s)}function f(n){return(0,t.pathToFileUri)(n.storageKey)}},
|
|
1
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createNativeFileAttachmentStore=function(){return(0,s.createLocalFileAttachmentStore)({storageType:"native-file",baseDirectoryName:"paseo-native-attachments",fileSystem:(0,t.createExpoAttachmentFileSystem)(),resolvePreviewUrl:async t=>t.storageKey.startsWith("file://")?t.storageKey:(0,o.isAbsolutePath)(t.storageKey)?t.storageKey.startsWith("/")?`file://${t.storageKey}`:t.storageKey.startsWith("\\\\")?`file:${t.storageKey.replace(/\\/g,"/")}`:`file:///${t.storageKey.replace(/\\/g,"/")}`:t.storageKey})};var t=r(d[0]),s=r(d[1]),o=r(d[2])},5085,[5086,5087,3567]);
|
|
2
|
+
__d(function(g,r,i,a,m,_e,_d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.createExpoAttachmentFileSystem=function(){return{cacheDirectory:t.cacheDirectory,async getInfo(e){const n=await t.getInfoAsync(e);if(!n.exists)return{exists:!1};const c="number"==typeof n.size?n.size:null;return{exists:!0,isDirectory:n.isDirectory??!1,size:c}},async makeDirectory(e,n){await t.makeDirectoryAsync(e,n)},async writeBytes(t,n){new e.File(t).write(n)},async copy(e){await t.copyAsync(e)},readAsBase64:async e=>await t.readAsStringAsync(e,{encoding:t.EncodingType.Base64}),async delete(e,n){await t.deleteAsync(e,n)},listDirectory:async e=>await t.readDirectoryAsync(e)}};var e=r(_d[0]),t=(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach(function(n){var c=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,c.get?c:{enumerable:!0,get:function(){return e[n]}})}),t.default=e,t})(r(_d[1]))},5086,[3888,3896]);
|
|
3
|
+
__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.createLocalFileAttachmentStore=function(n){const{fileSystem:c}=n,l=c.cacheDirectory?`${c.cacheDirectory}${n.baseDirectoryName}/`:null;async function u(n){if(!l)throw new Error("Attachment file-system cacheDirectory is unavailable.");await o(c,l);const y=n.id??(0,t.generateAttachmentId)();let f;f="data_url"===n.source.kind?(0,t.parseDataUrl)(n.source.dataUrl).mimeType:"blob"===n.source.kind?n.source.blob.type:void 0;const u=(0,t.normalizeMimeType)(n.mimeType??f),p=n.fileName??null,w=s({fileName:p,mimeType:u}),b=Date.now(),U=`${l}${y}${w}`;return{id:y,mimeType:u,fileName:p,createdAt:b,targetUri:U,storageKey:(0,t.fileUriToPath)(U)}}return Object.assign({storageType:n.storageType,async save(t){const s=await u(t);await y({fileSystem:c,source:t.source,targetUri:s.targetUri,mimeType:s.mimeType});const o=await c.getInfo(s.targetUri),l=o.exists?o.size:null;return{id:s.id,mimeType:s.mimeType,storageType:n.storageType,storageKey:s.storageKey,fileName:s.fileName,byteSize:l,createdAt:s.createdAt}},encodeBase64:async({attachment:t})=>await c.readAsBase64(f(t)),resolvePreviewUrl:async({attachment:t})=>await n.resolvePreviewUrl(t)},n.releasePreviewUrl?{async releasePreviewUrl(t){await(n.releasePreviewUrl?.(t))}}:{},{async delete({attachment:t}){await c.delete(f(t),{idempotent:!0})},async garbageCollect({referencedIds:t}){if(!l)return;await o(c,l);const n=await c.listDirectory(l);await Promise.all(n.map(async n=>{const s=n.split(".",1)[0]??"";s&&!t.has(s)&&await c.delete(`${l}${n}`,{idempotent:!0})}))}})};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(s){const o=(0,t.getFileExtensionFromName)(s.fileName);return o||(n[s.mimeType]??".img")}async function o(t,n){const s=await t.getInfo(n);s.exists&&s.isDirectory||await t.makeDirectory(n,{intermediates:!0})}function c(n){const{base64:s}=(0,t.parseDataUrl)(n);return Uint8Array.from(atob(s),t=>t.charCodeAt(0))}async function l(t){return new Uint8Array(await t.arrayBuffer())}async function y(n){if("file_uri"===n.source.kind){const s=(0,t.pathToFileUri)(n.source.uri);if(s===n.targetUri)return;return void await n.fileSystem.copy({from:s,to:n.targetUri})}let s;s="data_url"===n.source.kind?c(n.source.dataUrl):"blob"===n.source.kind?await l(n.source.blob):n.source.bytes,await n.fileSystem.writeBytes(n.targetUri,s)}function f(n){return(0,t.pathToFileUri)(n.storageKey)}},5087,[4426]);
|
|
Binary file
|
|
Binary file
|
|
@@ -85,6 +85,6 @@
|
|
|
85
85
|
<body>
|
|
86
86
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
87
87
|
<div id="root"></div>
|
|
88
|
-
<script src="/_expo/static/js/web/index-
|
|
88
|
+
<script src="/_expo/static/js/web/index-69ce3c243032c3bedfc6f2ad379a4cdd.js" defer></script>
|
|
89
89
|
</body>
|
|
90
90
|
</html>
|
|
Binary file
|
|
Binary file
|
|
@@ -18,6 +18,7 @@ const killTree = (pid, signal) => new Promise((resolve, reject) => treeKill(pid,
|
|
|
18
18
|
export { resolvePaseoHome } from "./paseo-home.js";
|
|
19
19
|
export { ensurePrivateDirectory } from "./private-files.js";
|
|
20
20
|
export { daemonLaunchEnvironment } from "./config-environment.js";
|
|
21
|
+
export { readLocalCredentialForTarget } from "./local-credential.js";
|
|
21
22
|
export { isSamePidLock as isSameDaemonInstance, } from "./pid-lock.js";
|
|
22
23
|
export class DaemonInstanceError extends Error {
|
|
23
24
|
constructor(code, message) {
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { chmod, rename, unlink, writeFile } from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { normalizeLoopbackToLocalhost, parseConnectionUri, } from "@getpaseo/protocol/daemon-endpoints";
|
|
6
|
+
const FILE_NAME = "local-credential";
|
|
7
|
+
export async function writeLocalCredential(home) {
|
|
8
|
+
const token = randomBytes(32).toString("base64url");
|
|
9
|
+
const temporary = join(home, `${FILE_NAME}.${randomUUID()}.tmp`);
|
|
10
|
+
try {
|
|
11
|
+
await writeFile(temporary, `${token}\n`, { mode: 0o600, flag: "wx" });
|
|
12
|
+
await chmod(temporary, 0o600);
|
|
13
|
+
await rename(temporary, join(home, FILE_NAME));
|
|
14
|
+
return token;
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
await unlink(temporary).catch((error) => {
|
|
18
|
+
if (error.code !== "ENOENT")
|
|
19
|
+
throw error;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function deleteLocalCredential(home) {
|
|
24
|
+
await unlink(join(home, FILE_NAME)).catch((error) => {
|
|
25
|
+
if (error.code !== "ENOENT")
|
|
26
|
+
throw error;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function readLocalCredential(home) {
|
|
30
|
+
try {
|
|
31
|
+
const token = readFileSync(join(home, FILE_NAME), "utf8").trim();
|
|
32
|
+
return /^[A-Za-z0-9_-]{43}$/.test(token) ? token : null;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function matchesLocalCredential(expected, candidate) {
|
|
39
|
+
const actual = Buffer.from(candidate);
|
|
40
|
+
const reference = Buffer.from(expected);
|
|
41
|
+
return actual.length === reference.length && timingSafeEqual(actual, reference);
|
|
42
|
+
}
|
|
43
|
+
function normalizeTarget(target) {
|
|
44
|
+
try {
|
|
45
|
+
const trimmed = target.trim();
|
|
46
|
+
if (trimmed.startsWith("tcp://")) {
|
|
47
|
+
const parsed = parseConnectionUri(trimmed);
|
|
48
|
+
const endpoint = parsed.isIpv6
|
|
49
|
+
? `[${parsed.host}]:${parsed.port}`
|
|
50
|
+
: `${parsed.host}:${parsed.port}`;
|
|
51
|
+
return normalizeLoopbackToLocalhost(endpoint);
|
|
52
|
+
}
|
|
53
|
+
if (trimmed.startsWith("unix://") || trimmed.startsWith("pipe://"))
|
|
54
|
+
return trimmed;
|
|
55
|
+
if (trimmed.startsWith("/"))
|
|
56
|
+
return `unix://${trimmed}`;
|
|
57
|
+
if (trimmed.startsWith("\\\\.\\pipe\\"))
|
|
58
|
+
return `pipe://${trimmed}`;
|
|
59
|
+
if (/^\d+$/.test(trimmed))
|
|
60
|
+
return `localhost:${trimmed}`;
|
|
61
|
+
return normalizeLoopbackToLocalhost(trimmed);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function readLocalCredentialForTarget(home, target) {
|
|
68
|
+
try {
|
|
69
|
+
const lock = JSON.parse(readFileSync(join(home, "paseo.pid"), "utf8"));
|
|
70
|
+
if (typeof lock.listen !== "string")
|
|
71
|
+
return null;
|
|
72
|
+
const selected = normalizeTarget(target);
|
|
73
|
+
const listening = normalizeTarget(lock.listen);
|
|
74
|
+
if (!selected || !listening || selected !== listening)
|
|
75
|
+
return null;
|
|
76
|
+
return readLocalCredential(home);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=local-credential.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpaseo/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0-beta.1",
|
|
4
4
|
"description": "Paseo backend server",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/server",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"speech:transcribe:local": "tsx scripts/transcribe-local-wav.ts",
|
|
90
90
|
"test": "npm run test:unit && npm run test:integration",
|
|
91
91
|
"test:unit": "vitest run --fileParallelism --exclude \"**/*.e2e.test.ts\"",
|
|
92
|
-
"test:integration": "vitest run --maxWorkers=1 src/server/daemon-e2e/terminal-workspace-sdk.e2e.test.ts src/server/daemon-e2e/models.e2e.test.ts src/server/daemon-e2e/live-preferences.e2e.test.ts src/server/agent/model-catalog.e2e.test.ts src/server/plugins/plugin-paseo-api.e2e.test.ts && vitest run --maxWorkers=1 src/server/session.create-agent-worktree-autoarchive.e2e.test.ts -t \"creates a worktree and auto-archives both\"",
|
|
92
|
+
"test:integration": "vitest run --maxWorkers=1 src/server/daemon-e2e/terminal-workspace-sdk.e2e.test.ts src/server/daemon-e2e/models.e2e.test.ts src/server/daemon-e2e/live-preferences.e2e.test.ts src/server/agent/model-catalog.e2e.test.ts src/server/plugins/plugin-paseo-api.e2e.test.ts && vitest run --maxWorkers=1 src/server/session.create-agent-worktree-autoarchive.e2e.test.ts -t \"creates a worktree and auto-archives both\" && vitest run --maxWorkers=1 src/server/agent/providers/opencode-bridge.local.e2e.test.ts -t \"versioned runtime\"",
|
|
93
93
|
"test:hub-cli-contract": "vitest run --maxWorkers=1 src/server/hub/hub-cli-contract.test.ts",
|
|
94
94
|
"test:integration:all": "npm run test:e2e",
|
|
95
95
|
"test:integration:real": "vitest run real.e2e.test.ts",
|
|
@@ -107,14 +107,15 @@
|
|
|
107
107
|
"@agentclientprotocol/sdk": "^0.17.1",
|
|
108
108
|
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
|
109
109
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
110
|
-
"@getpaseo/client": "0.
|
|
111
|
-
"@getpaseo/highlight": "0.
|
|
112
|
-
"@getpaseo/plugin": "0.
|
|
113
|
-
"@getpaseo/protocol": "0.
|
|
114
|
-
"@getpaseo/relay": "0.
|
|
110
|
+
"@getpaseo/client": "0.10.0-beta.1",
|
|
111
|
+
"@getpaseo/highlight": "0.10.0-beta.1",
|
|
112
|
+
"@getpaseo/plugin": "0.10.0-beta.1",
|
|
113
|
+
"@getpaseo/protocol": "0.10.0-beta.1",
|
|
114
|
+
"@getpaseo/relay": "0.10.0-beta.1",
|
|
115
115
|
"@isaacs/ttlcache": "^2.1.4",
|
|
116
116
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
117
117
|
"@opencode-ai/sdk": "1.14.46",
|
|
118
|
+
"@opencode/client": "2.0.10",
|
|
118
119
|
"@xterm/headless": "^6.0.0",
|
|
119
120
|
"ai": "5.0.78",
|
|
120
121
|
"ajv": "^8.20.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|