@piagent/platform 1.43.6 → 1.43.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/docs/command-reference-vietnamese.md +2 -2
  3. package/docs/distribution-standard.md +6 -6
  4. package/docs/operator-manual-vietnamese.md +7 -7
  5. package/docs/publishing-for-teams.md +3 -0
  6. package/docs/release-install-policy.md +2 -2
  7. package/docs/team-onboarding.md +2 -2
  8. package/docs-site/architecture.html +1 -1
  9. package/docs-site/assets/search-en.json +1 -1
  10. package/docs-site/assets/search-vi.json +1 -1
  11. package/docs-site/benchmark.html +1 -1
  12. package/docs-site/commands.html +1 -1
  13. package/docs-site/context-engine.html +1 -1
  14. package/docs-site/ecosystem.html +1 -1
  15. package/docs-site/en/architecture.html +1 -1
  16. package/docs-site/en/benchmark.html +1 -1
  17. package/docs-site/en/commands.html +1 -1
  18. package/docs-site/en/context-engine.html +1 -1
  19. package/docs-site/en/ecosystem.html +1 -1
  20. package/docs-site/en/index.html +9 -9
  21. package/docs-site/en/mcp-approval.html +1 -1
  22. package/docs-site/en/mcp-auth.html +1 -1
  23. package/docs-site/en/mcp-servers.html +1 -1
  24. package/docs-site/en/mcp.html +1 -1
  25. package/docs-site/en/permissions.html +1 -1
  26. package/docs-site/en/profiles.html +1 -1
  27. package/docs-site/en/quickstart.html +1 -1
  28. package/docs-site/en/runtime.html +1 -1
  29. package/docs-site/en/scope.html +1 -1
  30. package/docs-site/en/security.html +1 -1
  31. package/docs-site/en/team.html +1 -1
  32. package/docs-site/en/update.html +3 -3
  33. package/docs-site/en/whats-new.html +77 -39
  34. package/docs-site/en/windows.html +1 -1
  35. package/docs-site/en/workflows.html +1 -1
  36. package/docs-site/index.html +9 -9
  37. package/docs-site/mcp-approval.html +1 -1
  38. package/docs-site/mcp-auth.html +1 -1
  39. package/docs-site/mcp-servers.html +1 -1
  40. package/docs-site/mcp.html +1 -1
  41. package/docs-site/permissions.html +1 -1
  42. package/docs-site/profiles.html +1 -1
  43. package/docs-site/quickstart.html +1 -1
  44. package/docs-site/releases.json +123 -0
  45. package/docs-site/runtime.html +1 -1
  46. package/docs-site/scope.html +1 -1
  47. package/docs-site/security.html +1 -1
  48. package/docs-site/team.html +1 -1
  49. package/docs-site/update.html +3 -3
  50. package/docs-site/whats-new.html +77 -39
  51. package/docs-site/windows.html +1 -1
  52. package/docs-site/workflows.html +1 -1
  53. package/evals/fixtures/piagent-webui/workspace-media-v1.invalid.json +18 -0
  54. package/evals/fixtures/piagent-webui/workspace-media-v1.valid.json +18 -0
  55. package/evals/private-holdout-v1/public-exposure.v2.json +2 -2
  56. package/package.json +1 -1
  57. package/packages/piagent-core/extensions/workspace-inspection.ts +15 -0
  58. package/packages/piagent-core/managed/agent-skills.mjs +2 -2
  59. package/packages/piagent-core/managed/boundary-queue.mjs +1 -1
  60. package/packages/piagent-core/managed/dist/workspace/manifest.json +1 -1
  61. package/packages/piagent-core/managed/dist/workspace/worker.mjs +43 -1
  62. package/packages/piagent-core/managed/language-environment.mjs +6 -1
  63. package/packages/piagent-core/managed/session.mjs +1 -1
  64. package/packages/piagent-core/managed/workflow.mjs +19 -4
  65. package/packages/piagent-core/package.json +1 -1
  66. package/packages/piagent-core/runtime/inspection/workspace-worker.ts +3 -3
  67. package/packages/piagent-core/runtime/registration/agent-resources.ts +3 -2
  68. package/packages/piagent-core/runtime/resources/agent-resources.d.mts +3 -2
  69. package/packages/piagent-core/runtime/resources/agent-resources.mjs +17 -10
  70. package/packages/piagent-core/runtime/resources/plugin-skills.mjs +127 -0
  71. package/packages/piagent-core/runtime/session/system-prompt.ts +2 -1
  72. package/packages/piagent-webui/dist/client/assets/{ActivityPanel-CBbfhN-m.js → ActivityPanel-DxQ3_dyT.js} +1 -1
  73. package/packages/piagent-webui/dist/client/assets/App-DcaqK-_s.js +5 -0
  74. package/packages/piagent-webui/dist/client/assets/GatewayApp-5DVdNIyr.js +97 -0
  75. package/packages/piagent-webui/dist/client/assets/{InspectionApp-B5eKxLEs.js → InspectionApp-CBPHxuqj.js} +1 -1
  76. package/packages/piagent-webui/dist/client/assets/{LineReview-DZ9ez8kO.js → LineReview-C_0ZpgCH.js} +1 -1
  77. package/packages/piagent-webui/dist/client/assets/MarkdownMessage-DGt5B-6D.js +29 -0
  78. package/packages/piagent-webui/dist/client/assets/{SessionAgentWorkspace-N79svKS3.js → SessionAgentWorkspace-DmD9Qt4f.js} +1 -1
  79. package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-CK5ujmH3.js +2 -0
  80. package/packages/piagent-webui/dist/client/assets/SettingsNavigation-BnorH-l_.js +3 -0
  81. package/packages/piagent-webui/dist/client/assets/SettingsPage-Dda8GW2a.js +1 -0
  82. package/packages/piagent-webui/dist/client/assets/{TerminalPanel-CiDM7fY8.js → TerminalPanel-X2389XHl.js} +2 -2
  83. package/packages/piagent-webui/dist/client/assets/{TerminalView-CR4TO5f1.js → TerminalView-yaIg6RCs.js} +3 -3
  84. package/packages/piagent-webui/dist/client/assets/{WorkspaceCodeEditor-B5KeO5jf.js → WorkspaceCodeEditor-Dt3dS_QG.js} +1 -1
  85. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-CBHwY4BN.js +5 -0
  86. package/packages/piagent-webui/dist/client/assets/{WorkspaceQuickOpen-vQ5DqfJl.js → WorkspaceQuickOpen-CJmMBmK8.js} +1 -1
  87. package/packages/piagent-webui/dist/client/assets/index-BMQo9OEq.js +37 -0
  88. package/packages/piagent-webui/dist/client/assets/{tab-close-DHDqCxTL.js → tab-close-ITV4Cf4X.js} +1 -1
  89. package/packages/piagent-webui/dist/client/assets/{transcript-view-model-BCyNr6KF.js → transcript-view-model-Bq0nkxyu.js} +1 -1
  90. package/packages/piagent-webui/dist/client/assets/{ui-preferences-Dy4qeODT.js → ui-preferences-0waeSO-S.js} +1 -1
  91. package/packages/piagent-webui/dist/client/assets/{vendor-CA5pzJiI.js → vendor-CSDKB7mU.js} +1 -1
  92. package/packages/piagent-webui/dist/client/assets/workspace-api-D8sJkiZB.js +1 -0
  93. package/packages/piagent-webui/dist/client/assets/workspace-navigation-DkVobhwg.js +1 -0
  94. package/packages/piagent-webui/dist/client/index.html +3 -3
  95. package/packages/piagent-webui/gateway/native-project-picker.ts +40 -14
  96. package/packages/piagent-webui/server/workspace-read-routes.ts +3 -3
  97. package/packages/piagent-webui/server/workspace-reader.ts +2 -2
  98. package/schemas/piagent-webui/catalog-v1.json +9 -0
  99. package/schemas/piagent-webui/workspace-media-v1.schema.json +63 -0
  100. package/packages/piagent-webui/dist/client/assets/App-C633xHZS.js +0 -5
  101. package/packages/piagent-webui/dist/client/assets/GatewayApp-cQ6cd7fw.js +0 -97
  102. package/packages/piagent-webui/dist/client/assets/MarkdownMessage-D7bbIWJe.js +0 -29
  103. package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-mZqwulvp.js +0 -2
  104. package/packages/piagent-webui/dist/client/assets/SettingsNavigation-DzboWgoR.js +0 -3
  105. package/packages/piagent-webui/dist/client/assets/SettingsPage-DX2QIvRC.js +0 -1
  106. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-C5M5c2uW.js +0 -5
  107. package/packages/piagent-webui/dist/client/assets/index-CrpbZF1r.js +0 -37
  108. package/packages/piagent-webui/dist/client/assets/workspace-api-O7auv_td.js +0 -1
  109. package/packages/piagent-webui/dist/client/assets/workspace-navigation-C8GtShbg.js +0 -1
