blade-code 0.10.8 → 0.10.10

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 (112) hide show
  1. package/dist/blade.js +3 -3
  2. package/dist/{chunk-nymm525r.js → chunk-095x2ykj.js} +1 -1
  3. package/dist/{chunk-wmnszjmv.js → chunk-2mzcxq6c.js} +2 -2
  4. package/dist/{chunk-66hb7kxm.js → chunk-363pgv1e.js} +2 -2
  5. package/dist/chunk-3aqdjrtm.js +2 -0
  6. package/dist/chunk-3n4m3pcy.js +1 -0
  7. package/dist/{chunk-d0g4t8fw.js → chunk-3v0ay0sf.js} +1 -1
  8. package/dist/{chunk-8gnfj89a.js → chunk-4dq9y7zn.js} +2 -2
  9. package/dist/chunk-4zs5r4n4.js +1 -0
  10. package/dist/{chunk-kagpk2x5.js → chunk-576pdgtm.js} +2 -2
  11. package/dist/{chunk-y4c3wwpa.js → chunk-5s123nbs.js} +1 -1
  12. package/dist/chunk-632rgzcf.js +2 -0
  13. package/dist/{chunk-a8h3fymk.js → chunk-6kwv8ph0.js} +2 -2
  14. package/dist/{chunk-m2xrx1je.js → chunk-732n8xj6.js} +2 -2
  15. package/dist/{chunk-8gcvpmwk.js → chunk-74shfpve.js} +1 -1
  16. package/dist/chunk-7hjjjkj0.js +1 -0
  17. package/dist/chunk-7mhkm3x7.js +6 -0
  18. package/dist/{chunk-cbpqcdga.js → chunk-7wjy6kgt.js} +1 -1
  19. package/dist/{chunk-eq2qj9ja.js → chunk-8j01ssaf.js} +1 -1
  20. package/dist/chunk-9cnm1hgp.js +1 -0
  21. package/dist/chunk-9e5z64ap.js +1 -0
  22. package/dist/chunk-9tnaads5.js +2 -0
  23. package/dist/{chunk-33ave20b.js → chunk-afkhzdfc.js} +1 -1
  24. package/dist/{chunk-b5szbtmp.js → chunk-ah97bmns.js} +2 -2
  25. package/dist/chunk-b6gknm33.js +1 -0
  26. package/dist/chunk-bxp1w7sh.js +200 -0
  27. package/dist/chunk-c7201g75.js +3 -0
  28. package/dist/{chunk-7zsyejr1.js → chunk-cfwnbrrd.js} +12 -12
  29. package/dist/{chunk-yfs9tq3y.js → chunk-d600wn06.js} +2 -2
  30. package/dist/{chunk-4h9ff923.js → chunk-dpt56hah.js} +1 -1
  31. package/dist/{chunk-fj8v7pep.js → chunk-dsj62dcg.js} +1 -1
  32. package/dist/{chunk-h421wzbm.js → chunk-egmwj6xg.js} +2 -2
  33. package/dist/{chunk-s9aj3p11.js → chunk-epek6vr2.js} +1 -1
  34. package/dist/chunk-f4z3gkbs.js +2 -0
  35. package/dist/chunk-fvrmjhz5.js +1 -0
  36. package/dist/chunk-fvy56ajf.js +1 -0
  37. package/dist/{chunk-954vmnrn.js → chunk-g11hq0e5.js} +1 -1
  38. package/dist/{chunk-8h0yxh6y.js → chunk-g1qpzyt3.js} +1 -1
  39. package/dist/{chunk-w0nscjd2.js → chunk-gav4hxcv.js} +2 -2
  40. package/dist/{chunk-van4ysq6.js → chunk-ggq4y248.js} +300 -279
  41. package/dist/{chunk-vgp8m9fg.js → chunk-gvc0qqk4.js} +2 -2
  42. package/dist/{chunk-vsg8f0e6.js → chunk-heqs3xan.js} +1 -1
  43. package/dist/chunk-hetayg68.js +10 -0
  44. package/dist/{chunk-cf8e7e92.js → chunk-hfv5gcqj.js} +54 -20
  45. package/dist/chunk-hveqdgt6.js +1 -0
  46. package/dist/chunk-hxp5qs1x.js +1 -0
  47. package/dist/{chunk-2thg3fq1.js → chunk-j42jswx0.js} +1 -1
  48. package/dist/chunk-jw8gb53m.js +1 -0
  49. package/dist/{chunk-xmcsn7y0.js → chunk-ktf3bpmw.js} +2 -2
  50. package/dist/chunk-kvx3sb3z.js +2 -0
  51. package/dist/{chunk-rxqft6td.js → chunk-mhne9y2k.js} +2 -2
  52. package/dist/{chunk-fxpq9nh6.js → chunk-mtk2tf9n.js} +1 -1
  53. package/dist/chunk-nmmj1x0c.js +1 -0
  54. package/dist/chunk-p4zt7ts9.js +2 -0
  55. package/dist/chunk-r76wc1cn.js +2 -0
  56. package/dist/chunk-rhw2zkq8.js +6 -0
  57. package/dist/{chunk-v8pq6qmv.js → chunk-s5666ta0.js} +2 -2
  58. package/dist/{chunk-zvk3g177.js → chunk-t9aggrv8.js} +1 -1
  59. package/dist/chunk-tkqrhxqr.js +1 -0
  60. package/dist/chunk-ttncpgr6.js +1 -0
  61. package/dist/{chunk-nhc49pan.js → chunk-vdj00rsv.js} +2 -2
  62. package/dist/{chunk-7hbw6q6d.js → chunk-vmq248m7.js} +1 -1
  63. package/dist/chunk-wnqybbry.js +2 -0
  64. package/dist/{chunk-r7tsa2zv.js → chunk-xx1d9kfd.js} +1 -1
  65. package/dist/{chunk-8gcg2z3y.js → chunk-y56s2qww.js} +2 -2
  66. package/dist/{chunk-h28ptrrt.js → chunk-ybvdac8k.js} +1 -1
  67. package/dist/chunk-z5zcwwfm.js +1 -0
  68. package/dist/{chunk-pv9sw79c.js → chunk-z8c5rhdh.js} +2 -2
  69. package/dist/{chunk-j4tttsaz.js → chunk-zepqp80m.js} +2 -2
  70. package/dist/{chunk-g00wj2we.js → chunk-zf183j2y.js} +1 -1
  71. package/dist/{chunk-xa05phpw.js → chunk-zyf1r2j3.js} +3 -3
  72. package/dist/web/assets/ChatView-DdX4BvAo.js +7 -0
  73. package/dist/web/assets/{CodeBlockHighlighter-EgdsVoMQ.js → CodeBlockHighlighter-DBw81YZa.js} +1 -1
  74. package/dist/web/assets/{FilePreview-xicd9-Sl.js → FilePreview-Di-mSDMs.js} +2 -2
  75. package/dist/web/assets/{MarkdownRenderer-DBSjC_z3.js → MarkdownRenderer-CxSfwebU.js} +3 -3
  76. package/dist/web/assets/SettingsModal-CoBMb8of.js +5 -0
  77. package/dist/web/assets/{TaskSwitcher-DXcj0iJ_.js → TaskSwitcher-BmS-DA4i.js} +1 -1
  78. package/dist/web/assets/{TerminalPanel-DWVY-Elm.js → TerminalPanel-BPruynbV.js} +1 -1
  79. package/dist/web/assets/index-BC7ygRH_.css +1 -0
  80. package/dist/web/assets/index-Bx7HzeXs.js +32 -0
  81. package/dist/web/assets/{vendor-icons-Cv18Q6rW.js → vendor-icons-ICv1v-tf.js} +71 -66
  82. package/dist/web/index.html +3 -3
  83. package/package.json +1 -1
  84. package/dist/chunk-1w6azndv.js +0 -1
  85. package/dist/chunk-2gwaqpge.js +0 -1
  86. package/dist/chunk-2pjd4cys.js +0 -1
  87. package/dist/chunk-2zn5en0w.js +0 -1
  88. package/dist/chunk-3w1z6fwm.js +0 -1
  89. package/dist/chunk-43x4qbvt.js +0 -1
  90. package/dist/chunk-52csdk21.js +0 -3
  91. package/dist/chunk-6j8wgp2s.js +0 -2
  92. package/dist/chunk-6vsszvgg.js +0 -2
  93. package/dist/chunk-7evtr0yr.js +0 -10
  94. package/dist/chunk-8sfycn3y.js +0 -194
  95. package/dist/chunk-bxm2hq0m.js +0 -1
  96. package/dist/chunk-c8da4b3d.js +0 -1
  97. package/dist/chunk-kvnwhwx3.js +0 -1
  98. package/dist/chunk-nz57y1ad.js +0 -6
  99. package/dist/chunk-p2m56new.js +0 -2
  100. package/dist/chunk-qgp08qmz.js +0 -6
  101. package/dist/chunk-rkvfsx8e.js +0 -2
  102. package/dist/chunk-senkwdh6.js +0 -2
  103. package/dist/chunk-v1c58sm6.js +0 -1
  104. package/dist/chunk-w26jhcj9.js +0 -1
  105. package/dist/chunk-x6wgh726.js +0 -1
  106. package/dist/chunk-ymzcxryf.js +0 -1
  107. package/dist/chunk-zknv3d6y.js +0 -2
  108. package/dist/chunk-zp4x2mwj.js +0 -1
  109. package/dist/web/assets/ChatView-Fqy97qw9.js +0 -7
  110. package/dist/web/assets/SettingsModal-Bkh5rMAJ.js +0 -5
  111. package/dist/web/assets/index-Bi5ijAQP.css +0 -1
  112. package/dist/web/assets/index-CxEh32hc.js +0 -32
