panoma 0.1.2 → 0.1.3
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/app/BUILD-INFO.json +2 -2
- package/app/apps/web/.next-bundle/BUILD_ID +1 -1
- package/app/apps/web/.next-bundle/app-build-manifest.json +126 -126
- package/app/apps/web/.next-bundle/app-path-routes-manifest.json +25 -25
- package/app/apps/web/.next-bundle/build-manifest.json +2 -2
- package/app/apps/web/.next-bundle/prerender-manifest.json +9 -9
- package/app/apps/web/.next-bundle/server/app/(app)/agents/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/agents/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/ai/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/ai/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/bridge/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/bridge/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/copies/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/copies/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/credentials/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/disk/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/disk/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/hidden/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/hidden/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/packages/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/packages/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/search/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/search/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/twin/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/twin/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/unsaved/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/accounts/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/accounts/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/consult/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/context/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/journal/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/keys/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/keys/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/log/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/notes/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/notes/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ai/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ai/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assets/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assets/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/launch/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/catalog/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/catalog/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/check/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/consultations/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/consultations/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/describe/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/describe/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/disk/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/disk/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/enrich/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/enrich/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/environment/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/environment/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/hooks/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ingest/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ingest/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/apply/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/apply/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/context/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/context/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/inspect/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/inspect/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/repair/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/repair/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/review/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/md/review/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/north/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/north/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/notes/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/notes/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/open/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/project/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/project/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/rescan/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/rescan/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/roots/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/roots/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/scale/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/scale/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/search/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/secrets/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/secrets/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/tasks/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/tasks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/today/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/today/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/assign/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/assign/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/classify/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/classify/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/critique/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/critique/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/design/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/design/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/distill/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/distill/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/look/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/look/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/mine/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/mine/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/score/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/score/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/shot/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/shot/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/sources/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/sources/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/taste/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/taste/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/watch/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/watch/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/icon/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app-paths-manifest.json +25 -25
- package/app/apps/web/.next-bundle/server/chunks/174.js +3 -0
- package/app/apps/web/.next-bundle/server/chunks/2930.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/3377.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/3677.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/4289.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/6790.js +3 -1
- package/app/apps/web/.next-bundle/server/chunks/7276.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/7876.js +1 -0
- package/app/apps/web/.next-bundle/server/functions-config-manifest.json +12 -12
- package/app/apps/web/.next-bundle/server/middleware-manifest.json +5 -5
- package/app/apps/web/.next-bundle/server/pages/500.html +1 -1
- package/app/apps/web/.next-bundle/server/pages-manifest.json +1 -1
- package/app/apps/web/.next-bundle/server/server-reference-manifest.json +1 -1
- package/app/apps/web/.next-bundle/static/chunks/4517-63995539421e71bd.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/7911-d549c69e290b1f96.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/agents/page-cdb332736d2b75f9.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/ai/page-60083a1b6a36c928.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-95d7d92ca0b30f20.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/credentials/page-e87253842975daa4.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/disk/page-15cd72dc04ac7de4.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-7a9266f6e98936d9.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-4e81219b6c5aeb2a.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-20c619e7c3b1eb97.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-630a1079cd683bad.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-f4dd3e5acee2bfb4.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/[id]/page-572f84e2016be38a.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/search/page-6e94501b5e36f4b1.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/look/page-8e24b1b376cbdab8.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/page-4d6804060b9830ff.js +1 -0
- package/app/node_modules/@panoma/db/dist/index.d.ts +10 -0
- package/app/node_modules/@panoma/db/dist/index.js +9 -0
- package/dist/{ai-command-XQGHWOY5.js → ai-command-U5V5SDJW.js} +1 -1
- package/dist/{check-command-2SZH5KYN.js → check-command-64DBJGYM.js} +3 -3
- package/dist/{chunk-JLPWKPLM.js → chunk-3WPD5CHL.js} +1 -1
- package/dist/{chunk-ELBBRUIH.js → chunk-FJATGEPD.js} +2 -2
- package/dist/{chunk-4ZMDIOH5.js → chunk-JMXXTMGV.js} +2 -2
- package/dist/{chunk-VP225OGF.js → chunk-KNPE4SJG.js} +8 -2
- package/dist/index.js +11 -11
- package/dist/{md-command-76RMDZKU.js → md-command-73QAVNOP.js} +2 -2
- package/dist/{next-command-KUHZCZPR.js → next-command-OQWKUMAH.js} +3 -3
- package/dist/{north-command-VRD6EQP6.js → north-command-7AVYNCB4.js} +3 -3
- package/dist/{review-command-ILJVQMZU.js → review-command-A6V3A5XG.js} +1 -1
- package/dist/{twin-command-XJEJ6453.js → twin-command-WSVMZWGC.js} +8 -4
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/app/apps/web/.next-bundle/server/chunks/5656.js +0 -3
- package/app/apps/web/.next-bundle/static/chunks/4517-194aeb1d92d9e4a0.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/7911-22e5c2227cd664f0.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/agents/page-5a6085ab51fd1c22.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/ai/page-ce796543295ea5b8.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-76f2bf4a1a914234.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/credentials/page-4febc07fcac150cd.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/disk/page-3a16dd5767b06f7a.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-1352ba2a30039af8.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-cd4dbfd609fee48f.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-d7eece5b47fcac36.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-d8ef4c62b6098da0.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-ae8edd375818c9f6.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/[id]/page-7e0f3effeada2264.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/search/page-9c45c680651305fd.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/look/page-1c57d8dce043fb1f.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/page-e1434054df4e5d66.js +0 -1
- /package/app/apps/web/.next-bundle/static/{EAuc0Br8TdDur7GG5w5XO → D8knSMGGk6yOk_0w3z22h}/_buildManifest.js +0 -0
- /package/app/apps/web/.next-bundle/static/{EAuc0Br8TdDur7GG5w5XO → D8knSMGGk6yOk_0w3z22h}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7712],{110:(e,t,r)=>{"use strict";r.d(t,{CodeSearch:()=>i});var n=r(9763),a=r(4963),s=r(5595),l=r(179),c=r(8384);function i(e){let{initialQuery:t}=e,r=(0,l.kj)(),[i,u]=(0,a.useState)(t),[d,h]=(0,a.useState)("ready"),[f,p]=(0,a.useState)(null),[m,x]=(0,a.useState)(null),j=(0,a.useRef)(null),{remote:b,editor:g}=(0,c.b)(),v=(0,a.useCallback)(async e=>{if(!(e.trim().length<2)){h("searching"),x(null);try{var t;let n=await fetch("/api/search?q=".concat(encodeURIComponent(e.trim()))),a=await n.json();n.ok?p(a):x(null!=(t=a.error)?t:r("search.failed"))}catch(e){x(r("search.unreachable"))}finally{h("ready")}}},[r]);return(0,a.useEffect)(()=>{var e;t.trim().length>=2?v(t):null==(e=j.current)||e.focus()},[t,v]),(0,n.jsxs)("div",{children:[(0,n.jsxs)("form",{className:"code-search",onSubmit:e=>{e.preventDefault(),v(i);let t=new URL(window.location.href);t.searchParams.set("q",i.trim()),window.history.replaceState(null,"",t)},children:[(0,n.jsx)(s.JJh,{"aria-hidden":!0}),(0,n.jsx)("input",{ref:j,value:i,onChange:e=>u(e.target.value),placeholder:"stripe.webhook, TODO, API_KEY…","aria-label":r("search.fieldLabel")}),(0,n.jsx)("button",{type:"submit",disabled:"searching"===d||i.trim().length<2,children:r("searching"===d?"search.searching":"search.submit")})]}),(0,n.jsxs)("p",{className:"mt-2 font-mono text-[11px] text-faint",children:[r("search.scopeNote")," ",r("search.scopeVendors")," ",(0,n.jsx)("code",{children:"Pods"}),", ",(0,n.jsx)("code",{children:"vendor"}),","," ",(0,n.jsx)("code",{children:"third_party"}),", ",(0,n.jsx)("code",{children:"node_modules"}),"."]}),m&&(0,n.jsx)("p",{className:"mt-3 font-mono text-xs text-fail",children:m}),f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"mt-6 flex flex-wrap gap-x-4 font-mono text-xs text-faint",children:[(0,n.jsxs)("span",{className:"text-chalk",children:[r(1===f.total?"search.matchOne":"search.matchMany",{n:f.total})," ",r(1===f.results.length?"search.inProjectOne":"search.inProjectMany",{n:f.results.length})]}),(0,n.jsx)("span",{children:r("search.reposSearched",{n:f.searched})}),f.skipped>0&&(0,n.jsx)("span",{className:"text-idle",title:r("search.skippedTitle"),children:r("search.skipped",{n:f.skipped})}),!b&&f.results.length>0&&(0,n.jsx)("span",{className:"ml-auto",children:r("search.clickToOpen")})]}),0===f.results.length?(0,n.jsx)("p",{className:"mt-4 rounded border border-edge bg-surface p-5 text-sm text-smoke",children:r("search.noMatch",{query:f.query})}):(0,n.jsx)("ul",{className:"mt-4 space-y-3",children:f.results.map(e=>(0,n.jsxs)("li",{className:"rounded-lg border border-edge bg-surface",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1 border-b border-edge px-4 py-2.5",children:[(0,n.jsx)("a",{href:"/p/".concat(e.slug),className:"text-sm font-medium hover:text-accent",children:e.name}),(0,n.jsx)("span",{className:"font-mono text-[11px] text-faint",title:e.root,children:function(e){let t=e.split("/");return t.length<=3?e:"…/".concat(t.slice(-2).join("/"))}(e.root)}),(0,n.jsxs)("span",{className:"ml-auto font-mono text-[11px] text-accent",children:[e.matches.length,e.truncated&&"+"]}),!b&&(0,n.jsx)(o,{id:e.id})]}),(0,n.jsx)("ul",{className:"divide-y divide-edge/50",children:e.matches.map(t=>{let a=b?null:(0,c.R)(g,e.root,t.file,t.line),s=(0,n.jsxs)(n.Fragment,{children:[t.file,(0,n.jsxs)("span",{className:"text-accent",children:[":",t.line]})]});return(0,n.jsxs)("li",{className:"flex gap-3 px-4 py-1.5 font-mono text-[11px]",children:[a?(0,n.jsx)("a",{href:a,className:"w-56 shrink-0 truncate text-faint hover:text-accent",title:r("search.openAt",{file:t.file,line:t.line}),children:s}):(0,n.jsx)("span",{className:"w-56 shrink-0 truncate text-faint",title:t.file,children:s}),(0,n.jsx)("code",{className:"min-w-0 flex-1 truncate text-smoke",children:t.text})]},"".concat(t.file,":").concat(t.line))})}),e.truncated&&(0,n.jsx)("p",{className:"px-4 py-1.5 font-mono text-[10px] text-faint",children:r("search.truncated",{n:e.matches.length})})]},e.id))})]})]})}function o(e){let{id:t}=e,r=(0,l.kj)(),[c,i]=(0,a.useState)(null);return(0,n.jsx)("button",{type:"button",title:null!=c?c:r("search.openFolder"),onClick:async()=>{try{let n=await fetch("/api/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!n.ok){var e;let t=await n.json();i(null!=(e=t.error)?e:r("search.openFailed"))}}catch(e){i(r("search.unreachable"))}},className:"shrink-0 ".concat(c?"text-fail":"text-faint hover:text-accent"),"aria-label":r("search.openFolderAria"),children:(0,n.jsx)(s.gBk,{className:"h-4 w-4","aria-hidden":!0})})}},179:(e,t,r)=>{"use strict";r.d(t,{I18nProvider:()=>i,Ym:()=>o,Zs:()=>u,kj:()=>d});var n=r(9763),a=r(4963),s=r(7911);let l=(0,a.createContext)("en"),c=(0,a.createContext)("panoma");function i(e){let{locale:t,cli:r,children:a}=e;return(0,n.jsx)(l.Provider,{value:t,children:(0,n.jsx)(c.Provider,{value:r,children:a})})}function o(){return(0,a.useContext)(l)}function u(){return(0,a.useContext)(c)}function d(){let e=(0,a.useContext)(l),t=(0,a.useContext)(c);return(0,a.useCallback)((r,n)=>(0,s.t)(e,r,{cli:t,...n}),[e,t])}},1823:(e,t,r)=>{Promise.resolve().then(r.bind(r,110))},4652:(e,t,r)=>{"use strict";r.d(t,{k5:()=>u});var n=r(4963),a={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},s=n.createContext&&n.createContext(a),l=["attr","size","title"];function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach(function(t){var n,a,s;n=e,a=t,s=r[t],(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a))in n?Object.defineProperty(n,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[a]=s}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e){return t=>n.createElement(d,c({attr:o({},e.attr)},t),function e(t){return t&&t.map((t,r)=>n.createElement(t.tag,o({key:r},t.attr),e(t.child)))}(e.child))}function d(e){var t=t=>{var r,a=e.attr,s=e.size,i=e.title,u=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r={};for(var n in e)if(({}).hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],-1===t.indexOf(r)&&({}).propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,l),d=s||t.size||"1em";return t.className&&(r=t.className),e.className&&(r=(r?r+" ":"")+e.className),n.createElement("svg",c({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,a,u,{className:r,style:o(o({color:e.color||t.color},t.style),e.style),height:d,width:d,xmlns:"http://www.w3.org/2000/svg"}),i&&n.createElement("title",null,i),e.children)};return void 0!==s?n.createElement(s.Consumer,null,e=>t(e)):t(a)}},8384:(e,t,r)=>{"use strict";let n;r.d(t,{R:()=>i,b:()=>l});var a=r(4963);let s={remote:!1,editor:null,editors:[],apps:[],agents:[]};function l(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],[t,r]=(0,a.useState)(s);return(0,a.useEffect)(()=>{if(!e)return;null!=n||(n=fetch("/api/open").then(e=>e.json()).catch(()=>s));let t=!0;return n.then(e=>{t&&r(e)}),()=>{t=!1}},[e]),t}let c={cursor:"cursor",code:"vscode",windsurf:"windsurf",zed:"zed"};function i(e,t,r,n){let a=c[null!=e?e:"code"];if(!a)return null;let s=encodeURI("".concat(t.replace(/\/$/,""),"/").concat(r)).replace(/#/g,"%23").replace(/\?/g,"%3F");return"".concat(a,"://file").concat(s.startsWith("/")?"":"/").concat(s,":").concat(n)}}},e=>{e.O(0,[6587,7911,9643,4737,7358],()=>e(e.s=1823)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2168],{179:(e,t,n)=>{"use strict";n.d(t,{I18nProvider:()=>i,Ym:()=>c,Zs:()=>d,kj:()=>u});var o=n(9763),r=n(4963),a=n(7911);let l=(0,r.createContext)("en"),s=(0,r.createContext)("panoma");function i(e){let{locale:t,cli:n,children:r}=e;return(0,o.jsx)(l.Provider,{value:t,children:(0,o.jsx)(s.Provider,{value:n,children:r})})}function c(){return(0,r.useContext)(l)}function d(){return(0,r.useContext)(s)}function u(){let e=(0,r.useContext)(l),t=(0,r.useContext)(s);return(0,r.useCallback)((n,o)=>(0,a.t)(e,n,{cli:t,...o}),[e,t])}},1636:(e,t,n)=>{"use strict";n.d(t,{LookFindings:()=>m,TwinLook:()=>d});var o=n(9763),r=n(4963),a=n(7244),l=n(179),s=n(5733),i=n(4204);let c=["image/png","image/jpeg","image/webp","image/gif"];function d(e){var t,n;let{boards:s,projects:d,maxBytes:m}=e,p=(0,l.kj)(),f=(0,l.Ym)(),h=(0,a.useRouter)(),g=(0,r.useRef)(null),[b,y]=(0,r.useState)(null),[j,v]=(0,r.useState)(null),[k,w]=(0,r.useState)(null),[N,O]=(0,r.useState)(null!=(n=null==(t=d[0])?void 0:t.slug)?n:"");async function S(e,t,n){y(t),v(null),w(null);try{var o,r,a;let t=await x({...e,dryRun:!0});if(t.error)return void v(t.error);v(p("look.estimate",{statements:null!=(o=t.statements)?o:0,tokens:null!=(r=t.estimatedTokens)?r:0,size:(0,i.z3)(null!=(a=t.imageBytes)?a:0)}));let l=await x({...e,dryRun:!1});if(l.error)return void v(l.error);w({subject:n,receipt:l}),v(null),h.refresh()}catch(e){v(p("project.unreachable"))}finally{y(null)}}async function C(e){if(!c.includes(e.type))return void v(p("look.badType"));if(e.size>m)return void v(p("look.tooBig",{size:(0,i.z3)(e.size),cap:(0,i.z3)(m)}));let t=function(e){let t="";for(let n=0;n<e.length;n+=8192)t+=String.fromCharCode(...e.subarray(n,n+8192));return btoa(t)}(new Uint8Array(await e.arrayBuffer()));await S({slug:N,image:t,mediaType:e.type,imageBytes:e.size},"upload",e.name)}return(0,o.jsxs)("section",{className:"mt-8 flex flex-col gap-6",children:[(0,o.jsx)("p",{className:"font-mono text-xs text-idle",children:p("look.notRedacted")}),0===s.length?(0,o.jsxs)("div",{className:"rounded-lg border border-edge px-4 py-4",children:[(0,o.jsx)("p",{className:"eyebrow",children:p("look.inboxTitle")}),(0,o.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed",children:p("look.noInbox")}),(0,o.jsx)("p",{className:"mt-1 max-w-2xl font-mono text-xs text-smoke",children:p("look.noInboxHint")})]}):s.map(e=>(0,o.jsxs)("div",{className:"rounded-lg border border-edge px-4 py-4",children:[(0,o.jsx)("p",{className:"eyebrow",children:p("look.inboxOf",{project:e.name})}),(0,o.jsx)("p",{className:"mt-1 font-mono text-xs text-faint",children:e.dir}),0===e.shots.length?(0,o.jsx)("p",{className:"mt-3 max-w-2xl text-sm leading-relaxed text-smoke",children:p("look.inboxEmpty")}):(0,o.jsx)("div",{className:"mt-3 grid gap-3 sm:grid-cols-2",children:e.shots.map(t=>{let n="".concat(e.slug,"/").concat(t.name);return(0,o.jsxs)("div",{className:"flex gap-3 rounded border border-edge p-2",children:[(0,o.jsx)("img",{src:"/api/twin/shot?slug=".concat(encodeURIComponent(e.slug),"&name=").concat(encodeURIComponent(t.name)),alt:t.name,className:"h-20 w-28 shrink-0 rounded border border-edge bg-raised object-cover"}),(0,o.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,o.jsx)("span",{className:"truncate font-mono text-xs",children:t.name}),(0,o.jsxs)("span",{className:"font-mono text-xs text-faint",children:[(0,i.z3)(t.bytes)," \xb7 ",new Date(t.at).toLocaleString(f)]}),null!==t.findings&&(0,o.jsx)("span",{className:"font-mono text-xs text-smoke",children:0===t.findings?p("look.lookedClean"):p("look.looked",{n:t.findings})}),(0,o.jsx)("button",{type:"button",onClick:()=>S({slug:e.slug,shot:t.name},n,t.name),disabled:null!==b,className:"mt-auto self-start rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",children:b===n?p("look.looking"):p(null===t.findings?"look.button":"look.buttonAgain")})]})]},n)})}),e.skipped>0&&(0,o.jsx)("p",{className:"mt-2 font-mono text-xs text-faint",children:p("look.inboxSkipped",{n:e.skipped})})]},e.slug)),d.length>0&&(0,o.jsxs)("div",{className:"rounded-lg border border-edge px-4 py-4",children:[(0,o.jsx)("p",{className:"eyebrow",children:p("look.uploadTitle")}),(0,o.jsx)("p",{className:"mt-1 max-w-2xl text-sm leading-relaxed text-smoke",children:p("look.uploadHint")}),(0,o.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,o.jsx)("select",{value:N,onChange:e=>O(e.target.value),"aria-label":p("look.uploadTarget"),className:"rounded border border-edge bg-transparent px-2 py-1 font-mono text-xs",children:d.map(e=>(0,o.jsx)("option",{value:e.slug,children:e.name},e.slug))}),(0,o.jsx)("input",{ref:g,type:"file",accept:c.join(","),className:"hidden",onChange:e=>{var t;let n=null==(t=e.target.files)?void 0:t[0];e.target.value="",n&&C(n)}}),(0,o.jsx)(i.rA,{tone:"plain",type:"button",onClick:()=>{var e;return null==(e=g.current)?void 0:e.click()},busy:"upload"===b,busyLabel:p("look.looking"),disabled:null!==b||""===N,children:p("look.uploadPick")})]})]}),j&&(0,o.jsx)("p",{className:"font-mono text-xs text-smoke",children:j}),k&&(0,o.jsx)(u,{subject:k.subject,receipt:k.receipt})]})}function u(e){var t,n,r,a,s;let{subject:i,receipt:c}=e,d=(0,l.kj)(),u=null!=(t=c.findings)?t:[];return(0,o.jsxs)("div",{className:"rounded-lg border border-edge px-4 py-4",children:[(0,o.jsx)("p",{className:"eyebrow",children:d("look.verdictOf",{subject:i})}),c.unreadable?(0,o.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed text-idle",children:d("look.unreadable")}):0===u.length?(0,o.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed",children:d("look.clean")}):(0,o.jsx)(m,{lookId:null!=(n=c.lookId)?n:"",findings:u,assigned:{}}),(0,o.jsxs)("p",{className:"mt-3 font-mono text-xs text-faint",children:[d("look.measured",{statements:null!=(r=c.statements)?r:0}),c.model?" \xb7 ".concat(c.model):""]}),(null!=(a=c.dropped)?a:0)>0&&(0,o.jsx)("p",{className:"mt-1 font-mono text-xs text-faint",children:d("look.dropped",{n:null!=(s=c.dropped)?s:0})})]})}function m(e){let{lookId:t,findings:n,assigned:c,launched:d=[],discarded:u=[]}=e,m=(0,l.kj)(),x=(0,a.useRouter)(),p=(0,s.q)(),[f,h]=(0,r.useState)(c),[g,b]=(0,r.useState)(()=>new Set(d)),[y,j]=(0,r.useState)(()=>new Set(u)),[v,k]=(0,r.useState)(null),[w,N]=(0,r.useState)({});function O(e,t){N(n=>({...n,[e]:t}))}async function S(e){k(e);try{var n,o,r;let a=await fetch("/api/twin/assign",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({lookId:t,finding:e})}),l=await a.json();if(!a.ok){l.id&&h(t=>({...t,[e]:l.id})),O(e,null!=(n=l.error)?n:String(a.status));return}l.id&&h(t=>({...t,[e]:l.id})),j(t=>{let n=new Set(t);return n.delete(e),n}),O(e,m("look.assignDone",{project:null!=(o=l.project)?o:"",title:null!=(r=l.title)?r:""})),x.refresh()}catch(t){O(e,m("project.unreachable"))}finally{k(null)}}async function C(e){k(e);try{let o=await fetch("/api/twin/assign",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({lookId:t,finding:e,decision:"discard"})}),r=await o.json();if(!o.ok){var n;O(e,null!=(n=r.error)?n:String(o.status));return}j(t=>new Set(t).add(e)),h(t=>{let n={...t};return delete n[e],n}),O(e,m("look.dismissDone")),x.refresh()}catch(t){O(e,m("project.unreachable"))}finally{k(null)}}async function P(e,t){k(e);try{var n,o;let r=await fetch("/api/assignments/launch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:t})}),a=await r.json();r.ok&&b(e=>new Set(e).add(t)),O(e,r.ok?m("look.assignLaunched",{agent:null!=(n=a.agent)?n:""}):null!=(o=a.error)?o:String(r.status))}catch(t){O(e,m("project.unreachable"))}finally{k(null)}}return(0,o.jsx)("ol",{className:"mt-3 flex flex-col gap-4",children:n.map((e,n)=>{let r=f[n],a=y.has(n);return(0,o.jsxs)("li",{className:"flex flex-col gap-1",children:[(0,o.jsx)("p",{className:"max-w-2xl text-sm leading-relaxed",children:e.what}),(0,o.jsx)("p",{className:"max-w-2xl font-mono text-xs text-faint",children:e.where}),(0,o.jsx)("p",{className:"max-w-2xl text-sm leading-relaxed text-smoke",children:m("look.fix",{fix:e.fix})}),e.cites.map(e=>(0,o.jsx)("p",{className:"max-w-2xl font-mono text-xs text-faint",children:m("look.against",{statement:e})},e)),""!==t&&(0,o.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-2",children:[(0,o.jsx)(i.rA,{tone:"plain",type:"button",onClick:()=>void S(n),busy:v===n&&void 0===r,busyLabel:m("look.assigning"),disabled:null!==v||void 0!==r,children:void 0!==r?m("look.assigned"):m("look.assignButton")}),!a&&(0,o.jsx)("button",{type:"button",onClick:()=>void C(n),disabled:null!==v,className:"rounded border border-edge px-2.5 py-1 font-mono text-xs text-faint transition-colors hover:border-chalk hover:text-smoke disabled:opacity-50",children:m("look.dismissButton")}),a&&(0,o.jsx)("span",{className:"font-mono text-xs text-faint",children:m("look.dismissed")}),void 0!==r&&p.available&&(0,o.jsx)("button",{type:"button",onClick:()=>void P(n,r),disabled:null!==v,className:"rounded border border-accent bg-accent px-2.5 py-1 font-mono text-xs text-white transition-opacity hover:opacity-85 disabled:opacity-50",children:m(g.has(r)?"look.assignAgain":"look.assignNow")})]}),w[n]&&(0,o.jsx)("p",{className:"max-w-2xl font-mono text-xs text-smoke",children:w[n]})]},n)})})}async function x(e){var t;let n=await fetch("/api/twin/look",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),o=await n.json();return n.ok?o:{...o,error:null!=(t=o.error)?t:String(n.status)}}},4204:(e,t,n)=>{"use strict";n.d(t,{rA:()=>m,lZ:()=>d,hV:()=>c,z3:()=>i.z,Pp:()=>l,KW:()=>s});var o=n(9763),r=n(5595),a=n(7911);function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es";if(!e)return"—";let n=Math.floor((Date.now()-new Date(e).getTime())/864e5);if("en"===t){if(n<=0)return"today";if(1===n)return"yesterday";if(n<30)return"".concat(n," d ago");if(n<365){let e=Math.floor(n/30);return"".concat(e," month").concat(1===e?"":"s"," ago")}let e=Math.floor(n/365);return"".concat(e," year").concat(1===e?"":"s"," ago")}if(n<=0)return"hoy";if(1===n)return"ayer";if(n<30)return"hace ".concat(n," d");if(n<365){let e=Math.floor(n/30);return"hace ".concat(e," ").concat(1===e?"mes":"meses")}let o=Math.floor(n/365);return"hace ".concat(o," a\xf1o").concat(1===o?"":"s")}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),o=n-new Date(e).getTime();if(!Number.isFinite(o))return"—";let r="en"===t;if(o<6e4)return r?"just now":"ahora mismo";if(o<36e5){let e=Math.floor(o/6e4);return r?"".concat(e," min ago"):"hace ".concat(e," min")}if(o<1728e5){let e=Math.floor(o/36e5);return r?"".concat(e," h ago"):"hace ".concat(e," h")}return l(e,t)}var i=n(7642);function c(e){let{name:t,src:n,size:l=56,tone:s="brand",locale:i}=e,c="panoma"===t.toLowerCase(),d="demo-runner"===t.toLowerCase()?"/assets/projects/demo-runner.png":null,u=c?"/assets/brand/panoma.svg":null!=n?n:d;return u?(0,o.jsx)("img",{src:u,loading:"lazy",alt:(0,a.t)(i,"common.iconOf",{name:t}),width:l,height:l,className:"shrink-0 rounded-[22%] border border-edge object-cover shadow-sm",style:{width:l,height:l}}):(0,o.jsx)("span",{"aria-hidden":!0,className:"flex shrink-0 items-center justify-center rounded-[22%] border border-edge ".concat("neutral"===s?"project-icon--neutral":"bg-raised text-accent"),style:{width:l,height:l},children:(0,o.jsx)(r.KQe,{style:{width:.46*l,height:.46*l}})})}function d(e){let{text:t,as:n="p",className:r}=e;return(0,o.jsx)(n,{role:"alert",className:"font-mono text-[11px] text-fail".concat(r?" ".concat(r):""),children:t})}let u={raised:"rounded border border-edge bg-raised px-3 py-1.5 font-mono text-[11px] text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",surface:"rounded border border-edge bg-surface px-3 py-1.5 font-mono text-xs text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",plain:"rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",accent:"rounded border border-accent bg-accent px-3 py-1.5 font-mono text-xs text-white transition-opacity hover:opacity-85 disabled:opacity-50"};function m(e){let{tone:t,busy:n=!1,busyLabel:r,disabled:a,className:l,children:s,...i}=e;return(0,o.jsx)("button",{...i,disabled:null!=a?a:n,className:"".concat(u[t]).concat(l?" ".concat(l):""),children:n&&void 0!==r?r:s})}},4652:(e,t,n)=>{"use strict";n.d(t,{k5:()=>d});var o=n(4963),r={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},a=o.createContext&&o.createContext(r),l=["attr","size","title"];function s(){return(s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(null,arguments)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach(function(t){var o,r,a;o=e,r=t,a=n[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in o?Object.defineProperty(o,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):o[r]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function d(e){return t=>o.createElement(u,s({attr:c({},e.attr)},t),function e(t){return t&&t.map((t,n)=>o.createElement(t.tag,c({key:n},t.attr),e(t.child)))}(e.child))}function u(e){var t=t=>{var n,r=e.attr,a=e.size,i=e.title,d=function(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n={};for(var o in e)if(({}).hasOwnProperty.call(e,o)){if(-1!==t.indexOf(o))continue;n[o]=e[o]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],-1===t.indexOf(n)&&({}).propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}(e,l),u=a||t.size||"1em";return t.className&&(n=t.className),e.className&&(n=(n?n+" ":"")+e.className),o.createElement("svg",s({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,r,d,{className:n,style:c(c({color:e.color||t.color},t.style),e.style),height:u,width:u,xmlns:"http://www.w3.org/2000/svg"}),i&&o.createElement("title",null,i),e.children)};return void 0!==a?o.createElement(a.Consumer,null,e=>t(e)):t(r)}},5733:(e,t,n)=>{"use strict";let o;n.d(t,{q:()=>a});var r=n(4963);function a(){let[e,t]=(0,r.useState)({available:!1,agent:null});return(0,r.useEffect)(()=>{null!=o||(o=fetch("/api/assignments/launch").then(e=>e.json()).catch(()=>({available:!1,agent:null})));let e=!0;return o.then(n=>{e&&t(n)}),()=>{e=!1}},[]),e}},7244:(e,t,n)=>{"use strict";var o=n(3292);n.o(o,"usePathname")&&n.d(t,{usePathname:function(){return o.usePathname}}),n.o(o,"useRouter")&&n.d(t,{useRouter:function(){return o.useRouter}}),n.o(o,"useSearchParams")&&n.d(t,{useSearchParams:function(){return o.useSearchParams}})},7642:(e,t,n)=>{"use strict";function o(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):e<0x40000000?"".concat((e/1048576).toFixed(1)," MB"):"".concat((e/0x40000000).toFixed(1)," GB")}n.d(t,{z:()=>o})},8274:(e,t,n)=>{Promise.resolve().then(n.bind(n,1636))}},e=>{e.O(0,[6587,7911,9643,4737,7358],()=>e(e.s=8274)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1162],{179:(e,t,n)=>{"use strict";n.d(t,{I18nProvider:()=>l,Ym:()=>c,Zs:()=>d,kj:()=>u});var r=n(9763),o=n(4963),i=n(7911);let s=(0,o.createContext)("en"),a=(0,o.createContext)("panoma");function l(e){let{locale:t,cli:n,children:o}=e;return(0,r.jsx)(s.Provider,{value:t,children:(0,r.jsx)(a.Provider,{value:n,children:o})})}function c(){return(0,o.useContext)(s)}function d(){return(0,o.useContext)(a)}function u(){let e=(0,o.useContext)(s),t=(0,o.useContext)(a);return(0,o.useCallback)((n,r)=>(0,i.t)(e,n,{cli:t,...r}),[e,t])}},733:(e,t,n)=>{"use strict";n.d(t,{TwinSynthesize:()=>a});var r=n(9763),o=n(4963),i=n(7244),s=n(179);function a(e){let{pending:t,compact:n}=e,a=(0,s.kj)(),l=(0,i.useRouter)(),[c,d]=(0,o.useState)(!1),[u,x]=(0,o.useState)(null);async function p(){d(!0),x(null);try{var e,n,r,o,i,s,c;if(t>0){let t=await fetch("/api/twin/classify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),n=await t.json();if(!t.ok)return void x(null!=(e=n.error)?e:a("twin.synthFailed"))}let d=await fetch("/api/twin/synthesize",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),u=await d.json();if(!d.ok)return void x(null!=(n=u.error)?n:a("twin.synthFailed"));let p=null!=(r=u.created)?r:0,m=null!=(o=u.refined)?o:0,h=null!=(i=u.retired)?i:0,f=null!=(s=u.proposed)?s:0,b=p+m+h+f,g=null!=(c=u.unchanged)?c:0,w=0===u.topics?g>0?a("twin.synthUpToDate"):a("twin.synthNothing"):a("twin.synthSame"),y=a("twin.synthDone",{created:p,refined:m,retired:h});x(0===b?w:0===f?y:"".concat(y," ").concat(a("twin.synthAsks",{n:f}))),l.refresh()}catch(e){x(a("project.unreachable"))}finally{d(!1)}}return(0,r.jsxs)("div",{className:n?"flex items-center gap-2":"mt-3 flex flex-col gap-1",children:[(0,r.jsx)("button",{type:"button",onClick:p,disabled:c,className:"self-start rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",children:c?a("twin.synthesizing"):a("twin.synthesize")}),u?(0,r.jsx)("p",{className:"font-mono text-xs text-smoke",children:u}):n?null:(0,r.jsx)("p",{className:"font-mono text-xs text-faint",children:a("twin.synthHint")})]})}},2189:(e,t,n)=>{"use strict";n.d(t,{TwinConsent:()=>l});var r=n(9763),o=n(4963),i=n(7244),s=n(179),a=n(4204);function l(e){let{standing:t,chars:n,cap:l}=e,c=(0,s.kj)(),d=(0,i.useRouter)(),[u,x]=(0,o.useState)(!1),[p,m]=(0,o.useState)(null);async function h(e){x(!0),m(null);try{var t;let n=await fetch("/api/twin/taste",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({publishInferred:e})}),r=await n.json();n.ok||m(null!=(t=r.error)?t:String(n.status)),d.refresh()}catch(e){m(c("project.unreachable"))}finally{x(!1)}}return(0,r.jsxs)("section",{className:"mt-12 rounded-lg border border-edge px-4 py-4",children:[(0,r.jsx)("p",{className:"eyebrow",children:c("twin.consentTitle")}),(0,r.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed",children:c("twin.consentBody")}),(0,r.jsxs)("p",{className:"mt-2 max-w-2xl font-mono text-xs ".concat(n>l?"text-idle":"text-smoke"),children:[c("twin.consentCount",{n:t,chars:n}),n>l?" \xb7 ".concat(c("twin.consentOver",{cap:l})):""]}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(a.rA,{tone:"accent",type:"button",onClick:()=>h(!0),busy:u,busyLabel:c("twin.saving"),children:c("twin.consentAllow")}),(0,r.jsx)("span",{className:"font-mono text-xs text-faint",children:c("twin.consentRevoke")})]}),p&&(0,r.jsx)("p",{className:"mt-2 font-mono text-xs text-idle",children:c("twin.saveFailed",{detail:p})})]})}},4204:(e,t,n)=>{"use strict";n.d(t,{rA:()=>x,lZ:()=>d,hV:()=>c,z3:()=>l.z,Pp:()=>s,KW:()=>a});var r=n(9763),o=n(5595),i=n(7911);function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es";if(!e)return"—";let n=Math.floor((Date.now()-new Date(e).getTime())/864e5);if("en"===t){if(n<=0)return"today";if(1===n)return"yesterday";if(n<30)return"".concat(n," d ago");if(n<365){let e=Math.floor(n/30);return"".concat(e," month").concat(1===e?"":"s"," ago")}let e=Math.floor(n/365);return"".concat(e," year").concat(1===e?"":"s"," ago")}if(n<=0)return"hoy";if(1===n)return"ayer";if(n<30)return"hace ".concat(n," d");if(n<365){let e=Math.floor(n/30);return"hace ".concat(e," ").concat(1===e?"mes":"meses")}let r=Math.floor(n/365);return"hace ".concat(r," a\xf1o").concat(1===r?"":"s")}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),r=n-new Date(e).getTime();if(!Number.isFinite(r))return"—";let o="en"===t;if(r<6e4)return o?"just now":"ahora mismo";if(r<36e5){let e=Math.floor(r/6e4);return o?"".concat(e," min ago"):"hace ".concat(e," min")}if(r<1728e5){let e=Math.floor(r/36e5);return o?"".concat(e," h ago"):"hace ".concat(e," h")}return s(e,t)}var l=n(7642);function c(e){let{name:t,src:n,size:s=56,tone:a="brand",locale:l}=e,c="panoma"===t.toLowerCase(),d="demo-runner"===t.toLowerCase()?"/assets/projects/demo-runner.png":null,u=c?"/assets/brand/panoma.svg":null!=n?n:d;return u?(0,r.jsx)("img",{src:u,loading:"lazy",alt:(0,i.t)(l,"common.iconOf",{name:t}),width:s,height:s,className:"shrink-0 rounded-[22%] border border-edge object-cover shadow-sm",style:{width:s,height:s}}):(0,r.jsx)("span",{"aria-hidden":!0,className:"flex shrink-0 items-center justify-center rounded-[22%] border border-edge ".concat("neutral"===a?"project-icon--neutral":"bg-raised text-accent"),style:{width:s,height:s},children:(0,r.jsx)(o.KQe,{style:{width:.46*s,height:.46*s}})})}function d(e){let{text:t,as:n="p",className:o}=e;return(0,r.jsx)(n,{role:"alert",className:"font-mono text-[11px] text-fail".concat(o?" ".concat(o):""),children:t})}let u={raised:"rounded border border-edge bg-raised px-3 py-1.5 font-mono text-[11px] text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",surface:"rounded border border-edge bg-surface px-3 py-1.5 font-mono text-xs text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",plain:"rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",accent:"rounded border border-accent bg-accent px-3 py-1.5 font-mono text-xs text-white transition-opacity hover:opacity-85 disabled:opacity-50"};function x(e){let{tone:t,busy:n=!1,busyLabel:o,disabled:i,className:s,children:a,...l}=e;return(0,r.jsx)("button",{...l,disabled:null!=i?i:n,className:"".concat(u[t]).concat(s?" ".concat(s):""),children:n&&void 0!==o?o:a})}},4652:(e,t,n)=>{"use strict";n.d(t,{k5:()=>d});var r=n(4963),o={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},i=r.createContext&&r.createContext(o),s=["attr","size","title"];function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach(function(t){var r,o,i;r=e,o=t,i=n[t],(o=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(o))in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function d(e){return t=>r.createElement(u,a({attr:c({},e.attr)},t),function e(t){return t&&t.map((t,n)=>r.createElement(t.tag,c({key:n},t.attr),e(t.child)))}(e.child))}function u(e){var t=t=>{var n,o=e.attr,i=e.size,l=e.title,d=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if(({}).hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],-1===t.indexOf(n)&&({}).propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,s),u=i||t.size||"1em";return t.className&&(n=t.className),e.className&&(n=(n?n+" ":"")+e.className),r.createElement("svg",a({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,o,d,{className:n,style:c(c({color:e.color||t.color},t.style),e.style),height:u,width:u,xmlns:"http://www.w3.org/2000/svg"}),l&&r.createElement("title",null,l),e.children)};return void 0!==i?r.createElement(i.Consumer,null,e=>t(e)):t(o)}},7244:(e,t,n)=>{"use strict";var r=n(3292);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},7522:(e,t,n)=>{"use strict";n.d(t,{TwinDistill:()=>a});var r=n(9763),o=n(4963),i=n(7244),s=n(179);function a(e){let{left:t}=e,n=(0,s.kj)(),a=(0,i.useRouter)(),[d,u]=(0,o.useState)(!1),[x,p]=(0,o.useState)(null);async function m(){u(!0),p(null);try{var e,t,r,o,i;p(n("twin.mining"));let s=await l();if(s.unreachable)p(n("project.unreachable"));else if(void 0!==s.error){if(p(s.error),s.blocked)return}else{let r=null!=(e=s.saved)?e:0;p(0===r?n("twin.minedNone"):n("twin.mined",{saved:r,duplicates:null!=(t=s.duplicates)?t:0}))}let d=await c({dryRun:!0});if(d.error)return void p(d.hint?"".concat(d.error," ").concat(d.hint):d.error);if(!d.verdicts)return void p(n("twin.distillNothing"));p(n("twin.distillEstimate",{verdicts:d.verdicts,tokens:null!=(r=d.estimatedTokens)?r:0}));let u=0,x=0;for(let e=1;e<=20;e+=1){let e=await c({});if(u+=null!=(o=e.verdicts)?o:0,x+=null!=(i=e.saved)?i:0,e.error){p(e.hint?"".concat(e.error," ").concat(e.hint):e.error);break}let t=e.corpus?Math.max(e.corpus.total-e.corpus.read,0):0;if(p(n("twin.distillProgress",{read:u,saved:x,left:t})),!e.verdicts||t<=0)break}a.refresh()}catch(e){p(n("project.unreachable"))}finally{u(!1)}}return(0,r.jsxs)("div",{className:"mt-2 flex flex-col gap-1",children:[(0,r.jsx)("button",{type:"button",onClick:m,disabled:d,className:"self-start rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",children:d?n("twin.distilling"):t>0?n("twin.mineButtonLeft",{n:t}):n("twin.mineButton")}),x&&(0,r.jsx)("p",{className:"font-mono text-xs text-smoke",children:x})]})}async function l(){try{var e;let t=await fetch("/api/twin/mine",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),n=await t.json();if(t.ok)return n;return{error:null!=(e=n.error)?e:String(t.status),...409===t.status?{blocked:!0}:{}}}catch(e){return{unreachable:!0}}}async function c(e){var t;let n=await fetch("/api/twin/distill",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=await n.json();return n.ok?r:{...r,error:null!=(t=r.error)?t:String(n.status)}}},7642:(e,t,n)=>{"use strict";function r(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):e<0x40000000?"".concat((e/1048576).toFixed(1)," MB"):"".concat((e/0x40000000).toFixed(1)," GB")}n.d(t,{z:()=>r})},7657:(e,t,n)=>{"use strict";n.d(t,{TwinSources:()=>l});var r=n(9763),o=n(4963),i=n(7244),s=n(179),a=n(4204);function l(e){let{sources:t}=e,n=(0,s.kj)(),l=(0,i.useRouter)(),[c,d]=(0,o.useState)(null),[u,x]=(0,o.useState)(null),[p,m]=(0,o.useState)(t);async function h(e,t){d(e),x(null);try{let n=await fetch("/api/twin/sources",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:e,allowed:t})}),o=await n.json();if(!n.ok){var r;x(null!=(r=o.error)?r:String(n.status));return}o.sources&&m(o.sources),l.refresh()}catch(e){x(n("project.unreachable"))}finally{d(null)}}let f=p.filter(e=>"absent"!==e.state);return 0===f.length?(0,r.jsxs)("section",{className:"mt-6 rounded-lg border border-edge px-4 py-4",children:[(0,r.jsx)("p",{className:"eyebrow",children:n("twin.sourcesTitle")}),(0,r.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed",children:n("twin.sourcesNone")})]}):(0,r.jsxs)("section",{className:"mt-6 rounded-lg border border-edge px-4 py-4",children:[(0,r.jsx)("p",{className:"eyebrow",children:n("twin.sourcesTitle")}),(0,r.jsx)("p",{className:"mt-2 max-w-2xl text-sm leading-relaxed",children:n("twin.sourcesLead")}),(0,r.jsx)("div",{className:"mt-3 flex flex-col gap-2",children:f.map(e=>(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:"font-mono text-xs",children:e.label}),(0,r.jsx)("span",{className:"font-mono text-xs text-faint",children:e.present?n("twin.sourceSize",{files:e.files,size:(0,a.z3)(e.bytes)}):n("twin.sourceGone")}),"noReader"===e.state?(0,r.jsx)("span",{className:"font-mono text-xs text-idle",children:n("twin.sourceNoReader")}):(0,r.jsx)("button",{type:"button",onClick:()=>h(e.id,"allowed"!==e.state),disabled:null!==c,className:"allowed"===e.state?"rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50":"rounded border border-accent bg-accent px-2.5 py-1 font-mono text-xs text-white transition-opacity hover:opacity-85 disabled:opacity-50",children:c===e.id?n("twin.saving"):n("allowed"===e.state?"twin.sourceRevoke":"twin.sourceAllow")})]},e.id))}),(0,r.jsx)("p",{className:"mt-3 max-w-2xl font-mono text-xs text-faint",children:n("twin.sourcesRevokeNote")}),u&&(0,r.jsx)("p",{className:"mt-2 font-mono text-xs text-idle",children:u})]})}},8895:(e,t,n)=>{Promise.resolve().then(n.bind(n,9495)),Promise.resolve().then(n.bind(n,2189)),Promise.resolve().then(n.bind(n,7522)),Promise.resolve().then(n.bind(n,7657)),Promise.resolve().then(n.bind(n,733)),Promise.resolve().then(n.t.bind(n,1723,23))},9495:(e,t,n)=>{"use strict";n.d(t,{BeliefEditor:()=>d});var r=n(9763),o=n(4963),i=n(7244),s=n(179);let a={design:"twin.topicDesign",frontend:"twin.topicFrontend",backend:"twin.topicBackend",cli:"twin.topicCli",testing:"twin.topicTesting",copy:"twin.topicCopy",workflow:"twin.topicWorkflow",tooling:"twin.topicTooling",data:"twin.topicData",other:"twin.topicOther"};var l=n(4204);let c={signed:"twin.badgeSigned",standing:"twin.badgeStanding",forming:"twin.badgeForming"};function d(e){let{beliefs:t,graveyard:n,proposals:a,locale:c}=e,d=(0,s.kj)(),h=(0,i.useRouter)(),[f,b]=(0,o.useState)(new Map),[g,w]=(0,o.useState)(new Map),[y,v]=(0,o.useState)(null),[j,k]=(0,o.useState)(!1),[N,S]=(0,o.useState)(null),O=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){let t=e.get(n.topic);t?t.push(n):e.set(n.topic,[n])}return[...e]},[t]),C=f.size>0||g.size>0;function P(e,t){b(n=>{let r=new Map(n);return void 0===t?r.delete(e):r.set(e,t),r})}async function T(){k(!0),S(null);let e=[],t=[],n=[];for(let[r,o]of f)"sign"===o.kind?e.push({id:r,...o.statement?{statement:o.statement}:{}}):"veto"===o.kind?t.push(r):n.push({id:r,identity:o.identity});let r=[...g].map(e=>{let[t,n]=e;return{id:t,accept:n}});try{let i=await fetch("/api/twin/taste",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sign:e,veto:t,scope:n,resolve:r})}),s=await i.json();if(!i.ok){var o;S(null!=(o=s.error)?o:String(i.status));return}b(new Map),w(new Map),v(null),h.refresh()}catch(e){S(d("project.unreachable"))}finally{k(!1)}}return(0,r.jsxs)(r.Fragment,{children:[a.length>0&&(0,r.jsxs)("section",{className:"mt-12",children:[(0,r.jsx)("h2",{className:"font-display text-lg font-semibold tracking-tight",children:d("twin.proposalsTitle")}),(0,r.jsx)("p",{className:"mt-1 max-w-2xl text-sm leading-relaxed text-smoke",children:d("twin.proposalsNote")}),(0,r.jsx)("ul",{className:"mt-4 flex flex-col gap-3",children:a.map(e=>{var t;return(0,r.jsxs)("li",{className:"rounded-lg border px-4 py-4 ".concat(g.has(e.id)?"border-l-2 border-l-chalk border-edge":"border-edge"),children:[(0,r.jsxs)("p",{className:"eyebrow",children:[u(e.topic,d),e.supersedes&&e.supersedes.length>1?" \xb7 ".concat(d("twin.proposalJoins",{n:e.supersedes.length})):""]}),null==(t=e.supersedes)?void 0:t.map(e=>(0,r.jsx)("p",{className:"mt-1 max-w-2xl text-sm leading-relaxed text-smoke line-through decoration-faint",children:e},e)),(0,r.jsx)("p",{className:"mt-2 max-w-2xl text-[15px] leading-relaxed",children:e.statement}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,r.jsx)(m,{label:d("twin.proposalAccept"),active:!0===g.get(e.id),onClick:()=>w(x(g,e.id,!0))}),(0,r.jsx)(m,{label:d("twin.proposalReject"),active:!1===g.get(e.id),onClick:()=>w(x(g,e.id,!1))})]})]},e.id)})})]}),O.map(e=>{let[t,n]=e;return(0,r.jsxs)("section",{className:"mt-12",children:[(0,r.jsx)("h2",{className:"font-display text-lg font-semibold tracking-tight",children:u(t,d)}),(0,r.jsx)("ul",{className:"mt-4 flex flex-col gap-3",children:n.map(e=>(0,r.jsx)(p,{belief:e,locale:c,gesture:f.get(e.id),editing:y===e.id,onEdit:t=>v(t?e.id:null),onGesture:t=>(function(e,t){let n=f.get(e),r=(null==n?void 0:n.kind)==="sign"&&void 0!==n.statement;n&&n.kind===t.kind&&!r?P(e,void 0):P(e,t)})(e.id,t),onWrite:t=>P(e.id,{kind:"sign",statement:t}),translate:d},e.id))})]},t)}),n.length>0&&(0,r.jsxs)("section",{className:"mt-12",children:[(0,r.jsx)("h2",{className:"font-display text-lg font-semibold tracking-tight",children:d("twin.graveyardTitle")}),(0,r.jsx)("p",{className:"mt-1 max-w-2xl text-sm leading-relaxed text-smoke",children:d("twin.graveyardNote")}),(0,r.jsx)("ul",{className:"mt-4 flex flex-col gap-2",children:n.map(e=>(0,r.jsx)("li",{className:"rounded-lg border border-edge px-4 py-3 opacity-60",children:(0,r.jsx)("p",{className:"text-sm leading-relaxed text-smoke line-through decoration-faint",children:e.statement})},e.id))})]}),C&&(0,r.jsxs)("div",{className:"sticky bottom-4 z-10 mt-8 flex flex-wrap items-center gap-3 rounded-lg border border-edge bg-surface/95 px-4 py-3 shadow-lg backdrop-blur",children:[(0,r.jsx)("span",{className:"font-mono text-xs text-smoke",children:d("twin.markedGestures",{n:f.size+g.size})}),(0,r.jsx)(l.rA,{tone:"accent",type:"button",onClick:T,busy:j,busyLabel:d("twin.saving"),children:d("twin.save")}),(0,r.jsx)("button",{type:"button",onClick:()=>{b(new Map),w(new Map),v(null)},disabled:j,className:"font-mono text-xs text-smoke underline-offset-2 hover:underline disabled:opacity-50",children:d("twin.cancel")}),N&&(0,r.jsx)("span",{className:"font-mono text-xs text-fail",children:d("twin.saveFailed",{detail:N})})]})]})}function u(e,t){let n=a[e];return n?t(n):e}function x(e,t,n){let r=new Map(e);return r.get(t)===n?r.delete(t):r.set(t,n),r}function p(e){let{belief:t,locale:n,gesture:i,editing:s,onEdit:a,onGesture:l,onWrite:d,translate:u}=e,[x,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(t.statement),b=(null==i?void 0:i.kind)==="sign"?i.statement:void 0;return(0,r.jsxs)("li",{className:["rounded-lg border px-4 py-4 transition-colors",(null==i?void 0:i.kind)==="sign"?"border-l-2 border-l-live border-edge bg-live/[0.05]":(null==i?void 0:i.kind)==="veto"?"border-l-2 border-l-faint border-edge opacity-60":void 0!==i?"border-l-2 border-l-chalk border-edge":"border-edge"].join(" "),children:[(0,r.jsxs)("p",{className:"eyebrow",children:[(0,r.jsx)("span",{className:"forming"===t.badge?"text-idle":"",children:u(c[t.badge])}),t.scope?" \xb7 ".concat(u("twin.scopedTag",{project:t.scope})):""]}),s?(0,r.jsxs)("div",{className:"mt-2",children:[(0,r.jsx)("textarea",{value:h,onChange:e=>f(e.target.value),"aria-label":u("twin.editText"),rows:3,className:"w-full max-w-2xl rounded border border-edge bg-transparent px-3 py-2 text-[15px] leading-relaxed"}),(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,r.jsx)(m,{label:u("twin.editSave"),active:!0,onClick:()=>{""!==h.trim()&&(d(h.trim()),a(!1))}}),(0,r.jsx)(m,{label:u("twin.cancel"),onClick:()=>{f(t.statement),a(!1)}})]})]}):(0,r.jsx)("p",{className:"mt-1 max-w-2xl text-[15px] leading-relaxed",children:null!=b?b:t.statement}),(0,r.jsxs)("p",{className:"mt-2 font-mono text-xs text-smoke",children:[u("twin.support",{observations:t.support.observations,projects:t.support.projects,days:t.support.days}),"forming"===t.badge?(0,r.jsx)("span",{className:"text-idle",children:" \xb7 ".concat(u("twin.formingWhy"))}):null,t.citations.length>0&&(0,r.jsxs)(r.Fragment,{children:[" \xb7 ",(0,r.jsx)("button",{type:"button",onClick:()=>p(e=>!e),className:"underline-offset-2 hover:underline",children:u(x?"twin.hideCitations":"twin.showCitations",{n:t.citations.length})})]})]}),x&&(0,r.jsx)("ul",{className:"mt-3 flex flex-col gap-2.5 border-l border-edge pl-3",children:t.citations.map(e=>(0,r.jsxs)("li",{children:[(0,r.jsxs)("p",{className:"line-clamp-2 text-sm italic leading-snug text-smoke",title:e.quote,children:["\xab",e.quote,"\xbb"]}),(0,r.jsxs)("p",{className:"mt-0.5 font-mono text-xs text-faint",children:[function(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return e.slice(0,10);let r=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return"en"===t?"".concat(n.getFullYear(),"-").concat(r,"-").concat(o):"".concat(o,"/").concat(r,"/").concat(n.getFullYear())}(e.at,n),e.project?" \xb7 ".concat(u("twin.citedIn",{project:e.project})):""]})]},e.verdictId))}),!s&&(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:["signed"!==t.badge&&(0,r.jsx)(m,{label:u("twin.sign"),active:(null==i?void 0:i.kind)==="sign"&&void 0===b,onClick:()=>l({kind:"sign"})}),(0,r.jsx)(m,{label:u("twin.edit"),active:void 0!==b,onClick:()=>{f(null!=b?b:t.statement),a(!0)}}),(0,r.jsx)(m,{label:u("twin.veto"),active:(null==i?void 0:i.kind)==="veto",onClick:()=>l({kind:"veto"})}),t.scope?(0,r.jsx)(m,{label:u("twin.scopeAll"),active:(null==i?void 0:i.kind)==="scope"&&null===i.identity,onClick:()=>l({kind:"scope",identity:null})}):t.learnedIn?(0,r.jsx)(m,{label:u("twin.scopeOnly",{project:t.learnedIn.name}),active:(null==i?void 0:i.kind)==="scope",onClick:()=>{var e,n;return l({kind:"scope",identity:null!=(n=null==(e=t.learnedIn)?void 0:e.identity)?n:null})}}):null]})]})}function m(e){let{label:t,active:n,onClick:o}=e;return(0,r.jsx)("button",{type:"button",onClick:o,className:["rounded border px-2.5 py-1 font-mono text-xs transition-colors",n?"border-accent text-accent":"border-edge text-smoke hover:border-chalk"].join(" "),children:t})}}},e=>{e.O(0,[6587,1723,7911,9643,4737,7358],()=>e(e.s=8895)),_N_E=e.O()}]);
|
|
@@ -678,6 +678,16 @@ interface PortfolioStats {
|
|
|
678
678
|
noGit: number;
|
|
679
679
|
/** Outside of `projects`, not inside: `notACopy` excludes them from the count above. */
|
|
680
680
|
copies: number;
|
|
681
|
+
/**
|
|
682
|
+
* Also outside `projects`, and for the other of the two reasons `notACopy` subtracts.
|
|
683
|
+
*
|
|
684
|
+
* The copies are set aside by the machine, and that is why they have always been counted here:
|
|
685
|
+
* a number that hides what somebody else decided has to say so. These are set aside by the
|
|
686
|
+
* person, one at a time, each with a notice that does not expire — so the day it happens nothing
|
|
687
|
+
* is missing. What was missing was the month afterwards, with the sidebar three short and
|
|
688
|
+
* nothing on any screen to remember it by.
|
|
689
|
+
*/
|
|
690
|
+
hidden: number;
|
|
681
691
|
redundantBytes: number;
|
|
682
692
|
agentCommits: number;
|
|
683
693
|
technologies: number;
|
|
@@ -1038,6 +1038,15 @@ async function getStats(db) {
|
|
|
1038
1038
|
noGit: sql2`(select count(*)::int from ${projects}
|
|
1039
1039
|
where ${notACopy} and last_commit_at is null)`,
|
|
1040
1040
|
copies: sql2`(select count(*)::int from ${familyMembers})`,
|
|
1041
|
+
/*
|
|
1042
|
+
Counted from the decision and not from the project: `notACopy` reads `decisions.hidden`
|
|
1043
|
+
through `identity`, which is what survives moving the folder, and a decision can outlive
|
|
1044
|
+
the row it was about. Only rows that are still in the catalog are counted, so the figure
|
|
1045
|
+
can always be pointed at — and one that is also a copy is not counted twice.
|
|
1046
|
+
*/
|
|
1047
|
+
hidden: sql2`(select count(*)::int from ${projects} p
|
|
1048
|
+
where not exists (select 1 from family_members fm where fm.project_id = p.id)
|
|
1049
|
+
and (select d.hidden from decisions d where d.identity = p.identity) is true)`,
|
|
1041
1050
|
redundantBytes: sql2`(select coalesce(sum(redundant_bytes), 0)::int from ${families})`,
|
|
1042
1051
|
agentCommits: sql2`(select coalesce(sum(commits), 0)::int from ${projectAgents})`,
|
|
1043
1052
|
technologies: sql2`(select count(*)::int from ${technologies})`,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
search
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JMXXTMGV.js";
|
|
4
4
|
import {
|
|
5
5
|
catalogFetch,
|
|
6
6
|
unreachable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3WPD5CHL.js";
|
|
8
8
|
import {
|
|
9
9
|
say
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KNPE4SJG.js";
|
|
11
11
|
import "./chunk-K27F6QDR.js";
|
|
12
12
|
|
|
13
13
|
// src/check-command.ts
|
|
@@ -504,7 +504,7 @@ var MESSAGES = {
|
|
|
504
504
|
"twin.consentDeniedHint": "grant it with panoma twin allow {source}",
|
|
505
505
|
"twin.consentNoReader": "no reader yet",
|
|
506
506
|
"twin.consentNoReaderHint": "this format cannot be read yet: the permission would open nothing",
|
|
507
|
-
"twin.sourcesTotal": "{n} source{s} on disk \xB7 {files}
|
|
507
|
+
"twin.sourcesTotal": "{n} source{s} on disk \xB7 {files} file{fs} \xB7 {size}",
|
|
508
508
|
"twin.sourcesAllowed": "{n} permitted \xB7 {files} file{fs} \xB7 {size} that panoma twin mine would actually open",
|
|
509
509
|
"twin.sourcesNoneAllowed": "None of them is permitted yet, so panoma twin mine would open nothing.",
|
|
510
510
|
"twin.sourcesNone": "There are no agent histories on this machine.",
|
|
@@ -661,7 +661,13 @@ var MESSAGES = {
|
|
|
661
661
|
"twin.saveRemapped": "{n} quote{s} that were already stored moved to another project: attribution is computed, and this pass resolved it better.",
|
|
662
662
|
"twin.saveRestated": "Observations that moved project along with their quotes: {n}. Look at them with panoma twin taste.",
|
|
663
663
|
"twin.corpusLeft": "You have {read} of {total} verdict{s} distilled from your history: {left} still unread,\n and every pass moves on to the ones that haven\u2019t been used yet.",
|
|
664
|
-
|
|
664
|
+
/*
|
|
665
|
+
A pair and not a gap: with one verdict the article, the noun and the verb all move at once
|
|
666
|
+
—«all 1 stored verdicts already back» — and a suffix reaches none of them. The web half of this
|
|
667
|
+
same sentence was split the same way on the same day.
|
|
668
|
+
*/
|
|
669
|
+
"twin.corpusDoneOne": "Your whole history has been distilled: the one stored verdict already backs a\n statement.",
|
|
670
|
+
"twin.corpusDoneMany": "Your whole history has been distilled: all {total} stored verdicts already back some\n statement.",
|
|
665
671
|
"twin.lookNeedsArgs": "The project is missing: panoma twin look <project> [screenshot.png]",
|
|
666
672
|
"twin.lookNoInbox": "This project has no inbox: {dir} isn\u2019t there.",
|
|
667
673
|
"twin.lookNoInboxHint": "panoma md init creates it and tells your agents to leave screenshots of what they\n build in it. The folder is git-ignored.",
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
entryCommand,
|
|
4
4
|
helpText,
|
|
5
5
|
todayCommand
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FJATGEPD.js";
|
|
7
7
|
import {
|
|
8
8
|
openCommand
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JMXXTMGV.js";
|
|
10
10
|
import {
|
|
11
11
|
catalogFetch,
|
|
12
12
|
cliEntry,
|
|
@@ -18,12 +18,12 @@ import {
|
|
|
18
18
|
panomaCommand,
|
|
19
19
|
unreachable,
|
|
20
20
|
upCommand
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-3WPD5CHL.js";
|
|
22
22
|
import {
|
|
23
23
|
plural,
|
|
24
24
|
riskText,
|
|
25
25
|
say
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-KNPE4SJG.js";
|
|
27
27
|
import {
|
|
28
28
|
HOOKS_BRAND,
|
|
29
29
|
MCP_FILE_MODE,
|
|
@@ -1025,11 +1025,11 @@ ${pc3.dim(say("error.seeHelp"))}
|
|
|
1025
1025
|
if (command === void 0) return conAviso(await entryCommand(parsed.api));
|
|
1026
1026
|
if (command === "today") return todayCommand(parsed.api);
|
|
1027
1027
|
if (command === "next") {
|
|
1028
|
-
const { nextCommand } = await import("./next-command-
|
|
1028
|
+
const { nextCommand } = await import("./next-command-OQWKUMAH.js");
|
|
1029
1029
|
return nextCommand(parsed.api, parsed.positionals.slice(1));
|
|
1030
1030
|
}
|
|
1031
1031
|
if (command === "north") {
|
|
1032
|
-
const { northCommand } = await import("./north-command-
|
|
1032
|
+
const { northCommand } = await import("./north-command-7AVYNCB4.js");
|
|
1033
1033
|
return northCommand(parsed);
|
|
1034
1034
|
}
|
|
1035
1035
|
if (command === "open") {
|
|
@@ -1049,7 +1049,7 @@ ${pc3.dim(say("error.seeHelp"))}
|
|
|
1049
1049
|
`));
|
|
1050
1050
|
return 1;
|
|
1051
1051
|
}
|
|
1052
|
-
const { checkCommand } = await import("./check-command-
|
|
1052
|
+
const { checkCommand } = await import("./check-command-64DBJGYM.js");
|
|
1053
1053
|
return checkCommand(parsed.api, query);
|
|
1054
1054
|
}
|
|
1055
1055
|
let escanear = command === "scan";
|
|
@@ -1077,14 +1077,14 @@ ${pc3.dim(say("error.seeHelp"))}
|
|
|
1077
1077
|
);
|
|
1078
1078
|
}
|
|
1079
1079
|
if (command === "ai") {
|
|
1080
|
-
const { aiCommand } = await import("./ai-command-
|
|
1080
|
+
const { aiCommand } = await import("./ai-command-U5V5SDJW.js");
|
|
1081
1081
|
return aiCommand(parsed);
|
|
1082
1082
|
}
|
|
1083
1083
|
if (command === "md") {
|
|
1084
1084
|
const target2 = resolve3(
|
|
1085
1085
|
expandTilde(parsed.positionals[2] ?? ".")
|
|
1086
1086
|
);
|
|
1087
|
-
const { mdCommand } = await import("./md-command-
|
|
1087
|
+
const { mdCommand } = await import("./md-command-73QAVNOP.js");
|
|
1088
1088
|
return mdCommand(parsed.positionals[1], target2, parsed.api);
|
|
1089
1089
|
}
|
|
1090
1090
|
if (command === "disk") return reportDisk(parsed.api);
|
|
@@ -1135,12 +1135,12 @@ ${pc3.dim(say("error.seeHelp"))}
|
|
|
1135
1135
|
return createAgentKey(parsed.api, name, parsed.install);
|
|
1136
1136
|
}
|
|
1137
1137
|
if (command === "twin") {
|
|
1138
|
-
const { twinCommand } = await import("./twin-command-
|
|
1138
|
+
const { twinCommand } = await import("./twin-command-WSVMZWGC.js");
|
|
1139
1139
|
return twinCommand(parsed);
|
|
1140
1140
|
}
|
|
1141
1141
|
if (command === "review") {
|
|
1142
1142
|
const target2 = resolve3(expandTilde(parsed.positionals[1] ?? "."));
|
|
1143
|
-
const { reviewCommand } = await import("./review-command-
|
|
1143
|
+
const { reviewCommand } = await import("./review-command-A6V3A5XG.js");
|
|
1144
1144
|
return reviewCommand(target2);
|
|
1145
1145
|
}
|
|
1146
1146
|
if (!escanear) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
reportUrl
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FJATGEPD.js";
|
|
4
4
|
import {
|
|
5
5
|
catalogFetch,
|
|
6
6
|
unreachable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3WPD5CHL.js";
|
|
8
8
|
import {
|
|
9
9
|
plural,
|
|
10
10
|
say
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KNPE4SJG.js";
|
|
12
12
|
import "./chunk-K27F6QDR.js";
|
|
13
13
|
|
|
14
14
|
// src/next-command.ts
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
reportUrl
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FJATGEPD.js";
|
|
4
4
|
import {
|
|
5
5
|
catalogFetch,
|
|
6
6
|
unreachable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3WPD5CHL.js";
|
|
8
8
|
import {
|
|
9
9
|
plural,
|
|
10
10
|
say
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KNPE4SJG.js";
|
|
12
12
|
import "./chunk-K27F6QDR.js";
|
|
13
13
|
|
|
14
14
|
// src/north-command.ts
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sinceMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FJATGEPD.js";
|
|
4
4
|
import {
|
|
5
5
|
catalogFetch,
|
|
6
6
|
unreachable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3WPD5CHL.js";
|
|
8
8
|
import {
|
|
9
9
|
plural,
|
|
10
10
|
say
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KNPE4SJG.js";
|
|
12
12
|
import "./chunk-K27F6QDR.js";
|
|
13
13
|
|
|
14
14
|
// src/twin-command.ts
|
|
@@ -65,6 +65,7 @@ async function sources() {
|
|
|
65
65
|
n: present.length,
|
|
66
66
|
s: plural(present.length),
|
|
67
67
|
files: present.reduce((total, source) => total + source.files, 0),
|
|
68
|
+
fs: plural(present.reduce((total, source) => total + source.files, 0)),
|
|
68
69
|
size: size(present.reduce((total, source) => total + source.bytes, 0))
|
|
69
70
|
})}`
|
|
70
71
|
);
|
|
@@ -698,7 +699,10 @@ function dryRunLines(estimate) {
|
|
|
698
699
|
function corpusLines(corpus) {
|
|
699
700
|
if (corpus === void 0 || corpus.total === 0) return [];
|
|
700
701
|
const left = Math.max(corpus.total - corpus.read, 0);
|
|
701
|
-
if (left === 0)
|
|
702
|
+
if (left === 0) {
|
|
703
|
+
const clave = corpus.total === 1 ? "twin.corpusDoneOne" : "twin.corpusDoneMany";
|
|
704
|
+
return [` ${pc.dim(say(clave, { total: corpus.total }))}`];
|
|
705
|
+
}
|
|
702
706
|
return [
|
|
703
707
|
` ${pc.dim(say("twin.corpusLeft", { read: corpus.read, total: corpus.total, s: plural(corpus.total), left }))}`
|
|
704
708
|
];
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "panoma",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "panoma",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.3",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.71.0",
|
|
12
12
|
"ignore": "^6.0.2",
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
exports.id=5656,exports.ids=[5656],exports.modules={4439:()=>{},9167:()=>{},40071:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(23055),e=c(73134),f=c(2701);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},50174:(a,b,c)=>{"use strict";c.d(b,{Cu:()=>h,G$:()=>n,KP:()=>g,Mi:()=>p,fn:()=>l,hN:()=>f,hT:()=>q,i2:()=>r,pO:()=>e});var d=c(76157);let e=[{name:"design",hint:"c\xf3mo se ve y se siente: composici\xf3n, color, tipograf\xeda, espacio, movimiento"},{name:"frontend",hint:"c\xf3mo se construye lo que se ve: componentes, estados, estilos, accesibilidad"},{name:"backend",hint:"el servidor y sus datos: rutas, consultas, esquema, errores, rendimiento"},{name:"cli",hint:"el terminal: comandos, salida, banderas, lo que imprime y lo que calla"},{name:"testing",hint:"c\xf3mo se comprueba: qu\xe9 se prueba, cu\xe1nto, contra qu\xe9, y qu\xe9 se deja fuera"},{name:"copy",hint:"las palabras: mensajes, documentaci\xf3n, nombres, tono, idioma"},{name:"workflow",hint:"c\xf3mo trabaja con sus agentes: encargos, revisiones, commits, ritmo"},{name:"tooling",hint:"las herramientas y la construcci\xf3n: dependencias, empaquetado, tipos, CI"},{name:"data",hint:"los datos y sus n\xfameros: m\xe9tricas, migraciones, formatos, privacidad"},{name:"other",hint:"el caj\xf3n. Solo si de verdad no encaja en ninguna"}],f=e.map(a=>a.name),g=480;function h(a,b={}){let c=b.skip,d=new Map;for(let b of a){if(c?.has(b.id))continue;let a=d.get(b.identity);a?a.push(b):d.set(b.identity,[b])}let e=[];for(let[a,b]of d){let c=function(a){let b=[],c=0;for(let d of a){if(b.length>=60)break;let a=d.quote.length+(d.context?.length??0);if(b.length>0&&c+a>24e3)break;b.push(d),c+=a}return b}([...b].sort(i));c.length>0&&e.push({identity:a,verdicts:c})}return e.sort((a,b)=>j(b)-j(a)||k(b)-k(a)||(a.identity<b.identity?-1:+(a.identity>b.identity))),function(a,b){let c=Math.min(b,g),d=[];for(let b of a){if(c<=0)break;let a=b.verdicts.slice(0,c);c-=a.length,d.push({identity:b.identity,verdicts:a})}return d}(e.slice(0,8),b.limit??g)}function i(a,b){let c=Number(b.signals.length>0)-Number(a.signals.length>0);if(0!==c)return c;let d=b.at.getTime()-a.at.getTime();return 0!==d?d:a.id<b.id?-1:+(a.id>b.id)}function j(a){return a.verdicts.filter(a=>a.signals.length>0).length}function k(a){return a.verdicts.reduce((a,b)=>Math.max(a,b.at.getTime()),0)}function l(a){let b=a.verdicts.map((a,b)=>({label:`c${b+1}`,verdict:a})),c=new Map(b.map(({label:a,verdict:b})=>[a,b])),f=(0,d.fj)(b.map(o).join("\n\n"),{origin:"journal",limit:4e4});return{chunk:a,system:m,prompt:["Abajo van citas literales de una persona reaccionando a lo que sus agentes de","programaci\xf3n le entregaron, todas del mismo proyecto. Van numeradas —[c1], [c2],","…— y cada una trae su fecha, las se\xf1ales que detect\xf3 el motor y, cuando la hab\xeda,","la entrega que la provoc\xf3.","",`Saca de dos a 8 observaciones sobre c\xf3mo le gusta a ESTA persona que`,"quede su trabajo, escritas HABL\xc1NDOLE A ELLA: \xabquieres X\xbb, \xabno soportas Y\xbb.","","Reglas. Las dos primeras son eliminatorias:",`- Cada observaci\xf3n cita al menos 2 etiquetas de las de arriba, con su`," nombre exacto. Lo que no puedas sostener con dos citas no lo escribas: aqu\xed sobra"," una observaci\xf3n de menos y no sobra ninguna de m\xe1s.","- Una observaci\xf3n que ser\xeda verdad de cualquier programador no vale para nada."," \xabPrefiere el c\xf3digo limpio\xbb no dice nada de nadie. Si al leerla no se distingue a"," esta persona de la de al lado, t\xedrala.","- Una funcionalidad no es un gusto. \xabQuieres que la aplicaci\xf3n funcione como una"," bandeja de audio para escuchar publicaciones mientras trabajas\xbb describe qu\xe9 hace ESE"," producto, no c\xf3mo le gusta a esta persona que quede su trabajo. De una petici\xf3n de"," funcionalidad s\xed puedes sacar el gusto que lleve dentro —\xabque se vea limpio\xbb, \xabque no"," cargue la pantalla\xbb—; la funcionalidad en s\xed, no.","- Habla de sus preferencias, no de buenas pr\xe1cticas: \xabquieres X\xbb, nunca \xabconviene X\xbb.","- Segunda persona siempre. Nada de \xab\xe9l\xbb, \xabella\xbb ni \xabesta persona\xbb dentro de la"," observaci\xf3n: quien va a leer esto es ella misma, en su propio retrato, y adem\xe1s no"," sabes qui\xe9n es. En tercera persona el modelo acaba eligiendo un g\xe9nero por su"," cuenta, y en la misma tanda salieron \xabHe wants\xbb y \xabShe wants\xbb de la misma persona.","- El material est\xe1 escrito deprisa y sin acentos (\xabno me gusto\xbb, \xabquitalo\xbb, \xabasi\xbb)."," Eso es c\xf3mo escribe, no lo que prefiere: ninguna observaci\xf3n sobre su ortograf\xeda ni"," sobre su forma de pedir las cosas.",`- Una sola frase por observaci\xf3n, de 200 caracteres como mucho.`,"- Escribe cada observaci\xf3n en el mismo idioma en el que est\xe1 escrita la cita que la"," sostiene. No traduzcas: esas palabras las escribi\xf3 ella.","- No repitas la cita dentro de la observaci\xf3n; para eso van las citas aparte.",'- No pongas las etiquetas dentro de la frase. Van solo en "citations".',"","Repetir una idea que ya sali\xf3 en otra tanda no es un problema: esto es material, no","un resumen. Lo que se repite es justo lo que despu\xe9s se va a poder afirmar.","","Y cada observaci\xf3n dice DE QU\xc9 VA, con una sola de estas materias:",...e.map(a=>`- ${a.name}: ${a.hint}.`),"","Si de verdad no encaja en ninguna, puedes escribir una materia nueva: una sola palabra","en min\xfasculas y en ingl\xe9s. Hazlo solo cuando la observaci\xf3n quede claramente peor en","\xabother\xbb; una materia nueva por observaci\xf3n no es una clasificaci\xf3n.","","Contesta con un array JSON y nada m\xe1s: sin vallas de c\xf3digo, sin explicaci\xf3n delante","ni detr\xe1s.",`[{"topic":"design","statement":"…","citations":["c3","c17"]}]`,"","Si el material no da para ninguna observaci\xf3n, contesta []. Es una respuesta correcta","y es mejor que una frase que no puedas sostener.","",f].join("\n"),labels:c}}let m="Eres un lector de las palabras de una sola persona. No eres un consultor de dise\xf1o ni un manual de estilo: tu \xfanico material son frases que esa persona escribi\xf3 a sus agentes de programaci\xf3n mientras trabajaba, y tu \xfanico trabajo es decir qu\xe9 se repite en ellas. Llano, concreto y sin adornos, y en el idioma en el que ella escribe.";function n(a,b){let c=`[${b}]\\d+`,d=RegExp(`(?:\\s*[:—–(-]\\s*)?\\(?\\b${c}\\b(?:[\\s,;]+(?:y|and)?[\\s]*\\b${c}\\b)*\\)?\\s*\\.?\\s*$`,"i").exec(a);if(null===d)return a;let e=d[0];if(!((e.match(RegExp(`\\b${c}\\b`,"gi"))??[]).length>1||/^[\s]*[:—–(-]/.test(e)))return a;let f=a.slice(0,d.index).trim().replace(/[:,;—–-]+$/,"").trim();return""===f?a:f}function o({label:a,verdict:b}){let c=b.signals.length>0?` \xb7 ${b.signals.join(", ")}`:"",d=`[${a}] ${b.at.toISOString().slice(0,10)}${c}`,e=b.context?`
|
|
2
|
-
le hab\xedan entregado: ${b.context}`:"";return`${d}${e}
|
|
3
|
-
dijo: ${b.quote}`}function p(a){return a.reduce((a,b)=>a+(0,d.bP)(b.system)+(0,d.bP)(b.prompt),0)}function q(a,b){let c=function(a){let b=(function(a){let b=/```(?:[a-zA-Z]+)?\n([\s\S]*?)```/.exec(a);return b?.[1]??a})(a).trim();try{let a=JSON.parse(b);return Array.isArray(a)?a:void 0}catch{}for(let a=b.indexOf("[");-1!==a;a=b.indexOf("[",a+1)){let c=function(a,b){let c=0,d=!1;for(let e=b;e<a.length;e+=1){let f=a[e];if(d){"\\"===f?e+=1:'"'===f&&(d=!1);continue}if('"'===f)d=!0;else if("["===f)c+=1;else if("]"===f&&0==(c-=1))try{let c=JSON.parse(a.slice(b,e+1));return Array.isArray(c)?c:void 0}catch{break}}}(b,a);if(void 0!==c)return c}}(a);if(void 0===c||c.length>0&&!c.some(t))return{observations:[],dropped:0,unreadable:!0};let d=[],e=0;for(let a of c){let c=function(a,b){if(!t(a))return;let c=s(a.statement)?.replace(/\s+/g," ").trim(),d=void 0===c?void 0:n(c,"c");if(!d||d.length>200)return;let e=function(a){let b=s(a)?.trim().toLowerCase().replace(/[.:]+$/,"")??"";return f.includes(b)?{topic:b,minted:!1}:/^[a-z][a-z0-9-]{0,23}$/.test(b)?{topic:b,minted:!0}:{topic:"other",minted:!1}}(a.topic),g=a.citations;if(!Array.isArray(g))return;let h=new Set;for(let a of g)if("string"==typeof a)for(let c of a.toLowerCase().matchAll(/\bc\d+\b/g)){let a=b.get(c[0]);a&&h.add(a.id)}if(!(h.size<2))return{...e,statement:d,citations:[...h]}}(a,b);if(void 0===c||d.length>=8){e+=1;continue}d.push(c)}return{observations:d,dropped:e,unreadable:!1}}function r(a,b){if(null==a||""===a)return{kind:"unset"};let c="string"==typeof a?Number(a.trim()):a;return"number"!=typeof c||!Number.isInteger(c)||c<1||c>b?{kind:"bad",value:"string"==typeof a?a:String(a)}:{kind:"limit",limit:c}}function s(a){return"string"==typeof a&&a.length>0?a:void 0}function t(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}},83838:(a,b,c)=>{"use strict";c.d(b,{U:()=>h,N:()=>f});var d=c(83677);let e=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]);function f(a){let b=(0,d.dT)(a),c=a.headers.get("sec-fetch-site");if(c&&"same-origin"!==c&&"none"!==c)return g(b,(0,d.t)(b,"guard.otherSite",{site:c}));let e=a.headers.get("origin"),f=a.headers.get("host");if(e&&f&&function(a){try{return new URL(a).host}catch{return null}}(e)!==f)return g(b,(0,d.t)(b,"guard.otherOrigin",{origin:e}))}function g(a,b){return Response.json({error:(0,d.t)(a,"guard.rejected",{detail:b}),hint:(0,d.t)(a,"guard.rejectedHint")},{status:403})}function h(a){let b=(process.env.PANOMA_OPERATOR_KEY??"").trim();if(!b){if(!function(){if((process.env.PANOMA_ACCESS_KEY??"").trim())return!0;let a=(process.env.PANOMA_HOST??"").trim().replace(/:\d+$/,"").toLowerCase();return!!a&&("0.0.0.0"===a||"::"===a||"[::]"===a||!e.has(a))}())return;return i(a)}let c=function(a){let b=a.headers.get("x-panoma-operator");if(b)return b;for(let b of(a.headers.get("cookie")??"").split(";")){let a=b.indexOf("=");if(-1!==a&&"panoma-operator"===b.slice(0,a).trim())try{return decodeURIComponent(b.slice(a+1).trim())}catch{return b.slice(a+1).trim()}}return""}(a);if(!(c&&function(a,b){if(a.length!==b.length)return!1;let c=0;for(let d=0;d<a.length;d++)c|=a.charCodeAt(d)^b.charCodeAt(d);return 0===c}(c,b)))return i(a)}function i(a){let b=(0,d.dT)(a);return Response.json({error:(0,d.t)(b,"guard.localOperatorOnly"),hint:(0,d.t)(b,"guard.localOperatorOnlyHint")},{status:403})}},99446:(a,b,c)=>{"use strict";a.exports=c(44870)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4517],{179:(e,t,o)=>{o.d(t,{I18nProvider:()=>i,Y:()=>s,k:()=>d});var n=o(9763),r=o(4963),a=o(7911);let c=(0,r.createContext)("en");function i(e){let{locale:t,children:o}=e;return(0,n.jsx)(c.Provider,{value:t,children:o})}function s(){return(0,r.useContext)(c)}function d(){let e=(0,r.useContext)(c);return(0,r.useCallback)((t,o)=>(0,a.t)(e,t,o),[e])}},2574:(e,t,o)=>{o.d(t,{L:()=>a});var n=o(3570),r=o(8466);let a={cursor:n.biF,code:r.$$9,windsurf:n.b4F,subl:n.xL5,webstorm:n.Ewh,idea:n.PHd,zed:n.eDb,"claude-cli":n.phd,"codex-cli":r.vxT,"gemini-cli":n.zR6,"cursor-agent":n.biF,"copilot-cli":n.QWU,opencode:n.u4l,"claude-app":n.phd,"chatgpt-app":r.vxT}},4204:(e,t,o)=>{o.d(t,{rA:()=>h,lZ:()=>l,hV:()=>d,z3:()=>s.z,Pp:()=>c,KW:()=>i});var n=o(9763),r=o(5595),a=o(7911);function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es";if(!e)return"—";let o=Math.floor((Date.now()-new Date(e).getTime())/864e5);if("en"===t){if(o<=0)return"today";if(1===o)return"yesterday";if(o<30)return"".concat(o," d ago");if(o<365){let e=Math.floor(o/30);return"".concat(e," month").concat(1===e?"":"s"," ago")}let e=Math.floor(o/365);return"".concat(e," year").concat(1===e?"":"s"," ago")}if(o<=0)return"hoy";if(1===o)return"ayer";if(o<30)return"hace ".concat(o," d");if(o<365){let e=Math.floor(o/30);return"hace ".concat(e," ").concat(1===e?"mes":"meses")}let n=Math.floor(o/365);return"hace ".concat(n," a\xf1o").concat(1===n?"":"s")}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"es",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),n=o-new Date(e).getTime();if(!Number.isFinite(n))return"—";let r="en"===t;if(n<6e4)return r?"just now":"ahora mismo";if(n<36e5){let e=Math.floor(n/6e4);return r?"".concat(e," min ago"):"hace ".concat(e," min")}if(n<1728e5){let e=Math.floor(n/36e5);return r?"".concat(e," h ago"):"hace ".concat(e," h")}return c(e,t)}var s=o(7642);function d(e){let{name:t,src:o,size:c=56,tone:i="brand",locale:s}=e,d="panoma"===t.toLowerCase(),l="demo-runner"===t.toLowerCase()?"/assets/projects/demo-runner.png":null,u=d?"/assets/brand/panoma.svg":null!=o?o:l;return u?(0,n.jsx)("img",{src:u,loading:"lazy",alt:(0,a.t)(s,"common.iconOf",{name:t}),width:c,height:c,className:"shrink-0 rounded-[22%] border border-edge object-cover shadow-sm",style:{width:c,height:c}}):(0,n.jsx)("span",{"aria-hidden":!0,className:"flex shrink-0 items-center justify-center rounded-[22%] border border-edge ".concat("neutral"===i?"project-icon--neutral":"bg-raised text-accent"),style:{width:c,height:c},children:(0,n.jsx)(r.KQe,{style:{width:.46*c,height:.46*c}})})}function l(e){let{text:t,as:o="p",className:r}=e;return(0,n.jsx)(o,{role:"alert",className:"font-mono text-[11px] text-fail".concat(r?" ".concat(r):""),children:t})}let u={raised:"rounded border border-edge bg-raised px-3 py-1.5 font-mono text-[11px] text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",surface:"rounded border border-edge bg-surface px-3 py-1.5 font-mono text-xs text-smoke transition-colors hover:border-accent hover:text-accent disabled:opacity-50",plain:"rounded border border-edge px-2.5 py-1 font-mono text-xs text-smoke transition-colors hover:border-chalk disabled:opacity-50",accent:"rounded border border-accent bg-accent px-3 py-1.5 font-mono text-xs text-white transition-opacity hover:opacity-85 disabled:opacity-50"};function h(e){let{tone:t,busy:o=!1,busyLabel:r,disabled:a,className:c,children:i,...s}=e;return(0,n.jsx)("button",{...s,disabled:null!=a?a:o,className:"".concat(u[t]).concat(c?" ".concat(c):""),children:o&&void 0!==r?r:i})}},7642:(e,t,o)=>{o.d(t,{z:()=>n});function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):e<0x40000000?"".concat((e/1048576).toFixed(1)," MB"):"".concat((e/0x40000000).toFixed(1)," GB")}},8384:(e,t,o)=>{let n;o.d(t,{R:()=>s,b:()=>c});var r=o(4963);let a={remote:!1,editor:null,editors:[],apps:[],agents:[]};function c(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],[t,o]=(0,r.useState)(a);return(0,r.useEffect)(()=>{if(!e)return;null!=n||(n=fetch("/api/open").then(e=>e.json()).catch(()=>a));let t=!0;return n.then(e=>{t&&o(e)}),()=>{t=!1}},[e]),t}let i={cursor:"cursor",code:"vscode",windsurf:"windsurf",zed:"zed"};function s(e,t,o,n){let r=i[null!=e?e:"code"];if(!r)return null;let a=encodeURI("".concat(t.replace(/\/$/,""),"/").concat(o)).replace(/#/g,"%23").replace(/\?/g,"%3F");return"".concat(r,"://file").concat(a.startsWith("/")?"":"/").concat(a,":").concat(n)}},9733:(e,t,o)=>{o.d(t,{B:()=>n});async function n(e,t,o,n){let r,a;try{r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch(e){return{ok:!1,message:o}}try{a=await r.json()}catch(e){return{ok:!1,message:String(r.status)}}return r.ok&&(null==a?void 0:a.ok)?{ok:!0,data:a}:{ok:!1,message:(null==n?void 0:n(null!=a?a:{}))||(null==a?void 0:a.error)||String(r.status)}}}}]);
|