@popmelt.com/core 0.8.15 → 0.8.16
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/bridge-entry.mjs +1 -1
- package/dist/chunk-C3CFAS6Y.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +35 -35
- package/dist/plugin-astro.mjs +1 -1
- package/dist/plugin-next.mjs +1 -1
- package/dist/plugin-vite.mjs +1 -1
- package/dist/{server-LYQ2TJFR.mjs → server-DDE2RMDV.mjs} +1 -1
- package/dist/server.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-U35GCRMU.mjs +0 -1
package/dist/plugin-astro.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as p,b as d,c as l,d as g}from"./chunk-C3CFAS6Y.mjs";import"./chunk-NOHXTT24.mjs";import{Buffer as c}from"buffer";function u(e){return typeof e=="string"?e:e instanceof Uint8Array?c.from(e).toString("utf8"):String(e??"")}function m(e,t,r){let o=e.url||"";if(r.port===null||!(e.headers.accept?.includes("text/html")||o==="/"||o.endsWith(".html")))return;let a=t.write.bind(t),s=t.end.bind(t),n="";t.write=(i=>(n+=u(i),!0)),t.end=(i=>(i!==void 0&&(n+=u(i)),n=n.replace("<head>",`<head><script type="text/javascript">${g(r)}</script>`),t.getHeader("content-length")&&t.setHeader("content-length",c.byteLength(n)),a(n,"utf8"),s()))}function y(e){let t=e?.basePath??"/popmelt",r={port:null,projectId:null};return{name:"popmelt",hooks:{async"astro:server:setup"({server:o}){r=await p(e,o,4321),await d(r,o);let a=l(t,()=>r);o.middlewares.use((s,n,i)=>{if((s.url||"").startsWith(t))return a(s,n,i);m(s,n,r),i()})}}}}export{y as popmelt};
|
package/dist/plugin-next.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{NextResponse as v}from"next/server";function
|
|
1
|
+
import{NextResponse as v}from"next/server";function T(t){return G(t).slice(0,12)}var S=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function G(t){let e=typeof TextEncoder<"u"?Array.from(new TextEncoder().encode(t)):F(t),r=e.length*8;for(e.push(128);e.length%64!==56;)e.push(0);for(let f=7;f>=0;f--)e.push(r/Math.pow(2,f*8)&255);let n=1779033703,c=3144134277,s=1013904242,u=2773480762,i=1359893119,a=2600822924,m=528734635,w=1541459225,l=new Array(64);for(let f=0;f<e.length;f+=64){for(let o=0;o<16;o++){let d=f+o*4;l[o]=(e[d]<<24|e[d+1]<<16|e[d+2]<<8|e[d+3])>>>0}for(let o=16;o<64;o++){let d=x(l[o-15],7)^x(l[o-15],18)^l[o-15]>>>3,_=x(l[o-2],17)^x(l[o-2],19)^l[o-2]>>>10;l[o]=l[o-16]+d+l[o-7]+_>>>0}let p=n,g=c,P=s,E=u,b=i,R=a,y=m,I=w;for(let o=0;o<64;o++){let d=x(b,6)^x(b,11)^x(b,25),_=b&R^~b&y,N=I+d+_+S[o]+l[o]>>>0,C=x(p,2)^x(p,13)^x(p,22),L=p&g^p&P^g&P,M=C+L>>>0;I=y,y=R,R=b,b=E+N>>>0,E=P,P=g,g=p,p=N+M>>>0}n=n+p>>>0,c=c+g>>>0,s=s+P>>>0,u=u+E>>>0,i=i+b>>>0,a=a+R>>>0,m=m+y>>>0,w=w+I>>>0}return[n,c,s,u,i,a,m,w].map(f=>f.toString(16).padStart(8,"0")).join("")}function x(t,e){return t>>>e|t<<32-e}function F(t){let e=[];for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);n<128?e.push(n):n<2048?e.push(192|n>>6,128|n&63):e.push(224|n>>12,128|n>>6&63,128|n&63)}return e}function B(){if(process.env.POPMELT_BRIDGE_URL)try{let t=new URL(process.env.POPMELT_BRIDGE_URL).port;if(t)return parseInt(t,10)}catch{}return parseInt(process.env.POPMELT_BRIDGE_PORT||"1111",10)}var k=1111,H=10,U=1e3,h=null;function j(){try{return typeof process<"u"&&typeof process.cwd=="function"?process.cwd():null}catch{return null}}function O(t=j()??void 0){return process.env.POPMELT_PROJECT_ID||(t?T(t):null)}async function A(t,e){let r=new AbortController,n=setTimeout(()=>r.abort(),350);try{let c=new URL("/status",`http://localhost:${t}`);e&&c.searchParams.set("projectId",e);let s=await fetch(c,{signal:r.signal,cache:"no-store"});if(!s.ok)return null;let u=await s.json();return e&&u.projectId!==e?null:u}catch{return null}finally{clearTimeout(n)}}async function $(t,e){let r=Date.now();if(h&&h.preferredPort===t&&h.projectId===e&&h.expiresAt>r)return h.port;if(await A(t,e))return h={preferredPort:t,projectId:e,port:t,expiresAt:r+U},t;if(!e)return t;let c=Array.from({length:H},(a,m)=>k+m).filter(a=>a!==t),i=(await Promise.all(c.map(async a=>await A(a,e)?a:null))).find(a=>a!==null)??t;return h={preferredPort:t,projectId:e,port:i,expiresAt:r+U},i}async function D(t,e,r){let n=await $(e,r),c=new URL(t,`http://localhost:${n}`);return r&&c.searchParams.set("projectId",r),v.rewrite(c)}function K(t,e){let r=e?.basePath??"/popmelt",n=e?.port??B(),c=e?.projectId??O(e?.projectRoot??j()??void 0);if(t.nextUrl.searchParams.get("popmelt")==="canvas"){if(process.env.NODE_ENV==="production")return null;let s=new Headers(t.headers);return s.set("x-popmelt-canvas","1"),v.next({request:{headers:s}})}if(t.nextUrl.pathname.startsWith(r+"/render")){if(process.env.NODE_ENV==="production")return null;let s=new Headers(t.headers);return s.set("x-popmelt-canvas","1"),v.next({request:{headers:s}})}if(t.nextUrl.pathname===r||t.nextUrl.pathname.startsWith(r+"/")){if(t.nextUrl.pathname===`${r}/status`)return D("/status",n,c);let s="/canvas"+t.nextUrl.pathname.slice(r.length);return D(s||"/canvas",n,c)}return null}function X(t,e){if(process.env.NODE_ENV==="production")return t;let r=e?.port??B(),n=e?.projectId??O(e?.projectRoot??j()??void 0),c=t.rewrites;return{...t,async rewrites(){let s=c?await c():[],i=`http://localhost:${await $(r,n)}`,a=[{source:"/popmelt/status",destination:n?`${i}/status?projectId=${encodeURIComponent(n)}`:`${i}/status`},{source:"/popmelt",destination:n?`${i}/canvas?projectId=${encodeURIComponent(n)}`:`${i}/canvas`},{source:"/popmelt/:path*",destination:n?`${i}/canvas/:path*?projectId=${encodeURIComponent(n)}`:`${i}/canvas/:path*`}];return Array.isArray(s)?{beforeFiles:a,afterFiles:s,fallback:[]}:{...s,beforeFiles:[...s.beforeFiles||[],...a]}}}}export{O as getPopmeltProjectId,K as popmeltMiddleware,X as withPopmelt};
|
package/dist/plugin-vite.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as n,b as i,c as o,d as a}from"./chunk-C3CFAS6Y.mjs";import"./chunk-NOHXTT24.mjs";function s(r){let d=r?.basePath??"/popmelt",e={port:null,projectId:null};return{name:"popmelt",async configureServer(t){e=await n(r,t,5173),await i(e,t),t.middlewares.use(o(d,()=>e))},transformIndexHtml(){if(e.port!==null)return[{tag:"script",attrs:{type:"text/javascript"},children:a(e),injectTo:"head-prepend"}]}}}export{s as popmelt};
|
|
@@ -183,7 +183,7 @@ These are public collaboration signals, not private reasoning. Keep each field c
|
|
|
183
183
|
`);let t=new Map;for(let i of e){let r=i.pathname||"(unknown)",s=t.get(r)??[];s.push(i.instruction),t.set(r,s)}return[...t.entries()].map(([i,r])=>`\`${i}\`
|
|
184
184
|
${r.map(s=>`- ${s}`).join(`
|
|
185
185
|
`)}`).join(`
|
|
186
|
-
`)}var Gr={name:"@popmelt.com/core",version:"0.8.
|
|
186
|
+
`)}var Gr={name:"@popmelt.com/core",version:"0.8.16",description:"The design collaboration layer for AI coding agents",license:"PolyForm-Shield-1.0.0",author:"Popmelt <reb@popmelt.com> (https://popmelt.com)",homepage:"https://github.com/popmelt/core",bugs:{url:"https://github.com/popmelt/core/issues"},repository:{type:"git",url:"git+https://github.com/popmelt/core.git"},keywords:["ai","annotations","collaboration","devtools","react","visual-feedback"],bin:{popmelt:"dist/cli.mjs"},sideEffects:!1,engines:{node:">=18.0.0"},scripts:{build:"tsup",clean:"git clean -xdf .turbo node_modules dist",format:'prettier --check "**/*.{ts,tsx}"',lint:"eslint .","pack:smoke":"node scripts/pack-smoke.mjs",prepublishOnly:"pnpm run verify",test:"vitest run","test:watch":"vitest",typecheck:"tsc --noEmit --incremental false",verify:"pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build && pnpm run pack:smoke"},exports:{".":{source:"./src/index.ts",types:"./dist/index.d.mts",import:"./dist/index.mjs"},"./provider":{source:"./src/components/PopmeltProvider.tsx",types:"./dist/index.d.mts",import:"./dist/index.mjs"},"./server":{source:"./src/server/index.ts",types:"./dist/server.d.mts",import:"./dist/server.mjs"},"./memory":{source:"./src/memory/index.ts",types:"./dist/memory.d.mts",import:"./dist/memory.mjs"},"./memory/legacy":{source:"./src/server/memory/index.ts",types:"./dist/memory-legacy.d.mts",import:"./dist/memory-legacy.mjs"},"./memory/store":{source:"./src/server/memory/journal-index.ts",types:"./dist/memory-store.d.mts",import:"./dist/memory-store.mjs"},"./canvas":{source:"./src/canvas/index.ts",import:"./dist/canvas.mjs"},"./next":{source:"./src/plugins/next.ts",import:"./dist/plugin-next.mjs",default:"./dist/plugin-next.mjs"},"./vite":{source:"./src/plugins/vite.ts",types:"./dist/plugin-vite.d.mts",import:"./dist/plugin-vite.mjs",default:"./dist/plugin-vite.mjs"},"./astro":{source:"./src/plugins/astro.ts",types:"./dist/plugin-astro.d.mts",import:"./dist/plugin-astro.mjs",default:"./dist/plugin-astro.mjs"}},files:["dist","LICENSE","README.md","THIRD_PARTY_NOTICES.md"],dependencies:{"modern-screenshot":"4.7.0",ws:"8.21.1"},peerDependencies:{"lucide-react":">=1.23.0",next:">=14.0.0",react:">=18.0.0","react-dom":">=18.0.0"},peerDependenciesMeta:{next:{optional:!0}},devDependencies:{"@kit/eslint-config":"workspace:^","@types/react":"19.1.0","@types/react-dom":"19.1.2","@types/ws":"8.18.1",eslint:"^9.24.0",geist:"1.7.2",jsdom:"26.1.0","lucide-react":"^1.23.0",next:"15.3.8",prettier:"^3.5.3",react:"19.1.0","react-dom":"19.1.0",tsup:"^8.5.1",typescript:"^5.8.3",vitest:"^3.2.4"}};var it=Gr.version;var Bd=1111,Jd=["Read","Edit","Write","Glob","Grep","Bash","WebFetch","WebSearch","Bash(curl:*)"],Ld=1800*1e3,qd=3600*1e3,Kr=45e3,Fd=5e3,Ud=1e4,zd=2*1024*1024;function Qr(o){return o.length<=1?o[0]??"":["The developer sent these queued steering messages while you were working:","",...o.map((e,n)=>`${n+1}. ${e}`)].join(`
|
|
187
187
|
`)}function yn(o){return[...new Set(o.flatMap(e=>{let n=e.imprintSummary;return e.role==="assistant"&&n?.grounding&&!n.resolvedAction?[n.grounding.explanationId]:[]}))]}function Xr(o){let e=o.findLastIndex(i=>i.role==="assistant");if(e<0)return[];let n=o[e];if(!n?.question||!n.jobId.startsWith("imprint-"))return[];let t=o.slice(0,e).findLast(i=>i.role==="assistant"&&i.imprintSummary?.resolvedAction==="no"&&!!i.imprintSummary.grounding);return t?.imprintSummary?.grounding?[t.imprintSummary.grounding.explanationId]:[]}function Wd(o,e){if(e.size===1)return[...o].reverse().find(n=>{let t=n.imprintSummary;return n.role==="assistant"&&!!t?.grounding&&!t?.resolvedAction&&e.has(t.grounding.explanationId)})}function ts(o){if(!o)return!1;try{let e=new URL(o);return e.hostname==="localhost"||e.hostname.endsWith(".localhost")||e.hostname==="127.0.0.1"||e.hostname==="::1"||e.hostname==="[::1]"}catch{return!1}}function Gd(o,e,n){let t=[...n];for(let i of o)if(i.type==="tool_use"){let r=i.tool||"",s=i.file??void 0,c=i.content??void 0,d=s?s.split("/").pop()??s:void 0,u;switch(r){case"Read":u=d?`Reading ${d}`:"Reading file";break;case"Edit":u=d?`Editing ${d}`:"Editing file";break;case"Write":u=d?`Writing ${d}`:"Writing file";break;case"Bash":u=c?c.split(`
|
|
188
188
|
`)[0].trim().slice(0,60):"Running command";break;case"Glob":u="Searching files";break;case"Grep":u="Searching code";break;case"WebFetch":u="Fetching page";break;case"WebSearch":u="Searching web";break;default:u=r?`Using ${r}`:"tool";break}let I=s??c??void 0,x=s?es(s)?s:Dd(e,s):void 0,T=t[t.length-1];T&&T.kind==="tool_group"&&T.tool===r?T.items.push({label:u,detail:I,...x?{filePath:x}:{}}):t.push({kind:"tool_group",tool:r,items:[{label:u,detail:I,...x?{filePath:x}:{}}]})}return t}function Hd(o,e){if(o.processedIds.length===0&&o.success)return"No accepted decisions were ready for model projection.";if(o.success&&o.proposalId)return"";let n=[];return o.success?n.push("Model suggestion ready."):n.push("Model projection failed."),o.proposalId&&n.push("Review the proposed model changes below."),e&&(e.outputStats?n.push(`${e.outputStats.ruleCount} rules, ${e.outputStats.tokenSectionCount} token sections, ${e.outputStats.componentCount} components proposed from ${e.decisionIds.length} decision${e.decisionIds.length===1?"":"s"}.`):n.push(`${e.decisionIds.length} decision${e.decisionIds.length===1?"":"s"} processed.`)),o.error&&(n.push(""),n.push(`Error: ${o.error}`),n.push("The selected decisions were not marked applied and remain visible in projection history.")),n.join(`
|
|
189
189
|
`)}function Vd(o,e=96){let n=o.replace(/\s+/g," ").trim();return n.length>e?`${n.slice(0,e-1)}...`:n}function Yr(o){let e=o.styleModifications.flatMap(s=>{let c=s.element?.reactComponent||s.element?.tagName||s.selector;return s.changes.map(d=>`${c}: ${d.property} ${d.original||"unset"} -> ${d.modified||"unset"}`)}),n=(o.spacingTokenChanges??[]).map(s=>`${s.tokenName}: ${s.originalPx}px -> ${s.newPx}px`),t=(o.textModifications??[]).map(s=>`${s.element?.reactComponent||s.element?.tagName||s.selector}: text ${s.original||"empty"} -> ${s.modified||"empty"}`),i=o.annotations.map(s=>{let c=s.instruction?.trim();if(c)return c;if(s.imageCount&&s.imageCount>0)return`${s.imageCount} image${s.imageCount===1?"":"s"}`;let d=s.elements?.[0]?.reactComponent||s.elements?.[0]?.selector||s.linkedSelector||s.type;return`${s.type==="annotation"?"Annotation":`${s.type} annotation`} on ${d}`}),r=[...e,...t,...n,...i].map(s=>Vd(s)).filter(Boolean);return r.length===0?"Annotation":r.length<=3?r.join("; "):`${r.slice(0,3).join("; ")}; +${r.length-3} more`}function Kd(o,e){let n=o.headers.origin;ts(n)&&(e.setHeader("Access-Control-Allow-Origin",n),e.setHeader("Access-Control-Allow-Methods","GET, POST, PATCH, DELETE, OPTIONS"),e.setHeader("Access-Control-Allow-Headers","Content-Type, X-Popmelt-Project-Id"))}function _(o,e,n){o.writeHead(e,{"Content-Type":"application/json"}),o.end(JSON.stringify(n))}async function Oe(o){let e=[],n=0;for await(let i of o){let r=typeof i=="string"?Buffer.from(i):i;if(n+=r.length,n>16384)throw new Error("Request body too large");e.push(r)}if(e.length===0)return{};let t=JSON.parse(Buffer.concat(e).toString("utf8"));if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Expected a JSON object");return t}async function Qd(o,e){let n=[],t=0;for await(let i of o){let r=typeof i=="string"?Buffer.from(i):i;if(t+=r.length,t>e)throw new Error("Request body too large");n.push(r)}return Buffer.concat(n)}function Xd(o,e){let n=o.headers["x-popmelt-project-id"];return(Array.isArray(n)?n[0]:n)||e.searchParams.get("projectId")||null}function Yd(o,e){if(!o)return e;let n=o.match(/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(!n)return e;let[,t,i,r]=n;return`\x1B[38;2;${parseInt(t,16)};${parseInt(i,16)};${parseInt(r,16)}m${e}\x1B[0m`}function uo(o,e){try{o.res.write(`event: ${e.type}
|
package/dist/server.mjs
CHANGED
|
@@ -183,7 +183,7 @@ These are public collaboration signals, not private reasoning. Keep each field c
|
|
|
183
183
|
`);let t=new Map;for(let i of e){let r=i.pathname||"(unknown)",s=t.get(r)??[];s.push(i.instruction),t.set(r,s)}return[...t.entries()].map(([i,r])=>`\`${i}\`
|
|
184
184
|
${r.map(s=>`- ${s}`).join(`
|
|
185
185
|
`)}`).join(`
|
|
186
|
-
`)}var Gr={name:"@popmelt.com/core",version:"0.8.
|
|
186
|
+
`)}var Gr={name:"@popmelt.com/core",version:"0.8.16",description:"The design collaboration layer for AI coding agents",license:"PolyForm-Shield-1.0.0",author:"Popmelt <reb@popmelt.com> (https://popmelt.com)",homepage:"https://github.com/popmelt/core",bugs:{url:"https://github.com/popmelt/core/issues"},repository:{type:"git",url:"git+https://github.com/popmelt/core.git"},keywords:["ai","annotations","collaboration","devtools","react","visual-feedback"],bin:{popmelt:"dist/cli.mjs"},sideEffects:!1,engines:{node:">=18.0.0"},scripts:{build:"tsup",clean:"git clean -xdf .turbo node_modules dist",format:'prettier --check "**/*.{ts,tsx}"',lint:"eslint .","pack:smoke":"node scripts/pack-smoke.mjs",prepublishOnly:"pnpm run verify",test:"vitest run","test:watch":"vitest",typecheck:"tsc --noEmit --incremental false",verify:"pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build && pnpm run pack:smoke"},exports:{".":{source:"./src/index.ts",types:"./dist/index.d.mts",import:"./dist/index.mjs"},"./provider":{source:"./src/components/PopmeltProvider.tsx",types:"./dist/index.d.mts",import:"./dist/index.mjs"},"./server":{source:"./src/server/index.ts",types:"./dist/server.d.mts",import:"./dist/server.mjs"},"./memory":{source:"./src/memory/index.ts",types:"./dist/memory.d.mts",import:"./dist/memory.mjs"},"./memory/legacy":{source:"./src/server/memory/index.ts",types:"./dist/memory-legacy.d.mts",import:"./dist/memory-legacy.mjs"},"./memory/store":{source:"./src/server/memory/journal-index.ts",types:"./dist/memory-store.d.mts",import:"./dist/memory-store.mjs"},"./canvas":{source:"./src/canvas/index.ts",import:"./dist/canvas.mjs"},"./next":{source:"./src/plugins/next.ts",import:"./dist/plugin-next.mjs",default:"./dist/plugin-next.mjs"},"./vite":{source:"./src/plugins/vite.ts",types:"./dist/plugin-vite.d.mts",import:"./dist/plugin-vite.mjs",default:"./dist/plugin-vite.mjs"},"./astro":{source:"./src/plugins/astro.ts",types:"./dist/plugin-astro.d.mts",import:"./dist/plugin-astro.mjs",default:"./dist/plugin-astro.mjs"}},files:["dist","LICENSE","README.md","THIRD_PARTY_NOTICES.md"],dependencies:{"modern-screenshot":"4.7.0",ws:"8.21.1"},peerDependencies:{"lucide-react":">=1.23.0",next:">=14.0.0",react:">=18.0.0","react-dom":">=18.0.0"},peerDependenciesMeta:{next:{optional:!0}},devDependencies:{"@kit/eslint-config":"workspace:^","@types/react":"19.1.0","@types/react-dom":"19.1.2","@types/ws":"8.18.1",eslint:"^9.24.0",geist:"1.7.2",jsdom:"26.1.0","lucide-react":"^1.23.0",next:"15.3.8",prettier:"^3.5.3",react:"19.1.0","react-dom":"19.1.0",tsup:"^8.5.1",typescript:"^5.8.3",vitest:"^3.2.4"}};var it=Gr.version;var Jd=1111,Ld=["Read","Edit","Write","Glob","Grep","Bash","WebFetch","WebSearch","Bash(curl:*)"],qd=1800*1e3,Fd=3600*1e3,Vr=45e3,Ud=5e3,zd=1e4,Gd=2*1024*1024;function Kr(o){return o.length<=1?o[0]??"":["The developer sent these queued steering messages while you were working:","",...o.map((e,n)=>`${n+1}. ${e}`)].join(`
|
|
187
187
|
`)}function yn(o){return[...new Set(o.flatMap(e=>{let n=e.imprintSummary;return e.role==="assistant"&&n?.grounding&&!n.resolvedAction?[n.grounding.explanationId]:[]}))]}function Qr(o){let e=o.findLastIndex(i=>i.role==="assistant");if(e<0)return[];let n=o[e];if(!n?.question||!n.jobId.startsWith("imprint-"))return[];let t=o.slice(0,e).findLast(i=>i.role==="assistant"&&i.imprintSummary?.resolvedAction==="no"&&!!i.imprintSummary.grounding);return t?.imprintSummary?.grounding?[t.imprintSummary.grounding.explanationId]:[]}function Wd(o,e){if(e.size===1)return[...o].reverse().find(n=>{let t=n.imprintSummary;return n.role==="assistant"&&!!t?.grounding&&!t?.resolvedAction&&e.has(t.grounding.explanationId)})}function es(o){if(!o)return!1;try{let e=new URL(o);return e.hostname==="localhost"||e.hostname.endsWith(".localhost")||e.hostname==="127.0.0.1"||e.hostname==="::1"||e.hostname==="[::1]"}catch{return!1}}function Hd(o,e,n){let t=[...n];for(let i of o)if(i.type==="tool_use"){let r=i.tool||"",s=i.file??void 0,c=i.content??void 0,d=s?s.split("/").pop()??s:void 0,u;switch(r){case"Read":u=d?`Reading ${d}`:"Reading file";break;case"Edit":u=d?`Editing ${d}`:"Editing file";break;case"Write":u=d?`Writing ${d}`:"Writing file";break;case"Bash":u=c?c.split(`
|
|
188
188
|
`)[0].trim().slice(0,60):"Running command";break;case"Glob":u="Searching files";break;case"Grep":u="Searching code";break;case"WebFetch":u="Fetching page";break;case"WebSearch":u="Searching web";break;default:u=r?`Using ${r}`:"tool";break}let I=s??c??void 0,x=s?Zr(s)?s:Nd(e,s):void 0,T=t[t.length-1];T&&T.kind==="tool_group"&&T.tool===r?T.items.push({label:u,detail:I,...x?{filePath:x}:{}}):t.push({kind:"tool_group",tool:r,items:[{label:u,detail:I,...x?{filePath:x}:{}}]})}return t}function Vd(o,e){if(o.processedIds.length===0&&o.success)return"No accepted decisions were ready for model projection.";if(o.success&&o.proposalId)return"";let n=[];return o.success?n.push("Model suggestion ready."):n.push("Model projection failed."),o.proposalId&&n.push("Review the proposed model changes below."),e&&(e.outputStats?n.push(`${e.outputStats.ruleCount} rules, ${e.outputStats.tokenSectionCount} token sections, ${e.outputStats.componentCount} components proposed from ${e.decisionIds.length} decision${e.decisionIds.length===1?"":"s"}.`):n.push(`${e.decisionIds.length} decision${e.decisionIds.length===1?"":"s"} processed.`)),o.error&&(n.push(""),n.push(`Error: ${o.error}`),n.push("The selected decisions were not marked applied and remain visible in projection history.")),n.join(`
|
|
189
189
|
`)}function Kd(o,e=96){let n=o.replace(/\s+/g," ").trim();return n.length>e?`${n.slice(0,e-1)}...`:n}function Xr(o){let e=o.styleModifications.flatMap(s=>{let c=s.element?.reactComponent||s.element?.tagName||s.selector;return s.changes.map(d=>`${c}: ${d.property} ${d.original||"unset"} -> ${d.modified||"unset"}`)}),n=(o.spacingTokenChanges??[]).map(s=>`${s.tokenName}: ${s.originalPx}px -> ${s.newPx}px`),t=(o.textModifications??[]).map(s=>`${s.element?.reactComponent||s.element?.tagName||s.selector}: text ${s.original||"empty"} -> ${s.modified||"empty"}`),i=o.annotations.map(s=>{let c=s.instruction?.trim();if(c)return c;if(s.imageCount&&s.imageCount>0)return`${s.imageCount} image${s.imageCount===1?"":"s"}`;let d=s.elements?.[0]?.reactComponent||s.elements?.[0]?.selector||s.linkedSelector||s.type;return`${s.type==="annotation"?"Annotation":`${s.type} annotation`} on ${d}`}),r=[...e,...t,...n,...i].map(s=>Kd(s)).filter(Boolean);return r.length===0?"Annotation":r.length<=3?r.join("; "):`${r.slice(0,3).join("; ")}; +${r.length-3} more`}function Qd(o,e){let n=o.headers.origin;es(n)&&(e.setHeader("Access-Control-Allow-Origin",n),e.setHeader("Access-Control-Allow-Methods","GET, POST, PATCH, DELETE, OPTIONS"),e.setHeader("Access-Control-Allow-Headers","Content-Type, X-Popmelt-Project-Id"))}function _(o,e,n){o.writeHead(e,{"Content-Type":"application/json"}),o.end(JSON.stringify(n))}async function Oe(o){let e=[],n=0;for await(let i of o){let r=typeof i=="string"?Buffer.from(i):i;if(n+=r.length,n>16384)throw new Error("Request body too large");e.push(r)}if(e.length===0)return{};let t=JSON.parse(Buffer.concat(e).toString("utf8"));if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Expected a JSON object");return t}async function Xd(o,e){let n=[],t=0;for await(let i of o){let r=typeof i=="string"?Buffer.from(i):i;if(t+=r.length,t>e)throw new Error("Request body too large");n.push(r)}return Buffer.concat(n)}function Yd(o,e){let n=o.headers["x-popmelt-project-id"];return(Array.isArray(n)?n[0]:n)||e.searchParams.get("projectId")||null}function Zd(o,e){if(!o)return e;let n=o.match(/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(!n)return e;let[,t,i,r]=n;return`\x1B[38;2;${parseInt(t,16)};${parseInt(i,16)};${parseInt(r,16)}m${e}\x1B[0m`}function uo(o,e){try{o.res.write(`event: ${e.type}
|
package/package.json
CHANGED
package/dist/chunk-U35GCRMU.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as p}from"./chunk-NOHXTT24.mjs";import{request as c}from"http";function u(){let e=process.env.POPMELT_BRIDGE_URL;if(!e)return null;try{let r=new URL(e);return{port:r.port?Number.parseInt(r.port,10):null,projectId:process.env.POPMELT_PROJECT_ID||null,leaseEligible:!1}}catch{return null}}async function h(e,r,o){let t=u();if(e?.bridge===!1||t)return t??{port:null,projectId:null,leaseEligible:!1};try{let{startPopmelt:i}=await import("./server-LYQ2TJFR.mjs"),n=r.config?.server?.host,l=n===!0?"0.0.0.0":n||"localhost",s=r.config?.server?.port??o,d=`http://${l==="0.0.0.0"?"localhost":l}:${s}`,a=await i({port:e?.port,projectRoot:e?.projectRoot,devOrigin:d,force:!0,detached:!0,manageLease:!1});return console.log(`[popmelt] bridge ready at http://localhost:${a.port}`),{port:a.port,projectId:a.projectId,leaseEligible:!0}}catch(i){let n=i instanceof Error?i.message:String(i);return console.warn("[popmelt] bridge failed to start:",n),{port:null,projectId:null,leaseEligible:!1}}}async function v(e,r,o=fetch){if(!e.leaseEligible||e.port===null)return null;let t=await p({port:e.port,projectId:e.projectId},o);if(!t)return null;let i=()=>{n()},n=async()=>{process.removeListener("beforeExit",i),await t.release()};return process.once("beforeExit",i),r.httpServer?.once("close",()=>{n()}),{id:t.id,release:n}}function g(e,r,o){if(o.port===null||!r.startsWith(e))return null;let t=r.slice(e.length),i=t===""||t==="/"?"/canvas":t==="/manifest"||t==="/app.mjs"?`/canvas${t}`:t,n=new URL(i,`http://localhost:${o.port}`);return o.projectId&&n.searchParams.set("projectId",o.projectId),n}function b(e,r){return(o,t,i)=>{let n=g(e,o.url||"",r());if(!n)return i();let l=c(n,{method:o.method,headers:{...o.headers,host:n.host}},s=>{t.writeHead(s.statusCode||502,s.headers),s.pipe(t)});l.on("error",()=>{t.writeHead(502,{"Content-Type":"text/plain"}),t.end(`Popmelt bridge not running on port ${r().port}`)}),o.pipe(l)}}function x(e,r="/popmelt"){let o=e.port===null?null:r;return`window.__POPMELT_BRIDGE_URL__=${JSON.stringify(o)};window.__POPMELT_PROJECT_ID__=${JSON.stringify(e.projectId)};`}export{h as a,v as b,b as c,x as d};
|