@@ -1,6 +0,0 @@
1
- import{dc as I}from"./chunk-p2m56new.js";import{wc as A}from"./chunk-8gcg2z3y.js";import{Id as h}from"./chunk-8gnfj89a.js";import{ke as f,oe as T,pe as w,qe as M,re as P,ue as k,ve as E}from"./chunk-yfs9tq3y.js";import{Ce as p,De as y,we as c,xe as S,ze as n}from"./chunk-zknv3d6y.js";import{Ke as O}from"./chunk-y4c3wwpa.js";import{promises as R}from"node:fs";import C from"node:path";var U=["systemPrompt","appendSystemPrompt","initialMessage","resumeSessionId","forkSession","allowedTools","disallowedTools","mcpConfigPaths","strictMcpConfig","model","addDirs","outputFormat","inputFormat","print","includePartialMessages","replayUserMessages","agentsConfig","settingSources"],x=new Set([...Object.keys(f),...U]),m=n.Number({exclusiveMinimum:0}),e=n.String({minLength:1}),r=n.Array(n.String()),B=n.Object({currentModelId:n.Optional(n.String()),modelProviders:n.Optional(n.Record(e,n.Object({name:e,baseUrl:e,wireApi:p(["openai-completions","anthropic-messages"]),apiKeyEnv:n.Optional(e)}))),models:n.Optional(n.Array(n.Object({id:e,displayName:n.Optional(e),provider:e,model:e,overrides:n.Optional(n.Object({baseUrl:n.Optional(n.String()),temperature:n.Optional(n.Number()),maxOutputTokens:n.Optional(m),timeout:n.Optional(m),streamIdleTimeout:n.Optional(n.Number({minimum:1000})),apiVersion:n.Optional(n.String()),customHeaders:n.Optional(n.Record(n.String(),n.String())),maxRetries:n.Optional(n.Integer({minimum:0})),enablePromptCaching:n.Optional(n.Boolean())})),fallbackModels:n.Optional(n.Array(n.Object({provider:e,model:e})))}))),temperature:n.Optional(n.Number()),maxOutputTokens:n.Optional(m),stream:n.Optional(n.Boolean()),topP:n.Optional(n.Number()),topK:n.Optional(n.Number()),timeout:n.Optional(m),theme:n.Optional(n.String()),uiTheme:n.Optional(p(["light","dark","system"])),language:n.Optional(n.String()),fontSize:n.Optional(m),autoSaveSessions:n.Optional(n.Boolean()),notifyBuild:n.Optional(n.Boolean()),notifyErrors:n.Optional(n.Boolean()),notifySounds:n.Optional(n.Boolean()),privacyTelemetry:n.Optional(n.Boolean()),privacyCrash:n.Optional(n.Boolean()),debug:n.Optional(n.Union([n.Boolean(),n.String()])),mcpEnabled:n.Optional(n.Boolean()),mcpServers:n.Optional(n.Record(n.String(),n.Record(n.String(),n.Unknown()))),lspServers:n.Optional(n.Record(e,n.Object({command:e,args:n.Optional(n.Array(n.String())),extensionToLanguage:n.Record(e,e),env:n.Optional(n.Record(n.String(),n.String())),initializationOptions:n.Optional(n.Unknown()),settings:n.Optional(n.Unknown()),enabled:n.Optional(n.Boolean()),priority:n.Optional(n.Integer()),startupTimeout:n.Optional(n.Integer({minimum:100})),shutdownTimeout:n.Optional(n.Integer({minimum:100})),requestTimeout:n.Optional(n.Integer({minimum:100})),diagnosticWaitTimeout:n.Optional(n.Integer({minimum:0})),maxRestarts:n.Optional(n.Integer({minimum:0,maximum:10}))}))),permissionMode:n.Optional(n.Enum(c)),maxTurns:n.Optional(n.Integer({minimum:-1,maximum:y})),maxConcurrentTasks:n.Optional(n.Integer({minimum:T,maximum:w})),maxQueuedTasks:n.Optional(n.Integer({minimum:M,maximum:P})),systemPrompt:n.Optional(n.String()),appendSystemPrompt:n.Optional(n.String()),initialMessage:n.Optional(n.String()),resumeSessionId:n.Optional(n.String()),forkSession:n.Optional(n.Boolean()),allowedTools:n.Optional(n.Array(e)),disallowedTools:n.Optional(n.Array(e)),mcpConfigPaths:n.Optional(n.Array(e)),strictMcpConfig:n.Optional(n.Boolean()),model:n.Optional(e),addDirs:n.Optional(n.Array(e)),outputFormat:n.Optional(p(["text","json","stream-json","jsonl"])),inputFormat:n.Optional(p(["text","stream-json"])),print:n.Optional(n.Boolean()),includePartialMessages:n.Optional(n.Boolean()),replayUserMessages:n.Optional(n.Boolean()),agentsConfig:n.Optional(n.String()),settingSources:n.Optional(n.String()),permissions:n.Optional(n.Object({allow:n.Optional(r),ask:n.Optional(r),deny:n.Optional(r)})),env:n.Optional(n.Record(n.String(),n.String())),hooks:n.Optional(n.Record(n.String(),n.Unknown())),enabledPlugins:n.Optional(n.Record(e,n.Boolean())),pluginSourcePolicy:n.Optional(n.Object({restrictToAllowedSources:n.Optional(n.Boolean()),requireGitCommitSha:n.Optional(n.Boolean()),allowedGitHosts:n.Optional(n.Array(e)),allowedMarketplaces:n.Optional(n.Array(e)),allowedLocalRoots:n.Optional(n.Array(e))})),disableAllHooks:n.Optional(n.Boolean())}),_=[["systemPrompt","systemPrompt"],["appendSystemPrompt","appendSystemPrompt"],["initialMessage","initialMessage"],["resumeSessionId","sessionId"],["forkSession","forkSession"],["allowedTools","allowedTools"],["disallowedTools","disallowedTools"],["mcpConfigPaths","mcpConfig"],["strictMcpConfig","strictMcpConfig"],["model","model"],["addDirs","addDir"],["outputFormat","outputFormat"],["inputFormat","inputFormat"],["print","print"],["includePartialMessages","includePartialMessages"],["replayUserMessages","replayUserMessages"],["agentsConfig","agents"],["settingSources","settingSources"],["permissionMode","permissionMode"],["maxTurns","maxTurns"],["maxConcurrentTasks","maxConcurrentTasks"],["maxQueuedTasks","maxQueuedTasks"]];function d(o,i){let t;try{t=JSON.parse(o)}catch(s){let a=s instanceof Error?`: ${s.message}`:"";throw Error(`Invalid JSON provided to --settings (${i})${a}`)}if(!t||typeof t!=="object"||Array.isArray(t))throw Error("--settings must contain a JSON object");for(let s of Object.keys(t))if(!x.has(s))throw Error(`Unknown --settings field: ${s}`);let l=S(B,t);if(!l.success){let s=l.error.issues.map((a)=>`${a.path.join(".")||"settings"}: ${a.message}`).join("; ");throw Error(`Invalid --settings value: ${s}`)}return l.data}async function N(o){if(o===void 0)return;let i=o.trim();if(!i)throw Error("--settings requires a JSON object or file path");if(i.startsWith("{"))return d(i,"inline JSON");let t=C.resolve(O(),i),l;try{l=await R.readFile(t,"utf8")}catch(s){let a=s instanceof Error?`: ${s.message}`:"";throw Error(`Unable to read --settings file ${t}${a}`)}return d(l,t)}function b(o,i){if(!i)return;let t=i;for(let[l,s]of _){if(l==="permissionMode"&&o.yolo===!0)continue;if(o[s]===void 0&&t[l]!==void 0)o[s]=t[l]}}var u=h("General"),Z=(o)=>{if(o.yolo){if(o.permissionMode&&o.permissionMode!=="yolo")throw Error("Cannot use both --yolo and --permission-mode with different values");o.permissionMode="yolo"}if(Array.isArray(o.allowedTools))o.allowedTools=o.allowedTools.flatMap((i)=>i.split(",").map((t)=>t.trim()).filter((t)=>t.length>0));if(Array.isArray(o.disallowedTools))o.disallowedTools=o.disallowedTools.flatMap((i)=>i.split(",").map((t)=>t.trim()).filter((t)=>t.length>0));if(Array.isArray(o.allowedTools)&&Array.isArray(o.disallowedTools)){let i=o.allowedTools.filter((t)=>o.disallowedTools.includes(t));if(i.length>0)throw Error(`Tools cannot be both allowed and disallowed: ${i.join(", ")}`)}},g=async(o)=>{let i=await N(typeof o.settings==="string"?o.settings:void 0);if(b(o,i),typeof o.agents==="string")I(o.agents);F(o);try{let l=await k.getInstance().initialize(i),s=E(l,o);if(A().config.actions.setConfig(s),o.debug)u.info("[CLI] 配置已加载到 Store")}catch(t){u.error("[CLI] [FAIL] 配置初始化失败",t instanceof Error?t.message:t),console.error(`
2
- [FAIL] 配置初始化失败
3
- `),console.error("原因:",t instanceof Error?t.message:"未知错误"),console.error(`
4
- 请检查:`),console.error(" 1. 配置文件格式是否正确 (~/.blade/config.json)"),console.error(" 2. 是否需要运行 blade 进行首次配置"),console.error(` 3. 配置文件权限是否正确
5
- `),process.exit(1)}};function F(o){if(o.continue&&o.resume)throw Error("Cannot use both --continue and --resume flags simultaneously");if(o.forkSession&&!o.continue&&!o.resume)throw Error("--fork-session requires --resume or --continue");if(o.sessionId&&(o.continue||o.resume)&&!o.forkSession)throw Error("--session-id can only be combined with --resume or --continue when --fork-session is set")}var v=(o)=>{if(o.jsonSchema&&o.outputSchema)throw Error("--json-schema cannot be combined with --output-schema");if((o.jsonSchema||o.outputSchema)&&!o.print&&!o.headless)throw Error("--json-schema and --output-schema can only be used with --print or --headless");if(o.outputFormat&&o.outputFormat!=="text"&&!o.print&&!o.headless)throw Error("--output-format can only be used with --print or --headless");if(o.headless&&o.outputFormat&&!["text","jsonl"].includes(o.outputFormat))throw Error(`--headless only supports --output-format text|jsonl, but got "${o.outputFormat}". Use --print for json|stream-json support.`);if(o.print&&o.outputFormat&&!["text","json","stream-json"].includes(o.outputFormat))throw Error(`--print only supports --output-format text|json|stream-json, but got "${o.outputFormat}". Use --headless for jsonl support.`);if(o.inputFormat==="stream-json"&&o.print)u.warn("[WARN] Warning: stream-json input format may not work as expected with --print")};
6
- export{Z as ac,g as bc,v as cc};
@@ -1,2 +0,0 @@
1
- import{Ad as W}from"./chunk-4h9ff923.js";import{Ce as H,De as V,xe as F,ze as k}from"./chunk-zknv3d6y.js";var $=k.String({minLength:1,maxLength:128,pattern:"^[A-Za-z0-9][A-Za-z0-9_-]*$"}),Q=k.Array(k.String({minLength:1,maxLength:200,pattern:".*\\S.*"}),{maxItems:128}),b=k.Object({description:k.String({minLength:1,maxLength:4096,pattern:".*\\S.*"}),prompt:k.String({minLength:1,maxLength:1e5,pattern:".*\\S.*"}),tools:k.Optional(Q),disallowedTools:k.Optional(Q),model:k.Optional(k.String({minLength:1,maxLength:200,pattern:".*\\S.*"})),permissionMode:k.Optional(H(["default","acceptEdits","dontAsk","bypassPermissions","plan","ignore"])),maxTurns:k.Optional(k.Integer({minimum:1,maximum:V})),isolation:k.Optional(H(["none","worktree"]))},{additionalProperties:!1});function O(Y){let w;try{w=JSON.parse(Y)}catch{throw Error("Invalid JSON provided to --agents")}if(w===null||Array.isArray(w)||typeof w!=="object")throw Error("--agents must be a JSON object");let I=Object.entries(w);if(I.length>64)throw Error("--agents supports at most 64 definitions");return I.map(([z,Z])=>{if(!F($,z).success)throw Error(`Invalid --agents name "${z}": use letters, numbers, hyphens, or underscores`);let K=F(b,Z);if(!K.success)throw Error(`Invalid --agents definition for "${z}"`);let q=K.data;return{name:z,description:q.description.trim(),systemPrompt:q.prompt.trim(),tools:q.tools?[...new Set(q.tools.map((B)=>B.trim()))]:void 0,disallowedTools:q.disallowedTools?[...new Set(q.disallowedTools.map((B)=>B.trim()))]:void 0,model:q.model?.trim(),permissionMode:q.permissionMode===void 0?void 0:W(q.permissionMode),maxTurns:q.maxTurns,isolation:q.isolation,source:"flag"}})}
2
- export{O as dc};
@@ -1,6 +0,0 @@
1
- import{m as Gq,n as Vq,o as Xq,p as Bq,q as Kq}from"./chunk-g00wj2we.js";import{s as $q}from"./chunk-8h0yxh6y.js";import{F as a,H as o,I as n,K as y,L as t}from"./chunk-van4ysq6.js";import"./chunk-s9aj3p11.js";import{Ba as i,Ea as r,Pa as s}from"./chunk-8sfycn3y.js";import"./chunk-nymm525r.js";import{Hb as h,qb as S}from"./chunk-a8h3fymk.js";import"./chunk-kagpk2x5.js";import{_b as qq}from"./chunk-vgp8m9fg.js";import{ac as Qq,bc as Yq,cc as Zq}from"./chunk-nz57y1ad.js";import{dc as e}from"./chunk-p2m56new.js";import"./chunk-xmcsn7y0.js";import{Dc as v}from"./chunk-8gcg2z3y.js";import"./chunk-7hbw6q6d.js";import"./chunk-h28ptrrt.js";import"./chunk-b5szbtmp.js";import"./chunk-wmnszjmv.js";import"./chunk-eq2qj9ja.js";import"./chunk-rxqft6td.js";import"./chunk-cf8e7e92.js";import"./chunk-senkwdh6.js";import"./chunk-vsg8f0e6.js";import"./chunk-4h9ff923.js";import"./chunk-xa05phpw.js";import"./chunk-cbpqcdga.js";import"./chunk-8gnfj89a.js";import"./chunk-yfs9tq3y.js";import{Ae as w,Ce as H,De as l,we as m,xe as u,ze as Q}from"./chunk-zknv3d6y.js";import"./chunk-6j8wgp2s.js";import{Me as I}from"./chunk-y4c3wwpa.js";import"./chunk-v8pq6qmv.js";import"./chunk-fj8v7pep.js";import"./chunk-6vsszvgg.js";import"./chunk-w0nscjd2.js";import"./chunk-33ave20b.js";import"./chunk-66hb7kxm.js";import"./chunk-954vmnrn.js";import sq from"yargs";import{hideBin as aq}from"yargs/helpers";var g=1;function K(Y){return Q.Object({event_version:Q.Literal(g),...Y})}var Uq=K({type:Q.Literal("content_delta"),delta:Q.String()}),Rq=K({type:Q.Literal("thinking_delta"),delta:Q.String()}),Mq=K({type:Q.Literal("thinking"),content:Q.String()}),Pq=K({type:Q.Literal("stream_end")}),fq=K({type:Q.Literal("content"),content:Q.String()}),Nq=K({type:Q.Literal("structured_output"),output:Q.Record(Q.String(),Q.Unknown()),schema_digest:Q.String({pattern:"^[a-f0-9]{64}$"})}),T=H(["readonly","write","execute"]),Eq=K({type:Q.Literal("tool_start"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T)}),xq=K({type:Q.Literal("tool_progress"),tool_name:Q.String(),message:Q.String(),progress:Q.Optional(Q.Number()),total:Q.Optional(Q.Number())}),Iq=K({type:Q.Literal("tool_result"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T),success:Q.Optional(Q.Boolean()),error_type:Q.Optional(Q.String()),error_message:Q.Optional(Q.String())}),Lq=K({type:Q.Literal("mcp_catalog_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Jq=K({type:Q.Literal("mcp_content_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),content_kind:H(["resources","resource_templates","prompts"]),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Wq=K({type:Q.Literal("mcp_resource_updated"),revision:Q.Integer({minimum:1}),server_name:Q.String(),uri:Q.String()}),Sq=K({type:Q.Literal("mcp_connection_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),phase:H(["reconnecting","recovered","failed"]),reason:Q.String(),attempt:Q.Integer({minimum:0}),max_attempts:Q.Integer({minimum:0}),next_retry_at:Q.Optional(Q.Integer({minimum:0})),error:Q.Optional(Q.String())}),Oq=K({type:Q.Literal("mcp_log"),revision:Q.Integer({minimum:1}),server_name:Q.String(),level:H(["debug","info","notice","warning","error","critical","alert","emergency"]),logger:Q.Optional(Q.String()),message:Q.String(),projected_bytes:Q.Integer({minimum:0}),data_sha256:Q.String(),truncated:Q.Boolean(),details_omitted:Q.Boolean(),timestamp:Q.Integer({minimum:0}),synthetic:Q.Optional(Q.Boolean())}),hq=K({type:Q.Literal("mcp_instructions_changed"),revision:Q.Integer({minimum:0}),server_name:Q.String(),action:H(["added","removed"]),reason:H(["snapshot","connection","disconnection"]),text:Q.Optional(Q.String()),source_bytes:Q.Optional(Q.Integer({minimum:0})),projected_bytes:Q.Optional(Q.Integer({minimum:0})),sha256:Q.Optional(Q.String()),truncated:Q.Optional(Q.Boolean()),details_omitted:Q.Optional(Q.Boolean())}),Cq=K({type:Q.Literal("mcp_task_changed"),revision:Q.Integer({minimum:0}),task_id:Q.String(),server_name:Q.String(),tool_name:Q.String(),status:H(["working","input_required","interrupted","completed","failed","cancelled"]),status_message:Q.Optional(Q.String()),created_at:Q.Integer({minimum:0}),updated_at:Q.Integer({minimum:0}),completed_at:Q.Optional(Q.Integer({minimum:0})),has_result:Q.Boolean(),error:Q.Optional(Q.String())}),Fq=K({type:Q.Literal("project_rules_loaded"),files:Q.Array(Q.Object({id:Q.String(),relative_path:Q.String(),source:H(["project","local"]),conditional:Q.Boolean(),content_sha256:Q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:Q.Array(Q.String()),blocked_write:Q.Boolean()}),kq=K({type:Q.Literal("user_shell_started"),execution_id:Q.String(),command:Q.String(),auxiliary:Q.Boolean()}),wq=K({type:Q.Literal("user_shell_output"),execution_id:Q.String(),stream:H(["stdout","stderr"]),chunk:Q.String(),stream_truncated:Q.Boolean()}),yq=K({type:Q.Literal("user_shell_completed"),execution_id:Q.String(),message_id:Q.String(),status:H(["completed","failed","aborted","timed_out","spawn_error"]),exit_code:Q.Union([Q.Integer(),Q.Null()]),duration_ms:Q.Number({minimum:0}),stdout:Q.String(),stderr:Q.String(),truncated:Q.Boolean(),auxiliary:Q.Boolean()}),gq=K({type:Q.Literal("phase"),phase:H(["turn","searching","inspecting","target_hit","executing","completed"]),status:H(["ongoing","hit","done"]),message:Q.String(),turn:Q.Optional(Q.Number()),tool_name:Q.Optional(Q.String()),target:Q.Optional(Q.String())}),Tq=K({type:Q.Literal("tool_detail"),tool_name:Q.String(),detail:Q.String()}),cq=K({type:Q.Literal("task_update"),tasks:Q.Array(y)}),dq=K({type:Q.Literal("subagent"),state:H(["spawned","completed"]),session_id:Q.String(),subagent_type:Q.Optional(Q.String()),success:Q.Optional(Q.Boolean()),summary:Q.Optional(Q.String()),verification_verdict:Q.Optional(H(["pass","fail","partial"])),resumed_from:Q.Optional(Q.String()),root_agent_id:Q.Optional(Q.String()),resume_depth:Q.Optional(Q.Integer({minimum:0}))}),pq=K({type:Q.Literal("token_usage"),input_tokens:Q.Number(),output_tokens:Q.Number(),total_tokens:Q.Number(),max_context_tokens:Q.Number(),cache_read_tokens:Q.Optional(Q.Number()),cache_write_tokens:Q.Optional(Q.Number()),cost_usd:Q.Optional(Q.Number())}),mq=K({type:Q.Literal("compacting"),state:H(["started","completed"])}),uq=K({type:Q.Literal("turn_limit"),turns_count:Q.Number(),action:Q.Literal("continue")}),lq=K({type:Q.Literal("task_session"),session_id:Q.String(),project_path:Q.String(),source_project_path:Q.String(),isolation:H(["local","worktree"]),worktree_branch:Q.Optional(Q.String()),base_commit:Q.Optional(Q.String())}),vq=K({type:Q.Literal("task_admission"),state:H(["queued","running"]),queue_position:Q.Optional(Q.Integer({minimum:1})),queue_depth:Q.Integer({minimum:0}),in_flight:Q.Integer({minimum:0}),max_concurrent_tasks:Q.Integer({minimum:1})}),iq=K({type:Q.Literal("output"),content:Q.String(),exit_code:Q.Number()}),rq=K({type:Q.Literal("error"),message:Q.String()}),jQ=w(Q.Union([Uq,Rq,Mq,Pq,fq,Nq,Eq,xq,Iq,Lq,Jq,Wq,Sq,Oq,hq,Cq,Fq,kq,wq,yq,gq,Tq,cq,dq,pq,mq,uq,lq,vq,iq,rq]));function c(Y,Z){return{event_version:g,type:Y,...Z}}function oq(Y){if(Y?.signal)return{signal:Y.signal,dispose:()=>{return}};let Z=new AbortController,b=()=>Z.abort("interrupt");return process.once("SIGINT",b),process.once("SIGTERM",b),{signal:Z.signal,dispose:()=>{process.removeListener("SIGINT",b),process.removeListener("SIGTERM",b)}}}var nq=H(["text","jsonl"]),tq=Q.Object({headless:Q.Optional(Q.Boolean()),message:Q.Optional(Q.String()),_:Q.Optional(Q.Array(Q.Union([Q.String(),Q.Number()]))),model:Q.Optional(Q.String()),systemPrompt:Q.Optional(Q.String()),appendSystemPrompt:Q.Optional(Q.String()),maxTurns:Q.Optional(Q.Refine(Q.Integer({maximum:l}),(Y)=>Y===-1||Y>0,()=>"must be -1 or a positive integer")),permissionMode:Q.Optional(Q.Enum(m)),mcpConfig:Q.Optional(Q.Array(Q.String())),strictMcpConfig:Q.Optional(Q.Boolean()),sessionId:Q.Optional(Q.String()),allowedTools:Q.Optional(Q.Array(Q.String())),disallowedTools:Q.Optional(Q.Array(Q.String())),agents:Q.Optional(Q.String()),continue:Q.Optional(Q.Boolean()),resume:Q.Optional(Q.Union([Q.String(),Q.Boolean()])),forkSession:Q.Optional(Q.Boolean()),taskIsolation:Q.Optional(H(["local","worktree"])),outputFormat:Q.Optional(nq),jsonSchema:Q.Optional(Q.String()),outputSchema:Q.Optional(Q.String())});class Dq{openedThinking=!1;wroteAssistantContent=!1;markAssistantContent(){this.wroteAssistantContent=!0}setThinkingOpened(Y){this.openedThinking=Y}hasOpenThinking(){return this.openedThinking}completeStream(){let Y={openedThinking:this.openedThinking,wroteAssistantContent:this.wroteAssistantContent};return this.openedThinking=!1,this.wroteAssistantContent=!1,Y}}function eq(Y){return Y.issues.map((Z)=>`${Z.path.join(".")||"options"}: ${Z.message}`).join("; ")}function qQ(Y){let Z=u(tq,Y);if(!Z.success)throw Error(`Invalid headless options: ${eq(Z.error)}`);return Z.data}function QQ(Y){return Y.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",(Z)=>Z.positional("message",{describe:"Message to process",type:"string"}).option("headless",{type:"boolean",describe:"Run full agent loop without Ink UI and print events to the terminal"}).option("model",{describe:"Model ID for this run",type:"string"}).option("system-prompt",{describe:"Replace the default system prompt",type:"string"}).option("append-system-prompt",{describe:"Append a system prompt to the default system prompt",type:"string"}).option("max-turns",{alias:["maxTurns"],describe:"Maximum conversation turns (-1: unlimited, N>0: limit to N turns)",type:"number"}).option("output-format",{alias:["outputFormat"],choices:["text","jsonl"],describe:"Headless output format",type:"string"}).option("json-schema",{alias:["jsonSchema"],describe:"Inline JSON Schema for the structured final response",type:"string"}).option("output-schema",{alias:["outputSchema"],describe:"Path to a JSON Schema file for the structured final response",type:"string"}).option("task-isolation",{alias:["taskIsolation"],choices:["local","worktree"],describe:"Dispatch a new durable task in the selected workspace mode",type:"string"}),async(Z)=>{if(!Z.headless)return;let b=await XQ(Z);process.exit(b)})}function j(Y,Z=""){Y.write(`${Z}
2
- `)}function YQ(Y){return`[task] [${Y.status}] ${Y.subject}`}function ZQ(){return{requestConfirmation:async(Y)=>Y.type==="mcpElicitation"?{approved:!1,reason:"headless-mcp-elicitation-unavailable",elicitation:{action:"cancel"}}:Y.type==="mcpSampling"?{approved:!1,reason:"headless-mcp-sampling-unavailable"}:{approved:!0,reason:"headless-auto-approved",scope:"session"}}}function $Q(Y){if(!(Y instanceof Error))return"Unknown error";let V=Y.lastError??Y;if(V.responseBody)try{let D=JSON.parse(V.responseBody)?.error?.message;if(D)return V.statusCode?`${D} (HTTP ${V.statusCode})`:D}catch{}let q=Y.message.match(/Last error:\s*(.+)$/);if(q)return q[1];return Y.message}function GQ(Y){return Y==="jsonl"?"jsonl":"text"}function d(Y,Z){let b=(...V)=>{for(let q of V){let $=Z[q];if(typeof $==="string"&&$.trim()!=="")return $}return};switch(Y){case"Read":case"Edit":case"Write":case"UndoEdit":return b("file_path");case"ApplyPatch":return"multi-file patch";case"NotebookEdit":return b("notebook_path");case"Grep":return b("path","pattern");case"Glob":return b("pattern");case"WebFetch":return b("url");case"WebSearch":return b("query");case"Bash":return b("command","description");case"Task":return b("description");case"LSP":return b("filePath","operation");case"EnterWorktree":return b("name");case"ExitWorktree":return b("action");default:return}}function VQ(Y,Z,b,V){let q=new Set(["Glob","Grep","WebSearch","LS"]),$=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","ApplyPatch","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Y)&&!V.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${Z}`,shouldLockTarget:!0};if(V.targetLocked)return{phase:"executing",status:"hit",message:b?`Working within target: ${Z}`:`Executing: ${Z}`,shouldLockTarget:!1};if(q.has(Y))return{phase:"searching",status:"ongoing",message:`Still searching: ${Z}`,shouldLockTarget:!1};if($.has(Y))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${Z}`,shouldLockTarget:!1};return{phase:"executing",status:V.targetLocked?"hit":"ongoing",message:`Executing: ${Z}`,shouldLockTarget:!1}}function p(Y,Z,b=!1){let V=(q,$)=>{Y.stdout.write(`${JSON.stringify(c(q,$))}
3
- `)};return{contentDelta(q){if(Z==="jsonl"){V("content_delta",{delta:q});return}if(b)return;Y.stdout.write(q)},thinkingDelta(q,$){if(Z==="jsonl")return V("thinking_delta",{delta:q}),$;if(!$)Y.stderr.write("[thinking] ");return Y.stderr.write(q),!0},thinking(q){if(Z==="jsonl"){V("thinking",{content:q});return}j(Y.stderr,`[thinking] ${q}`)},streamEnd(q,$){if(Z==="jsonl"){V("stream_end",{});return}if($)Y.stderr.write(`
4
- `);if(q)Y.stdout.write(`
5
- `)},content(q){if(Z==="jsonl"){V("content",{content:q});return}j(Y.stdout,q)},structuredOutput(q){if(Z==="jsonl"){V("structured_output",{output:q.output,schema_digest:q.schemaDigest});return}j(Y.stdout,JSON.stringify(q.output))},toolStart(q,$,D,z){if(Z==="jsonl"){V("tool_start",{tool_name:q,summary:$,target:D,tool_kind:z});return}j(Y.stderr,`[tool:start] ${$}`)},toolProgress(q,$,D,z){if(Z==="jsonl"){V("tool_progress",{tool_name:q,message:$,progress:D,total:z});return}j(Y.stderr,`[tool:progress] ${q}: ${$}`)},toolResult(q,$,D,z,R){if(Z==="jsonl"){V("tool_result",{tool_name:q,summary:$,target:D,tool_kind:z,success:R?.success,error_type:R?.errorType,error_message:R?.errorMessage});return}j(Y.stderr,`[tool:result] ${$}`)},mcpCatalogChanged(q){if(Z==="jsonl"){V("mcp_catalog_changed",{revision:q.revision,server_name:q.serverName,added:q.added,removed:q.removed,updated:q.updated});return}j(Y.stderr,`[mcp:catalog] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpContentChanged(q){if(Z==="jsonl"){V("mcp_content_changed",{revision:q.revision,server_name:q.serverName,content_kind:q.contentKind==="resourceTemplates"?"resource_templates":q.contentKind,added:q.added,removed:q.removed,updated:q.updated});return}j(Y.stderr,`[mcp:${q.contentKind}] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpResourceUpdated(q){if(Z==="jsonl"){V("mcp_resource_updated",{revision:q.revision,server_name:q.serverName,uri:q.uri});return}j(Y.stderr,`[mcp:resource] r${q.revision} ${q.serverName} updated ${q.uri}`)},mcpConnectionChanged(q){if(Z==="jsonl"){V("mcp_connection_changed",{revision:q.revision,server_name:q.serverName,phase:q.phase,reason:q.reason,attempt:q.attempt,max_attempts:q.maxAttempts,...q.nextRetryAt!==void 0?{next_retry_at:q.nextRetryAt}:{},...q.error?{error:q.error}:{}});return}j(Y.stderr,`[mcp:connection] r${q.revision} ${q.serverName} ${q.phase} ${q.attempt}/${q.maxAttempts}`)},mcpLog(q){if(Z==="jsonl"){V("mcp_log",{revision:q.revision,server_name:q.serverName,level:q.level,logger:q.logger,message:q.message,projected_bytes:q.projectedBytes,data_sha256:q.dataSha256,truncated:q.truncated,details_omitted:q.detailsOmitted,timestamp:q.timestamp,synthetic:q.synthetic});return}j(Y.stderr,`[mcp:log] ${q.level} ${q.serverName}${q.logger?` logger=${q.logger}`:""}: ${q.message}`)},mcpInstructionsChanged(q){if(Z==="jsonl"){V("mcp_instructions_changed",{revision:q.revision,server_name:q.serverName,action:q.action,reason:q.reason,text:q.text,source_bytes:q.sourceBytes,projected_bytes:q.projectedBytes,sha256:q.sha256,truncated:q.truncated,details_omitted:q.detailsOmitted});return}j(Y.stderr,`[mcp:instructions] ${q.action} ${q.serverName}${q.truncated?" (truncated)":""}`)},mcpTaskChanged(q){if(Z==="jsonl"){V("mcp_task_changed",{revision:q.revision,task_id:q.taskId,server_name:q.serverName,tool_name:q.toolName,status:q.status,status_message:q.statusMessage,created_at:q.createdAt,updated_at:q.updatedAt,completed_at:q.completedAt,has_result:q.hasResult,error:q.error});return}j(Y.stderr,`[mcp:task] ${q.taskId} ${q.serverName}/${q.toolName} `+q.status)},projectRulesLoaded(q){if(Z==="jsonl"){V("project_rules_loaded",{files:q.files.map(($)=>({id:$.id,relative_path:$.relativePath,source:$.source,conditional:$.conditional,content_sha256:$.contentSha256})),trigger_paths:q.triggerPaths,blocked_write:q.blockedWrite});return}j(Y.stderr,`[project-rules] loaded ${q.files.length} file(s)${q.blockedWrite?" before write":""}`)},userShellStarted(q,$,D){if(Z==="jsonl"){V("user_shell_started",{execution_id:q,command:$,auxiliary:D});return}j(Y.stderr,`[user-shell:start] ${$}`)},userShellOutput(q,$,D,z){if(Z==="jsonl"){V("user_shell_output",{execution_id:q,stream:$,chunk:D,stream_truncated:z});return}($==="stderr"?Y.stderr:Y.stdout).write(D)},userShellCompleted(q){if(Z==="jsonl"){V("user_shell_completed",{execution_id:q.executionId,message_id:q.messageId,status:q.record.status,exit_code:q.record.exitCode,duration_ms:q.record.durationMs,stdout:q.record.stdout,stderr:q.record.stderr,truncated:q.record.truncated,auxiliary:q.auxiliary});return}j(Y.stderr,`[user-shell:${q.record.status}] exit=${q.record.exitCode??"null"} ${q.record.durationMs}ms`)},phase(q,$,D,z={}){if(Z==="jsonl"){V("phase",{phase:q,status:$,message:D,turn:z.turn,tool_name:z.toolName,target:z.target});return}j(Y.stderr,`[phase:${q}] ${D}`)},toolDetail(q,$){if(Z==="jsonl"){V("tool_detail",{tool_name:q,detail:$});return}j(Y.stderr,$)},taskUpdate(q){if(Z==="jsonl"){V("task_update",{tasks:q});return}for(let $ of q)j(Y.stderr,YQ($))},subagent(q){let $=q.kind==="subagent_spawned";if(Z==="jsonl"){V("subagent",{state:$?"spawned":"completed",session_id:q.sessionId,subagent_type:q.type,success:$?void 0:q.success,summary:$?void 0:q.summary,verification_verdict:$?void 0:q.verificationVerdict,resumed_from:q.resumedFrom,root_agent_id:q.rootAgentId,resume_depth:q.resumeDepth});return}j(Y.stderr,`[subagent:${$?"spawned":"completed"}] ${q.sessionId}${q.resumedFrom?` resumed from ${q.resumedFrom}`:""}`)},tokenUsage(q){if(Z==="jsonl"){V("token_usage",{input_tokens:q.inputTokens,output_tokens:q.outputTokens,total_tokens:q.totalTokens,max_context_tokens:q.maxContextTokens,cache_read_tokens:q.cacheReadTokens,cache_write_tokens:q.cacheWriteTokens,cost_usd:q.costUsd});return}j(Y.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){if(Z==="jsonl"){V("compacting",{state:q?"started":"completed"});return}j(Y.stderr,q?"[context] compacting started":"[context] compacting completed")},turnLimit(q){if(Z==="jsonl"){V("turn_limit",{turns_count:q,action:"continue"});return}j(Y.stderr,`[turn-limit] continuing after ${q} turns`)},taskSession(q){if(Z==="jsonl"){V("task_session",{session_id:q.sessionId,project_path:q.projectPath,source_project_path:q.sourceProjectPath,isolation:q.isolation,worktree_branch:q.worktreeBranch,base_commit:q.baseCommit});return}j(Y.stderr,`[task:${q.isolation}] ${q.sessionId} ${q.sourceProjectPath} -> ${q.projectPath}${q.worktreeBranch?` (${q.worktreeBranch})`:""}`)},taskAdmission(q){if(Z==="jsonl"){V("task_admission",{state:q.state,queue_position:q.queuePosition,queue_depth:q.queueDepth,in_flight:q.inFlight,max_concurrent_tasks:q.maxConcurrentTasks});return}j(Y.stderr,q.state==="queued"?`[task:queued] position ${q.queuePosition??1}/${q.queueDepth} (running ${q.inFlight}/${q.maxConcurrentTasks})`:`[task:running] admitted (running ${q.inFlight}/${q.maxConcurrentTasks})`)},output(q,$=0){if(Z==="jsonl"){V("output",{content:q,exit_code:$});return}j($===0?Y.stdout:Y.stderr,q)},error(q){if(Z==="jsonl"){V("error",{message:q});return}j(Y.stderr,q)}}}async function XQ(Y,Z={stdout:process.stdout,stderr:process.stderr},b){let V="text",q=p(Z,V),$=new Dq,D={targetLocked:!1},z,R,L=oq(b);try{let B=qQ(Y);V=GQ(B.outputFormat);let P=await Bq(B);q=p(Z,V,Boolean(P)),await Gq();let jq=await Vq(B),A=await Xq(jq);if(A.mode==="output"){if(A.content)q.output(A.content,A.exitCode??0);return A.exitCode??0}let J=A.content.trimStart().startsWith("!")?A.content.trimStart().slice(1).trim():void 0;if(J!==void 0&&B.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(J!==void 0&&P)throw Error("Output schemas cannot be combined with user shell commands");if(B.taskIsolation&&(B.continue||B.resume||B.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:U,messages:C,metadata:F}=await Kq({sessionId:B.sessionId,continue:B.continue,resume:B.resume,forkSession:B.forkSession,fallbackSessionPrefix:"headless"}),E=B.permissionMode??F?.permissionMode??"yolo",k=B.model&&B.model!=="inherit"?B.model:v()?.id,_=B.taskIsolation?await $q.createSessionTask({sessionId:U,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,dispatch:{version:1,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,permissionMode:E,...k?{modelId:k}:{},...P?{outputSchema:P}:{}}}):void 0,M=_?.metadata.projectPath??F?.projectPath??I();if(!_)await h.setSessionPermissionMode(U,M,E);let bq=_?!1:await s.cancelPendingNonInteractive(M,U);if(_)q.taskSession({sessionId:U,projectPath:M,sourceProjectPath:_.metadata.taskSourceProjectPath??I(),isolation:B.taskIsolation,worktreeBranch:_.metadata.taskWorktreeBranch,baseCommit:_.metadata.taskBaseCommit}),R=r.subscribe((G)=>{if(G.type!=="task.status"||G.sessionId!==U||G.projectPath!==M||!["queued","running"].includes(String(G.properties.taskStatus))||typeof G.properties.taskQueueDepth!=="number"||typeof G.properties.taskInFlight!=="number"||typeof G.properties.taskConcurrencyLimit!=="number")return;q.taskAdmission({state:G.properties.taskStatus,queuePosition:typeof G.properties.taskQueuePosition==="number"?G.properties.taskQueuePosition:void 0,queueDepth:G.properties.taskQueueDepth,inFlight:G.properties.taskInFlight,maxConcurrentTasks:G.properties.taskConcurrencyLimit})});let Hq={messages:bq?await h.loadSession(U,M):[...C],userId:"cli-user",sessionId:U,workspaceRoot:M,permissionMode:E,signal:L.signal,..._?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:ZQ()};if(z=await a.create({sessionId:U,workspaceRoot:M,modelId:B.model,permissionMode:E,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig,agents:B.agents?e(B.agents):void 0,..._?.taskWorktree?{taskWorktree:_.taskWorktree}:{},..._?.metadata.taskIsolation?{taskIsolation:_.metadata.taskIsolation}:{},...C.length>0?{sessionStart:{isResume:!0,resumeSessionId:U}}:{}}),J!==void 0){let G=await z.executeUserShellCommand(J,{signal:L.signal,onEvent:(X)=>{if(X.type==="started")q.userShellStarted(X.executionId,X.command,X.auxiliary);else if(X.type==="output")q.userShellOutput(X.executionId,X.stream,X.chunk,X.streamTruncated)}});return q.userShellCompleted(G),G.record.status==="completed"?0:G.record.status==="aborted"?130:G.record.exitCode??1}let zq=B.maxTurns??z.getConfig().maxTurns,_q=_?.taskWorktree?[...new Set([...B.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:B.disallowedTools,Aq=await t.createWithRuntime(z,{sessionId:U,systemPrompt:B.systemPrompt,appendSystemPrompt:B.appendSystemPrompt,maxTurns:B.maxTurns,modelId:B.model,permissionMode:E,toolWhitelist:B.allowedTools,toolBlacklist:_q,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig}),O=await i(Aq.chatStream(A.content,Hq,{stream:!0,signal:L.signal,maxTurns:B.maxTurns,outputSchema:P,...zq===-1?{onTurnLimitReached:async(G)=>{return q.turnLimit(G.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(G)=>{switch(G.kind){case"content_delta":if(!P||V==="jsonl")$.markAssistantContent();q.contentDelta(G.delta);break;case"thinking_delta":$.setThinkingOpened(q.thinkingDelta(G.delta,$.hasOpenThinking()));break;case"stream_end":{let X=$.completeStream();q.streamEnd(X.wroteAssistantContent,X.openedThinking);break}case"tool_start":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;if(["TaskCreate","TaskUpdate","TaskList"].includes(X.function.name))break;try{let f=JSON.parse(X.function.arguments),N=o(X.function.name,f),x=d(X.function.name,f),W=VQ(X.function.name,N,x,D);if(W.shouldLockTarget)D.targetLocked=!0;q.phase(W.phase,W.status,W.message,{toolName:X.function.name,target:x}),q.toolStart(X.function.name,N,x,G.toolKind)}catch{q.phase(D.targetLocked?"executing":"searching",D.targetLocked?"hit":"ongoing",D.targetLocked?`Working within target: ${X.function.name}`:`Still searching: ${X.function.name}`,{toolName:X.function.name}),q.toolStart(X.function.name,X.function.name,void 0,G.toolKind)}break}case"tool_progress":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;q.toolProgress(X.function.name,G.update.message,G.update.progress,G.update.total);break}case"tool_result":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;let f;try{let x=JSON.parse(X.function.arguments);f=d(X.function.name,x)}catch{f=void 0}let N=n(X.function.name,G.result);if(q.toolResult(X.function.name,N.summary,f,void 0,{success:G.result.success,errorType:G.result.error?.type,errorMessage:G.result.error?.message}),N.detail)q.toolDetail(X.function.name,N.detail);break}case"token_usage":q.tokenUsage(G.usage);break;case"compaction":q.compacting(G.phase==="start");break;case"task_update":q.taskUpdate(G.tasks);break;case"structured_output":q.structuredOutput(G);break;case"mcp_catalog_changed":q.mcpCatalogChanged(G);break;case"mcp_content_changed":q.mcpContentChanged(G);break;case"mcp_resource_updated":q.mcpResourceUpdated(G);break;case"mcp_connection_changed":q.mcpConnectionChanged(G);break;case"mcp_log":q.mcpLog(G);break;case"mcp_instructions_changed":q.mcpInstructionsChanged(G);break;case"mcp_task_changed":q.mcpTaskChanged(G);break;case"project_rules_loaded":q.projectRulesLoaded(G);break;case"steering_applied":case"follow_up_started":case"goal_updated":case"goal_continuation_started":break;case"subagent_spawned":case"subagent_completed":q.subagent(G);break;case"model_fallback":break;case"turn_start":if(G.turn===1)D.targetLocked=!1;q.phase("turn",D.targetLocked?"hit":"ongoing",`Turn ${G.turn} started`,{turn:G.turn});break;default:{let X=G}}});if(O.metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!O.success)return q.error(`Error: ${O.error?.message??"Agent execution failed"}`),1;return q.phase("completed","done","Headless run completed"),0}catch(B){if($.hasOpenThinking()&&V==="text")Z.stderr.write(`
6
- `);return q.error(`Error: ${$Q(B)}`),1}finally{R?.();try{await z?.dispose()}finally{L.dispose()}}}async function yQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:b,"output-format":V,"system-prompt":q,"append-system-prompt":$,"max-turns":D,...z}=qq,R=sq(aq(process.argv)).scriptName("blade").strict(!1).options(z).middleware([Yq,Qq,Zq]);return QQ(R),await R.parse(),!0}export{XQ as runHeadless,yQ as handleHeadlessMode,tq as HeadlessOptionsSchema};
@@ -1,2 +0,0 @@
1
- import{Re as o}from"./chunk-v8pq6qmv.js";async function e(){return o().listProviders()}async function i(r){return o().listModels(r)}
2
- export{e,i as f};
@@ -1,2 +0,0 @@
1
- var n="verification",e="review";function t(E){return E==="verification"||E==="review"}
2
- export{n as sd,e as td,t as ud};
@@ -1 +0,0 @@
1
- import{Tc as a,Uc as b,Vc as c}from"./chunk-wmnszjmv.js";import"./chunk-eq2qj9ja.js";import"./chunk-v8pq6qmv.js";import"./chunk-fj8v7pep.js";import"./chunk-66hb7kxm.js";import"./chunk-954vmnrn.js";export{b as resolveModelConfig,c as getModelDisplayName,a as getModelApiKeyEnvironmentVariable};
@@ -1 +0,0 @@
1
- import{$e as d,Ye as a,Ze as b,_e as c,af as e,bf as f}from"./chunk-6vsszvgg.js";import"./chunk-954vmnrn.js";export{b as getVersion,c as getPackageName,a as getPackageInfo,e as getFormattedVersion,d as getDescription,f as getCopyright};
@@ -1 +0,0 @@
1
- import{Sc as a}from"./chunk-b5szbtmp.js";import"./chunk-8gnfj89a.js";import"./chunk-v8pq6qmv.js";import"./chunk-fj8v7pep.js";import"./chunk-66hb7kxm.js";import"./chunk-954vmnrn.js";export{a as createChatServiceAsync};
@@ -1 +0,0 @@
1
- import{h as a,i as b,j as c,k as d,l as e}from"./chunk-m2xrx1je.js";import"./chunk-954vmnrn.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
@@ -1,2 +0,0 @@
1
- var g;((e)=>{e.DEFAULT="default";e.AUTO_EDIT="autoEdit";e.YOLO="yolo";e.PLAN="plan"})(g||={});import p from"typebox/schema";import u from"typebox/value";class s extends Error{issues;constructor(t){super(t.map((r)=>{return`${r.path.length>0?r.path.join("."):"root"}: ${r.message}`}).join("; "));this.issues=t;this.name="SchemaValidationError"}}function T(t){if(!t)return[];return t.split("/").slice(1).map((r)=>r.replace(/~1/g,"/").replace(/~0/g,"~")).map((r)=>/^(0|[1-9]\d*)$/.test(r)?Number(r):r)}function d(t,r){let n=t;for(let o of r){if(n===null||typeof n!=="object")return;n=n[o]}return n}function f(t,r){let[,n]=p.Errors(t,r);return n.map((o)=>{let e=T(o.instancePath);return{code:o.keyword,path:e,message:o.message,value:d(r,e)}})}function a(t,r){let n=u.Default(t,u.Clone(r)),o=f(t,n);if(o.length>0)return{success:!1,error:new s(o)};let e=u.Clean(t,n),c=f(t,e);if(c.length>0)return{success:!1,error:new s(c)};return{success:!0,data:e}}function i(t,r){let n=a(t,r);if(!n.success)throw n.error;return n.data}import l from"typebox";function m(t){return Object.defineProperties(t,{parse:{value:(r)=>i(t,r),enumerable:!1},safeParse:{value:(r)=>a(t,r),enumerable:!1}}),t}function N(t,r){return l.Optional({...t,default:r})}function R(t,r={}){return l.Unsafe({type:"string",enum:[...t],...r})}var _=100;function I(t){return Number.isInteger(t)&&t>=-1&&t<=100}function y(){return"-1, 0, or an integer from 1 to 100"}
2
- export{g as we,a as xe,i as ye,l as ze,m as Ae,N as Be,R as Ce,_ as De,I as Ee,y as Fe};
@@ -1 +0,0 @@
1
- import{cf as a}from"./chunk-w0nscjd2.js";import"./chunk-33ave20b.js";import"./chunk-66hb7kxm.js";import"./chunk-954vmnrn.js";export{a as WorkspaceTrustService};
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownRenderer-DBSjC_z3.js","assets/index-CxEh32hc.js","assets/vendor-react-DG5dkZ_t.js","assets/vendor-radix-DXRuAJHH.js","assets/vendor-icons-Cv18Q6rW.js","assets/index-Bi5ijAQP.css"])))=>i.map(i=>d[i]);
2
- import{r as p,j as e}from"./vendor-react-DG5dkZ_t.js";import{u as D,a as w,b as ie,s as ye,c as Pe,d as G,D as we,e as Ne,f as _e,g as Se,h as Ce,i as Ee,j as A,k as V,l as Le,B as ne,m as Ve,n as Oe,o as Ue,_ as He,S as Ke,p as qe,t as ze,q as Ge,C as We,r as Je}from"./index-CxEh32hc.js";import{Q as he,O as Qe,G as Ye,Y as Xe,L as F,z as Ze,T as Y,C as Z,Z as et,v as tt,_ as st,B as rt,$ as Te,y as ee,m as oe,R as le,s as at,H as nt,a0 as Ae,U as it,a1 as ot,a2 as lt,a3 as ct,P as Fe,a4 as dt,X as ut,a5 as mt,a6 as xt,f as De,a7 as ht,W as pt,a as ft}from"./vendor-icons-Cv18Q6rW.js";import{j as bt,k as gt,l as vt,m as Re}from"./vendor-radix-DXRuAJHH.js";function pe(t){return t.split("/").filter(Boolean).at(-1)||t}function kt(){const t=D(),s=w(S=>S.sessions),r=w(S=>S.currentSessionRef),a=w(S=>S.taskDeliveryActions),l=w(S=>S.deliverTask),n=ie(S=>S.openFilePreview),[d,b]=p.useState(!1),c=s.find(S=>ye({sessionId:S.sessionId,projectPath:S.projectPath},r));if(!(c!=null&&c.taskIsolation))return null;const o=c.taskDiffStat,j=c.taskIsolation==="worktree",i=Pe(c),m=a[G(i)],f=c.taskDelivery,k=(f==null?void 0:f.status)==="conflicted",y=!!(o&&(o.changedFiles>0||o.commits>0)),h=!["queued","running"].includes(c.taskStatus),E=(f==null?void 0:f.status)==="applied"||(f==null?void 0:f.status)==="discarded",u=j&&y&&h&&!E,x=o?o.additions+o.deletions:0,v=x>0&&o?o.additions/x*100:0,N=S=>{l(i,S).catch(()=>{})};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex min-h-10 flex-wrap items-center gap-x-3 gap-y-1.5 border-b border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-canvas-veil))]/60 px-3 py-1.5 font-mono text-[10.5px] text-[hsl(var(--deck-ink-muted))] backdrop-blur-sm sm:px-5",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1.5",children:[e.jsx(he,{className:"h-3 w-3 shrink-0 text-[hsl(var(--deck-ink-faint))]"}),e.jsx("span",{className:"truncate text-[hsl(var(--deck-ink))]",children:pe(c.taskSourceProjectPath||c.projectPath)})]}),e.jsx("span",{className:"text-[hsl(var(--deck-ink-faint))]/60",children:"/"}),e.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1.5",children:[j?e.jsx(Qe,{className:"h-3 w-3 shrink-0 text-[hsl(var(--deck-accent))]"}):e.jsx(he,{className:"h-3 w-3 shrink-0"}),e.jsx("span",{className:j?"text-[hsl(var(--deck-accent))]":void 0,children:t(j?"artifact.env.isolated":"artifact.env.local")})]}),c.taskWorktreeBranch&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-[hsl(var(--deck-ink-faint))]/60",children:"/"}),e.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1.5 truncate",title:c.taskWorktreeBranch,children:[e.jsx(Ye,{className:"h-3 w-3 shrink-0 text-[hsl(var(--deck-ink-faint))]"}),e.jsx("span",{className:"truncate",children:c.taskWorktreeBranch})]})]})]}),o&&e.jsxs("div",{className:"ml-auto flex max-w-full items-center gap-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 text-[hsl(var(--deck-ink-muted))]",children:[e.jsx(Xe,{className:"h-3 w-3 text-[hsl(var(--deck-ink-faint))]"}),e.jsx("span",{className:"tabular-nums",children:o.changedFiles})]}),x>0&&e.jsxs("span",{className:"relative hidden h-1.5 w-14 overflow-hidden rounded-sm border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] sm:inline-flex","aria-hidden":"true",children:[e.jsx("span",{className:"h-full bg-[hsl(var(--deck-accent))]",style:{width:`${v}%`}}),e.jsx("span",{className:"h-full bg-red-500/80",style:{width:`${100-v}%`}})]}),e.jsxs("span",{className:"tabular-nums text-[hsl(var(--deck-accent))]",children:["+",o.additions]}),e.jsxs("span",{className:"tabular-nums text-red-600 dark:text-red-400",children:["-",o.deletions]}),o.commits>0&&e.jsx("span",{className:"hidden tabular-nums text-[hsl(var(--deck-ink-faint))] sm:inline",children:t("artifact.commits",{count:o.commits})}),y&&(f==null?void 0:f.status)!=="discarded"&&e.jsx("button",{type:"button",onClick:()=>n({tab:"diff"}),className:"inline-flex items-center gap-1 rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] px-2 py-1 text-[hsl(var(--deck-ink))] transition hover:border-[hsl(var(--deck-accent)/0.55)] hover:text-[hsl(var(--deck-accent))]",children:t("artifact.review")}),u&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",disabled:!!m,onClick:()=>N("apply"),className:"inline-flex items-center gap-1 rounded-md bg-[hsl(var(--deck-accent))] px-2 py-1 font-semibold text-white transition hover:brightness-95 disabled:cursor-wait disabled:opacity-65",children:[m==="apply"?e.jsx(F,{className:"h-3 w-3 animate-spin"}):e.jsx(Ze,{className:"h-3 w-3"}),t(m==="apply"?"artifact.applying":k?"artifact.retryApply":"artifact.apply")]}),e.jsx("button",{type:"button",disabled:!!m,onClick:()=>b(!0),className:"inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-[hsl(var(--deck-ink-faint))] transition hover:bg-red-500/10 hover:text-red-600 disabled:cursor-wait disabled:opacity-50 dark:hover:text-red-400","aria-label":t("artifact.discard"),title:t("artifact.discard"),children:m==="discard"?e.jsx(F,{className:"h-3 w-3 animate-spin"}):e.jsx(Y,{className:"h-3 w-3"})})]}),(f==null?void 0:f.status)==="applied"&&e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-md bg-emerald-500/10 px-2 py-1 font-semibold text-emerald-700 dark:text-emerald-300",children:[e.jsx(Z,{className:"h-3 w-3"}),t("artifact.applied")]}),(f==null?void 0:f.status)==="discarded"&&e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-md bg-[hsl(var(--deck-surface-2))] px-2 py-1 text-[hsl(var(--deck-ink-faint))]",children:[e.jsx(Y,{className:"h-3 w-3"}),t("artifact.discarded")]})]}),(f==null?void 0:f.status)==="conflicted"&&e.jsxs("div",{className:"flex w-full items-start gap-1.5 border-t border-amber-500/20 pt-1.5 text-amber-700 dark:text-amber-300",role:"alert",children:[e.jsx(et,{className:"mt-0.5 h-3 w-3 shrink-0"}),e.jsxs("span",{className:"min-w-0 flex-1 space-y-0.5",children:[e.jsx("span",{className:"block",children:f.message||t("artifact.conflict")}),e.jsx("span",{className:"block text-[hsl(var(--deck-ink-faint))]",children:t("artifact.conflictHint")})]})]})]}),e.jsx(we,{open:d,onOpenChange:b,children:e.jsxs(Ne,{className:"w-[calc(100%_-_2rem)] max-w-md border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] text-[hsl(var(--deck-ink))]",children:[e.jsxs(_e,{children:[e.jsx(Se,{children:t("artifact.discardDialog.title")}),e.jsx(Ce,{className:"text-[hsl(var(--deck-ink-muted))]",children:t("artifact.discardDialog.description",{project:pe(c.taskSourceProjectPath||c.projectPath),count:(o==null?void 0:o.changedFiles)??0})})]}),e.jsx("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 px-3 py-2 text-xs leading-relaxed text-red-700 dark:text-red-300",children:t("artifact.discardDialog.warning")}),e.jsxs(Ee,{className:"gap-2 sm:space-x-0",children:[e.jsx("button",{type:"button",onClick:()=>b(!1),className:"rounded-md border border-[hsl(var(--deck-border))] px-3 py-2 text-sm hover:bg-[hsl(var(--deck-surface-2))]",children:t("artifact.discardDialog.cancel")}),e.jsxs("button",{type:"button",onClick:()=>{b(!1),N("discard")},className:"inline-flex items-center justify-center gap-1.5 rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white hover:bg-red-700",children:[e.jsx(Y,{className:"h-3.5 w-3.5"}),t("artifact.discardDialog.confirm")]})]})]})})]})}const jt=new Set(["completed","stale","failed","aborted","interrupted"]),yt={completed:"chat.review.status.completed",stale:"chat.review.status.stale",failed:"chat.review.status.failed",aborted:"chat.review.status.aborted",interrupted:"chat.review.status.interrupted"},wt={completed:"bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 border-emerald-500/20",stale:"bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/20",failed:"bg-red-500/10 text-red-700 dark:text-red-300 border-red-500/20",aborted:"bg-zinc-500/10 text-zinc-700 dark:text-zinc-300 border-zinc-500/20",interrupted:"bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/20"};function X(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:void 0}function Nt(t){const s=X(t),r=X(s==null?void 0:s.codeLocation),a=s==null?void 0:s.priority,l=s==null?void 0:s.confidenceScore,n=r==null?void 0:r.lineStart,d=r==null?void 0:r.lineEnd;if(!(typeof(s==null?void 0:s.title)!="string"||typeof s.body!="string"||a!==0&&a!==1&&a!==2&&a!==3||typeof l!="number"||!Number.isFinite(l)||typeof(r==null?void 0:r.path)!="string"||!Number.isInteger(n)||!Number.isInteger(d)))return{title:s.title,body:s.body,priority:a,confidenceScore:l,codeLocation:{path:r.path,lineStart:n,lineEnd:d}}}function St(t){const s=X(t),r=X(s==null?void 0:s.target);if((s==null?void 0:s.phase)!=="completed"||typeof s.status!="string"||!jt.has(s.status)||typeof(r==null?void 0:r.label)!="string"||r.kind!=="uncommitted"&&r.kind!=="base"&&r.kind!=="commit"||typeof s.overallExplanation!="string"||!Array.isArray(s.findings))return;const a=s.findings.map(Nt);if(!a.some(l=>l===void 0))return{status:s.status,target:{kind:r.kind,label:r.label,...typeof r.reference=="string"?{reference:r.reference}:{}},overallExplanation:s.overallExplanation,findings:a,...typeof s.error=="string"?{error:s.error}:{}}}function Ct(t){const{path:s,lineStart:r,lineEnd:a}=t.codeLocation;return r===a?`${s}:L${r}`:`${s}:L${r}-${a}`}function Et({report:t}){const s=D(),r=t.target.kind==="uncommitted"?s("chat.review.target.uncommitted"):t.target.kind==="base"?s("chat.review.target.base",{ref:t.target.reference??t.target.label}):s("chat.review.target.commit",{ref:t.target.reference??t.target.label});return e.jsxs("section",{"data-code-review-report":!0,className:"overflow-hidden rounded-xl border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]",children:[e.jsxs("header",{className:"flex flex-wrap items-center justify-between gap-3 border-b border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-surface-2))]/60 px-4 py-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-[hsl(var(--deck-ink))]",children:s("chat.review.title")}),e.jsxs("p",{className:"mt-0.5 font-mono text-[10.5px] text-[hsl(var(--deck-ink-faint))]",children:[s("chat.review.target"),": ",r]})]}),e.jsxs("span",{className:A("rounded-full border px-2.5 py-1 font-mono text-[10.5px] font-medium",wt[t.status]),children:[s("chat.review.status"),": ",s(yt[t.status])]})]}),e.jsxs("div",{className:"space-y-4 px-4 py-3.5",children:[e.jsx("p",{className:"whitespace-pre-wrap text-[13px] leading-6 text-[hsl(var(--deck-ink-muted))]",children:t.overallExplanation}),e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[e.jsx("h4",{className:"deck-eyebrow text-[hsl(var(--deck-ink-faint))]",children:s("chat.review.findings")}),e.jsx("span",{className:"font-mono text-[10px] text-[hsl(var(--deck-ink-faint))]",children:t.findings.length})]}),t.findings.length===0?e.jsx("div",{className:"rounded-lg bg-[hsl(var(--deck-surface-2))] px-3 py-2.5 text-[12px] text-[hsl(var(--deck-ink-muted))]",children:s("chat.review.noFindings")}):e.jsx("ol",{className:"space-y-2",children:t.findings.map((a,l)=>e.jsxs("li",{className:"rounded-lg border border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-canvas-veil))] px-3 py-2.5",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[e.jsx("h5",{className:"text-[12.5px] font-medium leading-5 text-[hsl(var(--deck-ink))]",children:a.title}),e.jsx("span",{className:"shrink-0 font-mono text-[10px] text-[hsl(var(--deck-ink-faint))]",children:s("chat.review.confidence",{value:a.confidenceScore.toFixed(2)})})]}),e.jsx("code",{className:"mt-1 block text-[10.5px] text-[hsl(var(--deck-accent))]",children:Ct(a)}),e.jsx("p",{className:"mt-1.5 whitespace-pre-wrap text-[12px] leading-5 text-[hsl(var(--deck-ink-muted))]",children:a.body})]},`${a.codeLocation.path}:${a.codeLocation.lineStart}:${l}`))})]}),t.error&&e.jsxs("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 px-3 py-2 text-[11px] text-red-700 dark:text-red-300",children:[e.jsxs("span",{className:"font-medium",children:[s("chat.review.error"),":"]})," ",t.error]})]})]})}function Tt({elicitation:t,messageId:s}){const r=D(),a=w(u=>u.currentSessionRef),l=w(u=>u.setElicitation),[n,d]=p.useState(()=>Ft(t.details.fields??[])),[b,c]=p.useState(()=>Dt(t.details.fields??[])),[o,j]=p.useState(!1),[i,m]=p.useState(),f=t.details.fields??[],k=p.useMemo(()=>f.every(u=>{var v;if(!u.required)return!0;if(te(u))return!!((v=b[u.name])!=null&&v.trim()||u.defaultValue!==void 0);const x=n[u.name]??u.defaultValue;return Array.isArray(x)?x.length>0:x!==void 0}),[f,b,n]);if(t.status!=="pending")return e.jsx("div",{className:"rounded-lg border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-3 py-2 font-mono text-[12px] text-[hsl(var(--deck-ink-muted))]",children:r(t.status==="cancelled"?"interaction.elicitation.cancelled":"interaction.elicitation.responded")});const y=async(u,x)=>{if(!(!a||o)){j(!0),m(void 0);try{await V.respondToElicitation(a,t.toolCallId,{action:u,...x?{content:x}:{}}),l(s,{...t,status:"responded"})}catch(v){m(v instanceof Error?v.message:r("interaction.elicitation.failed"))}finally{j(!1)}}},h=async()=>{try{await y("accept",Rt(f,n,b))}catch(u){m(u instanceof Error?u.message:String(u))}},E=()=>{const u=t.details.url;if(!u){m("MCP URL is unavailable");return}if(!window.open(u,"_blank","noopener,noreferrer")){m("The browser blocked the external window");return}y("accept")};return e.jsxs("div",{"data-pending-interaction":"elicitation",tabIndex:-1,role:"alert",className:"space-y-4 rounded-lg border border-amber-300/70 bg-amber-50/70 p-4 outline-none focus-visible:ring-2 focus-visible:ring-amber-500 dark:border-amber-800/70 dark:bg-amber-950/25",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(tt,{className:"mt-0.5 h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400"}),e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsxs("div",{className:"font-mono text-[12px] font-semibold text-[hsl(var(--deck-ink))]",children:[r("interaction.elicitation.title")," · ",t.details.serverName]}),e.jsx("div",{className:"font-mono text-[12px] text-[hsl(var(--deck-ink-muted))]",children:t.details.message}),e.jsx("div",{className:"font-mono text-[11px] text-amber-700 dark:text-amber-300",children:r("interaction.elicitation.warning")})]})]}),t.details.mode==="url"?e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] p-3 font-mono text-[11px]",children:[e.jsx("div",{className:"text-[hsl(var(--deck-ink-muted))]",children:t.details.domain}),e.jsx("div",{className:"mt-1 break-all text-[hsl(var(--deck-ink))]",children:t.details.url})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(O,{onClick:E,disabled:o,primary:!0,label:r("interaction.elicitation.open"),icon:e.jsx(st,{className:"h-3.5 w-3.5"})}),e.jsx(O,{onClick:()=>void y("decline"),disabled:o,label:r("interaction.elicitation.decline")}),e.jsx(O,{onClick:()=>void y("cancel"),disabled:o,label:r("interaction.elicitation.cancel")})]})]}):e.jsxs("div",{className:"space-y-4",children:[f.map(u=>e.jsx(At,{field:u,value:n[u.name],rawValue:b[u.name]??"",onValueChange:x=>d(v=>({...v,[u.name]:x})),onRawChange:x=>c(v=>({...v,[u.name]:x}))},u.name)),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(O,{onClick:()=>void h(),disabled:o||!k,primary:!0,label:r("interaction.elicitation.submit"),icon:o?e.jsx(F,{className:"h-3.5 w-3.5 animate-spin"}):null}),e.jsx(O,{onClick:()=>void y("decline"),disabled:o,label:r("interaction.elicitation.decline")}),e.jsx(O,{onClick:()=>void y("cancel"),disabled:o,label:r("interaction.elicitation.cancel")})]})]}),i&&e.jsx("div",{className:"rounded-md border border-red-300/70 bg-red-50 px-2.5 py-2 font-mono text-[11px] text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300",children:i})]})}function At({field:t,value:s,rawValue:r,onValueChange:a,onRawChange:l}){return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{htmlFor:`mcp-elicitation-${t.name}`,className:"block font-mono text-[12px] font-medium text-[hsl(var(--deck-ink))]",children:[t.title,t.required?" *":""]}),t.description&&e.jsx("div",{className:"font-mono text-[11px] text-[hsl(var(--deck-ink-faint))]",children:t.description}),t.type==="select"||t.type==="multi-select"||t.type==="boolean"?e.jsx("div",{id:`mcp-elicitation-${t.name}`,className:"flex flex-wrap gap-2",children:Mt(t).map(n=>{const d=Array.isArray(s)?s.includes(n.value):s===n.typedValue;return e.jsx("button",{type:"button","aria-pressed":d,onClick:()=>{if(t.type==="multi-select"){const b=Array.isArray(s)?s:[];a(b.includes(n.value)?b.filter(c=>c!==n.value):[...b,n.value])}else a(n.typedValue)},className:A("rounded-md border px-3 py-2 font-mono text-[12px] transition-colors",d?"border-emerald-500 bg-emerald-50 text-emerald-800 dark:bg-emerald-950/40 dark:text-emerald-200":"border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] text-[hsl(var(--deck-ink-muted))] hover:text-[hsl(var(--deck-ink))]"),children:n.label},n.value)})}):e.jsx("input",{id:`mcp-elicitation-${t.name}`,type:It(t),value:r,onChange:n=>l(n.target.value),min:t.minimum,max:t.maximum,minLength:t.minLength,maxLength:t.maxLength,required:t.required,placeholder:t.defaultValue===void 0?t.required?"Required":"Optional":String(t.defaultValue),className:"w-full rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-3 py-2 font-mono text-[12px] text-[hsl(var(--deck-ink))] outline-none transition-colors focus:border-amber-500 focus:ring-1 focus:ring-amber-500"})]})}function O({onClick:t,disabled:s,primary:r=!1,label:a,icon:l}){return e.jsxs("button",{type:"button",onClick:t,disabled:s,className:A("inline-flex min-h-8 items-center gap-1.5 rounded-md px-3 py-1.5 font-mono text-[12px] transition-colors disabled:cursor-wait disabled:opacity-50",r?"bg-amber-600 text-white hover:bg-amber-700":"border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] text-[hsl(var(--deck-ink-muted))] hover:text-[hsl(var(--deck-ink))]"),children:[l,a]})}function Ft(t){return Object.fromEntries(t.filter(s=>!te(s)&&s.defaultValue!==void 0).map(s=>[s.name,Array.isArray(s.defaultValue)?[...s.defaultValue]:s.defaultValue]))}function Dt(t){return Object.fromEntries(t.filter(s=>te(s)&&s.defaultValue!==void 0).map(s=>[s.name,String(s.defaultValue)]))}function Rt(t,s,r){var l;const a={};for(const n of t){if(te(n)){const b=((l=r[n.name])==null?void 0:l.trim())??"";if(!b){if(n.defaultValue!==void 0)a[n.name]=n.defaultValue;else if(n.required)throw new Error(`${n.title} is required`);continue}if(n.type==="number"||n.type==="integer"){const c=Number(b);if(!Number.isFinite(c))throw new Error(`${n.title} must be a finite number`);if(n.type==="integer"&&!Number.isSafeInteger(c))throw new Error(`${n.title} must be a safe integer`);a[n.name]=c}else a[n.name]=b;continue}const d=s[n.name]??n.defaultValue;if(d===void 0){if(n.required)throw new Error(`${n.title} is required`);continue}if(Array.isArray(d)){if(n.minItems!==void 0&&d.length<n.minItems)throw new Error(`${n.title} requires at least ${n.minItems} choices`);if(n.maxItems!==void 0&&d.length>n.maxItems)throw new Error(`${n.title} allows at most ${n.maxItems} choices`)}a[n.name]=d}return a}function Mt(t){return t.type==="boolean"?[{value:"true",label:"Yes",typedValue:!0},{value:"false",label:"No",typedValue:!1}]:(t.options??[]).map(s=>({...s,typedValue:s.value}))}function te(t){return t.type==="string"||t.type==="number"||t.type==="integer"}function It(t){return t.type==="number"||t.type==="integer"?"number":t.format==="email"?"email":t.format==="uri"?"url":t.format==="date"?"date":t.format==="date-time"?"datetime-local":"text"}function Bt(t){if(!t||typeof t!="object"||Array.isArray(t))return;const s=t;if(!(!s.output||typeof s.output!="object"||Array.isArray(s.output)))return{output:s.output,...typeof s.schemaDigest=="string"?{schemaDigest:s.schemaDigest}:{}}}function $t({report:t}){const s=D(),[r,a]=p.useState(!1),l=JSON.stringify(t.output,null,2),n=async()=>{try{await navigator.clipboard.writeText(l),a(!0),window.setTimeout(()=>a(!1),1400)}catch{}};return e.jsxs("section",{"data-structured-output":!0,className:"overflow-hidden rounded-lg border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]",children:[e.jsxs("header",{className:"flex min-h-9 items-center justify-between gap-3 border-b border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-3",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(rt,{className:"h-3.5 w-3.5 shrink-0 text-[hsl(var(--deck-accent))]"}),e.jsx("span",{className:"font-mono text-[11px] font-semibold text-[hsl(var(--deck-ink))]",children:s("chat.structuredOutput.title")}),t.schemaDigest&&e.jsxs("span",{title:t.schemaDigest,className:"truncate font-mono text-[9px] text-[hsl(var(--deck-ink-faint))]",children:["sha256:",t.schemaDigest.slice(0,10)]})]}),e.jsx("button",{type:"button",onClick:n,"aria-label":s("chat.structuredOutput.copy"),title:s("chat.structuredOutput.copy"),className:"flex h-6 w-6 shrink-0 items-center justify-center rounded text-[hsl(var(--deck-ink-faint))] hover:bg-[hsl(var(--deck-surface))] hover:text-[hsl(var(--deck-ink))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:r?e.jsx(Z,{className:"h-3.5 w-3.5 text-[hsl(var(--deck-accent))]"}):e.jsx(Te,{className:"h-3.5 w-3.5"})})]}),e.jsx("pre",{className:"max-h-[440px] overflow-auto whitespace-pre p-3 font-mono text-[11px] leading-5 text-[hsl(var(--deck-ink))]",children:l})]})}const Pt=p.lazy(()=>He(()=>import("./MarkdownRenderer-DBSjC_z3.js").then(t=>t.M),__vite__mapDeps([0,1,2,3,4,5])).then(t=>({default:t.MarkdownRenderer})));function fe({text:t,label:s}){const[r,a]=p.useState(!1);if(!t.trim())return null;const l=async()=>{try{await navigator.clipboard.writeText(t),a(!0),window.setTimeout(()=>a(!1),1400)}catch{}};return e.jsx("button",{type:"button","aria-label":s,title:s,onClick:l,className:"flex h-6 w-6 items-center justify-center rounded-md text-[hsl(var(--deck-ink-faint))] transition-colors hover:bg-[hsl(var(--deck-surface))] hover:text-[hsl(var(--deck-ink))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:r?e.jsx(Z,{className:"h-3.5 w-3.5 text-[hsl(var(--deck-accent))]"}):e.jsx(Te,{className:"h-3.5 w-3.5"})})}function _t(){return e.jsx("div",{className:"flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-lg border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] shadow-[0_1px_0_hsl(var(--deck-hairline))]",children:e.jsx(ne,{size:20,pulse:!1})})}function Lt(){return e.jsx("div",{className:"flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-full border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-canvas-veil))]",children:e.jsx("span",{className:"font-mono text-[11px] font-medium text-[hsl(var(--deck-ink))]",children:"U"})})}function be(t){let s=t;return s=s.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g,""),s=s.replace(/<file path="[^"]*">[\s\S]*?<\/file>/g,""),s=s.replace(/<attached_files>[\s\S]*?<\/attached_files>/g,""),s=s.trim(),s}function Vt(t){if(typeof t=="string")return{text:be(t),images:[]};const s=t.filter(a=>a.type==="text").map(a=>a.text).join(`
3
- `),r=t.filter(a=>a.type==="image_url").map(a=>a.image_url.url);return{text:be(s),images:r}}function ce(t){return typeof t=="string"?t:t.filter(s=>s.type==="text").map(s=>s.text).join(`
4
- `)}function Ot(t){const s=t.agentContent;return s?Le(s):ce(t.content)}function ge({content:t,syntaxHighlight:s=!0}){return e.jsx(p.Suspense,{fallback:e.jsx("pre",{className:"text-[14px] text-[hsl(var(--deck-ink))] font-mono whitespace-pre-wrap",children:t}),children:e.jsx(Pt,{content:t,syntaxHighlight:s})})}function de({status:t}){if(!t)return null;const s={running:"bg-[#FEF3C7] text-[#92400E] dark:bg-[#F59E0B]/20 dark:text-[#FBBF24]",success:"bg-[#DCFCE7] text-[#15803D] dark:bg-[#22C55E]/20 dark:text-[#22C55E]",error:"bg-[#FEE2E2] text-[#b91c1c] dark:bg-[#EF4444]/20 dark:text-[#fca5a5]",pending:"bg-[#E5E7EB] text-[#6B7280] dark:bg-[#27272a] dark:text-[#a1a1aa]",info:"bg-[#DBEAFE] text-[#1D4ED8] dark:bg-[#3B82F6]/20 dark:text-[#60A5FA]"},r={running:"Running",success:"Success",error:"Error",pending:"Pending",info:"Info"};return e.jsx("span",{className:A("text-[11px] px-2 py-0.5 rounded-full font-mono",s[t]),children:r[t]})}function Ut(t){if(!t)return"";if(typeof t=="string")try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}return JSON.stringify(t,null,2)}function Ht({tool:t}){const[s,r]=p.useState(!1),a=Ut(t.arguments);return e.jsxs("div",{className:"bg-white dark:bg-[#18181b] border border-[hsl(var(--deck-border))] rounded-lg overflow-hidden",children:[e.jsxs("button",{type:"button","aria-expanded":s,"data-tool-call-id":t.toolCallId,onClick:()=>r(l=>!l),className:"w-full flex items-center justify-between px-3 py-2 bg-[hsl(var(--deck-surface-2))] hover:bg-[hsl(var(--deck-surface))] transition-colors",children:[e.jsxs("div",{className:"flex gap-2 items-center min-w-0",children:[s?e.jsx(ee,{className:"h-4 w-4 text-[hsl(var(--deck-ink-faint))] shrink-0"}):e.jsx(oe,{className:"h-4 w-4 text-[hsl(var(--deck-ink-faint))] shrink-0"}),e.jsx("span",{className:"text-[12px] text-[hsl(var(--deck-ink))] font-mono shrink-0",children:t.toolName}),t.summary&&e.jsx("span",{className:"text-[11px] text-[hsl(var(--deck-ink-muted))] font-mono truncate",children:t.summary})]}),e.jsx(de,{status:t.status})]}),t.status==="running"&&t.progressMessage&&e.jsxs("div",{className:"border-t border-[hsl(var(--deck-border))] px-3 py-2 space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 font-mono text-[10px] text-[hsl(var(--deck-ink-muted))]",children:[e.jsx("span",{className:"truncate",children:t.progressMessage}),t.progressTotal!==void 0&&t.progress!==void 0&&e.jsxs("span",{className:"shrink-0",children:[Math.max(0,Math.min(100,Math.round(t.progress/t.progressTotal*100))),"%"]})]}),t.progressTotal!==void 0&&t.progress!==void 0&&e.jsx("div",{role:"progressbar","aria-label":`${t.toolName} progress`,"aria-valuemin":0,"aria-valuemax":t.progressTotal,"aria-valuenow":Math.min(t.progress,t.progressTotal),className:"h-1 overflow-hidden rounded-full bg-[hsl(var(--deck-border))]",children:e.jsx("div",{className:"h-full rounded-full bg-amber-500 transition-[width] duration-150",style:{width:`${Math.max(0,Math.min(100,t.progress/t.progressTotal*100))}%`}})})]}),s&&e.jsxs("div",{className:"px-3 py-2 space-y-2 border-t border-[hsl(var(--deck-border))]",children:[a&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-[11px] text-[hsl(var(--deck-ink-muted))] font-mono",children:"Arguments"}),e.jsx("pre",{className:"text-[11px] text-[hsl(var(--deck-ink))] bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-md p-2 overflow-x-auto whitespace-pre-wrap font-mono max-h-[120px] overflow-y-auto",children:a})]}),t.output&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-[11px] text-[hsl(var(--deck-ink-muted))] font-mono",children:"Output"}),e.jsx("pre",{className:"text-[11px] text-[hsl(var(--deck-ink))] bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-md p-2 overflow-x-auto whitespace-pre-wrap font-mono max-h-[120px] overflow-y-auto",children:t.output.length>500?t.output.slice(0,500)+"...":t.output})]})]})]})}function Me({toolCalls:t}){return t.length===0?null:e.jsx("div",{className:"space-y-2",children:t.map(s=>e.jsx(Ht,{tool:s},s.toolCallId))})}function Kt({toolCalls:t,toolCallIds:s}){const r=D(),[a,l]=p.useState(!1),n=p.useMemo(()=>new Map(t.map(i=>[i.toolCallId,i])),[t]),d=s.flatMap(i=>{const m=n.get(i);return m?[m]:[]});if(d.length===0)return null;const b=d.filter(i=>i.status==="running").length,c=d.filter(i=>i.status==="error").length,o=[...d].reverse().find(i=>i.status==="running"&&!!i.progressMessage),j=b>0?r(d.length===1?"chat.timeline.tools.runningOne":"chat.timeline.tools.running",{count:d.length}):c>0?r(d.length===1?"chat.timeline.tools.completedOneWithError":"chat.timeline.tools.completedWithErrors",{count:d.length,errors:c}):r(d.length===1?"chat.timeline.tools.completedOne":"chat.timeline.tools.completed",{count:d.length});return e.jsxs("div",{"data-agent-tool-group":!0,className:"py-0.5",children:[e.jsxs("button",{type:"button","aria-expanded":a,onClick:()=>l(i=>!i),className:"group flex min-h-7 w-full items-center gap-1.5 rounded-md px-1.5 text-left font-mono text-[11.5px] text-[hsl(var(--deck-ink-faint))] transition-colors hover:bg-[hsl(var(--deck-surface))]/65 hover:text-[hsl(var(--deck-ink-muted))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:[a?e.jsx(ee,{className:"h-3.5 w-3.5 shrink-0"}):e.jsx(oe,{className:"h-3.5 w-3.5 shrink-0"}),b>0&&e.jsx(F,{className:"h-3 w-3 shrink-0 animate-spin text-[hsl(var(--deck-accent))]"}),e.jsx("span",{children:j}),(o==null?void 0:o.progressMessage)&&e.jsxs("span",{className:"min-w-0 truncate text-[10.5px] text-[hsl(var(--deck-ink-muted))]",children:[o.progressMessage,o.progress!==void 0&&o.progressTotal!==void 0&&` · ${Math.max(0,Math.min(100,Math.round(o.progress/o.progressTotal*100)))}%`]})]}),(o==null?void 0:o.progress)!==void 0&&o.progressTotal!==void 0&&e.jsx("div",{role:"progressbar","aria-label":`${o.toolName} progress`,"aria-valuemin":0,"aria-valuemax":o.progressTotal,"aria-valuenow":Math.min(o.progress,o.progressTotal),className:"mx-1.5 h-0.5 overflow-hidden rounded-full bg-[hsl(var(--deck-border))]",children:e.jsx("div",{className:"h-full rounded-full bg-amber-500 transition-[width] duration-150",style:{width:`${Math.max(0,Math.min(100,o.progress/o.progressTotal*100))}%`}})}),a&&e.jsx("div",{"data-agent-tool-group-details":!0,className:"mt-2 space-y-2 pl-1",children:e.jsx(Me,{toolCalls:d})})]})}function qt({content:t}){const s=D(),[r,a]=p.useState(!1);return t?e.jsxs("div",{"data-agent-thinking":!0,className:"py-0.5",children:[e.jsxs("button",{type:"button","aria-expanded":r,onClick:()=>a(l=>!l),className:"flex min-h-7 w-full items-center gap-1.5 rounded-md px-1.5 text-left font-mono text-[11.5px] text-[hsl(var(--deck-ink-faint))] transition-colors hover:bg-[hsl(var(--deck-surface))]/65 hover:text-[hsl(var(--deck-ink-muted))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:[r?e.jsx(ee,{className:"h-4 w-4 text-[hsl(var(--deck-ink-faint))]"}):e.jsx(oe,{className:"h-4 w-4 text-[hsl(var(--deck-ink-faint))]"}),e.jsx("span",{children:s("chat.timeline.thinking")})]}),r&&e.jsx("div",{className:"ml-1 mt-1 border-l border-[hsl(var(--deck-border))] py-1 pl-3",children:e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-[11px] leading-5 text-[hsl(var(--deck-ink-muted))]",children:t})})]}):null}function zt({tasks:t}){if(t.length===0)return null;const s=t.filter(a=>a.status==="completed").length,r=s===t.length;return e.jsx("div",{className:"bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-lg px-3 py-2",children:e.jsx("div",{className:"flex gap-2 items-center",children:e.jsx("span",{className:"text-[12px] text-[hsl(var(--deck-ink-muted))] font-mono",children:r?"✓ All tasks done":`Tasks: ${s}/${t.length}`})})})}function Gt({toolCalls:t}){const s=ie(a=>a.openFilePreview),r=p.useMemo(()=>{const a=new Map,l=["Write","SearchReplace","Edit","ApplyPatch"];for(const n of t){if(n.status!=="success")continue;const d=n.metadata;if(n.toolName==="ApplyPatch"&&Array.isArray(d==null?void 0:d.changes)){for(const c of d.changes)c&&typeof c=="object"&&"path"in c&&typeof c.path=="string"&&a.set(c.path,{path:c.path,toolName:n.toolName});continue}const b=d==null?void 0:d.file_path;b&&l.includes(n.toolName)&&a.set(b,{path:b,toolName:n.toolName})}return Array.from(a.values())},[t]);return r.length===0?null:e.jsxs("div",{className:"bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-lg px-3 py-2",children:[e.jsxs("div",{className:"text-[11px] text-[hsl(var(--deck-ink-muted))] font-mono mb-1.5",children:["Changed files (",r.length,")"]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:r.map(({path:a})=>{const l=a.split("/").pop()||a;return e.jsxs("button",{onClick:()=>s({tab:"diff",targetPath:a}),className:"flex items-center gap-1 px-2 py-1 text-[11px] font-mono bg-[#E5E7EB] dark:bg-[#27272a] text-[hsl(var(--deck-ink))] rounded hover:bg-[#D1D5DB] dark:hover:bg-[#3f3f46] transition-colors",title:a,children:[e.jsx(at,{className:"w-3 h-3"}),l]},a)})})]})}function Wt({subagent:t}){var W,K;const s=D(),[r,a]=p.useState(null),[l,n]=p.useState(!1),[d,b]=p.useState(null),[c,o]=p.useState(!1),[j,i]=p.useState(""),[m,f]=p.useState(!1),[k,y]=p.useState(null),[h,E]=p.useState(null),u=w(T=>T.currentSessionRef),x=w(T=>T.isStreaming),v=w(T=>T.isTemporarySession);if(!t)return null;const N=t.status==="running",S=r!==null?r:N,R=t.toolCalls||d||[],U=t.output||t.thinking||R.length>0||t.sessionId,C=h&&h.status!=="running"?h.id:t.sessionId,B=!N&&!x&&!v&&(h==null?void 0:h.status)!=="running"&&!!(C&&u);p.useEffect(()=>{if(!S||N||!t.sessionId||!(u!=null&&u.projectPath)||d!==null||t.toolCalls&&t.toolCalls.length>0)return;let T=!0;return n(!0),V.getMessages({sessionId:t.sessionId,projectPath:u.projectPath}).then(_=>{var I,M;if(!T)return;const $=Ue(_),P=new Map;for(const L of $)if((M=(I=L.agentContent)==null?void 0:I.toolCalls)!=null&&M.length)for(const q of L.agentContent.toolCalls)P.has(q.toolCallId)||P.set(q.toolCallId,q);b(Array.from(P.values()))}).finally(()=>{T&&n(!1)}),()=>{T=!1}},[S,N,t.sessionId,t.toolCalls,d,u==null?void 0:u.projectPath]),p.useEffect(()=>{if(!t.sessionId||!u)return;let T=!0;const _=t.rootAgentId??t.sessionId,$=t.resumeDepth??0;return V.listSubagents(u).then(P=>{if(!T)return;const I=P.filter(M=>M.id!==t.sessionId&&M.rootAgentId===_&&M.resumeDepth>$).sort((M,L)=>L.resumeDepth-M.resumeDepth||L.lastActiveAt-M.lastActiveAt)[0];I&&E(I)}).catch(()=>{}),()=>{T=!1}},[u==null?void 0:u.sessionId,u==null?void 0:u.projectPath,t.sessionId,t.rootAgentId,t.resumeDepth]),p.useEffect(()=>{if(!h||h.status!=="running"||!u)return;let T=!0;const _=async()=>{try{const I=(await V.listSubagents(u)).find(M=>M.id===h.id);T&&I&&E(I)}catch{}},$=window.setInterval(()=>{_()},1e3);return()=>{T=!1,window.clearInterval($)}},[u,h==null?void 0:h.id,h==null?void 0:h.status]);const H=async()=>{if(!(!u||!C||!j.trim()||m)){f(!0),y(null);try{const T=await V.resumeSubagent(u,C,j.trim());E(T.session),i(""),o(!1),a(!0)}catch(T){y(T instanceof Error?T.message:s("chat.subagent.resumeFailed"))}finally{f(!1)}}};return e.jsxs("div",{"data-subagent-id":t.id,className:"bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-lg px-3 py-2",children:[e.jsxs("button",{type:"button",onClick:()=>a(!S),className:"flex gap-2 justify-between items-center w-full transition-opacity cursor-pointer hover:opacity-80",children:[e.jsxs("div",{className:"flex gap-2 items-center",children:[N&&e.jsx(F,{className:"h-3 w-3 animate-spin text-[hsl(var(--deck-ink-muted))]"}),e.jsxs("span",{className:"text-[12px] text-[hsl(var(--deck-ink-muted))] font-mono",children:[t.type,": ",t.description]}),e.jsx(de,{status:t.status==="completed"?"success":t.status==="failed"?"error":"running"}),t.type==="verification"&&t.verificationVerdict&&e.jsx("span",{"data-verification-verdict":t.verificationVerdict,className:A("rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",t.verificationVerdict==="pass"?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":t.verificationVerdict==="fail"?"bg-red-500/10 text-red-600 dark:text-red-400":"bg-amber-500/10 text-amber-600 dark:text-amber-400"),children:t.verificationVerdict}),t.resumedFrom&&e.jsx("span",{className:"rounded bg-[#EDE9FE] px-1.5 py-0.5 text-[10px] font-mono text-[#6D28D9] dark:bg-[#2E1065] dark:text-[#C4B5FD]",title:s("chat.subagent.resumedFromTitle",{id:t.resumedFrom}),children:s("chat.subagent.resumedDepth",{depth:t.resumeDepth??1})})]}),U&&e.jsx(ee,{className:A("h-3.5 w-3.5 text-[hsl(var(--deck-ink-muted))] transition-transform",S&&"rotate-180")})]}),S&&e.jsxs("div",{className:"mt-2 space-y-2",children:[(t.output||t.thinking)&&e.jsxs(e.Fragment,{children:[t.output&&e.jsx("pre",{className:"text-[11px] text-[hsl(var(--deck-ink))] bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-md p-2 overflow-x-auto whitespace-pre-wrap font-mono max-h-[160px] overflow-y-auto",children:t.output}),t.thinking&&e.jsx("pre",{className:"text-[11px] text-[hsl(var(--deck-ink-muted))] bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-md p-2 overflow-x-auto whitespace-pre-wrap font-mono max-h-[120px] overflow-y-auto",children:t.thinking})]}),l&&e.jsxs("div",{className:"flex items-center gap-2 text-[11px] text-[hsl(var(--deck-ink-muted))] font-mono",children:[e.jsx(F,{className:"w-3 h-3 animate-spin"}),s("chat.subagent.loadingLogs")]}),!l&&R.length>0&&e.jsx(Me,{toolCalls:R}),h&&e.jsxs("div",{className:"rounded-md border border-[#DDD6FE] bg-[#F5F3FF] p-2 text-[11px] font-mono text-[#5B21B6] dark:border-[#4C1D95] dark:bg-[#1E1B4B] dark:text-[#C4B5FD]",children:[e.jsx("div",{children:s("chat.subagent.resumedAs",{id:h.id,status:h.status,depth:h.resumeDepth??1})}),(((W=h.result)==null?void 0:W.message)||((K=h.result)==null?void 0:K.error))&&e.jsx("div",{className:"mt-1 whitespace-pre-wrap text-[hsl(var(--deck-ink))]",children:h.result.message||h.result.error})]}),B&&e.jsxs("div",{className:"space-y-2",children:[c?e.jsxs("div",{className:"space-y-2 rounded-md border border-[#E5E7EB] bg-white p-2 dark:border-[#27272a] dark:bg-[#111113]",children:[e.jsx("textarea",{"aria-label":s("chat.subagent.followUpAria"),value:j,onChange:T=>i(T.target.value),placeholder:s("chat.subagent.followUpPlaceholder"),rows:3,className:"w-full resize-y rounded border border-[#D1D5DB] bg-white p-2 text-[11px] text-[#111827] outline-none focus:border-[#8B5CF6] dark:border-[#3f3f46] dark:bg-[#18181b] dark:text-[#f4f4f5]"}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{type:"button",onClick:()=>{o(!1),y(null)},className:"rounded px-2 py-1 text-[11px] text-[#6B7280] hover:bg-[#F3F4F6] dark:hover:bg-[#27272a]",children:s("chat.subagent.cancel")}),e.jsxs("button",{type:"button",onClick:()=>void H(),disabled:!j.trim()||m,className:"flex items-center gap-1 rounded bg-[#7C3AED] px-2 py-1 text-[11px] font-medium text-white disabled:opacity-50",children:[m&&e.jsx(F,{className:"w-3 h-3 animate-spin"}),s("chat.subagent.resumeAgent")]})]})]}):e.jsxs("button",{type:"button","aria-label":s("chat.subagent.resumeAria"),onClick:()=>o(!0),className:"flex items-center gap-1.5 rounded-md border border-[#D1D5DB] px-2 py-1 text-[11px] font-medium text-[#374151] transition-colors hover:bg-[#F3F4F6] dark:border-[#3f3f46] dark:text-[#d4d4d8] dark:hover:bg-[#27272a]",children:[e.jsx(le,{className:"w-3 h-3"}),s("chat.subagent.resume")]}),k&&e.jsx("div",{role:"alert",className:"text-[11px] text-red-600",children:k})]})]})]})}function Jt({confirmation:t,messageId:s}){const r=D(),[a,l]=p.useState(!1),[n,d]=p.useState(null),b=w(j=>j.currentSessionRef),c=w(j=>j.setConfirmation);if(!t)return null;const o=async(j,i)=>{if(!(!b||a)){l(!0),d(null);try{await V.respondPermission(b,t.toolCallId,{approved:j,scope:i}),c(s,{...t,status:j?"approved":"denied"})}catch(m){d(m instanceof Error?m.message:r("interaction.permission.failed"))}finally{l(!1)}}};return t.status!=="pending"?null:e.jsxs("div",{"data-pending-interaction":"permission",tabIndex:-1,role:"alert",className:"space-y-3 rounded-lg border border-amber-300/70 bg-amber-50/70 p-4 outline-none focus-visible:ring-2 focus-visible:ring-amber-500 dark:border-amber-800/70 dark:bg-amber-950/25",children:[e.jsx("div",{className:"text-[13px] text-[hsl(var(--deck-ink))] font-mono",children:r("interaction.permission.title",{tool:t.toolName})}),e.jsx("div",{className:"text-[12px] text-[hsl(var(--deck-ink-muted))] font-mono",children:t.description}),t.diff&&e.jsx("pre",{className:"text-[11px] text-[hsl(var(--deck-ink))] bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-md p-2 overflow-x-auto whitespace-pre-wrap font-mono max-h-[200px] overflow-y-auto",children:t.diff}),n&&e.jsx("div",{role:"alert",className:"rounded-md border border-red-300/70 bg-red-50 px-2.5 py-2 font-mono text-[11px] text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300",children:n}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("button",{type:"button",onClick:()=>void o(!0,"once"),disabled:a,className:"min-h-8 px-3 py-1.5 text-[12px] font-mono bg-[#22C55E] text-white rounded-md hover:bg-[#16A34A] disabled:cursor-wait disabled:opacity-50",children:a?e.jsx(F,{className:"h-3.5 w-3.5 animate-spin"}):r("interaction.permission.once")}),t.allowRemember!==!1&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:()=>void o(!0,"session"),disabled:a,className:"min-h-8 px-3 py-1.5 text-[12px] font-mono bg-[#3B82F6] text-white rounded-md hover:bg-[#2563EB] disabled:cursor-wait disabled:opacity-50",children:r("interaction.permission.session")}),e.jsx("button",{type:"button",onClick:()=>void o(!0,"project"),disabled:a,className:"min-h-8 px-3 py-1.5 text-[12px] font-mono bg-[#6366F1] text-white rounded-md hover:bg-[#4F46E5] disabled:cursor-wait disabled:opacity-50",children:r("interaction.permission.project")})]}),e.jsx("button",{type:"button",onClick:()=>void o(!1),disabled:a,className:"min-h-8 px-3 py-1.5 text-[12px] font-mono bg-[#EF4444] text-white rounded-md hover:bg-[#DC2626] disabled:cursor-wait disabled:opacity-50",children:r("interaction.permission.deny")})]})]})}function Qt({question:t,messageId:s}){const r=D(),[a,l]=p.useState({}),[n,d]=p.useState({}),[b,c]=p.useState(!1),[o,j]=p.useState(null),i=w(h=>h.currentSessionRef),m=w(h=>h.setQuestion),f=p.useMemo(()=>t?t.questions.reduce((h,E)=>{var N;const u=(N=n[E.header])==null?void 0:N.trim(),x=a[E.header];if(E.multiSelect){const S=Array.isArray(x)?[...x]:[];return u&&S.push(u),S.length>0&&(h[E.header]=S),h}const v=u||(typeof x=="string"?x:"");return v&&(h[E.header]=v),h},{}):{},[a,n,t]),k=(t==null?void 0:t.questions.every(h=>h.header in f))??!1;if(!t)return null;const y=async()=>{if(!(!i||b||!k)){c(!0),j(null);try{await V.respondToQuestion(i,t.toolCallId,f),m(s,{...t,status:"answered",answers:f})}catch(h){j(h instanceof Error?h.message:r("interaction.question.failed"))}finally{c(!1)}}};return t.status!=="pending"?e.jsx("div",{className:"bg-[hsl(var(--deck-surface-2))] border border-[hsl(var(--deck-border))] rounded-lg px-3 py-2",children:e.jsx("div",{className:"text-[12px] text-[hsl(var(--deck-ink-muted))] font-mono",children:r("interaction.question.answered")})}):e.jsxs("div",{"data-pending-interaction":"question",tabIndex:-1,role:"alert",className:"space-y-4 rounded-lg border border-amber-300/70 bg-amber-50/70 p-4 outline-none focus-visible:ring-2 focus-visible:ring-amber-500 dark:border-amber-800/70 dark:bg-amber-950/25",children:[t.questions.map((h,E)=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-[13px] text-[hsl(var(--deck-ink))] font-mono",children:h.question}),e.jsxs("div",{className:"space-y-1",children:[h.options.map((u,x)=>e.jsxs("button",{type:"button",onClick:()=>{if(h.multiSelect){const v=a[h.header]||[],N=v.includes(u.label)?v.filter(S=>S!==u.label):[...v,u.label];l({...a,[h.header]:N})}else l({...a,[h.header]:u.label}),d({...n,[h.header]:""})},className:A("w-full text-left px-3 py-2 rounded-md border text-[12px] font-mono transition-colors","border-[hsl(var(--deck-border))]",(h.multiSelect?(a[h.header]||[]).includes(u.label):a[h.header]===u.label)?"bg-[#DCFCE7] text-[#166534] dark:bg-[#22C55E]/20 dark:text-[#E5E5E5]":"bg-[hsl(var(--deck-surface-2))] text-[hsl(var(--deck-ink-muted))]"),children:[e.jsx("div",{children:u.label}),e.jsx("div",{className:"text-[11px] text-[hsl(var(--deck-ink-faint))] mt-1",children:u.description})]},x)),e.jsx("input",{"aria-label":`${h.header} other response`,value:n[h.header]??"",onChange:u=>d({...n,[h.header]:u.target.value}),placeholder:r("interaction.question.other"),className:"w-full rounded-md border border-[#E5E7EB] bg-white px-3 py-2 text-[12px] text-[#111827] outline-none focus:border-[#22C55E] dark:border-[#27272a] dark:bg-[#111113] dark:text-[#E5E5E5]"})]})]},E)),o&&e.jsx("div",{role:"alert",className:"rounded-md border border-red-300/70 bg-red-50 px-2.5 py-2 font-mono text-[11px] text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300",children:o}),e.jsxs("button",{type:"button",onClick:()=>void y(),disabled:b||!k,className:"inline-flex min-h-8 items-center gap-1.5 px-3 py-1.5 text-[12px] font-mono bg-[#22C55E] text-white rounded-md hover:bg-[#16A34A] disabled:cursor-wait disabled:opacity-50",children:[b&&e.jsx(F,{className:"h-3.5 w-3.5 animate-spin"}),r("interaction.question.submit")]})]})}function Yt({message:t}){const s=t.agentContent,r=w(k=>k.isStreaming&&k.currentAssistantMessageId===t.id);if(!s){const k=ce(t.content);return k?e.jsx(ge,{content:k}):null}const{toolCalls:a,tasks:l,confirmation:n,question:d,elicitation:b}=s,c=Ve(s),o=Oe(s);if(!(o.length>0||l.length>0||c.length>0||n||d||b)&&r)return e.jsxs("div",{className:"flex items-center gap-2 text-[hsl(var(--deck-ink-muted))]",children:[e.jsx(F,{className:"w-4 h-4 animate-spin"}),e.jsx("span",{className:"text-[12px] font-mono",children:"Thinking..."})]});const m=a.length>0&&a.every(k=>k.status==="success"||k.status==="error")&&!r,f=!r;return e.jsxs("div",{className:"space-y-3",children:[o.map(k=>k.type==="thinking"?e.jsx("div",{"data-agent-timeline-block":"thinking",children:e.jsx(qt,{content:k.content})},k.id):k.type==="text"?e.jsx("div",{"data-agent-timeline-block":"text",children:e.jsx(ge,{content:k.content,syntaxHighlight:f})},k.id):e.jsx("div",{"data-agent-timeline-block":"tool_group",children:e.jsx(Kt,{toolCalls:a,toolCallIds:k.toolCallIds})},k.id)),l.length>0&&e.jsx(zt,{tasks:l}),c.map(k=>e.jsx(Wt,{subagent:k},k.id)),n&&e.jsx(Jt,{confirmation:n,messageId:t.id}),d&&e.jsx(Qt,{question:d,messageId:t.id}),b&&e.jsx(Tt,{elicitation:b,messageId:t.id}),m&&e.jsx(Gt,{toolCalls:a})]})}function Xt({message:t,showAvatar:s=!0}){var b,c,o,j;const r=t.role==="user";if(t.role==="system"){const i=ce(t.content);return e.jsx("div",{"data-chat-message-id":t.id,className:"flex justify-center p-2 w-full",children:e.jsx("div",{className:"text-xs text-[hsl(var(--deck-ink-muted))] bg-[#F3F4F6] dark:bg-[#18181b] px-3 py-1 rounded-full font-mono",children:i})})}if(r){const i=(b=t.metadata)!=null&&b.userShellCommand&&typeof t.metadata.userShellCommand=="object"?t.metadata.userShellCommand:(c=t.metadata)!=null&&c.userShellExecution&&typeof t.metadata.userShellExecution=="object"?t.metadata.userShellExecution:void 0;if(i){const k=typeof i.command=="string"?i.command:"",y=i.status==="running"?"running":i.status==="completed"?"success":"error",h=typeof i.output=="string"?i.output:[typeof i.stdout=="string"?i.stdout:"",typeof i.stderr=="string"&&i.stderr?`stderr:
5
- ${i.stderr}`:""].filter(Boolean).join(`
6
- `);return e.jsx("div",{"data-chat-message-id":t.id,"data-user-shell-command":!0,className:"flex w-full justify-end p-4",children:e.jsxs("div",{className:"w-full max-w-[85%] overflow-hidden rounded-lg border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-3 py-2",children:[e.jsxs("div",{className:"min-w-0 truncate font-mono text-[12px] text-[hsl(var(--deck-ink))]",children:[e.jsx("span",{className:"mr-2 text-amber-600 dark:text-amber-400",children:"$"}),k]}),e.jsx(de,{status:y})]}),e.jsx("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap px-3 py-2 font-mono text-[11px] text-[hsl(var(--deck-ink-muted))]",children:h||"(no output)"}),typeof i.exitCode=="number"&&e.jsxs("div",{className:"border-t border-[hsl(var(--deck-border))] px-3 py-1.5 font-mono text-[10px] text-[hsl(var(--deck-ink-faint))]",children:["exit ",i.exitCode,typeof i.durationMs=="number"?` · ${(i.durationMs/1e3).toFixed(3)}s`:"",i.truncated===!0?" · truncated":""]})]})})}const{text:m,images:f}=Vt(t.content);return e.jsxs("div",{"data-chat-message-id":t.id,"data-chat-role":"user",className:"group flex gap-2 justify-end p-4 w-full items-start",children:[e.jsx("div",{className:"mt-1 flex shrink-0 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",children:e.jsx(fe,{text:m,label:"Copy message"})}),e.jsxs("div",{className:"bg-[hsl(var(--deck-surface-2))] rounded-lg px-4 py-3 max-w-[85%]",children:[m&&e.jsx("p",{className:"text-[14px] text-[hsl(var(--deck-ink))] font-mono leading-relaxed whitespace-pre-wrap",children:m}),f.length>0&&e.jsx("div",{className:A("grid gap-2",f.length===1?"grid-cols-1 mt-0":"grid-cols-2 mt-3"),children:f.map((k,y)=>e.jsx("img",{src:k,alt:`attachment-${y+1}`,className:"object-cover w-full max-h-64 rounded-md"},`${k}-${y}`))})]}),e.jsx(Lt,{})]})}const l=Ot(t),n=St((o=t.metadata)==null?void 0:o.codeReview),d=Bt((j=t.metadata)==null?void 0:j.structuredOutput);return e.jsxs("div",{"data-chat-message-id":t.id,className:A("group flex gap-4 justify-start w-full",s?"p-4":"px-4 pt-0 pb-3"),children:[s?e.jsx(_t,{}):e.jsx("div",{className:"w-8 shrink-0"}),e.jsxs("div",{className:"overflow-hidden flex-1 min-w-0",children:[n?e.jsx(Et,{report:n}):d?e.jsx($t,{report:d}):e.jsx(Yt,{message:t}),!d&&l.trim()&&e.jsx("div",{className:"mt-1.5 flex opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",children:e.jsx(fe,{text:l,label:"Copy response"})})]})]})}const Zt=p.memo(Xt);function es(t,s,r){return Math.max(0,t+(r-s))}function ts(t,s,r){return Math.min(s,Math.max(0,t)+Math.max(0,r))}function ve(t,s){return t?t.querySelector(`[data-chat-message-id="${CSS.escape(s)}"]`):null}function ss({turns:t,viewportRef:s,containerRef:r,onRevealTurn:a}){const l=D(),[n,d]=p.useState(null),[b,c]=p.useState(!1),o=p.useRef(null),j=p.useCallback(()=>{var h;const m=s.current,f=r.current;if(!m||!f||t.length===0)return;const k=m.getBoundingClientRect().top;let y=((h=t[0])==null?void 0:h.id)??null;for(const E of t){const u=ve(f,E.id);if(u)if(u.getBoundingClientRect().top-k<=24)y=E.id;else break}d(y)},[t,s,r]);p.useEffect(()=>{const m=s.current;if(!m)return;const f=()=>{o.current===null&&(o.current=window.requestAnimationFrame(()=>{o.current=null,j()}))};return j(),m.addEventListener("scroll",f,{passive:!0}),()=>{m.removeEventListener("scroll",f),o.current!==null&&(window.cancelAnimationFrame(o.current),o.current=null)}},[j,s]);const i=p.useCallback(m=>{const f=()=>{const y=ve(r.current,m.id);y&&(y.scrollIntoView({behavior:"smooth",block:"start"}),d(m.id))};a(m.index)?f():window.requestAnimationFrame(()=>window.requestAnimationFrame(f))},[r,a]);return t.length<2?null:e.jsx("nav",{"aria-label":l("chat.turns.aria"),className:"absolute right-1 top-1/2 z-20 hidden -translate-y-1/2 sm:block",onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),onFocusCapture:()=>c(!0),onBlurCapture:m=>{m.currentTarget.contains(m.relatedTarget)||c(!1)},children:e.jsxs("div",{className:"relative flex items-center justify-end",children:[e.jsx("ul",{className:A("flex flex-col items-center gap-2 py-2 transition-opacity",b?"opacity-0":"opacity-100"),"aria-hidden":b,children:t.map(m=>e.jsx("li",{children:e.jsx("span",{className:A("block rounded-full transition-all",m.id===n?"h-2 w-2 bg-[hsl(var(--deck-accent))]":"h-1.5 w-1.5 bg-[hsl(var(--deck-ink-faint))]/40")})},m.id))}),e.jsx("div",{className:A("absolute right-0 max-h-[min(70vh,520px)] w-[280px] overflow-y-auto rounded-lg border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]/95 p-1 shadow-xl backdrop-blur transition-all",b?"pointer-events-auto translate-x-0 opacity-100":"pointer-events-none translate-x-2 opacity-0"),children:t.map((m,f)=>e.jsxs("button",{type:"button",onClick:()=>i(m),className:A("flex w-full items-start gap-2 rounded-md px-2 py-1.5 text-left transition-colors",m.id===n?"bg-[hsl(var(--deck-hairline))]/70 text-[hsl(var(--deck-ink))]":"text-[hsl(var(--deck-ink-muted))] hover:bg-[hsl(var(--deck-hairline))]/50 hover:text-[hsl(var(--deck-ink))]"),children:[e.jsx("span",{className:A("mt-1 h-1.5 w-1.5 shrink-0 rounded-full",m.id===n?"bg-[hsl(var(--deck-accent))]":"bg-[hsl(var(--deck-ink-faint))]/40")}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block font-mono text-[9.5px] uppercase tracking-[0.12em] text-[hsl(var(--deck-ink-faint))]",children:l("chat.turns.label",{n:f+1})}),e.jsx("span",{className:"line-clamp-2 text-[12px] leading-4",children:m.preview})]})]},m.id))})]})})}const ke=80;function rs(t){return typeof t=="string"?t:Array.isArray(t)?t.filter(s=>s.type==="text").map(s=>s.text).join(" "):""}function as(t){const s=rs(t).replace(/\s+/g," ").trim();return s?s.length>ke?`${s.slice(0,ke-1)}…`:s:""}function ns(t){const s=[];for(let r=0;r<t.length;r+=1){const a=t[r];if(a.role!=="user"||!a.id)continue;const l=as(a.content);l&&s.push({id:a.id,index:r,preview:l})}return s}const re=120,ae=80,is=96;function z(t){return(t==null?void 0:t.querySelector("[data-radix-scroll-area-viewport]"))??null}function os({messages:t,isLoading:s}){const r=D(),a=p.useRef(null),l=p.useRef(null),n=p.useRef(!0),d=p.useRef(t.length),b=p.useRef(null),[c,o]=p.useState(re),[j,i]=p.useState(!1);p.useEffect(()=>{const x=z(a.current);if(!x||!n.current)return;const v=window.requestAnimationFrame(()=>{x.scrollTop=x.scrollHeight});return()=>window.cancelAnimationFrame(v)},[t]),p.useEffect(()=>{const x=z(a.current);if(!x)return;l.current=x;const v=()=>{const S=x.scrollHeight-x.scrollTop-x.clientHeight<=is;n.current=S,i(!S)};return v(),x.addEventListener("scroll",v,{passive:!0}),()=>x.removeEventListener("scroll",v)},[]),p.useEffect(()=>{const x=d.current;d.current=t.length,o(v=>v>=x&&t.length>x?t.length:Math.min(Math.max(v,re),t.length||re))},[t.length]);const m=Math.max(t.length-c,0),f=m,k=p.useMemo(()=>t.slice(f),[t,f]),y=p.useMemo(()=>ns(t),[t]);if(p.useLayoutEffect(()=>{var N;const x=b.current;if(!x)return;const v=z(a.current);if(b.current=null,!!v){if((N=x.element)!=null&&N.isConnected){const S=x.element.getBoundingClientRect().top-x.viewportTop;v.scrollTop+=S;return}v.scrollTop=es(x.scrollTop,x.scrollHeight,v.scrollHeight)}},[c]),s)return e.jsx("div",{role:"status","aria-live":"polite","aria-busy":"true",className:"flex overflow-hidden flex-1 justify-center items-center px-5 py-8 min-h-0",children:e.jsxs("div",{className:"w-full max-w-[560px]",children:[e.jsxs("div",{className:"flex flex-col items-center text-center",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-pulse rounded-full bg-[hsl(var(--deck-accent-soft))] blur-xl"}),e.jsx(ne,{size:42,className:"relative"})]}),e.jsxs("div",{className:"mt-4 inline-flex items-center gap-1.5 font-mono text-[10px] uppercase tracking-[0.16em] text-[hsl(var(--deck-accent))]",children:[e.jsx(nt,{className:"w-3 h-3"}),r("chat.list.loading.eyebrow")]}),e.jsx("h2",{className:"mt-2 text-[15px] font-medium text-[hsl(var(--deck-ink))]",children:r("chat.list.loading.title")}),e.jsx("p",{className:"mt-1 max-w-sm text-[11.5px] leading-5 text-[hsl(var(--deck-ink-faint))]",children:r("chat.list.loading.hint")})]}),e.jsx("div",{"aria-hidden":"true",className:"mt-7 space-y-4 rounded-xl border border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-surface))]/45 px-4 py-5",children:[72,88,64].map((x,v)=>e.jsxs("div",{className:A("flex gap-3",v%2===1&&"flex-row-reverse"),children:[e.jsx("span",{className:"h-7 w-7 shrink-0 animate-pulse rounded-md bg-[hsl(var(--deck-surface-2))]"}),e.jsx("span",{className:"h-10 animate-pulse rounded-lg bg-[hsl(var(--deck-surface-2))]",style:{width:`${x}%`,animationDelay:`${v*120}ms`}})]},x))})]})});if(t.length===0&&!s)return e.jsx("div",{className:"flex flex-1 justify-center items-center",children:e.jsxs("div",{className:"flex flex-col gap-4 items-center text-center",children:[e.jsx(ne,{size:44}),e.jsxs("div",{children:[e.jsx("div",{className:"deck-eyebrow text-[hsl(var(--deck-accent))]",children:r("chat.list.empty.eyebrow")}),e.jsx("div",{className:"mt-2 text-[15px] font-medium text-[hsl(var(--deck-ink))]",children:r("chat.list.empty.title")}),e.jsx("div",{className:"mt-1 max-w-xs text-[12px] text-[hsl(var(--deck-ink-muted))]",children:r("chat.list.empty.hint")})]})]})});const h=()=>{const x=z(a.current);x&&(n.current=!0,i(!1),x.scrollTo({top:x.scrollHeight,behavior:"smooth"}))},E=()=>{var v;const x=z(a.current);if(x){const N=((v=a.current)==null?void 0:v.querySelector("[data-chat-message-id]"))??null;b.current={element:N,viewportTop:(N==null?void 0:N.getBoundingClientRect().top)??0,scrollHeight:x.scrollHeight,scrollTop:x.scrollTop}}o(N=>ts(N,t.length,ae))},u=x=>x>=f?!0:(o(t.length),!1);return e.jsxs("div",{ref:a,className:"relative flex-1 min-h-0",children:[e.jsx(Ke,{className:"h-full",children:e.jsxs("div",{className:"flex flex-col px-4 pb-4 w-full md:px-6",children:[m>0&&e.jsx("div",{className:"flex justify-center py-3",children:e.jsx("button",{type:"button",onClick:E,"aria-label":r("chat.list.showEarlierWithRemaining",{count:Math.min(m,ae),remaining:m}),className:"rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] px-3 py-1.5 font-mono text-[12px] text-[hsl(var(--deck-ink-muted))] transition-colors hover:border-[hsl(var(--deck-border-strong))] hover:text-[hsl(var(--deck-ink))]",children:r("chat.list.showEarlier",{count:Math.min(m,ae)})})}),k.map((x,v)=>{const N=f+v,S=N>0?t[N-1]:null,R=!S||S.role!==x.role||S.role==="user";return e.jsx(Zt,{message:x,showAvatar:R},x.id||`msg-${N}`)})]})}),e.jsx(ss,{turns:y,viewportRef:l,containerRef:a,onRevealTurn:u}),j&&e.jsxs("button",{type:"button",onClick:h,className:"absolute bottom-4 left-1/2 z-10 inline-flex -translate-x-1/2 items-center gap-1.5 rounded-full border border-[hsl(var(--deck-border-strong))] bg-[hsl(var(--deck-surface))]/95 px-3 py-1.5 font-mono text-[11px] text-[hsl(var(--deck-ink-muted))] shadow-lg backdrop-blur transition-colors hover:text-[hsl(var(--deck-ink))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:[e.jsx(Ae,{className:"h-3.5 w-3.5 text-[hsl(var(--deck-accent))]"}),r("chat.list.jumpLatest")]})]})}const ls=p.memo(os),Ie=bt,Be=gt,$e=vt,ue=p.forwardRef(({className:t,sideOffset:s=4,...r},a)=>e.jsx(Re,{ref:a,sideOffset:s,className:A("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...r}));ue.displayName=Re.displayName;const cs={active:{labelKey:"goal.status.active",dot:"bg-[hsl(var(--deck-accent))] shadow-[0_0_6px_hsl(var(--deck-accent-glow)/0.5)]",accent:"text-[hsl(var(--deck-accent))]"},paused:{labelKey:"goal.status.paused",dot:"bg-amber-400",accent:"text-amber-600 dark:text-amber-300"},blocked:{labelKey:"goal.status.blocked",dot:"bg-rose-500",accent:"text-rose-600 dark:text-rose-300"},usage_limited:{labelKey:"goal.status.usageLimited",dot:"bg-orange-500",accent:"text-orange-600 dark:text-orange-300"},budget_limited:{labelKey:"goal.status.budgetLimited",dot:"bg-orange-500",accent:"text-orange-600 dark:text-orange-300"},complete:{labelKey:"goal.status.complete",dot:"bg-emerald-500",accent:"text-emerald-600 dark:text-emerald-300"}};function J(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:String(t)}function ds(t){if(t<60)return`${t}s`;const s=Math.floor(t/60),r=t%60;return r===0?`${s}m`:`${s}m ${r}s`}function us(){const t=D(),s=w(C=>C.goal),r=w(C=>C.pauseGoal),a=w(C=>C.resumeGoal),l=w(C=>C.editGoal),n=w(C=>C.clearGoal),[d,b]=p.useState(!1),[c,o]=p.useState(!1),[j,i]=p.useState(""),[m,f]=p.useState(null),[k,y]=p.useState(!1);if(p.useEffect(()=>{b(!1),o(!1),i((s==null?void 0:s.objective)??""),y(!1)},[s==null?void 0:s.goalId]),!s)return null;const h=cs[s.status],E=["active","paused","blocked"].includes(s.status),u=s.status==="active",x=s.status==="paused"||s.status==="blocked",v=m!==null,N=async(C,B)=>{f(C);try{await B()}finally{f(null)}},S=()=>{i(s.objective),o(!0),b(!0)},R=async C=>{C.preventDefault();const B=j.trim();if(!B||B===s.objective){o(!1);return}await N("edit",()=>l(B)),o(!1)},U=async()=>{await N("delete",n),y(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(Ie,{delayDuration:250,children:e.jsxs("section",{"aria-label":t("goal.aria.section"),className:"mx-3 mb-1 shrink-0",children:[e.jsxs("div",{className:A("flex h-9 items-center gap-2 rounded-lg border px-3 transition-colors","border-[hsl(var(--deck-border))]/60 bg-[hsl(var(--deck-surface))]/80 backdrop-blur-sm",d&&"rounded-b-none border-b-0"),children:[s.status==="complete"?e.jsx(it,{className:"h-3.5 w-3.5 shrink-0 text-emerald-500"}):e.jsx(ot,{className:A("h-3.5 w-3.5 shrink-0",h.accent)}),e.jsx("span",{className:A("h-1.5 w-1.5 shrink-0 rounded-full",h.dot)}),e.jsx("span",{className:A("shrink-0 text-[10px] font-medium leading-none",h.accent),children:t(h.labelKey)}),e.jsx("span",{className:"h-3 w-px shrink-0 bg-[hsl(var(--deck-hairline))]"}),e.jsx("button",{type:"button","aria-label":t(d?"goal.action.collapse":"goal.action.expand"),className:"min-w-0 flex-1 truncate text-left text-[12px] leading-5 text-[hsl(var(--deck-ink))]/85 outline-none transition-colors hover:text-[hsl(var(--deck-ink))]",onClick:()=>b(C=>!C),"aria-expanded":d,title:s.objective,children:s.objective}),s.tokensUsed>0&&e.jsxs("span",{className:"hidden shrink-0 text-[10px] tabular-nums text-[hsl(var(--deck-ink-muted))] sm:inline",children:[J(s.tokensUsed),s.tokenBudget!==void 0&&`/${J(s.tokenBudget)}`]}),e.jsxs("div",{className:"flex shrink-0 items-center",children:[u&&e.jsx(Q,{label:t("goal.action.pause"),disabled:v,onClick:()=>void N("pause",r),children:m==="pause"?e.jsx(F,{className:"animate-spin"}):e.jsx(lt,{})}),x&&e.jsx(Q,{label:t("goal.action.resume"),disabled:v,onClick:()=>void N("resume",a),children:m==="resume"?e.jsx(F,{className:"animate-spin"}):e.jsx(ct,{})}),e.jsx(Q,{label:t(E?"goal.action.edit":"goal.action.expand"),disabled:!E&&!d,onClick:E?S:()=>b(C=>!C),children:E?e.jsx(Fe,{}):e.jsx(dt,{})}),e.jsx(Q,{label:t("goal.action.delete"),disabled:v,destructive:!0,onClick:()=>y(!0),children:e.jsx(Y,{})})]})]}),d&&e.jsx("div",{className:"rounded-b-lg border border-t-0 border-[hsl(var(--deck-border))]/60 bg-[hsl(var(--deck-surface))]/80 px-4 py-3 backdrop-blur-sm",children:c?e.jsxs("form",{onSubmit:R,children:[e.jsx("textarea",{id:"goal-objective",value:j,onChange:C=>i(C.target.value),onKeyDown:C=>{C.key==="Escape"&&o(!1)},rows:3,autoFocus:!0,className:"w-full resize-none rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-canvas))] px-3 py-2 text-[12px] leading-5 text-[hsl(var(--deck-ink))] outline-none transition-shadow focus:border-[hsl(var(--deck-accent))] focus:ring-1 focus:ring-[hsl(var(--deck-accent-glow))]"}),e.jsxs("div",{className:"mt-2 flex items-center justify-end gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>o(!1),className:"inline-flex h-7 items-center gap-1 rounded-md px-2.5 text-[11px] text-[hsl(var(--deck-ink-muted))] transition-colors hover:bg-[hsl(var(--deck-hairline))]/60",children:[e.jsx(ut,{className:"h-3 w-3"}),t("goal.action.cancel")]}),e.jsxs("button",{type:"submit",disabled:!j.trim()||m==="edit",className:"inline-flex h-7 items-center gap-1 rounded-md bg-[hsl(var(--deck-accent))] px-2.5 text-[11px] font-medium text-white transition-colors hover:bg-[hsl(var(--deck-accent))]/90 disabled:cursor-not-allowed disabled:opacity-50",children:[m==="edit"?e.jsx(F,{className:"h-3 w-3 animate-spin"}):e.jsx(Z,{className:"h-3 w-3"}),t("goal.action.save")]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"whitespace-pre-wrap text-[12px] leading-5 text-[hsl(var(--deck-ink))]/90",children:s.objective}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-[10px] text-[hsl(var(--deck-ink-muted))]",children:[e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(mt,{className:"h-3 w-3"}),J(s.tokensUsed),s.tokenBudget!==void 0&&` / ${J(s.tokenBudget)}`," ",t("goal.metrics.tokens")]}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(xt,{className:"h-3 w-3"}),ds(s.timeUsedSeconds)]}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(le,{className:"h-3 w-3"}),s.continuationCount===1?t("goal.metrics.continuationOne",{n:s.continuationCount}):t("goal.metrics.continuationMany",{n:s.continuationCount})]})]}),s.statusReason&&e.jsx("div",{className:"mt-2 rounded-md border border-amber-200/50 bg-amber-50/60 px-2.5 py-1.5 text-[11px] text-amber-800 dark:border-amber-400/15 dark:bg-amber-400/[0.05] dark:text-amber-200",children:s.statusReason})]})})]})}),e.jsx(we,{open:k,onOpenChange:y,children:e.jsxs(Ne,{className:"max-w-[400px] border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]",children:[e.jsx(Se,{children:t("goal.dialog.title")}),e.jsx(Ce,{children:t("goal.dialog.description")}),e.jsxs(Ee,{className:"mt-2",children:[e.jsx("button",{type:"button",onClick:()=>y(!1),className:"inline-flex h-8 items-center justify-center rounded-md border border-[hsl(var(--deck-border))] px-3 text-[12px] text-[hsl(var(--deck-ink))] hover:bg-[hsl(var(--deck-hairline))]/60",children:t("goal.action.cancel")}),e.jsxs("button",{type:"button",disabled:m==="delete",onClick:()=>void U(),className:"inline-flex gap-1.5 justify-center items-center px-3 h-8 text-[12px] font-medium text-white bg-rose-600 rounded-md hover:bg-rose-500 disabled:opacity-50",children:[m==="delete"&&e.jsx(F,{className:"w-3.5 h-3.5 animate-spin"}),t("goal.action.delete")]})]})]})})]})}function Q({label:t,children:s,disabled:r,destructive:a,onClick:l}){return e.jsxs(Be,{children:[e.jsx($e,{asChild:!0,children:e.jsx("button",{type:"button","aria-label":t,disabled:r,onClick:l,className:A("flex h-6 w-6 items-center justify-center rounded-md text-[hsl(var(--deck-ink-muted))] outline-none transition-colors focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent-glow))]/50 disabled:cursor-not-allowed disabled:opacity-35 [&_svg]:h-3.5 [&_svg]:w-3.5",a?"hover:bg-rose-500/10 hover:text-rose-500":"hover:bg-[hsl(var(--deck-hairline))]/60 hover:text-[hsl(var(--deck-ink))]"),children:s})}),e.jsx(ue,{side:"top",className:"text-[10px]",children:t})]})}function ms(){const t=D(),s=w(c=>c.currentSessionRef),r=w(c=>c.sessions),a=w(c=>c.messages),l=p.useMemo(()=>{var o,j,i,m,f;const c=s?(o=qe(r,s))==null?void 0:o.pendingInteraction:void 0;if(c)return c.type;for(let k=a.length-1;k>=0;k-=1){const y=(j=a[k])==null?void 0:j.agentContent;if(((i=y==null?void 0:y.confirmation)==null?void 0:i.status)==="pending")return"permission";if(((m=y==null?void 0:y.question)==null?void 0:m.status)==="pending")return"question";if(((f=y==null?void 0:y.elicitation)==null?void 0:f.status)==="pending")return"elicitation"}return null},[s,a,r]);if(!l)return null;const n=()=>{const c=document.querySelector(`[data-pending-interaction="${l}"]`);c==null||c.scrollIntoView({block:"center",behavior:"smooth"}),window.setTimeout(()=>c==null?void 0:c.focus(),250)},d=l==="question",b=l==="elicitation";return e.jsxs("div",{role:"alert",className:"mx-3 mb-2 flex flex-wrap items-center gap-2 rounded-lg border border-amber-300/80 bg-amber-50/95 px-3 py-2 font-mono text-amber-950 shadow-sm backdrop-blur dark:border-amber-800/80 dark:bg-amber-950/90 dark:text-amber-100 sm:mx-5",children:[e.jsx(De,{className:"h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400"}),e.jsxs("div",{className:"min-w-[180px] flex-1",children:[e.jsx("div",{className:"text-[11.5px] font-semibold",children:t(d?"interaction.bar.questionTitle":b?"interaction.bar.elicitationTitle":"interaction.bar.permissionTitle")}),e.jsx("div",{className:"mt-0.5 text-[10px] leading-4 text-amber-800 dark:text-amber-300",children:t(d?"interaction.bar.questionHint":b?"interaction.bar.elicitationHint":"interaction.bar.permissionHint")})]}),e.jsxs("button",{type:"button",onClick:n,className:"inline-flex min-h-8 shrink-0 items-center gap-1.5 rounded-md border border-amber-400/80 bg-white/80 px-2.5 text-[10.5px] font-medium transition-colors hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-500 dark:border-amber-700 dark:bg-amber-950/70 dark:hover:bg-amber-900",children:[e.jsx(Ae,{className:"h-3 w-3"}),t("interaction.bar.review")]})]})}const xs={running:"status.phase.running",compacting:"status.phase.compacting",switching_model:"status.phase.switchingModel",waiting_permission:"status.phase.waitingPermission",error:"status.phase.error",idle:""},je=t=>t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString();function hs(){const t=D(),s=w(o=>o.tokenUsage),r=w(o=>o.isStreaming),a=w(o=>o.agentPhase),l=xs[a]??"",n=l?t(l):"",d=s.maxContextTokens>0?Math.round(s.totalTokens/s.maxContextTokens*100):0,b=Math.min(d,100),c=d>95?"danger":d>80?"warn":"safe";return e.jsxs("div",{className:"flex items-center gap-4 border-t border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-canvas-veil))]/70 px-5 py-2 font-mono text-[11px] text-[hsl(var(--deck-ink-muted))] backdrop-blur-sm",children:[e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx("span",{className:"deck-eyebrow text-[hsl(var(--deck-ink-faint))]",children:t("status.context")}),e.jsxs("span",{className:"flex gap-1 items-baseline tabular-nums",children:[e.jsx("span",{className:A("text-[12px] font-medium",c==="safe"&&"text-[hsl(var(--deck-ink))]",c==="warn"&&"text-amber-600 dark:text-amber-400",c==="danger"&&"text-red-600 dark:text-red-400"),children:je(s.totalTokens)}),e.jsxs("span",{className:"text-[hsl(var(--deck-ink-faint))]",children:["/ ",je(s.maxContextTokens)]})]}),s.isDefaultMaxTokens&&e.jsx(Ie,{children:e.jsxs(Be,{children:[e.jsx($e,{asChild:!0,children:e.jsx(ht,{className:"h-3 w-3 cursor-help text-[hsl(var(--deck-ink-faint))]"})}),e.jsx(ue,{side:"top",className:"max-w-[220px]",children:e.jsx("p",{className:"text-xs",children:t("status.tokenLimitTooltip")})})]})}),e.jsxs("div",{className:"relative h-2 w-32 overflow-hidden rounded-sm border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))]","aria-hidden":"true",children:[e.jsx("div",{className:A("absolute inset-y-0 left-0 transition-[width] duration-300",c==="safe"&&"bg-[hsl(var(--deck-accent))]",c==="warn"&&"bg-amber-500",c==="danger"&&"bg-red-500"),style:{width:`${b}%`}}),e.jsx("div",{className:"flex absolute inset-0 pointer-events-none",children:[25,50,75].map(o=>e.jsx("span",{className:"absolute inset-y-0 w-px bg-[hsl(var(--deck-canvas-veil))]/60",style:{left:`${o}%`}},o))})]}),e.jsxs("span",{className:A("w-10 text-right tabular-nums text-[hsl(var(--deck-ink-faint))]",c==="warn"&&"text-amber-600 dark:text-amber-400",c==="danger"&&"text-red-600 dark:text-red-400"),children:[d,"%"]})]}),e.jsx("div",{className:"flex-1"}),r&&n&&e.jsxs("div",{className:"flex gap-2 items-center",children:[e.jsx("span",{className:"deck-pulse-dot"}),e.jsx("span",{className:"text-[hsl(var(--deck-accent))]",children:n})]})]})}function ps(t){const s=[...t].reverse().find(l=>l.role==="user");if(!s)return null;if(typeof s.content=="string")return{content:s.content,attachments:[]};const r=s.content.filter(l=>l.type==="text").map(l=>l.text).join(`
7
- `),a=s.content.filter(l=>l.type==="image_url").map((l,n)=>{var b;const d=((b=l.image_url.url.match(/^data:([^;,]+)[;,]/))==null?void 0:b[1])??"application/octet-stream";return{id:`recovery-${s.id}-${n}`,name:`attachment-${n+1}`,mimeType:d,dataUrl:l.image_url.url}});return{content:r,attachments:a}}function ks(){var xe;const t=D(),s=w(g=>g.messages),r=w(g=>g.currentSessionRef),a=w(g=>g.isStreaming),l=w(g=>g.isStopping),n=w(g=>g.sessionEventConnectionState),d=w(g=>g.pendingSteeringCount),b=w(g=>g.pendingInputDelivery),c=w(g=>g.recoveredSteeringCount),o=w(g=>g.isLoading),j=w(g=>g.error),i=w(g=>g.errorContext),m=w(g=>g.sessions),f=w(g=>g.sendMessage),k=w(g=>g.abortSession),y=w(g=>g.retryTask),h=w(g=>g.retryingTaskKeys),E=ie(g=>g.openSettings),u=w(g=>g.reconnectSessionEvents),x=w(g=>g.clearError),v=w(g=>g.unsubscribeFromEvents),[N,S]=p.useState(null),R=r?m.find(g=>g.sessionId===r.sessionId&&g.projectPath===r.projectPath):void 0,U=!!j&&((i==null?void 0:i.kind)==="navigation"||!(i!=null&&i.sessionRef)||ye(i.sessionRef,r)),C=(i==null?void 0:i.failureCode)??((xe=R==null?void 0:R.taskFailure)==null?void 0:xe.code),B=(i==null?void 0:i.kind)==="execution"&&C?t(ze(C)):j==="queue_full"?t("chat.error.queueFull"):j==="turn_unavailable"||j==="turn_active"?t("chat.error.turnChanged"):j,H=n==="connecting"||n==="reconnecting",W=a&&n!=="connected",K=r?`session:${G(r)}`:"session:temporary",T=p.useMemo(()=>ps(s),[s]),_=r?G(r):"temporary-session",$=!!(r&&(R!=null&&R.taskRetryAvailable)&&(!C||Ge(C)))&&((i==null?void 0:i.kind)==="execution"||(i==null?void 0:i.kind)==="task_action"),P=(i==null?void 0:i.kind)==="execution"&&(C==="authentication"||C==="permission"||C==="model_unavailable"),I=r?h.includes(G(r)):!1;p.useEffect(()=>()=>{v()},[v]),p.useEffect(()=>{S(null)},[_]);const M=async g=>f({content:g.content,modelId:g.modelId,reasoningEffort:g.reasoningEffort,serviceTier:g.serviceTier,responseVerbosity:g.responseVerbosity,communicationStyle:g.communicationStyle,...g.outputSchema?{outputSchema:g.outputSchema}:{},attachments:g.attachments.map(se=>({type:"image",content:se.dataUrl,mimeType:se.mimeType,name:se.name}))}),L=()=>k(),q=async()=>{if(P){x(),E("models");return}if($&&r){x(),await y(r).catch(()=>{});return}if((i==null?void 0:i.kind)==="execution"&&T){S({...T,revision:Date.now()}),x();return}x(),requestAnimationFrame(()=>Je())},me=$?t(I?"chat.error.action.retryingTask":"chat.error.action.retryTask"):P?t("chat.error.action.checkModels"):(i==null?void 0:i.kind)==="execution"&&T?t("chat.error.action.editResend"):(i==null?void 0:i.kind)==="submission"?t("chat.error.action.returnDraft"):null;return e.jsxs("div",{className:"flex h-full flex-col bg-[hsl(var(--deck-canvas))]",children:[U&&e.jsxs("div",{role:"alert",className:"flex min-h-11 flex-wrap items-center gap-2 border-b border-red-200/60 bg-red-50/80 px-4 py-2 font-mono text-[11px] text-red-700 dark:border-red-900/50 dark:bg-red-950/30 dark:text-red-300 sm:px-5",children:[e.jsx(De,{className:"h-3.5 w-3.5 shrink-0"}),e.jsxs("span",{className:"min-w-0 flex-1 break-words",children:[e.jsx("span",{className:"font-semibold",children:t((i==null?void 0:i.kind)==="submission"?"chat.error.title.submission":(i==null?void 0:i.kind)==="execution"?"chat.error.title.execution":(i==null?void 0:i.kind)==="navigation"?"chat.error.title.navigation":"chat.error.title.generic")})," ",B]}),me&&e.jsxs("button",{type:"button",onClick:()=>void q(),disabled:I,className:"inline-flex min-h-7 shrink-0 items-center gap-1.5 rounded-md border border-red-300/70 bg-white/65 px-2.5 font-medium transition-colors hover:bg-white focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-red-500 disabled:cursor-wait disabled:opacity-60 dark:border-red-800 dark:bg-red-950/45 dark:hover:bg-red-900/60",children:[$?I?e.jsx(F,{className:"h-3 w-3 animate-spin"}):e.jsx(le,{className:"h-3 w-3"}):e.jsx(Fe,{className:"h-3 w-3"}),me]}),e.jsx("button",{type:"button",onClick:x,"aria-label":t("chat.error.dismiss"),className:"p-1 text-red-500 rounded transition-colors hover:bg-red-100/60 hover:text-red-700 dark:hover:bg-red-950/60 dark:hover:text-red-100",children:"✕"})]}),(H||n==="offline")&&e.jsxs("div",{role:n==="offline"?"alert":"status","aria-live":"polite",className:"flex min-h-10 flex-wrap items-center gap-2 border-b border-amber-300/60 bg-amber-50/80 px-4 py-2 font-mono text-[11px] text-amber-900 dark:border-amber-800/60 dark:bg-amber-950/35 dark:text-amber-200 sm:px-5",children:[H?e.jsx(F,{className:"h-3.5 w-3.5 shrink-0 animate-spin"}):e.jsx(pt,{className:"h-3.5 w-3.5 shrink-0"}),e.jsx("span",{className:"min-w-0 flex-1",children:t(H?"chat.connection.reconnecting":"chat.connection.offline")}),n==="offline"&&e.jsxs("button",{type:"button",onClick:()=>void u().catch(()=>{}),className:"inline-flex min-h-7 items-center gap-1.5 rounded-md border border-amber-400/70 bg-white/60 px-2.5 font-medium transition-colors hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-500 dark:border-amber-700 dark:bg-amber-950/50 dark:hover:bg-amber-900/50",children:[e.jsx(ft,{className:"h-3 w-3"}),t("chat.connection.retry")]})]}),e.jsx(kt,{}),e.jsx(ls,{messages:s,isLoading:o},r?G(r):"temporary-session"),e.jsx(ms,{}),e.jsx(us,{}),e.jsx(We,{draftKey:K,draft:N==null?void 0:N.content,draftAttachments:N==null?void 0:N.attachments,draftRevision:N==null?void 0:N.revision,onSend:M,onAbort:L,disabled:o||W,isStreaming:a,isStopping:l,pendingSteeringCount:d,pendingInputDelivery:b,recoveredSteeringCount:c,workspacePath:r==null?void 0:r.projectPath},K),e.jsx(hs,{})]})}export{ks as ChatView};