@jmfederico/pi-web 1.202609.1 → 1.202610.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 (48) hide show
  1. package/dist/client/assets/{index-AroYaCLx.js → index-_1GwJfSs.js} +353 -307
  2. package/dist/client/index.html +1 -1
  3. package/dist/pi-packages/captains-log/dist/browser/index.js +4 -3
  4. package/dist/pi-packages/captains-log/dist/browser/panel.js +2 -0
  5. package/dist/pi-packages/captains-log/docs/usage.md +3 -1
  6. package/dist/plugin-api.d.ts +13 -0
  7. package/dist/server/app.js +12 -19
  8. package/dist/server/app.js.map +1 -1
  9. package/dist/server/browserMessageProjection.js +39 -20
  10. package/dist/server/browserMessageProjection.js.map +1 -1
  11. package/dist/server/machines/machineProxyRoutes.js +31 -0
  12. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  13. package/dist/server/projects/projectLifecycleService.js +91 -0
  14. package/dist/server/projects/projectLifecycleService.js.map +1 -0
  15. package/dist/server/realtime/sessionEventHub.js +22 -9
  16. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  17. package/dist/server/sessiond/projectMutationRoutes.js +38 -0
  18. package/dist/server/sessiond/projectMutationRoutes.js.map +1 -0
  19. package/dist/server/sessiond/sessionProxyRoutes.js +24 -0
  20. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  21. package/dist/server/sessiond.js +34 -9
  22. package/dist/server/sessiond.js.map +1 -1
  23. package/dist/server/sessions/piSessionManagerGateway.js +8 -2
  24. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  25. package/dist/server/sessions/piSessionService.js +144 -18
  26. package/dist/server/sessions/piSessionService.js.map +1 -1
  27. package/dist/server/sessions/sessionMediaIndex.js +184 -0
  28. package/dist/server/sessions/sessionMediaIndex.js.map +1 -0
  29. package/dist/server/sessions/sessionRoutes.js +46 -4
  30. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  31. package/dist/server/sessions/sessionUnreadStore.js +26 -1
  32. package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
  33. package/dist/server/sessions/spawnSessionTool.js +6 -1
  34. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  35. package/dist/server/sessions/spawnSubsessionTool.js +6 -1
  36. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  37. package/dist/server/workspaceExplorerRoutes.js +1 -1
  38. package/dist/server/workspaceExplorerRoutes.js.map +1 -1
  39. package/dist/server/workspaces/filePreviewService.js +27 -3
  40. package/dist/server/workspaces/filePreviewService.js.map +1 -1
  41. package/dist/sessiond/sessionDaemonClient.js +24 -0
  42. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  43. package/dist/shared/federatedRoutes.js +2 -0
  44. package/dist/shared/federatedRoutes.js.map +1 -1
  45. package/dist/shared/sessionMedia.js +6 -0
  46. package/dist/shared/sessionMedia.js.map +1 -0
  47. package/docs/plugins.md +16 -0
  48. package/package.json +3 -2
@@ -53,7 +53,7 @@
53
53
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
54
54
  body { min-height: 100dvh; }
55
55
  </style>
56
- <script type="module" crossorigin src="./assets/index-AroYaCLx.js"></script>
56
+ <script type="module" crossorigin src="./assets/index-_1GwJfSs.js"></script>
57
57
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-core-YWog6mAR.js">
58
58
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-languages-DOCw3vc9.js">
59
59
  </head>
@@ -62,12 +62,12 @@ ${this.parser.parse(e)}</blockquote>
62
62
  ${e}</tr>