@@ -1,3 +1,3 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Dn as t,In as n}from"./vendor-CA5pzJiI.js";import{i as r,n as i}from"./ui-preferences-Dy4qeODT.js";import{M as a,d as o,s}from"./api-BQS4Dtrr.js";import{r as c}from"./view-model-CWNiS4JN.js";function l(e){return Array.isArray(e)?`[${e.map(l).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${l(t)}`).join(`,`)}}`:JSON.stringify(e)}async function u(e){let t=new TextEncoder().encode(typeof e==`string`?e:l(e)),n=await crypto.subtle.digest(`SHA-256`,t);return`sha256:${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}async function d(e,t,n,r){let i=new Date,a=new Date(i.getTime()+3e5),o=r?.attachmentRefs??[],s={messageRequestId:r?.messageRequestId??`message-request.${crypto.randomUUID()}`,capabilityAction:n===`steer`?`interruptAndSend`:n===`hold`?`hold`:`send`,delivery:n,text:t,attachmentRefs:o,contentDigest:await u({attachmentRefs:o,text:t})},c={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},l={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:i.toISOString(),expiresAt:a.toISOString(),capabilityScope:`control.chat`,action:`chat.send`,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:c,payload:s};return l.actionDigest=await u({action:l.action,identity:l.identity,expectedRevisions:c,payload:s}),l}async function ee(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5);return{schemaVersion:1,version:`piagent-webui-attachment-v1`,messageType:`stage-command`,commandId:`attachment-command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),identity:{...structuredClone(e.identity),toolCallId:null},expectedRuntimeRevision:e.revision.runtimeRevision,messageRequestId:t,file:n}}function f(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5);return{schemaVersion:1,version:`piagent-webui-attachment-v1`,messageType:`discard-command`,commandId:`attachment-command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),identity:{...structuredClone(e.identity),toolCallId:null},expectedRuntimeRevision:e.revision.runtimeRevision,messageRequestId:t,attachmentRef:n}}async function p(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},o={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.chat`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:a,payload:n};return o.actionDigest=await u({action:t,identity:o.identity,expectedRevisions:a,payload:n}),o}async function te(e,t){let n=[];return{queueItemRef:e,text:t,attachmentRefs:n,contentDigest:await u({attachmentRefs:n,text:t})}}async function ne(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},o=t===`session-options.set-model`?{modelRef:n,effectScopeAcknowledged:`session-and-user-default`}:{thinkingLevel:n,effectScopeAcknowledged:`session-and-user-default`},s={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.sessionOptions`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:a,payload:o};return s.actionDigest=await u({action:t,identity:s.identity,expectedRevisions:a,payload:o}),s}async function m(e,t){let n=new Date,r=new Date(n.getTime()+3e5),i={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},a=t===`lifecycle.stop`?{requestedScope:`current-agent-operation`}:t===`lifecycle.pause`?{safePointPolicy:`after-current-atomic-unit`}:{},o={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:n.toISOString(),expiresAt:r.toISOString(),capabilityScope:`control.lifecycle`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:i,payload:a};return o.actionDigest=await u({action:t,identity:o.identity,expectedRevisions:i,payload:a}),o}async function h(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a=n?.attachmentRefs??[],o={messageRequestId:n?.messageRequestId??`message-request.${crypto.randomUUID()}`,capabilityAction:`send`,delivery:`new-operation`,text:t,attachmentRefs:a,contentDigest:await u({attachmentRefs:a,text:t})},s={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},c={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.resumeAndContinue`,action:`lifecycle.resume-and-continue`,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:s,payload:o};return c.actionDigest=await u({action:c.action,identity:c.identity,expectedRevisions:s,payload:o}),c}var g=24;function _(e,t,n){for(e.delete(t),e.set(t,n);e.size>g;)e.delete(e.keys().next().value);return n}function v(e,t){return`data:${e};base64,${t}`}var y=new Map;function re(e,t,n){_(y,e,v(t,n))}function b(e){return y.get(e)??null}var x=new Map,S=new Map;function C(e){return x.get(e)??null}function w(e,t){let n=x.get(e);if(n)return Promise.resolve(n);let r=S.get(e);return r||(r=t().then(t=>_(x,e,v(t.mimeType,t.dataBase64))).catch(()=>null).finally(()=>S.delete(e)),S.set(e,r)),r}function T(e,t,n){return e===`vi`?t:n}var E={txt:`text/plain`,text:`text/plain`,md:`text/markdown`,markdown:`text/markdown`,csv:`text/csv`,tsv:`text/tab-separated-values`,json:`application/json`,yaml:`application/yaml`,yml:`application/yaml`,pdf:`application/pdf`,docx:`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,xlsx:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,xlsm:`application/vnd.ms-excel.sheet.macroenabled.12`,pptx:`application/vnd.openxmlformats-officedocument.presentationml.presentation`,odt:`application/vnd.oasis.opendocument.text`,ods:`application/vnd.oasis.opendocument.spreadsheet`,odp:`application/vnd.oasis.opendocument.presentation`,rtf:`application/rtf`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,bmp:`image/bmp`},ie={xls:`sheet`,numbers:`sheet`,ppt:`slides`,key:`slides`,doc:`word`,pages:`word`,...Object.fromEntries(`zip.gz.tgz.bz2.xz.rar.7z.tar.jar.war.exe.dmg.pkg.msi.deb.rpm.apk.ipa.bin.so.dylib.dll.o.a.lib.class.pyc.wasm.node.iso.img.sqlite.sqlite3.db.mdb.mp3.mp4.m4a.m4v.mov.avi.mkv.wav.flac.ogg.webm.aac.woff.woff2.ttf.otf.eot.ico.icns.heic.heif.tif.tiff.psd.ai.sketch.fig.xd.avif.raw.cr2.nef.dng.blend.fbx.glb`.split(`.`).map(e=>[e,`binary`]))};function D(e){let t=e.lastIndexOf(`.`),n=t>0||t===0&&e.length>1?e.slice(t+1).toLowerCase():``,r=E[n];if(r)return{mime:r};let i=ie[n];return i?{refused:i}:{mime:`text/plain`}}var O=new Set([`application/pdf`,...Object.entries(E).filter(([e])=>[`docx`,`xlsx`,`xlsm`,`pptx`,`odt`,`ods`,`odp`,`rtf`].includes(e)).map(([,e])=>e)]);function ae(e){return T(e,`Code, văn bản, .pdf .docx .xlsx .pptx .odt .ods .odp .rtf và ảnh`,`Code, text, .pdf .docx .xlsx .pptx .odt .ods .odp .rtf and images`)}function k(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MiB`:`${(e/1024).toFixed(+(e<10240))} KiB`}function oe(e,t){let n=e.truncated?` · ${T(t,`đã cắt bớt`,`truncated`)}`:``;return e.kind===`image`?`${T(t,`Ảnh`,`Image`)} · ${k(e.sizeBytes)}`:e.kind===`document`?`${T(t,`Tài liệu`,`Document`)} · ${k(e.sourceBytes)} → ${k(e.sizeBytes)} ${T(t,`văn bản`,`text`)}${n}`:`File · ${k(e.sizeBytes)}${n}`}function se(e){return e.has(`text/plain`)?``:[...e,...Object.entries(E).filter(([,t])=>e.has(t)).map(([e])=>`.${e}`)].join(`,`)}function A(e){return!!(e&&[...e.types].includes(`Files`))}function j(e,t){switch(e){case`sheet`:return T(t,`định dạng bảng tính này chưa đọc trực tiếp được; hãy lưu sang .xlsx hoặc .csv rồi đính kèm.`,`this spreadsheet format cannot be read directly; save it as .xlsx or .csv and attach that.`);case`slides`:return T(t,`định dạng trình chiếu này chưa đọc trực tiếp được; hãy lưu sang .pptx hoặc .pdf rồi đính kèm.`,`this slide format cannot be read directly; save it as .pptx or .pdf and attach that.`);case`word`:return T(t,`định dạng này chưa đọc được; hãy lưu sang .docx, .pdf, .rtf hoặc .txt.`,`this format cannot be read; save it as .docx, .pdf, .rtf or .txt.`);default:return T(t,`file nhị phân không gửi vào chat được; hãy để file trong project để agent tự đọc bằng tool.`,`binary files cannot go into the chat; keep it in the project and the agent can use its tools on it.`)}}async function M(e){let{snapshot:t,locale:n}=e,r=[...e.existing],i=null,a=Math.max(0,4-r.length);e.files.length>a&&(i=T(n,`Chỉ nhận tối đa 4 file mỗi tin nhắn; đã bỏ qua ${e.files.length-a} file.`,`At most 4 files per message; ${e.files.length-a} skipped.`));for(let o of[...e.files].slice(0,a)){let a=D(o.name);if(`refused`in a){i=`${o.name}: ${j(a.refused,n)}`;continue}let s=a.mime;if(!e.allowed.has(s)){i=`${o.name}: ${s===`application/pdf`?T(n,`host chưa cài pdftotext (poppler) nên chưa đọc được .pdf.`,`this host has no pdftotext (poppler), so .pdf cannot be read.`):T(n,`phiên Pi hiện tại không nhận loại file này.`,`the current Pi session does not accept this file type.`)}`;continue}let l=s.startsWith(`image/`)||O.has(s)?Math.min(t.capabilities.limits.maxAttachmentFileBytes,8388608):262144;if(o.size<1||o.size>l||r.reduce((e,t)=>e+t.sourceBytes,0)+o.size>t.capabilities.limits.maxAttachmentTotalBytes){i=`${o.name}: ${O.has(s)?T(n,`vượt giới hạn gửi trực tiếp ${k(l)}. Hãy đặt tài liệu lớn trong project rồi mở ở mục Tài liệu; Pi sẽ đọc theo phần thay vì nhét cả file vào chat.`,`exceeds the ${k(l)} direct-send limit. Put a large document in the project and open Documents; Pi can read it in parts instead of placing the whole file in chat.`):T(n,`vượt giới hạn đính kèm (tối đa ${k(l)}).`,`attachment limit exceeded (max ${k(l)}).`)}`;continue}let u=new Uint8Array(await o.arrayBuffer()),d=``;for(let e=0;e<u.length;e+=32768)d+=String.fromCharCode(...u.subarray(e,e+32768));let f=btoa(d),p=await e.stage(await ee(t,e.messageRequestId,{displayName:o.name,declaredMimeType:s,dataBase64:f}));if(p.resultCode!==`staged`||!(`attachment`in p)||!p.attachment){i=`${o.name}: ${c(p.error?.code??p.resultCode,n)}`;continue}p.attachment.kind===`image`&&re(p.attachment.attachmentRef,p.attachment.mimeType,f),r=[...r,p.attachment]}return{attachments:r,status:i}}async function N(e){let t=await e.stage(f(e.snapshot,e.messageRequestId,e.attachmentRef));return t.messageType===`discard-receipt`&&t.resultCode===`discarded`?{discarded:!0,status:null}:{discarded:!1,status:`${T(e.locale,`Chưa thể bỏ file`,`Unable to remove file`)} · ${c(t.error?.code??t.resultCode,e.locale)}`}}var P=e(n(),1),F=(e,t,n)=>e===`vi`?t:n,I={"workspace-patch":[`Sửa trong project`,`Change in the project`],"external-provider-action":[`Tác động ra bên ngoài`,`Reaches outside this machine`]},L={"one-shell-command":[`Đúng một lệnh`,`This one command`],"network-command-once":[`Đúng một lệnh, có mạng`,`This one command, with network`],"docker-command-once":[`Đúng một lệnh, có mạng và Docker`,`This one command, with network and Docker`],"host-command-once":[`Đúng một lệnh, chạy trên máy bạn (ngoài sandbox)`,`This one command, on your machine (outside the sandbox)`],"start-docker-once":[`Mở Docker trên máy`,`Start Docker on this machine`],"one-external-action":[`Đúng một hành động`,`This one action`]},R={"Run this exact command once, after the guard checks the working tree again.":[`Chạy đúng lệnh này một lần, sau khi guard kiểm tra lại thư mục làm việc.`,``],"The command does not run; the agent is told you declined.":[`Lệnh không chạy; agent được báo là bạn đã từ chối.`,``],"Run this exact action once, after the guard checks its authority again.":[`Thực hiện đúng hành động này một lần, sau khi guard kiểm tra lại quyền.`,``],"The action does not run; nothing outside changes.":[`Hành động không chạy; không có gì bên ngoài bị thay đổi.`,``],"Run this exact command once, with internet access.":[`Chạy đúng lệnh này một lần, có mạng.`,``],"Run this exact command once, with internet access; a server it starts accepts connections while it runs.":[`Chạy đúng lệnh này một lần, có mạng; server mà lệnh mở nhận kết nối trong lúc chạy.`,``],"Run this exact command once, with internet access and the Docker engine; a container it starts can read folders Docker shares from this machine and may keep running.":[`Chạy đúng lệnh này một lần, có mạng và Docker; container mà lệnh tạo đọc được các thư mục Docker chia sẻ trên máy và có thể tiếp tục chạy.`,``],"Run this exact command once on this machine, outside the sandbox, as you: it can read and change your files and use your sign-ins.":[`Chạy đúng lệnh này một lần trên máy bạn, ngoài sandbox, bằng quyền của bạn: lệnh đọc/sửa được file và dùng được tài khoản đã đăng nhập trên máy.`,``],"Docker is not started; the agent is told you declined.":[`Không mở Docker; agent được báo là bạn đã từ chối.`,``]},z=(e,t,n)=>{let r=e[t];return r?F(n,r[0],r[1]||t):null};function B(e,t){return t===`vi`?e.split(`; `).map(e=>{let t=e.match(/^Confirmation required: the command runs (.+)$/);if(t)return`Lệnh có ${t[1]} nên cần bạn duyệt trước khi chạy.`;let n=e.match(/^External provider action (.+) requires confirmation$/);return n?`Hành động ra bên ngoài (${n[1]}) cần bạn duyệt.`:e}).join(` `):e}var V=(e,t)=>z(I,e.kind,t)??c(e.kind,t),H=(e,t)=>z(L,e.requestedScope,t)??c(e.requestedScope,t);function U(e,t){let n=t===`vi`?/^Start (.+) on this machine; it keeps running after the conversation\.$/.exec(e):null;return n?`Mở ${n[1]} trên máy; nó vẫn chạy sau cuộc trò chuyện.`:z(R,e,t)??e}function W(e,t){return{schemaVersion:1,version:`piagent-webui-approval-v1`,recordType:`decision`,approvalRef:e.approvalRef,decisionId:`decision.${crypto.randomUUID()}`,decisionToken:e.decisionToken,identity:structuredClone(e.identity),actionDigest:e.action.actionDigest,expectedRevisions:structuredClone(e.expectedRevisions),decision:t,reason:null,decidedAt:new Date().toISOString(),expiresAt:e.expiresAt,decisionSurface:`webui`,executor:`pi-guard`,directExecution:!1}}var G=t();function K({state:e,setState:t,refreshSnapshot:n,locale:r,asker:a}){let o=e.request;if(!o)return(0,G.jsx)(`article`,{className:`approval-card`,children:(0,G.jsx)(`p`,{children:e.error??i(r,`Đang tải yêu cầu phê duyệt…`,`Loading approval request…`)})});let l=o.action,u=Math.max(0,Math.ceil((Date.parse(o.expiresAt)-Date.now())/1e3)),d=async e=>{t({request:o,deciding:e});try{await s(W(o,e)),await n?.()}catch{t({request:o,error:i(r,`Yêu cầu đã hết hạn, thay đổi hoặc được trả lời ở terminal. Hãy tải trạng thái mới.`,`The request expired, changed, or was answered in the terminal. Refresh status.`)})}};return(0,G.jsxs)(`article`,{className:`approval-card risk-${l.riskClass}`,"aria-labelledby":`approval-${o.approvalRef}`,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`p`,{className:`section-kicker`,children:a?i(r,`${a} cần bạn duyệt`,`${a} needs your approval`):i(r,`Cần phê duyệt`,`Approval required`)}),(0,G.jsx)(`h2`,{id:`approval-${o.approvalRef}`,children:l.toolName})]}),(0,G.jsx)(`span`,{className:`approval-risk`,children:c(l.riskClass,r)})]}),(0,G.jsx)(`p`,{className:`approval-reason`,children:B(l.reason,r)}),l.commandPreview&&(0,G.jsx)(`pre`,{className:`approval-preview`,children:(0,G.jsx)(`code`,{children:l.commandPreview})}),!l.commandPreview&&l.parameterPreview&&l.parameterPreview!==`No additional parameters`&&(0,G.jsx)(`p`,{className:`approval-preview`,children:l.parameterPreview}),(0,G.jsxs)(`dl`,{className:`approval-facts`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Hành động`,`Action`)}),(0,G.jsx)(`dd`,{children:V(l,r)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Phạm vi`,`Scope`)}),(0,G.jsx)(`dd`,{children:H(l,r)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Thư mục`,`Directory`)}),(0,G.jsx)(`dd`,{children:l.cwdDisplay??i(r,`Đã ẩn`,`Hidden`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Hết hạn`,`Expires`)}),(0,G.jsxs)(`dd`,{children:[u,`s`]})]})]}),l.targetPaths.length>0&&(0,G.jsxs)(`div`,{className:`approval-targets`,children:[(0,G.jsx)(`strong`,{children:i(r,`Đích tác động`,`Targets`)}),(0,G.jsx)(`ul`,{children:l.targetPaths.map(e=>(0,G.jsx)(`li`,{children:e===`.`?i(r,`Cả thư mục project`,`The whole project folder`):e},e))})]}),(0,G.jsxs)(`div`,{className:`approval-consequences`,children:[(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:i(r,`Nếu cho phép:`,`If allowed:`)}),` `,U(l.consequences.allow,r)]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:i(r,`Nếu từ chối:`,`If denied:`)}),` `,U(l.consequences.deny,r)]})]}),e.error&&(0,G.jsx)(`p`,{className:`form-error`,role:`alert`,children:e.error}),(0,G.jsxs)(`footer`,{children:[(0,G.jsx)(`button`,{type:`button`,className:`secondary-action`,disabled:!!e.deciding,onClick:()=>void d(`deny`),children:i(r,`Từ chối`,`Deny`)}),(0,G.jsx)(`button`,{type:`button`,className:`danger-action`,disabled:!!e.deciding,onClick:()=>void d(`allow`),children:e.deciding===`allow`?i(r,`Đang kiểm tra lại…`,`Rechecking…`):i(r,`Cho phép đúng 1 lần`,`Allow once`)})]})]})}function q(e,t,n){let r=(0,P.useMemo)(()=>e,[e.join(`\0`)]),[s,c]=(0,P.useState)({});return(0,P.useEffect)(()=>{let e=new AbortController;for(let s of r)(t?a(t,s,e.signal):o(s,e.signal)).then(e=>c(t=>({...t,[s]:{request:e}})),()=>c(e=>({...e,[s]:{error:i(n,`Không thể tải yêu cầu phê duyệt hiện tại.`,`Unable to load the current approval request.`)}})));return()=>e.abort()},[n,t,r]),{refs:r,states:s,set:(e,t)=>c(n=>({...n,[e]:t}))}}function ce({approvalRefs:e,sessionRef:t,refreshSnapshot:n}){let{locale:a}=r(),{refs:o,states:s,set:c}=q(e,t,a);return o.length===0?null:(0,G.jsx)(`section`,{className:`approval-stack`,"aria-label":i(a,`Yêu cầu phê duyệt đang chờ`,`Pending approval requests`),"aria-live":`polite`,children:o.map(e=>(0,G.jsx)(K,{state:s[e]??{},setState:t=>c(e,t),refreshSnapshot:n,locale:a},e))})}function le({snapshot:e,refreshSnapshot:t}){let n=(0,P.useMemo)(()=>e.approvals.pending.map(e=>e.approvalRef),[e.approvals.pending]);return(0,G.jsx)(ce,{approvalRefs:n,refreshSnapshot:t})}var J=16384,ue=1e3;function de(e,t){let n=new Map;for(let r of[...t,...e])n.has(r.messageRef)||n.set(r.messageRef,r);return[...n.values()].slice(0,ue)}function fe(e){let t=new Map,n=new Map;for(let r of e.slice(-500)){let e=r.kind,i=r.payload??{},a=r.messageRef;if([`agent-operation.settled`,`session.replacement-pending`,`session.replacement-committed`,`session.shutdown`].includes(String(e))){t.clear(),n.clear();continue}if(e===`message.started`&&i.role===`assistant`&&typeof a==`string`)t.set(a,{messageRef:a,text:``,thinking:!1,truncated:!1});else if(e===`message.text-delta`&&typeof a==`string`&&typeof i.delta==`string`){let e=t.get(a);if(!e)continue;let n=`${e.text}${i.delta}`;t.set(a,{...e,text:n.slice(0,J),truncated:e.truncated||n.length>J})}else if(e===`message.thinking-state`&&typeof a==`string`){let e=t.get(a);if(!e)continue;t.set(a,{...e,thinking:i.state!==`completed`})}else[`message.completed`,`message.failed`].includes(String(e))&&typeof a==`string`&&t.delete(a);[`activity.started`,`activity.progress`,`activity.finished`,`activity.failed`,`activity.blocked`,`activity.aborted`].includes(String(e))&&typeof r.toolCallId==`string`&&typeof i.activityRef==`string`&&typeof i.toolName==`string`&&n.set(r.toolCallId,{toolCallId:r.toolCallId,activityRef:i.activityRef,toolName:i.toolName,state:String(i.state??`unknown`)})}return{assistants:[...t.values()].slice(-2),tools:[...n.values()].slice(-8)}}var pe=/^(?:\p{White_Space}|\p{Cc}|\p{Default_Ignorable_Code_Point})$/u,me=/\u001b(?:\[[0-?]*[ -/]*[@-~]|[@-_])/g;function he(e){for(let t of e.replace(me,``))if(!pe.test(t))return!0;return!1}function ge(e,t,n){if(!n?.complete)return{key:`${e}:${t}:active`,completionKey:null,user:``,assistant:``,operationRef:null,messageRequestId:null,startedAt:null};let r=n.startedAt??null,i=n.messageRequestId??null,a=`${i??`unknown`}:${n.operationRef??`unknown`}:${r??`unknown`}:${n.user}:${n.assistant.length}`;return{key:`${e}:${t}:complete:${a}`,completionKey:a,user:n.user,assistant:n.assistant,operationRef:n.operationRef,messageRequestId:i,startedAt:r}}function _e(e){let t=/^\[Piagent completion gate: (CONTINUING|NOT APPROVED)\][\t ]*/i.exec(e);if(!t)return{text:e,completionGate:null};let n=t[1]?.toUpperCase()===`CONTINUING`?`continuing`:`not-approved`,r=e.indexOf(`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Dn as t,Fn as n}from"./vendor-CSDKB7mU.js";import{i as r,n as i}from"./ui-preferences-0waeSO-S.js";import{M as a,d as o,s}from"./api-BQS4Dtrr.js";import{r as c}from"./view-model-CWNiS4JN.js";function l(e){return Array.isArray(e)?`[${e.map(l).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${l(t)}`).join(`,`)}}`:JSON.stringify(e)}async function u(e){let t=new TextEncoder().encode(typeof e==`string`?e:l(e)),n=await crypto.subtle.digest(`SHA-256`,t);return`sha256:${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}async function d(e,t,n,r){let i=new Date,a=new Date(i.getTime()+3e5),o=r?.attachmentRefs??[],s={messageRequestId:r?.messageRequestId??`message-request.${crypto.randomUUID()}`,capabilityAction:n===`steer`?`interruptAndSend`:n===`hold`?`hold`:`send`,delivery:n,text:t,attachmentRefs:o,contentDigest:await u({attachmentRefs:o,text:t})},c={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},l={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:i.toISOString(),expiresAt:a.toISOString(),capabilityScope:`control.chat`,action:`chat.send`,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:c,payload:s};return l.actionDigest=await u({action:l.action,identity:l.identity,expectedRevisions:c,payload:s}),l}async function ee(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5);return{schemaVersion:1,version:`piagent-webui-attachment-v1`,messageType:`stage-command`,commandId:`attachment-command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),identity:{...structuredClone(e.identity),toolCallId:null},expectedRuntimeRevision:e.revision.runtimeRevision,messageRequestId:t,file:n}}function f(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5);return{schemaVersion:1,version:`piagent-webui-attachment-v1`,messageType:`discard-command`,commandId:`attachment-command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),identity:{...structuredClone(e.identity),toolCallId:null},expectedRuntimeRevision:e.revision.runtimeRevision,messageRequestId:t,attachmentRef:n}}async function p(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},o={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.chat`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:a,payload:n};return o.actionDigest=await u({action:t,identity:o.identity,expectedRevisions:a,payload:n}),o}async function te(e,t){let n=[];return{queueItemRef:e,text:t,attachmentRefs:n,contentDigest:await u({attachmentRefs:n,text:t})}}async function ne(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},o=t===`session-options.set-model`?{modelRef:n,effectScopeAcknowledged:`session-and-user-default`}:{thinkingLevel:n,effectScopeAcknowledged:`session-and-user-default`},s={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.sessionOptions`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:a,payload:o};return s.actionDigest=await u({action:t,identity:s.identity,expectedRevisions:a,payload:o}),s}async function m(e,t){let n=new Date,r=new Date(n.getTime()+3e5),i={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},a=t===`lifecycle.stop`?{requestedScope:`current-agent-operation`}:t===`lifecycle.pause`?{safePointPolicy:`after-current-atomic-unit`}:{},o={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:n.toISOString(),expiresAt:r.toISOString(),capabilityScope:`control.lifecycle`,action:t,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:i,payload:a};return o.actionDigest=await u({action:t,identity:o.identity,expectedRevisions:i,payload:a}),o}async function h(e,t,n){let r=new Date,i=new Date(r.getTime()+3e5),a=n?.attachmentRefs??[],o={messageRequestId:n?.messageRequestId??`message-request.${crypto.randomUUID()}`,capabilityAction:`send`,delivery:`new-operation`,text:t,attachmentRefs:a,contentDigest:await u({attachmentRefs:a,text:t})},s={runtimeRevision:e.revision.runtimeRevision,taskRevision:e.revision.taskRevision,controlRevision:e.revision.controlRevision,workspaceRevision:e.revision.workspaceRevision,indexRevision:e.revision.indexRevision,approvalRevision:e.revision.approvalRevision,sessionOptionRevision:e.revision.sessionOptionRevision,queueRevision:e.revision.queueRevision,workspacePreimage:null,indexPreimage:null,patchPreimage:null},c={schemaVersion:1,version:`piagent-webui-control-v1`,messageType:`command`,commandId:`command.${crypto.randomUUID()}`,idempotencyKey:crypto.randomUUID(),requestedAt:r.toISOString(),expiresAt:i.toISOString(),capabilityScope:`control.resumeAndContinue`,action:`lifecycle.resume-and-continue`,actionDigest:``,identity:structuredClone(e.identity),expectedRevisions:s,payload:o};return c.actionDigest=await u({action:c.action,identity:c.identity,expectedRevisions:s,payload:o}),c}var g=24;function _(e,t,n){for(e.delete(t),e.set(t,n);e.size>g;)e.delete(e.keys().next().value);return n}function v(e,t){return`data:${e};base64,${t}`}var y=new Map;function re(e,t,n){_(y,e,v(t,n))}function b(e){return y.get(e)??null}var x=new Map,S=new Map;function C(e){return x.get(e)??null}function w(e,t){let n=x.get(e);if(n)return Promise.resolve(n);let r=S.get(e);return r||(r=t().then(t=>_(x,e,v(t.mimeType,t.dataBase64))).catch(()=>null).finally(()=>S.delete(e)),S.set(e,r)),r}function T(e,t,n){return e===`vi`?t:n}var E={txt:`text/plain`,text:`text/plain`,md:`text/markdown`,markdown:`text/markdown`,csv:`text/csv`,tsv:`text/tab-separated-values`,json:`application/json`,yaml:`application/yaml`,yml:`application/yaml`,pdf:`application/pdf`,docx:`application/vnd.openxmlformats-officedocument.wordprocessingml.document`,xlsx:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,xlsm:`application/vnd.ms-excel.sheet.macroenabled.12`,pptx:`application/vnd.openxmlformats-officedocument.presentationml.presentation`,odt:`application/vnd.oasis.opendocument.text`,ods:`application/vnd.oasis.opendocument.spreadsheet`,odp:`application/vnd.oasis.opendocument.presentation`,rtf:`application/rtf`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,bmp:`image/bmp`},ie={xls:`sheet`,numbers:`sheet`,ppt:`slides`,key:`slides`,doc:`word`,pages:`word`,...Object.fromEntries(`zip.gz.tgz.bz2.xz.rar.7z.tar.jar.war.exe.dmg.pkg.msi.deb.rpm.apk.ipa.bin.so.dylib.dll.o.a.lib.class.pyc.wasm.node.iso.img.sqlite.sqlite3.db.mdb.mp3.mp4.m4a.m4v.mov.avi.mkv.wav.flac.ogg.webm.aac.woff.woff2.ttf.otf.eot.ico.icns.heic.heif.tif.tiff.psd.ai.sketch.fig.xd.avif.raw.cr2.nef.dng.blend.fbx.glb`.split(`.`).map(e=>[e,`binary`]))};function D(e){let t=e.lastIndexOf(`.`),n=t>0||t===0&&e.length>1?e.slice(t+1).toLowerCase():``,r=E[n];if(r)return{mime:r};let i=ie[n];return i?{refused:i}:{mime:`text/plain`}}var O=new Set([`application/pdf`,...Object.entries(E).filter(([e])=>[`docx`,`xlsx`,`xlsm`,`pptx`,`odt`,`ods`,`odp`,`rtf`].includes(e)).map(([,e])=>e)]);function ae(e){return T(e,`Code, văn bản, .pdf .docx .xlsx .pptx .odt .ods .odp .rtf và ảnh`,`Code, text, .pdf .docx .xlsx .pptx .odt .ods .odp .rtf and images`)}function k(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MiB`:`${(e/1024).toFixed(+(e<10240))} KiB`}function oe(e,t){let n=e.truncated?` · ${T(t,`đã cắt bớt`,`truncated`)}`:``;return e.kind===`image`?`${T(t,`Ảnh`,`Image`)} · ${k(e.sizeBytes)}`:e.kind===`document`?`${T(t,`Tài liệu`,`Document`)} · ${k(e.sourceBytes)} → ${k(e.sizeBytes)} ${T(t,`văn bản`,`text`)}${n}`:`File · ${k(e.sizeBytes)}${n}`}function se(e){return e.has(`text/plain`)?``:[...e,...Object.entries(E).filter(([,t])=>e.has(t)).map(([e])=>`.${e}`)].join(`,`)}function A(e){return!!(e&&[...e.types].includes(`Files`))}function j(e,t){switch(e){case`sheet`:return T(t,`định dạng bảng tính này chưa đọc trực tiếp được; hãy lưu sang .xlsx hoặc .csv rồi đính kèm.`,`this spreadsheet format cannot be read directly; save it as .xlsx or .csv and attach that.`);case`slides`:return T(t,`định dạng trình chiếu này chưa đọc trực tiếp được; hãy lưu sang .pptx hoặc .pdf rồi đính kèm.`,`this slide format cannot be read directly; save it as .pptx or .pdf and attach that.`);case`word`:return T(t,`định dạng này chưa đọc được; hãy lưu sang .docx, .pdf, .rtf hoặc .txt.`,`this format cannot be read; save it as .docx, .pdf, .rtf or .txt.`);default:return T(t,`file nhị phân không gửi vào chat được; hãy để file trong project để agent tự đọc bằng tool.`,`binary files cannot go into the chat; keep it in the project and the agent can use its tools on it.`)}}async function M(e){let{snapshot:t,locale:n}=e,r=[...e.existing],i=null,a=Math.max(0,4-r.length);e.files.length>a&&(i=T(n,`Chỉ nhận tối đa 4 file mỗi tin nhắn; đã bỏ qua ${e.files.length-a} file.`,`At most 4 files per message; ${e.files.length-a} skipped.`));for(let o of[...e.files].slice(0,a)){let a=D(o.name);if(`refused`in a){i=`${o.name}: ${j(a.refused,n)}`;continue}let s=a.mime;if(!e.allowed.has(s)){i=`${o.name}: ${s===`application/pdf`?T(n,`host chưa cài pdftotext (poppler) nên chưa đọc được .pdf.`,`this host has no pdftotext (poppler), so .pdf cannot be read.`):T(n,`phiên Pi hiện tại không nhận loại file này.`,`the current Pi session does not accept this file type.`)}`;continue}let l=s.startsWith(`image/`)||O.has(s)?Math.min(t.capabilities.limits.maxAttachmentFileBytes,8388608):262144;if(o.size<1||o.size>l||r.reduce((e,t)=>e+t.sourceBytes,0)+o.size>t.capabilities.limits.maxAttachmentTotalBytes){i=`${o.name}: ${O.has(s)?T(n,`vượt giới hạn gửi trực tiếp ${k(l)}. Hãy đặt tài liệu lớn trong project rồi mở ở mục Tài liệu; Pi sẽ đọc theo phần thay vì nhét cả file vào chat.`,`exceeds the ${k(l)} direct-send limit. Put a large document in the project and open Documents; Pi can read it in parts instead of placing the whole file in chat.`):T(n,`vượt giới hạn đính kèm (tối đa ${k(l)}).`,`attachment limit exceeded (max ${k(l)}).`)}`;continue}let u=new Uint8Array(await o.arrayBuffer()),d=``;for(let e=0;e<u.length;e+=32768)d+=String.fromCharCode(...u.subarray(e,e+32768));let f=btoa(d),p=await e.stage(await ee(t,e.messageRequestId,{displayName:o.name,declaredMimeType:s,dataBase64:f}));if(p.resultCode!==`staged`||!(`attachment`in p)||!p.attachment){i=`${o.name}: ${c(p.error?.code??p.resultCode,n)}`;continue}p.attachment.kind===`image`&&re(p.attachment.attachmentRef,p.attachment.mimeType,f),r=[...r,p.attachment]}return{attachments:r,status:i}}async function N(e){let t=await e.stage(f(e.snapshot,e.messageRequestId,e.attachmentRef));return t.messageType===`discard-receipt`&&t.resultCode===`discarded`?{discarded:!0,status:null}:{discarded:!1,status:`${T(e.locale,`Chưa thể bỏ file`,`Unable to remove file`)} · ${c(t.error?.code??t.resultCode,e.locale)}`}}var P=e(n(),1),F=(e,t,n)=>e===`vi`?t:n,I={"workspace-patch":[`Sửa trong project`,`Change in the project`],"external-provider-action":[`Tác động ra bên ngoài`,`Reaches outside this machine`]},L={"one-shell-command":[`Đúng một lệnh`,`This one command`],"network-command-once":[`Đúng một lệnh, có mạng`,`This one command, with network`],"docker-command-once":[`Đúng một lệnh, có mạng và Docker`,`This one command, with network and Docker`],"host-command-once":[`Đúng một lệnh, chạy trên máy bạn (ngoài sandbox)`,`This one command, on your machine (outside the sandbox)`],"start-docker-once":[`Mở Docker trên máy`,`Start Docker on this machine`],"one-external-action":[`Đúng một hành động`,`This one action`]},R={"Run this exact command once, after the guard checks the working tree again.":[`Chạy đúng lệnh này một lần, sau khi guard kiểm tra lại thư mục làm việc.`,``],"The command does not run; the agent is told you declined.":[`Lệnh không chạy; agent được báo là bạn đã từ chối.`,``],"Run this exact action once, after the guard checks its authority again.":[`Thực hiện đúng hành động này một lần, sau khi guard kiểm tra lại quyền.`,``],"The action does not run; nothing outside changes.":[`Hành động không chạy; không có gì bên ngoài bị thay đổi.`,``],"Run this exact command once, with internet access.":[`Chạy đúng lệnh này một lần, có mạng.`,``],"Run this exact command once, with internet access; a server it starts accepts connections while it runs.":[`Chạy đúng lệnh này một lần, có mạng; server mà lệnh mở nhận kết nối trong lúc chạy.`,``],"Run this exact command once, with internet access and the Docker engine; a container it starts can read folders Docker shares from this machine and may keep running.":[`Chạy đúng lệnh này một lần, có mạng và Docker; container mà lệnh tạo đọc được các thư mục Docker chia sẻ trên máy và có thể tiếp tục chạy.`,``],"Run this exact command once on this machine, outside the sandbox, as you: it can read and change your files and use your sign-ins.":[`Chạy đúng lệnh này một lần trên máy bạn, ngoài sandbox, bằng quyền của bạn: lệnh đọc/sửa được file và dùng được tài khoản đã đăng nhập trên máy.`,``],"Docker is not started; the agent is told you declined.":[`Không mở Docker; agent được báo là bạn đã từ chối.`,``]},z=(e,t,n)=>{let r=e[t];return r?F(n,r[0],r[1]||t):null};function B(e,t){return t===`vi`?e.split(`; `).map(e=>{let t=e.match(/^Confirmation required: the command runs (.+)$/);if(t)return`Lệnh có ${t[1]} nên cần bạn duyệt trước khi chạy.`;let n=e.match(/^External provider action (.+) requires confirmation$/);return n?`Hành động ra bên ngoài (${n[1]}) cần bạn duyệt.`:e}).join(` `):e}var V=(e,t)=>z(I,e.kind,t)??c(e.kind,t),H=(e,t)=>z(L,e.requestedScope,t)??c(e.requestedScope,t);function U(e,t){let n=t===`vi`?/^Start (.+) on this machine; it keeps running after the conversation\.$/.exec(e):null;return n?`Mở ${n[1]} trên máy; nó vẫn chạy sau cuộc trò chuyện.`:z(R,e,t)??e}function W(e,t){return{schemaVersion:1,version:`piagent-webui-approval-v1`,recordType:`decision`,approvalRef:e.approvalRef,decisionId:`decision.${crypto.randomUUID()}`,decisionToken:e.decisionToken,identity:structuredClone(e.identity),actionDigest:e.action.actionDigest,expectedRevisions:structuredClone(e.expectedRevisions),decision:t,reason:null,decidedAt:new Date().toISOString(),expiresAt:e.expiresAt,decisionSurface:`webui`,executor:`pi-guard`,directExecution:!1}}var G=t();function K({state:e,setState:t,refreshSnapshot:n,locale:r,asker:a}){let o=e.request;if(!o)return(0,G.jsx)(`article`,{className:`approval-card`,children:(0,G.jsx)(`p`,{children:e.error??i(r,`Đang tải yêu cầu phê duyệt…`,`Loading approval request…`)})});let l=o.action,u=Math.max(0,Math.ceil((Date.parse(o.expiresAt)-Date.now())/1e3)),d=async e=>{t({request:o,deciding:e});try{await s(W(o,e)),await n?.()}catch{t({request:o,error:i(r,`Yêu cầu đã hết hạn, thay đổi hoặc được trả lời ở terminal. Hãy tải trạng thái mới.`,`The request expired, changed, or was answered in the terminal. Refresh status.`)})}};return(0,G.jsxs)(`article`,{className:`approval-card risk-${l.riskClass}`,"aria-labelledby":`approval-${o.approvalRef}`,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`p`,{className:`section-kicker`,children:a?i(r,`${a} cần bạn duyệt`,`${a} needs your approval`):i(r,`Cần phê duyệt`,`Approval required`)}),(0,G.jsx)(`h2`,{id:`approval-${o.approvalRef}`,children:l.toolName})]}),(0,G.jsx)(`span`,{className:`approval-risk`,children:c(l.riskClass,r)})]}),(0,G.jsx)(`p`,{className:`approval-reason`,children:B(l.reason,r)}),l.commandPreview&&(0,G.jsx)(`pre`,{className:`approval-preview`,children:(0,G.jsx)(`code`,{children:l.commandPreview})}),!l.commandPreview&&l.parameterPreview&&l.parameterPreview!==`No additional parameters`&&(0,G.jsx)(`p`,{className:`approval-preview`,children:l.parameterPreview}),(0,G.jsxs)(`dl`,{className:`approval-facts`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Hành động`,`Action`)}),(0,G.jsx)(`dd`,{children:V(l,r)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Phạm vi`,`Scope`)}),(0,G.jsx)(`dd`,{children:H(l,r)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Thư mục`,`Directory`)}),(0,G.jsx)(`dd`,{children:l.cwdDisplay??i(r,`Đã ẩn`,`Hidden`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:i(r,`Hết hạn`,`Expires`)}),(0,G.jsxs)(`dd`,{children:[u,`s`]})]})]}),l.targetPaths.length>0&&(0,G.jsxs)(`div`,{className:`approval-targets`,children:[(0,G.jsx)(`strong`,{children:i(r,`Đích tác động`,`Targets`)}),(0,G.jsx)(`ul`,{children:l.targetPaths.map(e=>(0,G.jsx)(`li`,{children:e===`.`?i(r,`Cả thư mục project`,`The whole project folder`):e},e))})]}),(0,G.jsxs)(`div`,{className:`approval-consequences`,children:[(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:i(r,`Nếu cho phép:`,`If allowed:`)}),` `,U(l.consequences.allow,r)]}),(0,G.jsxs)(`p`,{children:[(0,G.jsx)(`strong`,{children:i(r,`Nếu từ chối:`,`If denied:`)}),` `,U(l.consequences.deny,r)]})]}),e.error&&(0,G.jsx)(`p`,{className:`form-error`,role:`alert`,children:e.error}),(0,G.jsxs)(`footer`,{children:[(0,G.jsx)(`button`,{type:`button`,className:`secondary-action`,disabled:!!e.deciding,onClick:()=>void d(`deny`),children:i(r,`Từ chối`,`Deny`)}),(0,G.jsx)(`button`,{type:`button`,className:`danger-action`,disabled:!!e.deciding,onClick:()=>void d(`allow`),children:e.deciding===`allow`?i(r,`Đang kiểm tra lại…`,`Rechecking…`):i(r,`Cho phép đúng 1 lần`,`Allow once`)})]})]})}function q(e,t,n){let r=(0,P.useMemo)(()=>e,[e.join(`\0`)]),[s,c]=(0,P.useState)({});return(0,P.useEffect)(()=>{let e=new AbortController;for(let s of r)(t?a(t,s,e.signal):o(s,e.signal)).then(e=>c(t=>({...t,[s]:{request:e}})),()=>c(e=>({...e,[s]:{error:i(n,`Không thể tải yêu cầu phê duyệt hiện tại.`,`Unable to load the current approval request.`)}})));return()=>e.abort()},[n,t,r]),{refs:r,states:s,set:(e,t)=>c(n=>({...n,[e]:t}))}}function ce({approvalRefs:e,sessionRef:t,refreshSnapshot:n}){let{locale:a}=r(),{refs:o,states:s,set:c}=q(e,t,a);return o.length===0?null:(0,G.jsx)(`section`,{className:`approval-stack`,"aria-label":i(a,`Yêu cầu phê duyệt đang chờ`,`Pending approval requests`),"aria-live":`polite`,children:o.map(e=>(0,G.jsx)(K,{state:s[e]??{},setState:t=>c(e,t),refreshSnapshot:n,locale:a},e))})}function le({snapshot:e,refreshSnapshot:t}){let n=(0,P.useMemo)(()=>e.approvals.pending.map(e=>e.approvalRef),[e.approvals.pending]);return(0,G.jsx)(ce,{approvalRefs:n,refreshSnapshot:t})}var J=16384,ue=1e3;function de(e,t){let n=new Map;for(let r of[...t,...e])n.has(r.messageRef)||n.set(r.messageRef,r);return[...n.values()].slice(0,ue)}function fe(e){let t=new Map,n=new Map;for(let r of e.slice(-500)){let e=r.kind,i=r.payload??{},a=r.messageRef;if([`agent-operation.settled`,`session.replacement-pending`,`session.replacement-committed`,`session.shutdown`].includes(String(e))){t.clear(),n.clear();continue}if(e===`message.started`&&i.role===`assistant`&&typeof a==`string`)t.set(a,{messageRef:a,text:``,thinking:!1,truncated:!1});else if(e===`message.text-delta`&&typeof a==`string`&&typeof i.delta==`string`){let e=t.get(a);if(!e)continue;let n=`${e.text}${i.delta}`;t.set(a,{...e,text:n.slice(0,J),truncated:e.truncated||n.length>J})}else if(e===`message.thinking-state`&&typeof a==`string`){let e=t.get(a);if(!e)continue;t.set(a,{...e,thinking:i.state!==`completed`})}else[`message.completed`,`message.failed`].includes(String(e))&&typeof a==`string`&&t.delete(a);[`activity.started`,`activity.progress`,`activity.finished`,`activity.failed`,`activity.blocked`,`activity.aborted`].includes(String(e))&&typeof r.toolCallId==`string`&&typeof i.activityRef==`string`&&typeof i.toolName==`string`&&n.set(r.toolCallId,{toolCallId:r.toolCallId,activityRef:i.activityRef,toolName:i.toolName,state:String(i.state??`unknown`)})}return{assistants:[...t.values()].slice(-2),tools:[...n.values()].slice(-8)}}var pe=/^(?:\p{White_Space}|\p{Cc}|\p{Default_Ignorable_Code_Point})$/u,me=/\u001b(?:\[[0-?]*[ -/]*[@-~]|[@-_])/g;function he(e){for(let t of e.replace(me,``))if(!pe.test(t))return!0;return!1}function ge(e,t,n){if(!n?.complete)return{key:`${e}:${t}:active`,completionKey:null,user:``,assistant:``,operationRef:null,messageRequestId:null,startedAt:null};let r=n.startedAt??null,i=n.messageRequestId??null,a=`${i??`unknown`}:${n.operationRef??`unknown`}:${r??`unknown`}:${n.user}:${n.assistant.length}`;return{key:`${e}:${t}:complete:${a}`,completionKey:a,user:n.user,assistant:n.assistant,operationRef:n.operationRef,messageRequestId:i,startedAt:r}}function _e(e){let t=/^\[Piagent completion gate: (CONTINUING|NOT APPROVED)\][\t ]*/i.exec(e);if(!t)return{text:e,completionGate:null};let n=t[1]?.toUpperCase()===`CONTINUING`?`continuing`:`not-approved`,r=e.indexOf(`
2
2
 
3
3
  `,t[0].length);return{text:r<0?``:e.slice(r+2).trimStart(),completionGate:n}}var Y=new Set([`provider-auth-expired`,`provider-auth-required`,`provider-rate-limited`,`provider-unavailable`,`provider-response-failed`,`assistant-output-incomplete`]);function X(e){let t=e.content.reasonCode;return e.role===`assistant`&&e.toolCalls.length===0&&e.content.state===`unavailable`&&t&&(Y.has(t)||t.startsWith(`company-`))?t:null}function Z(e){let t=_e(e);return t.completionGate===null&&he(t.text)?t.text:null}function Q(e,t){let n=e?.trim(),r=t.trim();return!!(n&&r&&(n===r||n.startsWith(`/`)&&n.endsWith(` ${r}`)))}function ve(e,t){if(e.agentOperationId&&t.operationRef&&e.agentOperationId!==t.operationRef)return!1;if(e.messageRequestId&&t.messageRequestId)return e.messageRequestId===t.messageRequestId;if(e.agentOperationId&&t.operationRef)return e.agentOperationId===t.operationRef;let n=Date.parse(e.recordedAt),r=Date.parse(t.startedAt??``);return Number.isFinite(n)&&Number.isFinite(r)&&n>=r}function $(e,t,n){let r=t.trim();if(!r)return-1;for(let t=e.length-1;t>=0;--t){let i=e[t];if(i?.role===`user`&&Q(i.content.text,r)&&ve(i,n))return t}return-1}function ye(e,t,n){return $(e,t,n)>=0}function be(e,t,n,r){let i=$(e,t,r);if(i<0)return!1;let a=Z(n)?.trim()??``;if(!a)return!0;let o=e[i]?.messageRef??null;for(let t=i+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return!1;if(!(n?.role!==`assistant`&&n?.role!==`custom`||n.toolCalls.length>0)&&!(o&&n.parentMessageRef&&n.parentMessageRef!==o)&&Z(n.content.text??``)?.trim()===a)return!0}return!1}function xe(e,t,n){let r=$(e,t,n);if(r<0)return!1;let i=e[r]?.messageRef??null;for(let t=r+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return!1;if(!(n?.role!==`assistant`&&n?.role!==`custom`||n.toolCalls.length>0)&&!(i&&n.parentMessageRef&&n.parentMessageRef!==i)&&(Z(n.content.text??``)||X(n)))return!0}return!1}function Se(e){let t=[],n=new Map,r=new Set,i=null,a=!1,o=null;for(let s of e){if(s.role===`user`){n.clear(),r.add(s.messageRef),i=s.messageRef,t.push(s),a=!1,o=null;continue}if(s.role!==`assistant`&&s.role!==`custom`||(s.parentMessageRef?!r.has(s.parentMessageRef):i===null)||s.toolCalls.length>0)continue;if(X(s)){if(a)continue;o?t[t.indexOf(o)]=s:t.push(s),o=s;continue}let e=Z(s.content.text??``);if(!e)continue;a=!0,o&&=(t.splice(t.indexOf(o),1),null);let c=`${s.role}:${e.trim()}`,l=n.get(c);l===void 0?(n.set(c,t.length),t.push(s)):t[l]=s}return t}export{ne as A,w as C,m as D,d as E,p as O,M as S,b as T,D as _,be as a,k as b,Z as c,K as d,le as f,ae as g,oe as h,xe as i,te as j,h as k,fe as l,se as m,Se as n,ye as o,q as p,ge as r,Q as s,X as t,de as u,N as v,C as w,j as x,A as y};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Dn as t,In as n}from"./vendor-CA5pzJiI.js";var r=e(n(),1),i=e=>e,a=[i({id:`piagent-dark`,label:`Piagent Dark`,mode:`dark`,background:`#09090b`,paper:`#111114`,text:`#ededf0`,muted:`#a3a3ad`,divider:`#232329`,primary:`#d8ff7a`,onPrimary:`#111300`,secondary:`#8be9c8`,warning:`#efba63`,error:`#ff7f86`,syntax:{keyword:`#d8ff7a`,string:`#8be9c8`,number:`#efba63`,comment:`#7d808a`,function:`#9ecbff`,type:`#f0a6ff`,property:`#e6e6dc`,operator:`#c5c7cc`,heading:`#d8ff7a`,link:`#8be9c8`},ansi:[`#1b1c20`,`#ff7f86`,`#b9e769`,`#efba63`,`#82aaff`,`#f0a6ff`,`#8be9c8`,`#d6d6d0`,`#5c5f68`,`#ff9ea3`,`#d8ff7a`,`#ffd58a`,`#a8c5ff`,`#f6c4ff`,`#b3f5df`,`#f4f4ef`]}),i({id:`piagent-light`,label:`Piagent Light`,mode:`light`,background:`#f5f6f0`,paper:`#ffffff`,text:`#18181b`,muted:`#5b5b63`,divider:`#e4e4df`,primary:`#627400`,onPrimary:`#ffffff`,secondary:`#14775f`,warning:`#9a5b00`,error:`#c22f3a`,syntax:{keyword:`#5a6b00`,string:`#14775f`,number:`#9a5b00`,comment:`#7a8072`,function:`#1f5fbf`,type:`#8a3fa0`,property:`#1c2018`,operator:`#4a4f45`,heading:`#5a6b00`,link:`#14775f`},ansi:[`#1c2018`,`#c22f3a`,`#4d7a00`,`#9a5b00`,`#1f5fbf`,`#8a3fa0`,`#14775f`,`#d6d8d0`,`#62685c`,`#e04a55`,`#627400`,`#b87a12`,`#3a7be0`,`#a85ac0`,`#1f9a7c`,`#f5f6f0`]}),i({id:`dracula`,label:`Dracula`,mode:`dark`,background:`#21222c`,paper:`#282a36`,text:`#f8f8f2`,muted:`#b6b8c8`,divider:`#3a3d4d`,primary:`#bd93f9`,onPrimary:`#1e1f29`,secondary:`#50fa7b`,warning:`#ffb86c`,error:`#ff5555`,syntax:{keyword:`#ff79c6`,string:`#f1fa8c`,number:`#bd93f9`,comment:`#7f8bbd`,function:`#50fa7b`,type:`#8be9fd`,property:`#f8f8f2`,operator:`#ff79c6`,heading:`#bd93f9`,link:`#8be9fd`},ansi:[`#21222c`,`#ff5555`,`#50fa7b`,`#f1fa8c`,`#bd93f9`,`#ff79c6`,`#8be9fd`,`#f8f8f2`,`#6272a4`,`#ff6e6e`,`#69ff94`,`#ffffa5`,`#d6acff`,`#ff92df`,`#a4ffff`,`#ffffff`]}),i({id:`one-dark`,label:`One Dark`,mode:`dark`,background:`#21252b`,paper:`#282c34`,text:`#dcdfe4`,muted:`#a0a6b1`,divider:`#3a3f4b`,primary:`#61afef`,onPrimary:`#14181e`,secondary:`#98c379`,warning:`#e5c07b`,error:`#e06c75`,syntax:{keyword:`#c678dd`,string:`#98c379`,number:`#d19a66`,comment:`#7f848e`,function:`#61afef`,type:`#e5c07b`,property:`#e06c75`,operator:`#56b6c2`,heading:`#e06c75`,link:`#56b6c2`},ansi:[`#282c34`,`#e06c75`,`#98c379`,`#e5c07b`,`#61afef`,`#c678dd`,`#56b6c2`,`#dcdfe4`,`#5c6370`,`#e06c75`,`#98c379`,`#e5c07b`,`#61afef`,`#c678dd`,`#56b6c2`,`#ffffff`]}),i({id:`monokai`,label:`Monokai`,mode:`dark`,background:`#1e1f1c`,paper:`#272822`,text:`#f8f8f2`,muted:`#b5b3a5`,divider:`#3e3d32`,primary:`#a6e22e`,onPrimary:`#1e1f1c`,secondary:`#66d9ef`,warning:`#e6db74`,error:`#f92672`,syntax:{keyword:`#f92672`,string:`#e6db74`,number:`#ae81ff`,comment:`#8f8b77`,function:`#a6e22e`,type:`#66d9ef`,property:`#f8f8f2`,operator:`#f92672`,heading:`#a6e22e`,link:`#66d9ef`},ansi:[`#272822`,`#f92672`,`#a6e22e`,`#f4bf75`,`#66d9ef`,`#ae81ff`,`#a1efe4`,`#f8f8f2`,`#75715e`,`#f92672`,`#a6e22e`,`#f4bf75`,`#66d9ef`,`#ae81ff`,`#a1efe4`,`#f9f8f5`]}),i({id:`nord`,label:`Nord`,mode:`dark`,background:`#272c36`,paper:`#2e3440`,text:`#eceff4`,muted:`#b4bccb`,divider:`#3b4252`,primary:`#88c0d0`,onPrimary:`#1d222b`,secondary:`#a3be8c`,warning:`#ebcb8b`,error:`#bf616a`,syntax:{keyword:`#81a1c1`,string:`#a3be8c`,number:`#b48ead`,comment:`#8590a6`,function:`#88c0d0`,type:`#8fbcbb`,property:`#d8dee9`,operator:`#81a1c1`,heading:`#88c0d0`,link:`#8fbcbb`},ansi:[`#3b4252`,`#bf616a`,`#a3be8c`,`#ebcb8b`,`#81a1c1`,`#b48ead`,`#88c0d0`,`#e5e9f0`,`#4c566a`,`#bf616a`,`#a3be8c`,`#ebcb8b`,`#81a1c1`,`#b48ead`,`#8fbcbb`,`#eceff4`]}),i({id:`tokyo-night`,label:`Tokyo Night`,mode:`dark`,background:`#16161e`,paper:`#1a1b26`,text:`#c0caf5`,muted:`#9aa5ce`,divider:`#292e42`,primary:`#7aa2f7`,onPrimary:`#16161e`,secondary:`#9ece6a`,warning:`#e0af68`,error:`#f7768e`,syntax:{keyword:`#bb9af7`,string:`#9ece6a`,number:`#ff9e64`,comment:`#7a82ad`,function:`#7aa2f7`,type:`#2ac3de`,property:`#73daca`,operator:`#89ddff`,heading:`#7aa2f7`,link:`#2ac3de`},ansi:[`#15161e`,`#f7768e`,`#9ece6a`,`#e0af68`,`#7aa2f7`,`#bb9af7`,`#7dcfff`,`#a9b1d6`,`#414868`,`#f7768e`,`#9ece6a`,`#e0af68`,`#7aa2f7`,`#bb9af7`,`#7dcfff`,`#c0caf5`]}),i({id:`catppuccin-mocha`,label:`Catppuccin Mocha`,mode:`dark`,background:`#181825`,paper:`#1e1e2e`,text:`#cdd6f4`,muted:`#a6adc8`,divider:`#313244`,primary:`#cba6f7`,onPrimary:`#1e1e2e`,secondary:`#a6e3a1`,warning:`#f9e2af`,error:`#f38ba8`,syntax:{keyword:`#cba6f7`,string:`#a6e3a1`,number:`#fab387`,comment:`#8a8fa8`,function:`#89b4fa`,type:`#f9e2af`,property:`#b4befe`,operator:`#89dceb`,heading:`#cba6f7`,link:`#89dceb`},ansi:[`#45475a`,`#f38ba8`,`#a6e3a1`,`#f9e2af`,`#89b4fa`,`#f5c2e7`,`#94e2d5`,`#bac2de`,`#585b70`,`#f38ba8`,`#a6e3a1`,`#f9e2af`,`#89b4fa`,`#f5c2e7`,`#94e2d5`,`#a6adc8`]}),i({id:`gruvbox-dark`,label:`Gruvbox Dark`,mode:`dark`,background:`#1d2021`,paper:`#282828`,text:`#ebdbb2`,muted:`#bdae93`,divider:`#3c3836`,primary:`#fabd2f`,onPrimary:`#1d2021`,secondary:`#b8bb26`,warning:`#fe8019`,error:`#fb4934`,syntax:{keyword:`#fb4934`,string:`#b8bb26`,number:`#d3869b`,comment:`#928374`,function:`#8ec07c`,type:`#fabd2f`,property:`#83a598`,operator:`#fe8019`,heading:`#fabd2f`,link:`#83a598`},ansi:[`#282828`,`#cc241d`,`#98971a`,`#d79921`,`#458588`,`#b16286`,`#689d6a`,`#a89984`,`#928374`,`#fb4934`,`#b8bb26`,`#fabd2f`,`#83a598`,`#d3869b`,`#8ec07c`,`#ebdbb2`]}),i({id:`solarized-dark`,label:`Solarized Dark`,mode:`dark`,background:`#00212b`,paper:`#002b36`,text:`#e0e6e4`,muted:`#a3b3b5`,divider:`#0e3b47`,primary:`#2aa1d9`,onPrimary:`#00212b`,secondary:`#9aa621`,warning:`#d0a21b`,error:`#ef5350`,syntax:{keyword:`#9aa621`,string:`#2fb3a8`,number:`#e3709d`,comment:`#7f969c`,function:`#3ea4e6`,type:`#d0a21b`,property:`#a6b5b7`,operator:`#9aa621`,heading:`#d0a21b`,link:`#3ea4e6`},ansi:[`#073642`,`#dc322f`,`#859900`,`#b58900`,`#268bd2`,`#d33682`,`#2aa198`,`#eee8d5`,`#586e75`,`#cb4b16`,`#93a1a1`,`#839496`,`#657b83`,`#6c71c4`,`#93a1a1`,`#fdf6e3`]}),i({id:`solarized-light`,label:`Solarized Light`,mode:`light`,background:`#eee8d5`,paper:`#fdf6e3`,text:`#33434a`,muted:`#58696f`,divider:`#ddd6c1`,primary:`#1f6fa8`,onPrimary:`#ffffff`,secondary:`#5f6b00`,warning:`#8a6400`,error:`#b8272a`,syntax:{keyword:`#5f6b00`,string:`#1d7d75`,number:`#b02a6f`,comment:`#6c7d80`,function:`#1f6fa8`,type:`#8a6400`,property:`#33434a`,operator:`#5f6b00`,heading:`#8a6400`,link:`#1f6fa8`},ansi:[`#073642`,`#b8272a`,`#5f6b00`,`#8a6400`,`#1f6fa8`,`#b02a6f`,`#1d7d75`,`#eee8d5`,`#586e75`,`#cb4b16`,`#586e75`,`#657b83`,`#839496`,`#6c71c4`,`#93a1a1`,`#fdf6e3`]}),i({id:`github-dark`,label:`GitHub Dark`,mode:`dark`,background:`#010409`,paper:`#0d1117`,text:`#e6edf3`,muted:`#9da7b3`,divider:`#30363d`,primary:`#58a6ff`,onPrimary:`#0d1117`,secondary:`#3fb950`,warning:`#d29922`,error:`#f85149`,syntax:{keyword:`#ff7b72`,string:`#a5d6ff`,number:`#79c0ff`,comment:`#8b949e`,function:`#d2a8ff`,type:`#ffa657`,property:`#79c0ff`,operator:`#ff7b72`,heading:`#79c0ff`,link:`#a5d6ff`},ansi:[`#484f58`,`#ff7b72`,`#3fb950`,`#d29922`,`#58a6ff`,`#bc8cff`,`#39c5cf`,`#b1bac4`,`#6e7681`,`#ffa198`,`#56d364`,`#e3b341`,`#79c0ff`,`#d2a8ff`,`#56d4dd`,`#ffffff`]}),i({id:`github-light`,label:`GitHub Light`,mode:`light`,background:`#f6f8fa`,paper:`#ffffff`,text:`#1f2328`,muted:`#59636e`,divider:`#d1d9e0`,primary:`#0969da`,onPrimary:`#ffffff`,secondary:`#1a7f37`,warning:`#9a6700`,error:`#cf222e`,syntax:{keyword:`#cf222e`,string:`#0a3069`,number:`#0550ae`,comment:`#59636e`,function:`#8250df`,type:`#953800`,property:`#0550ae`,operator:`#cf222e`,heading:`#0550ae`,link:`#0a3069`},ansi:[`#24292f`,`#cf222e`,`#116329`,`#4d2d00`,`#0969da`,`#8250df`,`#1b7c83`,`#6e7781`,`#57606a`,`#a40e26`,`#1a7f37`,`#633c01`,`#218bff`,`#a475f9`,`#3192aa`,`#8c959f`]})],o={dark:`piagent-dark`,light:`piagent-light`},s=e=>a.find(t=>t.id===e),c=t(),l=(0,r.createContext)(null);function u({value:e,children:t}){return(0,c.jsx)(l.Provider,{value:e,children:t})}function d(){let e=(0,r.useContext)(l);if(!e)throw Error(`Piagent UI preferences are missing`);return e}function f(){let{themeId:e,colorMode:t}=d();return s(e)??s(o[t])}function p(e,t,n){return e===`vi`?t:n}export{o as a,d as i,p as n,a as o,f as r,s,u as t};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Dn as t,Fn as n}from"./vendor-CSDKB7mU.js";var r=e(n(),1),i=e=>e,a=[i({id:`piagent-dark`,label:`Piagent Dark`,mode:`dark`,background:`#09090b`,paper:`#111114`,text:`#ededf0`,muted:`#a3a3ad`,divider:`#232329`,primary:`#d8ff7a`,onPrimary:`#111300`,secondary:`#8be9c8`,warning:`#efba63`,error:`#ff7f86`,syntax:{keyword:`#d8ff7a`,string:`#8be9c8`,number:`#efba63`,comment:`#7d808a`,function:`#9ecbff`,type:`#f0a6ff`,property:`#e6e6dc`,operator:`#c5c7cc`,heading:`#d8ff7a`,link:`#8be9c8`},ansi:[`#1b1c20`,`#ff7f86`,`#b9e769`,`#efba63`,`#82aaff`,`#f0a6ff`,`#8be9c8`,`#d6d6d0`,`#5c5f68`,`#ff9ea3`,`#d8ff7a`,`#ffd58a`,`#a8c5ff`,`#f6c4ff`,`#b3f5df`,`#f4f4ef`]}),i({id:`piagent-light`,label:`Piagent Light`,mode:`light`,background:`#f5f6f0`,paper:`#ffffff`,text:`#18181b`,muted:`#5b5b63`,divider:`#e4e4df`,primary:`#627400`,onPrimary:`#ffffff`,secondary:`#14775f`,warning:`#9a5b00`,error:`#c22f3a`,syntax:{keyword:`#5a6b00`,string:`#14775f`,number:`#9a5b00`,comment:`#7a8072`,function:`#1f5fbf`,type:`#8a3fa0`,property:`#1c2018`,operator:`#4a4f45`,heading:`#5a6b00`,link:`#14775f`},ansi:[`#1c2018`,`#c22f3a`,`#4d7a00`,`#9a5b00`,`#1f5fbf`,`#8a3fa0`,`#14775f`,`#d6d8d0`,`#62685c`,`#e04a55`,`#627400`,`#b87a12`,`#3a7be0`,`#a85ac0`,`#1f9a7c`,`#f5f6f0`]}),i({id:`dracula`,label:`Dracula`,mode:`dark`,background:`#21222c`,paper:`#282a36`,text:`#f8f8f2`,muted:`#b6b8c8`,divider:`#3a3d4d`,primary:`#bd93f9`,onPrimary:`#1e1f29`,secondary:`#50fa7b`,warning:`#ffb86c`,error:`#ff5555`,syntax:{keyword:`#ff79c6`,string:`#f1fa8c`,number:`#bd93f9`,comment:`#7f8bbd`,function:`#50fa7b`,type:`#8be9fd`,property:`#f8f8f2`,operator:`#ff79c6`,heading:`#bd93f9`,link:`#8be9fd`},ansi:[`#21222c`,`#ff5555`,`#50fa7b`,`#f1fa8c`,`#bd93f9`,`#ff79c6`,`#8be9fd`,`#f8f8f2`,`#6272a4`,`#ff6e6e`,`#69ff94`,`#ffffa5`,`#d6acff`,`#ff92df`,`#a4ffff`,`#ffffff`]}),i({id:`one-dark`,label:`One Dark`,mode:`dark`,background:`#21252b`,paper:`#282c34`,text:`#dcdfe4`,muted:`#a0a6b1`,divider:`#3a3f4b`,primary:`#61afef`,onPrimary:`#14181e`,secondary:`#98c379`,warning:`#e5c07b`,error:`#e06c75`,syntax:{keyword:`#c678dd`,string:`#98c379`,number:`#d19a66`,comment:`#7f848e`,function:`#61afef`,type:`#e5c07b`,property:`#e06c75`,operator:`#56b6c2`,heading:`#e06c75`,link:`#56b6c2`},ansi:[`#282c34`,`#e06c75`,`#98c379`,`#e5c07b`,`#61afef`,`#c678dd`,`#56b6c2`,`#dcdfe4`,`#5c6370`,`#e06c75`,`#98c379`,`#e5c07b`,`#61afef`,`#c678dd`,`#56b6c2`,`#ffffff`]}),i({id:`monokai`,label:`Monokai`,mode:`dark`,background:`#1e1f1c`,paper:`#272822`,text:`#f8f8f2`,muted:`#b5b3a5`,divider:`#3e3d32`,primary:`#a6e22e`,onPrimary:`#1e1f1c`,secondary:`#66d9ef`,warning:`#e6db74`,error:`#f92672`,syntax:{keyword:`#f92672`,string:`#e6db74`,number:`#ae81ff`,comment:`#8f8b77`,function:`#a6e22e`,type:`#66d9ef`,property:`#f8f8f2`,operator:`#f92672`,heading:`#a6e22e`,link:`#66d9ef`},ansi:[`#272822`,`#f92672`,`#a6e22e`,`#f4bf75`,`#66d9ef`,`#ae81ff`,`#a1efe4`,`#f8f8f2`,`#75715e`,`#f92672`,`#a6e22e`,`#f4bf75`,`#66d9ef`,`#ae81ff`,`#a1efe4`,`#f9f8f5`]}),i({id:`nord`,label:`Nord`,mode:`dark`,background:`#272c36`,paper:`#2e3440`,text:`#eceff4`,muted:`#b4bccb`,divider:`#3b4252`,primary:`#88c0d0`,onPrimary:`#1d222b`,secondary:`#a3be8c`,warning:`#ebcb8b`,error:`#bf616a`,syntax:{keyword:`#81a1c1`,string:`#a3be8c`,number:`#b48ead`,comment:`#8590a6`,function:`#88c0d0`,type:`#8fbcbb`,property:`#d8dee9`,operator:`#81a1c1`,heading:`#88c0d0`,link:`#8fbcbb`},ansi:[`#3b4252`,`#bf616a`,`#a3be8c`,`#ebcb8b`,`#81a1c1`,`#b48ead`,`#88c0d0`,`#e5e9f0`,`#4c566a`,`#bf616a`,`#a3be8c`,`#ebcb8b`,`#81a1c1`,`#b48ead`,`#8fbcbb`,`#eceff4`]}),i({id:`tokyo-night`,label:`Tokyo Night`,mode:`dark`,background:`#16161e`,paper:`#1a1b26`,text:`#c0caf5`,muted:`#9aa5ce`,divider:`#292e42`,primary:`#7aa2f7`,onPrimary:`#16161e`,secondary:`#9ece6a`,warning:`#e0af68`,error:`#f7768e`,syntax:{keyword:`#bb9af7`,string:`#9ece6a`,number:`#ff9e64`,comment:`#7a82ad`,function:`#7aa2f7`,type:`#2ac3de`,property:`#73daca`,operator:`#89ddff`,heading:`#7aa2f7`,link:`#2ac3de`},ansi:[`#15161e`,`#f7768e`,`#9ece6a`,`#e0af68`,`#7aa2f7`,`#bb9af7`,`#7dcfff`,`#a9b1d6`,`#414868`,`#f7768e`,`#9ece6a`,`#e0af68`,`#7aa2f7`,`#bb9af7`,`#7dcfff`,`#c0caf5`]}),i({id:`catppuccin-mocha`,label:`Catppuccin Mocha`,mode:`dark`,background:`#181825`,paper:`#1e1e2e`,text:`#cdd6f4`,muted:`#a6adc8`,divider:`#313244`,primary:`#cba6f7`,onPrimary:`#1e1e2e`,secondary:`#a6e3a1`,warning:`#f9e2af`,error:`#f38ba8`,syntax:{keyword:`#cba6f7`,string:`#a6e3a1`,number:`#fab387`,comment:`#8a8fa8`,function:`#89b4fa`,type:`#f9e2af`,property:`#b4befe`,operator:`#89dceb`,heading:`#cba6f7`,link:`#89dceb`},ansi:[`#45475a`,`#f38ba8`,`#a6e3a1`,`#f9e2af`,`#89b4fa`,`#f5c2e7`,`#94e2d5`,`#bac2de`,`#585b70`,`#f38ba8`,`#a6e3a1`,`#f9e2af`,`#89b4fa`,`#f5c2e7`,`#94e2d5`,`#a6adc8`]}),i({id:`gruvbox-dark`,label:`Gruvbox Dark`,mode:`dark`,background:`#1d2021`,paper:`#282828`,text:`#ebdbb2`,muted:`#bdae93`,divider:`#3c3836`,primary:`#fabd2f`,onPrimary:`#1d2021`,secondary:`#b8bb26`,warning:`#fe8019`,error:`#fb4934`,syntax:{keyword:`#fb4934`,string:`#b8bb26`,number:`#d3869b`,comment:`#928374`,function:`#8ec07c`,type:`#fabd2f`,property:`#83a598`,operator:`#fe8019`,heading:`#fabd2f`,link:`#83a598`},ansi:[`#282828`,`#cc241d`,`#98971a`,`#d79921`,`#458588`,`#b16286`,`#689d6a`,`#a89984`,`#928374`,`#fb4934`,`#b8bb26`,`#fabd2f`,`#83a598`,`#d3869b`,`#8ec07c`,`#ebdbb2`]}),i({id:`solarized-dark`,label:`Solarized Dark`,mode:`dark`,background:`#00212b`,paper:`#002b36`,text:`#e0e6e4`,muted:`#a3b3b5`,divider:`#0e3b47`,primary:`#2aa1d9`,onPrimary:`#00212b`,secondary:`#9aa621`,warning:`#d0a21b`,error:`#ef5350`,syntax:{keyword:`#9aa621`,string:`#2fb3a8`,number:`#e3709d`,comment:`#7f969c`,function:`#3ea4e6`,type:`#d0a21b`,property:`#a6b5b7`,operator:`#9aa621`,heading:`#d0a21b`,link:`#3ea4e6`},ansi:[`#073642`,`#dc322f`,`#859900`,`#b58900`,`#268bd2`,`#d33682`,`#2aa198`,`#eee8d5`,`#586e75`,`#cb4b16`,`#93a1a1`,`#839496`,`#657b83`,`#6c71c4`,`#93a1a1`,`#fdf6e3`]}),i({id:`solarized-light`,label:`Solarized Light`,mode:`light`,background:`#eee8d5`,paper:`#fdf6e3`,text:`#33434a`,muted:`#58696f`,divider:`#ddd6c1`,primary:`#1f6fa8`,onPrimary:`#ffffff`,secondary:`#5f6b00`,warning:`#8a6400`,error:`#b8272a`,syntax:{keyword:`#5f6b00`,string:`#1d7d75`,number:`#b02a6f`,comment:`#6c7d80`,function:`#1f6fa8`,type:`#8a6400`,property:`#33434a`,operator:`#5f6b00`,heading:`#8a6400`,link:`#1f6fa8`},ansi:[`#073642`,`#b8272a`,`#5f6b00`,`#8a6400`,`#1f6fa8`,`#b02a6f`,`#1d7d75`,`#eee8d5`,`#586e75`,`#cb4b16`,`#586e75`,`#657b83`,`#839496`,`#6c71c4`,`#93a1a1`,`#fdf6e3`]}),i({id:`github-dark`,label:`GitHub Dark`,mode:`dark`,background:`#010409`,paper:`#0d1117`,text:`#e6edf3`,muted:`#9da7b3`,divider:`#30363d`,primary:`#58a6ff`,onPrimary:`#0d1117`,secondary:`#3fb950`,warning:`#d29922`,error:`#f85149`,syntax:{keyword:`#ff7b72`,string:`#a5d6ff`,number:`#79c0ff`,comment:`#8b949e`,function:`#d2a8ff`,type:`#ffa657`,property:`#79c0ff`,operator:`#ff7b72`,heading:`#79c0ff`,link:`#a5d6ff`},ansi:[`#484f58`,`#ff7b72`,`#3fb950`,`#d29922`,`#58a6ff`,`#bc8cff`,`#39c5cf`,`#b1bac4`,`#6e7681`,`#ffa198`,`#56d364`,`#e3b341`,`#79c0ff`,`#d2a8ff`,`#56d4dd`,`#ffffff`]}),i({id:`github-light`,label:`GitHub Light`,mode:`light`,background:`#f6f8fa`,paper:`#ffffff`,text:`#1f2328`,muted:`#59636e`,divider:`#d1d9e0`,primary:`#0969da`,onPrimary:`#ffffff`,secondary:`#1a7f37`,warning:`#9a6700`,error:`#cf222e`,syntax:{keyword:`#cf222e`,string:`#0a3069`,number:`#0550ae`,comment:`#59636e`,function:`#8250df`,type:`#953800`,property:`#0550ae`,operator:`#cf222e`,heading:`#0550ae`,link:`#0a3069`},ansi:[`#24292f`,`#cf222e`,`#116329`,`#4d2d00`,`#0969da`,`#8250df`,`#1b7c83`,`#6e7781`,`#57606a`,`#a40e26`,`#1a7f37`,`#633c01`,`#218bff`,`#a475f9`,`#3192aa`,`#8c959f`]})],o={dark:`piagent-dark`,light:`piagent-light`},s=e=>a.find(t=>t.id===e),c=t(),l=(0,r.createContext)(null);function u({value:e,children:t}){return(0,c.jsx)(l.Provider,{value:e,children:t})}function d(){let e=(0,r.useContext)(l);if(!e)throw Error(`Piagent UI preferences are missing`);return e}function f(){let{themeId:e,colorMode:t}=d();return s(e)??s(o[t])}function p(e,t,n){return e===`vi`?t:n}export{o as a,d as i,p as n,a as o,f as r,s,u as t};