@popmelt.com/core 0.29.0 → 0.30.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.
Files changed (48) hide show
  1. package/README.md +46 -32
  2. package/claude-plugin/.claude-plugin/plugin.json +1 -1
  3. package/claude-plugin/skills/popmelt-core/SKILL.md +6 -0
  4. package/codex-plugin/.codex-plugin/plugin.json +1 -1
  5. package/codex-plugin/skills/popmelt-core/SKILL.md +6 -0
  6. package/dist/ParticipantRuntime-XGBQEJLU.mjs +139 -0
  7. package/dist/{PopmeltTasteConnectedPane-A7QLXPE4.mjs → PopmeltTasteConnectedPane-L5ULGACH.mjs} +12 -12
  8. package/dist/QueuedReplies-ZYUDSTS2.mjs +46 -0
  9. package/dist/ThreadErrorCard-Q5GQ4EIF.mjs +2 -0
  10. package/dist/bridge-entry.mjs +1 -1
  11. package/dist/browser-runtime-7324UU2Y.mjs +2 -0
  12. package/dist/browser.mjs +1 -1
  13. package/dist/canvas-chat-note-7HSL7MH6.mjs +2 -0
  14. package/dist/chunk-2RRYBN2J.mjs +17 -0
  15. package/dist/chunk-3JJP637I.mjs +307 -0
  16. package/dist/chunk-4V7SK3M6.mjs +3 -0
  17. package/dist/{chunk-XZ6MNKUQ.mjs → chunk-5IEPFMP7.mjs} +23 -23
  18. package/dist/chunk-CPOYMGYY.mjs +2 -0
  19. package/dist/chunk-CWX3XV2M.mjs +2 -0
  20. package/dist/chunk-CXTR5UHL.mjs +342 -0
  21. package/dist/{chunk-MBBS4FJH.mjs → chunk-ENGMQINZ.mjs} +1 -1
  22. package/dist/chunk-GHBFZOHT.mjs +2 -0
  23. package/dist/{chunk-5VILWL5E.mjs → chunk-HTHUSDZT.mjs} +1 -1
  24. package/dist/chunk-MZNY6VXR.mjs +2 -0
  25. package/dist/chunk-PCP5ENOU.mjs +315 -0
  26. package/dist/{chunk-GIJABDSK.mjs → chunk-VNSLQY5N.mjs} +1 -1
  27. package/dist/cli.mjs +34 -340
  28. package/dist/codex-note-context-EKARSPXV.mjs +2 -0
  29. package/dist/codex-project-JDNFTUP7.mjs +2 -0
  30. package/dist/codex-session-registry-25DAA2KO.mjs +2 -0
  31. package/dist/index.mjs +1 -1
  32. package/dist/memory-store.d.mts +1 -1
  33. package/dist/peer-client-CVBTNOO5.mjs +2 -0
  34. package/dist/plugin-astro.mjs +1 -1
  35. package/dist/plugin-nuxt.mjs +1 -1
  36. package/dist/plugin-vite.mjs +1 -1
  37. package/dist/server.d.mts +2 -2
  38. package/dist/server.mjs +5 -5
  39. package/dist/{types-BethD1Ix.d.mts → types-C8tjyhiF.d.mts} +19 -0
  40. package/package.json +22 -32
  41. package/dist/ParticipantRuntime-ITMSYN4F.mjs +0 -139
  42. package/dist/ThreadErrorCard-MHFJXR4W.mjs +0 -2
  43. package/dist/browser-runtime-4IAKTM6S.mjs +0 -2
  44. package/dist/chunk-BZFM6VPZ.mjs +0 -303
  45. package/dist/chunk-MFNS5MBM.mjs +0 -2
  46. package/dist/chunk-QRVEMJ4U.mjs +0 -367
  47. package/dist/chunk-VLFWNZFS.mjs +0 -17
  48. /package/dist/{chunk-J4YWKBXJ.mjs → chunk-42LISDBE.mjs} +0 -0
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{b as P,c as B}from"./chunk-6VXFTT5U.mjs";var b=new Set;function D(e,t){let r=new URL(e).origin;t==="websocket"?b.add(r):b.delete(r)}function C(e){return b.has(new URL(e).origin)?new j(e,!0):P(e)?new j(e):new EventSource(e)}var j=class{constructor(e,t=!1){this.readyState=0,this.onerror=null,this.controller=new AbortController,this.listeners=new Map,this.fail=()=>{this.controller.signal.aborted||(this.readyState=2,this.controller.abort(),this.emit("error",""),this.onerror?.call(this,new Event("error")))},typeof document<"u"&&document.addEventListener("resume",this.fail,{signal:this.controller.signal}),this.read(e,t)}addEventListener(e,t){let r=this.listeners.get(e)??new Set;r.add(t),this.listeners.set(e,r)}close(){this.readyState=2,this.controller.abort(),this.listeners.clear()}emit(e,t){let r=new MessageEvent(e,{data:t});for(let n of this.listeners.get(e)??[])n(r)}async read(e,t){try{if(t){let{readBridgeWebSocket:n}=await import("./bridgeWebSocketStream-H3DCP4T3.mjs");await n(e,this.controller.signal,(a,c)=>{a==="connected"&&(this.readyState=1),this.emit(a,c)});return}let{readBridgeSSE:r}=await import("./bridgeSSEStream-NEYI73TC.mjs");await r(e,this.controller.signal,()=>{this.readyState=1},(n,a)=>this.emit(n,a))}catch{this.fail()}}},w="http://localhost:1111",$=new Map;function k(){return typeof window<"u"?window.__POPMELT_PROJECT_ID__??null:null}function U(e={}){let t=k();if(!t)return e;let r=new Headers(e.headers);return r.set("X-Popmelt-Project-Id",t),{...e,headers:r}}function I(e,t={}){return fetch(e,B(e,U(t)))}async function M(e,t,r){let n=new URLSearchParams({annotationId:t,kind:r.kind,name:r.name}),a=await u(`${e}/draft-attachments?${n}`,{method:"POST",headers:{"Content-Type":r.blob.type},body:r.blob},15e3);if(!a.ok)throw new Error((await a.json().catch(()=>null))?.error||`Bridge returned ${a.status}`);return(await a.json()).attachment}async function R(e,t){t.length!==0&&await u(`${e}/draft-attachments/claim`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:t})},5e3)}async function A(e,t){await u(`${e}/draft-attachments/${encodeURIComponent(t)}`,{method:"DELETE"},5e3)}async function L(e,t){if(($.get(e)??0)>Date.now())return null;try{let r=await u(`${e}/capture/native`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pageUrl:t.url,clip:t.clip,scale:t.scale})},2500);if(!r.ok)return $.set(e,Date.now()+(r.status===404||r.status===501?6e4:1e4)),null;let n=await r.blob();return n.size>0?n:null}catch{return $.set(e,Date.now()+1e4),null}}function u(e,t={},r=15e3){let n=new AbortController;t.signal&&t.signal.addEventListener("abort",()=>n.abort());let a=setTimeout(()=>n.abort(),r);return I(e,{...t,signal:n.signal}).finally(()=>clearTimeout(a))}async function x(e=w){try{let t=await u(`${e}/ui-preferences`,{},5e3);return t.ok?await t.json():null}catch{return null}}async function J(e,t){try{let r=await u(`${e}/ui-preferences`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:t})},5e3);return r.ok?await r.json():null}catch{return null}}function N(e,t){t?.reasoningEffort&&e.append("reasoningEffort",t.reasoningEffort),t?.serviceTier&&e.append("serviceTier",t.serviceTier)}async function _(e=w,t){try{let r=t?`?refresh=${encodeURIComponent(t)}`:"",n=await u(`${e}/capabilities${r}`,{},t?35e3:5e3);return n.ok?await n.json():null}catch{return null}}async function v(e,t){let r=new AbortController,n=setTimeout(()=>r.abort(),t);try{let a=await I(`${e}/status`,{signal:r.signal});if(!a.ok)return null;let c=await a.json();return D(e,c.eventTransport),c}catch{return null}finally{r.abort(),clearTimeout(n)}}async function m(e=w){return v(e,2e3)}async function S(e){return v(`http://localhost:${e}`,500)}async function q(e){return m(e)}async function T(e,t){if(e&&e!=="http://localhost:1111")try{let i=new URL(e),o=await q(e);if(!o&&!t)return null;if(!(!o&&t)&&!(o&&t&&o.projectId!==t)){if(o?.projectId&&!t)return null;if(o)return{url:e,port:parseInt(i.port,10)||1111,projectId:o.projectId}}}catch{if(!t)return null}let r=typeof window<"u"?window.location.origin:null,n=await S(1111);if(n){if(t&&n.projectId===t)return{url:"http://localhost:1111",port:1111,projectId:n.projectId};if(n.devOrigin&&r&&n.devOrigin===r&&(t||!n.projectId))return{url:"http://localhost:1111",port:1111,projectId:n.projectId}}let a=Array.from({length:8},(i,o)=>{let h=1112+o;return S(h).then(y=>y?{status:y,port:h}:null)}),c=(await Promise.all(a)).filter(i=>i!==null),s=[];n&&s.push({port:1111,devOrigin:n.devOrigin,projectId:n.projectId});for(let i of c)s.push({port:i.port,devOrigin:i.status.devOrigin,projectId:i.status.projectId});if(t){let i=s.find(o=>o.projectId===t);if(i)return{url:`http://localhost:${i.port}`,port:i.port,projectId:i.projectId}}if(r){let i=s.find(o=>o.devOrigin===r&&(t||!o.projectId));if(i)return{url:`http://localhost:${i.port}`,port:i.port,projectId:i.projectId}}return s.length===1&&!s[0].projectId?{url:`http://localhost:${s[0].port}`,port:s[0].port,projectId:s[0].projectId}:null}async function F(e=w,t,r=-1,n={}){try{let a=await u(`${e}/jobs/${t}/events?afterSeq=${r}`,{},5e3);if(a.status===404||a.status===410)return null;if(!a.ok){if(n.retryUnavailable&&(a.status===429||a.status>=500))throw new Error("Bridge history is temporarily unavailable");return null}return await a.json()}catch(a){if(n.retryUnavailable)throw a;return null}}async function G(e,t,r=w,n,a,c,s,i,o,h,y,l,p){let f=O({screenshots:e,feedbackJson:t,color:n,provider:a,model:c,pastedImages:s,sourceId:i,agentSettings:o,continuationThreadId:h,continuationSelectorAliases:y,continuationTargetBindingId:l}),d=await u(`${r}/send`,{method:"POST",body:f,...p?{headers:{"X-Popmelt-Peer-Grant":p}}:{}},3e4);if(!d.ok){let g=await d.text();throw new Error(`Bridge returned ${d.status}: ${g}`)}return d.json()}function O({screenshots:e,feedbackJson:t,color:r,provider:n,model:a,pastedImages:c,sourceId:s,agentSettings:i,continuationThreadId:o,continuationSelectorAliases:h,continuationTargetBindingId:y}){let l=new FormData;if(e instanceof Map){let p=!0;for(let[f,d]of e){let g=encodeURIComponent(f);l.append(`screenshot-${g}`,d,`screenshot-${g}.webp`),p&&(l.append("screenshot",d,"screenshot.webp"),p=!1)}p&&l.append("screenshot",new Blob([],{type:"image/webp"}),"screenshot.webp")}else l.append("screenshot",e,"screenshot.webp");if(l.append("feedback",t),r&&l.append("color",r),n&&l.append("provider",n),a&&l.append("model",a),N(l,i),s&&l.append("sourceId",s),o&&l.append("continuationThreadId",o),y&&l.append("continuationTargetBindingId",y),h?.length&&l.append("continuationSelectorAliases",JSON.stringify(h)),c)for(let[p,f]of c)for(let d=0;d<f.length;d++)l.append(`image-${p}-${d}`,f[d],`image-${p}-${d}.webp`);return l}async function H(e=w){let t=()=>({head:{sequence:0,updatedAt:new Date(0).toISOString()},counts:{total:0,emerging:0,testing:0,grounded:0,challenged:0,retired:0,needsGrounding:0},explanations:[]});try{let r=await u(`${e}/memory/imprint-view`,{},5e3);return r.ok?r.json():t()}catch{return t()}}function X(e){return new Promise(t=>setTimeout(t,e))}async function E(e=w,t,r=15e3){let n=Date.now();try{let o=await u(`${e}/restart`,{method:"POST"},5e3);if(!o.ok){let h=await o.text().catch(()=>"");return{ok:!1,error:h?`Bridge restart returned ${o.status}: ${h}`:`Bridge restart returned ${o.status}`,elapsedMs:Date.now()-n}}}catch(o){return{ok:!1,error:o instanceof Error?o.message:"Bridge restart request failed",elapsedMs:Date.now()-n}}let a=null,c=e,s=k();for(;Date.now()-n<r;){if(await X(350),a=await m(c),!a?.ok&&s){let o=await T(e,s);o?.url&&(c=o.url,a=await m(c))}if(a?.ok&&!(s&&a.projectId!==s)&&!(t&&a.version!==t))return{ok:!0,status:a,elapsedMs:Date.now()-n,bridgeUrl:c}}let i=t?` with version ${t}`:"";return a?.ok&&t&&a.version!==t?{ok:!1,error:`Bridge is running version ${a.version??"unknown"}, but this page expects ${t}. Refresh the page to load the current package. If the mismatch remains, rebuild or update the package used by the bridge, then restart it.`,status:a,elapsedMs:Date.now()-n}:{ok:!1,error:`Bridge did not come back${i} within ${Math.round(r/1e3)}s`,status:a,elapsedMs:Date.now()-n}}async function z(e=w){return(await E(e)).ok}async function W(e,t,r=w,n,a,c,s,i,o,h){let y=`${r}/reply`,l;if(s&&s.length>0){let f=new FormData,d=new Blob([new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,6,0,0,0,31,21,196,137,0,0,0,10,73,68,65,84,120,156,98,0,0,0,2,0,1,229,39,222,252,0,0,0,0,73,69,78,68,174,66,96,130])],{type:"image/png"});f.append("screenshot",d,"screenshot.png"),f.append("feedback",JSON.stringify({threadId:e,reply:t,color:n,provider:a,model:c,sourceId:i,...o,...h}));for(let g=0;g<s.length;g++)f.append(`image-reply-${g}`,s[g],`reply-image-${g}.webp`);l={method:"POST",body:f}}else l={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e,reply:t,color:n,provider:a,model:c,sourceId:i,...o,...h})};let p=await u(y,l,3e4);if(!p.ok){let f=await p.text();throw new Error(`Bridge returned ${p.status}: ${f}`)}return p.json()}async function K(e,t=w){let r=await u(`${t}/thread/${encodeURIComponent(e)}/archive`,{method:"POST"},15e3);if(!r.ok&&r.status!==404){let n=await r.text();throw new Error(`Bridge returned ${r.status}: ${n}`)}return r.json()}async function Q(e,t=w){let r=await u(`${t}/thread/${encodeURIComponent(e)}/restore`,{method:"POST"},15e3);if(!r.ok)throw new Error(`Thread restore failed: ${r.status}`)}async function V(e=w){let t=await u(`${e}/workspace/clear`,{method:"POST"},5e3);if(!t.ok){let r=await t.text();throw new Error(`Bridge returned ${t.status}: ${r}`)}return t.json()}export{C as a,I as b,M as c,R as d,A as e,L as f,x as g,J as h,_ as i,m as j,T as k,F as l,G as m,O as n,H as o,E as p,z as q,W as r,K as s,Q as t,V as u};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{c as d}from"./chunk-GHBFZOHT.mjs";import{A as p,b as c}from"./chunk-PCP5ENOU.mjs";import{e as f}from"./chunk-4V7SK3M6.mjs";async function S(t,e){let r=await f(t);if(!r||!e)return[];let n=await c(t,e);return n.length?(await Promise.all([r,...r.mountedStores].map(async i=>{try{let o=await d(i,t);if(!o)return[];let{endpoint:u,request:m}=o,s=[];for(let l of n){let a=await p(u,"/participants/read-canvas-receipt",{...m,method:"POST",body:JSON.stringify({receiptId:l})});a.response.ok&&s.push({storeId:i.storeId,receipt:a.body})}return s}catch{return[]}}))).flat():[]}export{S as a};