63
63
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
64
64
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${R(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:i}){let a=i?R(n,!0):this.parser.parseInline(r),o=z(e);if(o===null)return a;e=R(o,i);let s=`<a href="`+e+`"`;return t&&(s+=` title="`+R(t)+`"`),s+=`>`+a+`</a>`,s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=z(e);if(i===null)return R(n);e=i;let a=`<img src="${R(e)}" alt="${R(n)}"`;return t&&(a+=` title="${R(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:R(e.text)}},q=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},J=class e{options;renderer;textRenderer;constructor(e){this.options=e||r,this.options.renderer=this.options.renderer||new K,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new q}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Y=class{options;block;constructor(e){this.options=e||r}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?G.lex:G.lexInline}provideParser(e=this.block){return e?J.parse:J.parseInline}},X=new class{defaults=n();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=J;Renderer=K;TextRenderer=q;Lexer=G;Tokenizer=W;Hooks=Y;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new K(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new W(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Y;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=Y.passThroughHooks.has(n)?e=>{if(this.defaults.async&&Y.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return G.lex(e,t??this.defaults)}parser(e,t){return J.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?G.lex:G.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?J.parse:J.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?G.lex:G.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?J.parse:J.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
65
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+R(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Z(e,t){return X.parse(e,t)}Z.options=Z.setOptions=function(e){return X.setOptions(e),Z.defaults=X.defaults,i(Z.defaults),Z},Z.getDefaults=n,Z.defaults=r;function He(...e){return X.use(...e),Z.defaults=X.defaults,i(Z.defaults),Z}Z.use=He,Z.walkTokens=function(e,t){return X.walkTokens(e,t)},Z.parseInline=X.parseInline,Z.Parser=J,Z.parser=J.parse,Z.Renderer=K,Z.TextRenderer=q,Z.Lexer=G,Z.lexer=G.lex,Z.Tokenizer=W,Z.Hooks=Y,Z.parse=Z,Z.options,Z.setOptions,Z.walkTokens,Z.parseInline,J.parse,G.lex;function Ue(e){return[`space`,`def`,`heading`,`paragraph`,`text`,`escape`,`html`,`strong`,`em`,`del`,`codespan`,`code`,`blockquote`,`br`,`hr`,`list`,`list_item`,`checkbox`,`link`,`image`,`table`].includes(e.type)}function We(e){try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}}function Ge(e,t){let n=e=>e.map(r);function r(t){if(!Ue(t))return t.raw;let r=t;switch(r.type){case`space`:case`def`:return null;case`heading`:{let t=n(r.tokens);switch(r.depth){case 1:return e`<h1>${t}</h1>`;case 2:return e`<h2>${t}</h2>`;case 3:return e`<h3>${t}</h3>`;case 4:return e`<h4>${t}</h4>`;case 5:return e`<h5>${t}</h5>`;default:return e`<h6>${t}</h6>`}}case`paragraph`:return e`<p>${n(r.tokens)}</p>`;case`text`:return r.tokens?n(r.tokens):r.text;case`escape`:return r.text;case`html`:return r.raw;case`strong`:return e`<strong>${n(r.tokens)}</strong>`;case`em`:return e`<em>${n(r.tokens)}</em>`;case`del`:return e`<del>${n(r.tokens)}</del>`;case`codespan`:return e`<code>${r.text}</code>`;case`code`:return e`<pre><code>${r.text}</code></pre>`;case`blockquote`:return e`<blockquote>${n(r.tokens)}</blockquote>`;case`br`:return e`<br>`;case`hr`:return e`<hr>`;case`list`:return r.ordered?e`<ol start=${r.start}>${n(r.items)}</ol>`:e`<ul>${n(r.items)}</ul>`;case`list_item`:return e`<li>${n(r.tokens)}</li>`;case`checkbox`:return e`<input type="checkbox" disabled ?checked=${r.checked} aria-label="Task completed">`;case`link`:{let t=We(r.href),i=n(r.tokens);return t===void 0?i:e`<a href=${t} target="_blank" rel="noreferrer noopener">${i}</a>`}case`image`:return r.text;case`table`:return e`<div class="captain-table-scroll"><table><thead><tr>${r.header.map(t=>e`<th scope="col">${n(t.tokens)}</th>`)}</tr></thead><tbody>${r.rows.map(t=>e`<tr>${t.map(t=>e`<td>${n(t.tokens)}</td>`)}</tr>`)}</tbody></table></div>`;default:return t.raw}}return n(new G({gfm:!0}).lex(t))}function Q(e){if(e.state?.selectedMachine&&e.state.selectedMachine.id!==e.machine.id)return;let t=e.state?.selectedSession;if(!(!t||t.archived||t.pending||t.cwd!==e.workspace.path))return{id:t.id,name:t.name!==void 0&&t.name.trim()!==``?t.name:`Session ${t.id.slice(0,8)}`}}function $(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Ke(e,t){let n=t.entries.some(e=>e.status===`running`),r=t.source!==void 0&&t.entries.some(e=>e.sessionId===t.source?.id),i=!t.connected||t.connecting||t.pending||n||!t.source||r,a=t.selected,o=t.connecting?`Connecting…`:t.connected?t.pending?`Fetching the last reply…`:n?`The captain is translating…`:t.source?r?`Select a different session — this one is the pirate.`:`Ready to translate`:`Select a session in this workspace first.`:`Connection lost`;return e`<style>${qe}</style>
65
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+R(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Z(e,t){return X.parse(e,t)}Z.options=Z.setOptions=function(e){return X.setOptions(e),Z.defaults=X.defaults,i(Z.defaults),Z},Z.getDefaults=n,Z.defaults=r;function He(...e){return X.use(...e),Z.defaults=X.defaults,i(Z.defaults),Z}Z.use=He,Z.walkTokens=function(e,t){return X.walkTokens(e,t)},Z.parseInline=X.parseInline,Z.Parser=J,Z.parser=J.parse,Z.Renderer=K,Z.TextRenderer=q,Z.Lexer=G,Z.lexer=G.lex,Z.Tokenizer=W,Z.Hooks=Y,Z.parse=Z,Z.options,Z.setOptions,Z.walkTokens,Z.parseInline,J.parse,G.lex;function Ue(e){return[`space`,`def`,`heading`,`paragraph`,`text`,`escape`,`html`,`strong`,`em`,`del`,`codespan`,`code`,`blockquote`,`br`,`hr`,`list`,`list_item`,`checkbox`,`link`,`image`,`table`].includes(e.type)}function We(e){try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}}function Ge(e,t){let n=e=>e.map(r);function r(t){if(!Ue(t))return t.raw;let r=t;switch(r.type){case`space`:case`def`:return null;case`heading`:{let t=n(r.tokens);switch(r.depth){case 1:return e`<h1>${t}</h1>`;case 2:return e`<h2>${t}</h2>`;case 3:return e`<h3>${t}</h3>`;case 4:return e`<h4>${t}</h4>`;case 5:return e`<h5>${t}</h5>`;default:return e`<h6>${t}</h6>`}}case`paragraph`:return e`<p>${n(r.tokens)}</p>`;case`text`:return r.tokens?n(r.tokens):r.text;case`escape`:return r.text;case`html`:return r.raw;case`strong`:return e`<strong>${n(r.tokens)}</strong>`;case`em`:return e`<em>${n(r.tokens)}</em>`;case`del`:return e`<del>${n(r.tokens)}</del>`;case`codespan`:return e`<code>${r.text}</code>`;case`code`:return e`<pre><code>${r.text}</code></pre>`;case`blockquote`:return e`<blockquote>${n(r.tokens)}</blockquote>`;case`br`:return e`<br>`;case`hr`:return e`<hr>`;case`list`:return r.ordered?e`<ol start=${r.start}>${n(r.items)}</ol>`:e`<ul>${n(r.items)}</ul>`;case`list_item`:return e`<li>${n(r.tokens)}</li>`;case`checkbox`:return e`<input type="checkbox" disabled ?checked=${r.checked} aria-label="Task completed">`;case`link`:{let t=We(r.href),i=n(r.tokens);return t===void 0?i:e`<a href=${t} target="_blank" rel="noreferrer noopener">${i}</a>`}case`image`:return r.text;case`table`:return e`<div class="captain-table-scroll"><table><thead><tr>${r.header.map(t=>e`<th scope="col">${n(t.tokens)}</th>`)}</tr></thead><tbody>${r.rows.map(t=>e`<tr>${t.map(t=>e`<td>${n(t.tokens)}</td>`)}</tr>`)}</tbody></table></div>`;default:return t.raw}}return n(new G({gfm:!0}).lex(t))}function Q(e){if(e.state?.selectedMachine&&e.state.selectedMachine.id!==e.machine.id)return;let t=e.state?.selectedSession;if(!(!t||t.archived||t.pending||t.cwd!==e.workspace.path))return{id:t.id,name:t.name!==void 0&&t.name.trim()!==``?t.name:`Session ${t.id.slice(0,8)}`}}function $(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Ke(e,t){let n=t.entries.some(e=>e.status===`running`),r=t.source!==void 0&&t.entries.some(e=>e.sessionId===t.source?.id),i=!t.connected||t.connecting||t.pending||n||!t.source||r,a=t.selected,o=a?.sourceSessionId,s=t.connecting?`Connecting…`:t.connected?t.pending?`Fetching the last reply…`:n?`The captain is translating…`:t.source?r?`Select a different session — this one is the pirate.`:`Ready to translate`:`Select a session in this workspace first.`:`Connection lost`;return e`<style>${qe}</style>
66
66
  <section class="captains-log" aria-label="Captain's Log">
67
67
  <div class="captain-heading"><h2>⚓ Captain's Log</h2><p class="muted">Your last reply, retold by a theatrical pirate.</p></div>
68
68
  <div class="captain-source"><span class="muted">Selected session</span><strong>${t.source?.name??`No session selected`}</strong></div>
69
69
  <button class="captain-primary" ?disabled=${i} @click=${t.onTranslate}>Let the Captain tell it</button>
70
- <p class="captain-status" role="status" aria-live="polite">${o}
70
+ <p class="captain-status" role="status" aria-live="polite">${s}
71
71
  ${!t.connected&&!t.connecting?e`<button @click=${t.onReconnect}>Reconnect</button>`:null}
72
72
  </p>
73
73
  ${!t.connected&&!t.connecting?e`<p class="captain-notice">Reconnect to see the result. The captain may still be working; your request will not be sent again.</p>`:null}
@@ -75,6 +75,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
75
75
  ${a?e`<article class="captain-reply" aria-label="Pirate translation">
76
76
  <div class="captain-reply-heading"><strong>${a.status===`running`?`Translating…`:a.id===t.entries[0]?.id?`Last translation`:`Earlier translation`}</strong><time datetime=${a.createdAt}>${$(a.createdAt)}</time></div>
77
77
  ${a.status===`completed`?e`<div class="captain-answer">${a.text?Ge(e,a.text):`Receiving the captain's reply…`}</div>`:a.status===`running`?e`<p class="muted">Reading the source reply and turning it into pirate. No message is sent to the source conversation.</p>`:e`<div class="captain-notice" role="alert"><strong>${a.status===`interrupted`?`Translation interrupted`:`Couldn't translate that reply`}</strong><p>${a.text||`Check Diagnostics for details, then try again when the session is ready.`}</p></div>`}
78
+ ${o!==void 0&&o!==``?e`<button @click=${()=>{t.onOpenSource(o)}}>Open source session</button>`:null}
78
79
  </article>`:e`<p class="captain-empty muted">Pick a conversation, then translate its latest finished assistant reply. The original stays untouched.</p>`}
79
80
  <div class="captain-secondary">
80
81
  ${t.entries.length>1?e`<details><summary>Previous translations <span class="muted">(${t.entries.length})</span></summary>
@@ -140,5 +141,5 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
140
141
  .captains-log dd { margin: 0; overflow-wrap: anywhere; }
141
142
  .captains-log .captain-footnote { font-size: 11px; margin-top: 10px; }
142
143
  `;function Je(n){if(typeof n!=`object`||!n||!(`type`in n))return!1;switch(n.type){case`entry`:return`entry`in n&&t(n.entry)&&`saved`in n&&typeof n.saved==`boolean`;case`text`:return`id`in n&&typeof n.id==`string`&&e.test(n.id)&&`text`in n&&typeof n.text==`string`&&n.text.length<=4e3;case`admitted`:return`requestId`in n&&typeof n.requestId==`string`&&e.test(n.requestId)&&`id`in n&&typeof n.id==`string`&&e.test(n.id);case`rejected`:return`requestId`in n&&typeof n.requestId==`string`&&e.test(n.requestId)&&`message`in n&&typeof n.message==`string`;default:return!1}}var Ye={apiVersion:4,name:`Captain's Log`,activate({html:e,runtimePluginId:n,lifetimeSignal:r}){customElements.get(`captains-log-lifetime`)||customElements.define(`captains-log-lifetime`,class extends HTMLElement{mount;unmount;currentScope;set scope(e){e!==this.currentScope&&(this.currentScope=e,this.isConnected&&queueMicrotask(()=>{this.isConnected&&this.mount?.()}))}connectedCallback(){queueMicrotask(()=>{this.isConnected&&this.mount?.()})}disconnectedCallback(){this.unmount?.()}});let i=new Map,a;function o(e){e.revision++,e.controller?.abort(),e.channel?.close(),delete e.channel,delete e.controller,e.connecting=!1,e.pending!==void 0&&(e.status=`Channel closed. Admission is uncertain; reconnect before retrying. Questions are never resent automatically.`)}let s=()=>{for(let e of i.values())o(e)};r.addEventListener(`abort`,s,{once:!0});function c(e){let t=JSON.stringify([e.machine.id,e.workspace.projectId,e.workspace.id]),n=i.get(t);return n||(n={entries:[],status:`Connecting to Captain's Log…`,connecting:!1,revision:0,readRevision:0,updates:new Map},i.set(t,n)),a!==n&&(a&&o(a),a=n),n}function l(e,t){e.updates.set(t.id,t),e.entries=[t,...e.entries.filter(e=>e.id!==t.id)].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)),(!e.selected||e.selected.id===t.id||t.status===`running`)&&(e.selected?.id!==t.id&&e.readRevision++,e.selected=t)}async function u(e,n,i){let a=n.revision,o=++n.readRevision,s=n.updates.get(i);try{if(!e.peer?.request)throw Error(`Captain saved records unavailable`);let c=await e.peer.request(`read`,i,{signal:n.controller?.signal??r});if(a!==n.revision||o!==n.readRevision||r.aborted)return;if(!t(c))throw Error(`Invalid Captain record`);let l=n.updates.get(i)===s?c:n.updates.get(i)??c;n.selected=l,n.updates.set(i,l),n.entries=n.entries.map(e=>e.id===i?l:e),e.host.requestRender()}catch(t){if(a!==n.revision||o!==n.readRevision||r.aborted)return;n.status=String(t),e.host.requestRender()}}async function d(e,n){if(n.channel||n.connecting||r.aborted)return;o(n);let i=n.revision,a=new AbortController;n.controller=a,n.connecting=!0,n.updates.clear();let s=()=>i===n.revision&&!a.signal.aborted&&!r.aborted;n.status=`Connecting to Captain's Log…`,e.host.requestRender();try{if(!e.peer?.openChannel||!e.peer.request)throw Error(`Captain backend channels unavailable on this machine`);let r=await e.peer.openChannel(`log`,null,{signal:a.signal,onData(t){if(s()){if(!Je(t)){n.status=`Invalid Captain channel frame`,o(n),e.host.requestRender();return}if(t.type===`admitted`&&t.requestId===n.pending)delete n.pending,n.status=`Backend admitted ${t.id}; admission is not completion.`;else if(t.type===`rejected`&&t.requestId===n.pending)delete n.pending,n.status=t.message,n.notice=t.message;else if(t.type===`entry`)l(n,t.entry),n.status=t.saved&&t.entry.status!==`running`?`Backend saved ${t.entry.status} roundtrip.`:`Captain: ${t.entry.stages.at(-1)??t.entry.status}`;else if(t.type===`text`){let e=n.updates.get(t.id);if(e){let r={...e,text:(e.text+t.text).slice(0,48e3)};n.updates.set(t.id,r),n.entries=n.entries.map(e=>e.id===t.id?r:e),n.selected?.id===t.id&&(n.selected=r)}}e.host.requestRender()}}});if(!s()){r.close();return}n.channel=r,r.closed.then(t=>{s()&&(o(n),n.status=`${t.error?.message??`Channel closed`}. Admission may be uncertain. Reconnect to restore saved state; translations are never resent automatically.`,e.host.requestRender())});let i=await e.peer.request(`list`,null,{signal:a.signal});if(!s())return;if(!Array.isArray(i)||!i.every(t))throw Error(`Invalid Captain snapshot`);n.entries=[...n.updates.values(),...i.filter(e=>e.sourceSessionId!==void 0&&!n.updates.has(e.id))].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)),delete n.pending;let c=n.selected?.id??n.entries[0]?.id;if(c!==void 0&&n.entries.some(e=>e.id===c)){let t=n.updates.get(c);t?n.selected=t:await u(e,n,c)}else delete n.selected;if(!s())return;n.status=`Connected. Live updates arrive from the backend.`,delete n.notice,n.connecting=!1,e.host.requestRender()}catch(t){if(!s())return;o(n),n.status=`${String(t)}. Reconnect explicitly; no translation was resent.`,e.host.requestRender()}}function f(e,t){let n=Q(e);if(!n||!t.channel||t.connecting||t.pending!==void 0||r.aborted||t.entries.some(e=>e.status===`running`||e.sessionId===n.id))return;t.pending=crypto.randomUUID(),delete t.notice,t.status=`Translation queued for source session ${n.id}; waiting for backend admission.`;let i={type:`translate`,requestId:t.pending,sourceSessionId:n.id};try{t.channel.send(i)}catch(e){o(t),t.status=`${String(e)}. Admission is uncertain; reconnect before retrying.`}e.host.requestRender()}return{contributions:{actions:[{id:`summon`,title:`Open pirate translator`,group:`Captain's Log`,enabled:({state:e})=>!!e.selectedWorkspace,run:({selectWorkspaceTool:e})=>{e(`${n}:log`)}}],workspacePanels:[{id:`log`,title:`Captain's Log`,render(t){let n=c(t),r=Q(t);return e`<captains-log-lifetime .mount=${()=>{d(t,n)}} .unmount=${()=>{o(n)}} .scope=${n}>
143
- ${Ke(e,{...n,connected:n.channel!==void 0&&t.peer?.openChannel!==void 0,pending:n.pending!==void 0,machineName:t.machine.name,...r?{source:r}:{},onTranslate(){f(t,n)},onReconnect(){d(t,n)},onRead(e){u(t,n,e)}})}
144
+ ${Ke(e,{...n,connected:n.channel!==void 0&&t.peer?.openChannel!==void 0,pending:n.pending!==void 0,machineName:t.machine.name,...r?{source:r}:{},onTranslate(){f(t,n)},onReconnect(){d(t,n)},onRead(e){u(t,n,e)},onOpenSource(e){t.navigate({machineId:t.machine.id,projectId:t.workspace.projectId,workspaceId:t.workspace.id,sessionId:e,view:`chat`})}})}
144
145
  </captains-log-lifetime>`}}]},dispose(){s(),r.removeEventListener(`abort`,s),i.clear()}}}};export{Ye as default};
@@ -17,6 +17,7 @@ export function renderCaptainPanel(html, view) {
17
17
  const pirateSelected = view.source !== undefined && view.entries.some((entry) => entry.sessionId === view.source?.id);
18
18
  const disabled = !view.connected || view.connecting || view.pending || working || !view.source || pirateSelected;
19
19
  const selected = view.selected;
20
+ const sourceSessionId = selected?.sourceSessionId;
20
21
  const status = view.connecting ? "Connecting…" : !view.connected ? "Connection lost" : view.pending ? "Fetching the last reply…"
21
22
  : working ? "The captain is translating…" : !view.source ? "Select a session in this workspace first." : pirateSelected ? "Select a different session — this one is the pirate."
22
23
  : "Ready to translate";
@@ -35,6 +36,7 @@ export function renderCaptainPanel(html, view) {
35
36
  ${selected.status === "completed" ? html `<div class="captain-answer">${selected.text ? renderCaptainMarkdown(html, selected.text) : "Receiving the captain's reply…"}</div>`
36
37
  : selected.status === "running" ? html `<p class="muted">Reading the source reply and turning it into pirate. No message is sent to the source conversation.</p>`
37
38
  : html `<div class="captain-notice" role="alert"><strong>${selected.status === "interrupted" ? "Translation interrupted" : "Couldn't translate that reply"}</strong><p>${selected.text || "Check Diagnostics for details, then try again when the session is ready."}</p></div>`}
39
+ ${sourceSessionId !== undefined && sourceSessionId !== "" ? html `<button @click=${() => { view.onOpenSource(sourceSessionId); }}>Open source session</button>` : null}
38
40
  </article>` : html `<p class="captain-empty muted">Pick a conversation, then translate its latest finished assistant reply. The original stays untouched.</p>`}
39
41
  <div class="captain-secondary">
40
42
  ${view.entries.length > 1 ? html `<details><summary>Previous translations <span class="muted">(${view.entries.length})</span></summary>
@@ -4,10 +4,12 @@ Select a conversation in the current workspace, open **Captain's Log**, and clic
4
4
 
5
5
  The pirate gets a short introduction on its first prompt and keeps speaking pirate. Further translations use the same conversation while it is loaded in the session daemon. If it is no longer loaded, the next translation automatically creates a new pirate conversation. There are no confirmation dialogs, workspace reviews, or plain-English mode.
6
6
 
7
- To keep the previous pirate's context after a daemon restart, open the most recent **Captain's Log** conversation in Sessions before translating. Once loading finishes, the plugin can reuse it; it need not remain selected. Then select the conversation whose reply you want translated. The plugin does not reopen saved sessions itself or stop/delete old sessions.
7
+ To keep the previous pirate's context after a daemon restart, open the most recent **Captain's Log** conversation in Sessions before translating. Once loading finishes, the plugin can reuse it; it need not remain selected. Then select the conversation whose reply you want translated. The plugin does not automatically reopen saved sessions or stop/delete old sessions.
8
8
 
9
9
  ## Results and connections
10
10
 
11
+ Use **Open source session** beneath a translation to return to its original conversation in chat, even when another conversation is selected. This action uses the record's machine/project/workspace scope and source session ID. If the source is no longer available, PI WEB shows its normal unavailable-destination message; it does not create a replacement conversation.
12
+
11
13
  - The translation is rendered as Markdown, including headings, lists, emphasis, links, tables, and code blocks. Embedded HTML stays literal, unsafe links are inert, and images are not loaded automatically. **Previous translations** holds earlier results; **Diagnostics** holds session/request IDs and the message trail. Both start collapsed. Existing review-era logs remain on disk but are not shown as translations.
12
14
  - The panel inherits PI WEB's workspace styles and themes. The action-palette **Open pirate translator** opens it without spending model tokens.
13
15
  - Browser requests and backend progress use a bidirectional peer channel, with no polling. Opening or reconnecting loads a snapshot. Progress is not token-by-token model streaming; the completed translation arrives when the pirate finishes.
@@ -158,7 +158,18 @@ export interface PluginPromptEditor {
158
158
  text: string;
159
159
  } | null;
160
160
  }
161
+ /** A complete navigation destination, not a patch of the current route. */
162
+ export interface PluginNavigationDestination {
163
+ machineId?: string;
164
+ projectId?: string;
165
+ workspaceId?: string;
166
+ sessionId?: string;
167
+ view?: "navigation" | "chat" | "workspace";
168
+ tool?: QualifiedContributionId;
169
+ }
161
170
  export interface PluginRuntimeContext {
171
+ /** Navigate using host restoration defaults. Route failures appear in the host UI. */
172
+ navigate: (destination: PluginNavigationDestination) => Promise<void>;
162
173
  state: PluginRuntimeState;
163
174
  prompt: PluginPromptEditor;
164
175
  openActionPalette: () => void;
@@ -340,6 +351,8 @@ export interface WorkspacePanelNavigationV1 {
340
351
  }): void;
341
352
  }
342
353
  export interface WorkspacePanelContext extends WorkspaceContext {
354
+ /** Navigate using host restoration defaults. Route failures appear in the host UI. */
355
+ navigate: (destination: PluginNavigationDestination) => Promise<void>;
343
356
  prompt: PluginPromptEditor;
344
357
  terminal: WorkspacePanelTerminal;
345
358
  /** Contribution-scoped address-bar state for deep links and browser history. */
@@ -1,5 +1,5 @@
1
1
  import { existsSync } from "node:fs";
2
- import { dirname, join } from "node:path";
2
+ import { dirname, join, sep } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import Fastify from "fastify";
5
5
  import fastifyCompress from "@fastify/compress";
@@ -35,23 +35,6 @@ import { registerPairedPluginBackendProxyRoutes } from "./plugins/pluginBackendP
35
35
  import { proxyMachinePluginAsset, registerMachinePluginProxyRoutes } from "./machines/machinePluginProxyRoutes.js";
36
36
  function registerLocalProjectRoutes(app, projects, workspaces, prefix, options = {}) {
37
37
  app.get(`${prefix}/projects`, async () => projects.list());
38
- app.post(`${prefix}/projects`, async (request, reply) => {
39
- try {
40
- return await projects.add(request.body);
41
- }
42
- catch (error) {
43
- return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
44
- }
45
- });
46
- app.delete(`${prefix}/projects/:projectId`, async (request, reply) => {
47
- try {
48
- await projects.close(request.params.projectId);
49
- return { closed: true };
50
- }
51
- catch (error) {
52
- return reply.code(404).send({ error: error instanceof Error ? error.message : String(error) });
53
- }
54
- });
55
38
  app.get(`${prefix}/project-directories`, async (request, reply) => {
56
39
  try {
57
40
  return await listDirectorySuggestions(request.query.q ?? "");
@@ -215,7 +198,17 @@ export async function buildApp(deps = {}) {
215
198
  const packagedClientDist = join(dirname(fileURLToPath(import.meta.url)), "..", "client");
216
199
  const clientDist = deps.clientDist ?? (existsSync(packagedClientDist) ? packagedClientDist : join(process.cwd(), "dist", "client"));
217
200
  if (clientDist !== false && existsSync(clientDist)) {
218
- await app.register(fastifyStatic, { root: clientDist });
201
+ const hashedAssetsDir = join(clientDist, "assets") + sep;
202
+ await app.register(fastifyStatic, {
203
+ root: clientDist,
204
+ // Vite content-hashes every file under assets/, so a URL never changes
205
+ // meaning; let browsers skip revalidation on reload. Everything else,
206
+ // notably index.html, keeps the default revalidating policy.
207
+ setHeaders: (res, filePath) => {
208
+ if (filePath.startsWith(hashedAssetsDir))
209
+ res.header("cache-control", "public, max-age=31536000, immutable");
210
+ },
211
+ });
219
212
  const deploymentFlavor = deps.deploymentFlavor ?? createDeploymentFlavorResolver(async () => {
220
213
  const activeAgentProfile = await agentProfileProvider.getActiveAgentProfile();
221
214
  return detectPiWebInstallation(activeAgentProfile.status === "available" ? activeAgentProfile.profile.dir : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,OAA+E,MAAM,SAAS,CAAC;AACtG,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,qCAAqC,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAC9H,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAA2B,MAAM,kCAAkC,CAAC;AACvG,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,gCAAgC,EAA2B,MAAM,mBAAmB,CAAC;AAClJ,OAAO,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,mCAAmC,EAAyB,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,uCAAuC,GAExC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,uCAAuC,EAAE,MAAM,8CAA8C,CAAC;AACvG,OAAO,EAAE,gDAAgD,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,sCAAsC,EAAE,MAAM,uCAAuC,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAyBnH,SAAS,0BAA0B,CAAC,GAAoB,EAAE,QAAwB,EAAE,UAA4B,EAAE,MAAc,EAAE,UAAoC,EAAE;IACtK,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3D,GAAG,CAAC,GAAG,CAAkC,GAAG,MAAM,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,OAAO,MAAM,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAoC,GAAG,MAAM,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9G,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxE,OAAO,MAAM,oCAAoC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oCAAoC,CACjD,OAAgB,EAChB,UAA4B,EAC5B,MAAyC;IAEzC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KAC/C,CAAC,CAAC;IACH,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;KAC1F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,WAAmB,EAAE,MAAyC;IACpG,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;IACvF,OAAO;QACL,OAAO,EAAE,MAAM,iCAAiC,CAAC,WAAW,EAAE,YAAY,CAAC;QAC3E,WAAW,EAAE,MAAM,qCAAqC,CAAC,WAAW,EAAE,YAAY,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAAwC;IACzE,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,QAAoC,EACpC,MAAwC;IAExC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,6BAA6B,CAAC;YAAE,MAAM,KAAK,CAAC;QACnE,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC;QACpE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;YAAE,MAAM,KAAK,CAAC;QAC/D,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,MAA0B,EAAE,WAAiD;IACjH,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,WAAW,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAI,KAAmB,EAAE,SAA2B;IACtF,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,6BAA6B;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1G,IAAI,KAAK,YAAY,+BAA+B,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBACvC,KAAK,EAAE,uCAAuC,KAAK,CAAC,aAAa,EAAE;gBACnE,IAAI,EAAE,2BAA2B,KAAK,CAAC,aAAa,EAAE;gBACtD,MAAM,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB,EAAE;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7H,kFAAkF;IAClF,gFAAgF;IAChF,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE;QAClC,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,KAAK;QAC1B,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACrC,gDAAgD,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,cAAc,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,4BAA4B,EAAE,CAAC;IACpE,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACtE,MAAM,gBAAgB,GAAG,IAAI,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,uCAAuC,CAAC,aAAa,CAAC,CAAC;IACrH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,kBAAkB,CAAC;QAC/D,cAAc,EAAE,UAAU;QAC1B,gBAAgB,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,aAAa,CAAC;QAClF,eAAe,EAAE,gBAAgB;QACjC,gBAAgB,EAAE,GAAG,EAAE,CAAC,8BAA8B,EAAE;KACzD,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mCAAmC,CAAC,oBAAoB,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,sBAAsB,CACtE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAC9E,OAAO,cAAc,CAAC,aAAa,EAAE;YACnC,iBAAiB,EAAE,KAAK;YACxB,GAAG,CAAC,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzG,CAAC,CAAC;IACL,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,uCAAuC,CAAC,CAAC,CAAC,CAAC,EAAE,CACnG,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,cAAc,CAAC,SAAS,EAAE;QAC9D,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC;KACnD,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEjI,GAAG,CAAC,GAAG,CAAgD,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7G,IAAI,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO;QAEtH,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,EACvB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EACnB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAC/E,CAAC;YACF,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAwC,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG;QACnH,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAC9E,OAAO,qBAAqB,CAAC,aAAa,EAAE,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnJ,CAAC,CAAC,CAAC;IACH,0EAA0E;IAC1E,yEAAyE;IACzE,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/G,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9H,uBAAuB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAChE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAChG,oBAAoB,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACrD,gCAAgC,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IAEjE,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,gCAAgC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEhD,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACzF,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAExG,0BAA0B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/C,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IACtE,sCAAsC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC3D,uCAAuC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC5D,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9F,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7G,MAAM,gBAAgB,GAAG;QACvB,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,yBAAyB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG;KAClF,CAAC;IACF,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACxE,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC/F,+BAA+B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACpD,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAE3E,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpI,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;QACzD,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE;YAChC,IAAI,EAAE,UAAU;YAChB,uEAAuE;YACvE,sEAAsE;YACtE,6DAA6D;YAC7D,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC;oBAAE,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAC;YAC/G,CAAC;SACF,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,8BAA8B,CAC9E,KAAK,IAAI,EAAE;YACT,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;YAC9E,OAAO,uBAAuB,CAAC,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzH,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAC1F,CAAC;QACF,qCAAqC,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACrF,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,32 +1,51 @@
1
1
  /**
2
- * Remove provider-only thinking data at the browser transport boundary. The
3
- * runtime message remains unchanged because only affected messages and content
4
- * blocks are copied.
2
+ * Strip provider-only thinking data and optionally reference images at the
3
+ * browser transport boundary. Runtime messages stay unchanged: only affected
4
+ * messages and content blocks are copied.
5
5
  */
6
- export function projectBrowserMessage(message) {
6
+ export function projectBrowserMessage(message, images) {
7
7
  if (!isRecord(message))
8
8
  return message;
9
9
  const originalContent = message["content"];
10
- if (!isUnknownArray(originalContent))
11
- return message;
12
- const content = mapChanged(originalContent, (part) => {
13
- if (!isRecord(part) || part["type"] !== "thinking" || !Object.hasOwn(part, "thinkingSignature"))
14
- return part;
15
- const projected = { ...part };
16
- delete projected["thinkingSignature"];
17
- return projected;
18
- });
10
+ const content = projectBrowserContent(originalContent, images);
19
11
  return content === originalContent ? message : { ...message, content };
20
12
  }
21
- export function projectBrowserMessageResponse(response) {
22
- const messages = mapChanged(response.messages, projectBrowserMessage);
13
+ function projectBrowserContent(content, images) {
14
+ if (isUnknownArray(content))
15
+ return mapChanged(content, (part) => projectBrowserContent(part, images));
16
+ if (!isRecord(content))
17
+ return content;
18
+ if (content["type"] === "image" && images !== undefined)
19
+ return images(content) ?? content;
20
+ if (content["type"] !== "thinking" || !Object.hasOwn(content, "thinkingSignature"))
21
+ return content;
22
+ const projected = { ...content };
23
+ delete projected["thinkingSignature"];
24
+ return projected;
25
+ }
26
+ export function projectBrowserMessageResponse(response, images) {
27
+ const messages = mapChanged(response.messages, (message) => projectBrowserMessage(message, images));
23
28
  return messages === response.messages ? response : { ...response, messages };
24
29
  }
25
- export function projectBrowserSessionEvent(event) {
26
- if (event.type !== "message.end" || event.message === undefined)
27
- return event;
28
- const message = projectBrowserMessage(event.message);
29
- return message === event.message ? event : { ...event, message };
30
+ export function projectBrowserStreamSnapshot(snapshot, images) {
31
+ const partial = projectBrowserMessage(snapshot.partial, images);
32
+ return partial === snapshot.partial ? snapshot : { ...snapshot, partial };
33
+ }
34
+ export function projectBrowserTranscriptSnapshot(snapshot, images) {
35
+ const stream = projectBrowserStreamSnapshot(snapshot, images);
36
+ const page = projectBrowserMessageResponse(snapshot.page, images);
37
+ return page === snapshot.page ? stream : { ...stream, page };
38
+ }
39
+ export function projectBrowserSessionEvent(event, images) {
40
+ if ((event.type === "message.end" || event.type === "message.append") && event.message !== undefined) {
41
+ const message = projectBrowserMessage(event.message, images);
42
+ return message === event.message ? event : { ...event, message };
43
+ }
44
+ if (event.type === "tool.end" || event.type === "tool.update") {
45
+ const content = projectBrowserContent(event.content, images);
46
+ return content === event.content ? event : { ...event, content };
47
+ }
48
+ return event;
30
49
  }
31
50
  function mapChanged(values, project) {
32
51
  let projectedValues;
@@ -1 +1 @@
1
- {"version":3,"file":"browserMessageProjection.js","sourceRoot":"","sources":["../../src/server/browserMessageProjection.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAAE,OAAO,OAAO,CAAC;IAErD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7G,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAqB;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACtE,OAAO,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAqB;IAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CAAI,MAAW,EAAE,OAAwB;IAC1D,IAAI,eAAgC,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,eAAe,IAAI,MAAM,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"browserMessageProjection.js","sourceRoot":"","sources":["../../src/server/browserMessageProjection.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,MAA8B;IACpF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAAE,MAA8B;IAC7E,IAAI,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IAC3F,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAAE,OAAO,OAAO,CAAC;IACnG,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAqB,EAAE,MAA8B;IACjG,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACpG,OAAO,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAkC,QAAW,EAAE,MAA8B;IACvH,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAmC,EAAE,MAA8B;IAClH,MAAM,MAAM,GAAG,4BAA4B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAqB,EAAE,MAA8B;IAC9F,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACrG,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAI,MAAW,EAAE,OAAwB;IAC1D,IAAI,eAAgC,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,eAAe,IAAI,MAAM,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -4,6 +4,7 @@ import { mergeSelectedMachineConfig, parsePiWebConfigResponseBody, parseSelected
4
4
  import { pluginBackendChannelProxyAdmissionPool, } from "../plugins/pluginBackendChannelProxyAdmission.js";
5
5
  import { coordinatePluginBackendChannelProxy, PluginBackendChannelProxyConnectionError, } from "../plugins/pluginBackendChannelProxyCoordinator.js";
6
6
  import { requestCancellation } from "../requestCancellation.js";
7
+ import { isSessionImageMimeType } from "../sessions/sessionMediaIndex.js";
7
8
  import { bridgeSockets, markPluginBackendChannelUpgradeRequest } from "../webSocketBridge.js";
8
9
  import { applyWorkspaceFilePreviewErrorResponsePolicy, applyWorkspaceFilePreviewResponsePolicy } from "../workspaces/filePreviewResponseHeaders.js";
9
10
  import { workspaceFilePreviewErrorResponsePolicy, workspaceFilePreviewResponsePolicy } from "../workspaces/filePreviewResponsePolicy.js";
@@ -68,6 +69,9 @@ export function registerMachineProxyRoutes(app, machines = new MachineService(),
68
69
  }
69
70
  }
70
71
  async function proxyHttpRequest(machines, spec, machineId, method, requestUrl, body, contentType, reply, signal) {
72
+ const sessionMedia = spec.path === "/sessions/:sessionId/media/:mediaId";
73
+ if (sessionMedia)
74
+ applySessionMediaResponsePolicy(reply);
71
75
  if (machineId === "local") {
72
76
  return reply.code(501).send({ error: "Local machine route is not registered for this endpoint" });
73
77
  }
@@ -94,6 +98,8 @@ async function proxyHttpRequest(machines, spec, machineId, method, requestUrl, b
94
98
  const upstream = requestOptions === undefined
95
99
  ? await client.request(method, remotePath, body)
96
100
  : await client.request(method, remotePath, body, requestOptions);
101
+ if (sessionMedia)
102
+ return await proxySessionMediaResponse(reply, upstream);
97
103
  const responseBody = upstream.body === undefined || responseBodyLimit === undefined
98
104
  ? upstream.body
99
105
  : await readBoundedRemoteBody(upstream.body, responseBodyLimit, remainingResponseTimeout(startedAt, spec.timeoutMs), signal);
@@ -124,6 +130,31 @@ async function proxyHttpRequest(machines, spec, machineId, method, requestUrl, b
124
130
  return sendGatewayError(reply, machineId, error);
125
131
  }
126
132
  }
133
+ function applySessionMediaResponsePolicy(reply) {
134
+ reply
135
+ .header("Content-Security-Policy", "sandbox; default-src 'none'; img-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'")
136
+ .header("X-Content-Type-Options", "nosniff")
137
+ .header("Content-Disposition", "inline");
138
+ }
139
+ function proxySessionMediaResponse(reply, upstream) {
140
+ const successful = isSuccessfulStatus(upstream.statusCode);
141
+ const contentType = firstHeaderValue(upstream.headers["content-type"])?.split(";", 1)[0]?.trim().toLowerCase();
142
+ if ((successful && isSessionImageMimeType(contentType))
143
+ || (!successful && contentType === "application/json" && upstream.body !== undefined)) {
144
+ applySafeHeaders(reply, upstream.headers);
145
+ // Remote security headers are never authoritative. Canonical JSON plus this
146
+ // policy also makes a mislabeled error page inert, without buffering errors
147
+ // or imposing a new limit on the existing media streaming contract.
148
+ applySessionMediaResponsePolicy(reply);
149
+ reply.type(successful ? contentType : "application/json; charset=utf-8");
150
+ return reply.code(upstream.statusCode).send(upstream.body);
151
+ }
152
+ if (upstream.body !== undefined)
153
+ destroyReadable(upstream.body);
154
+ if (successful)
155
+ throw new RemoteMachineRequestError("Remote machine returned an unsupported session image MIME type", 502);
156
+ return reply.code(upstream.statusCode).send({ error: "Remote session media request failed", statusCode: upstream.statusCode });
157
+ }
127
158
  async function proxySelectedMachineConfigRequest(client, machineId, method, remotePath, body, reply) {
128
159
  if (method === "GET") {
129
160
  return sendSelectedMachineConfigResponse(reply, await client.requestJson("GET", remotePath), machineId);
@@ -1 +1 @@
1
- {"version":3,"file":"machineProxyRoutes.js","sourceRoot":"","sources":["../../../src/server/machines/machineProxyRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"machineProxyRoutes.js","sourceRoot":"","sources":["../../../src/server/machines/machineProxyRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ const UNREAD_CLEANUP_DELAY_MS = 60_000;
2
+ /** Project mutations plus eventual garbage collection of orphan unread entries. */
3
+ export class ProjectLifecycleService {
4
+ constructor(dependencies) {
5
+ this.dependencies = dependencies;
6
+ this.queue = Promise.resolve();
7
+ this.stopping = false;
8
+ }
9
+ /** Called for existing startup unread, new completions, and removals—not reads. */
10
+ scheduleCleanup() {
11
+ if (this.stopping || this.cleanupTimer !== undefined || !this.dependencies.hasUnread())
12
+ return;
13
+ this.cleanupTimer = setTimeout(() => {
14
+ this.cleanupTimer = undefined;
15
+ void this.serialized(() => this.cleanupUnread()).catch((error) => {
16
+ this.dependencies.logger.warn({ err: error }, "orphan unread cleanup failed; will retry");
17
+ this.scheduleCleanup();
18
+ });
19
+ }, UNREAD_CLEANUP_DELAY_MS);
20
+ this.cleanupTimer.unref();
21
+ }
22
+ add(input) {
23
+ return this.serialized(async () => {
24
+ // Clean before admission when discovery is authoritative so re-adding an
25
+ // orphan cwd does not revive historical unread. Provider outages defer
26
+ // cleanup; durable reconciliation failures still block admission.
27
+ this.clearCleanupTimer();
28
+ try {
29
+ await this.cleanupUnread();
30
+ }
31
+ catch (error) {
32
+ this.scheduleCleanup();
33
+ throw error;
34
+ }
35
+ const project = await this.dependencies.projects.add(input);
36
+ this.dependencies.onProjectsChanged();
37
+ return project;
38
+ });
39
+ }
40
+ close(id) {
41
+ return this.serialized(async () => {
42
+ await this.dependencies.projects.close(id);
43
+ this.dependencies.onProjectsChanged();
44
+ this.scheduleCleanup();
45
+ });
46
+ }
47
+ /** Stop the timer and drain admitted work before sessions/persistence shut down. */
48
+ async closeAll() {
49
+ this.stopping = true;
50
+ this.clearCleanupTimer();
51
+ await this.queue;
52
+ }
53
+ async cleanupUnread() {
54
+ // Re-check at execution time: the user may have read everything while the
55
+ // timer was pending. Empty catalogs never require workspace discovery.
56
+ if (!this.dependencies.hasUnread())
57
+ return;
58
+ const projects = await this.dependencies.projects.list();
59
+ let resolutions;
60
+ try {
61
+ resolutions = await Promise.all(projects.map((project) => this.dependencies.workspaces.resolve(project)));
62
+ for (const resolution of resolutions) {
63
+ if (resolution.status === "degraded" || resolution.diagnostics.length > 0) {
64
+ throw new Error(`Cannot clean up unread state: workspace resolution incomplete for ${resolution.projectId}`);
65
+ }
66
+ }
67
+ }
68
+ catch (error) {
69
+ // An incomplete snapshot cannot prove any cwd is orphaned. Defer the
70
+ // whole pass, not admission; keep durable reconciliation outside this catch.
71
+ this.dependencies.logger.warn({ err: error, projectIds: projects.map((project) => project.id) }, "orphan unread cleanup deferred: workspace discovery incomplete; will retry");
72
+ this.scheduleCleanup();
73
+ return;
74
+ }
75
+ await this.dependencies.reconcileUnreadWorkspaces(resolutions.flatMap((resolution) => resolution.workspaces.map((workspace) => workspace.path)));
76
+ }
77
+ clearCleanupTimer() {
78
+ if (this.cleanupTimer !== undefined)
79
+ clearTimeout(this.cleanupTimer);
80
+ this.cleanupTimer = undefined;
81
+ }
82
+ serialized(operation) {
83
+ if (this.stopping)
84
+ return Promise.reject(new Error("Project lifecycle is shutting down"));
85
+ const result = this.queue.then(operation);
86
+ // Errors reach their caller without poisoning later mutations or retries.
87
+ this.queue = result.catch(() => undefined);
88
+ return result;
89
+ }
90
+ }
91
+ //# sourceMappingURL=projectLifecycleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectLifecycleService.js","sourceRoot":"","sources":["../../../src/server/projects/projectLifecycleService.ts"],"names":[],"mappings":"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"}