chainlesschain 0.162.46 → 0.162.47

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 (154) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-QzHleqCS.js → AIOps-BBjFOl4N.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-CZ3F-KVY.js → ActionButton-B7A6lHz3.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-CHml-drq.js → Analytics-DZgNxdvw.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-a-fczvRH.js → AppLayout-CFbPWVnh.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-CtMWsXwm.js → Audit-Ao9RxevG.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-ErWTcS0A.js → Backup-B1AGqahI.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-B4w2b2dA.js → BaseInput-M01bA2JM.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-CFPKVfmV.js → Chat-CC0Gmd9k.js} +6 -6
  10. package/src/assets/web-panel/assets/ChatBubbleRenderer-DKe4yjqq.js +1 -0
  11. package/src/assets/web-panel/assets/{Checkbox-C4vasfJc.js → Checkbox-CpEqAg5P.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-DHmDAbSg.js → Codegen-9c1H2P_L.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-LhgveyhM.js → Col-sH2Obo8q.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-CB8gtudt.js → Community-DyzjH37r.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-CTndsUSy.js → Compact-DsNatLOG.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-CCpGUHPm.js → Compliance-B3ws7qwL.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-CQmJiOM_.js → Cowork-odGfUMsv.js} +3 -3
  18. package/src/assets/web-panel/assets/{Cron-TrTmpnSB.js → Cron-bxO6NLDR.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-DvaR1Xq4.js → Crosschain-xHCPQpE9.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-CdDdiRs3.js → DID-3l7HvzNC.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-S6gCBQDc.js → Dashboard-BNzT5YBj.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-CWO-Kwzl.js → Dropdown-DZynMYpG.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-Crnrr1-p.js → EmailListRenderer-6HZ2XA9g.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-OpG9ZtfR.js → FamilyGuardDashboard-DqzqNzRP.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-B0sybW7G.js → Federation-CI7lf1MF.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-DjHMvxwJ.js → FormItemContext-D2m3YZ-k.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-DtU5cWwE.js → GenericCardRenderer-Bwcc-9EB.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-BhOjZX2a.js → Git-C7qN3bA1.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-D3_hjjA-.js → Governance-JfuugS1c.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-DwxLXmgA.js → Inference-BNsHm2IH.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-C8-FVs02.js → KnowledgeGraph-CTH_FiL1.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-CrHjnzfr.js → Logs-CxcfBcmS.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-KW1Am18o.js → Marketplace-B9PU3qlx.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-ezYH1J8m.js → McpTools-BlvQpnvj.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-Dcv8Gume.js → Memory-Diiig9gp.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-v18J0LN4.js → MobileBridge-CGfUn4xi.js} +2 -2
  37. package/src/assets/web-panel/assets/MobileProjects-CFvH6A9E.js +1 -0
  38. package/src/assets/web-panel/assets/{Mtc-Cm35-vh_.js → Mtc-CT_1x1Gr.js} +5 -5
  39. package/src/assets/web-panel/assets/{MtcAudit-DyeKAlI_.js → MtcAudit-DPAjU1Qn.js} +4 -4
  40. package/src/assets/web-panel/assets/{Multisig-Dy-imleB.js → Multisig-nks2HW0C.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-DMVmWNAH.js → NLProgramming-BWd74a91.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-Dq6oHKbl.js → Notes-B342yG3u.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-CCaSupDi.js → NotificationSettings-C9kjn20B.js} +1 -1
  44. package/src/assets/web-panel/assets/OrderTableRenderer-DKQ3FPUN.js +1 -0
  45. package/src/assets/web-panel/assets/{Organization-8TF96XtV.js → Organization-Ch-qkiyP.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-BnYnh84b.js → Overflow-DeV865TY.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-CZk3Qkec.js → P2P-9pzyAAE1.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-D1HrzBx2.js → PdhVaultBrowser-oGgQiWpR.js} +3 -3
  49. package/src/assets/web-panel/assets/{Permissions-CwJ6hcaI.js → Permissions-MPDfvUva.js} +4 -4
  50. package/src/assets/web-panel/assets/{PersonalDataHub-BGnPTj1G.js → PersonalDataHub-Es8GFY4_.js} +2 -2
  51. package/src/assets/web-panel/assets/{Pipeline-BzXhXLBz.js → Pipeline-R10lJHtN.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-BaVQ3GwL.js → Privacy-8YMg8xrV.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-Bik3h4R7.js → ProjectInit-B-L3DMBv.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-CIuC6Hpr.js → ProjectSettings-pR4l7GCe.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-DLjnWEe6.js → Projects-5vaXw-7d.js} +1 -1
  56. package/src/assets/web-panel/assets/{Providers-mhxZrHiK.js → Providers-C_E-G6Bh.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-Dk9mayL0.js → QuickAsk-CM-FSYbK.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-BHC2sBZY.js → Recommend-DcwFptAP.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-DV26B11J.js → Reputation-DJKj97w-.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-bJlVEnFC.js → Row-BfI2mGUm.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-D_XucmWY.js → RssFeed-D6tzthT0.js} +2 -2
  62. package/src/assets/web-panel/assets/{Search-uKXcm_Kf.js → Search-CkxIxA5y.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-DEzqsQLn.js → Security-BeTfFgoX.js} +4 -4
  64. package/src/assets/web-panel/assets/{Services-I8qKgcom.js → Services-BahX89X1.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-BmrglBMu.js → Skeleton-55na3k97.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-CHN4ZDyP.js → Skills-DZ-dxsiR.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-Ca6FsUS2.js → Sla-BUTClrI0.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-CP8IikWb.js → SpeechSettings-C0c2AmSU.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-Bqp-kPAA.js → SyncSettings-Vr5zzdPz.js} +2 -2
  70. package/src/assets/web-panel/assets/{Tasks-C7FvJjze.js → Tasks-BrouZA03.js} +1 -1
  71. package/src/assets/web-panel/assets/{Templates-Bq51Irli.js → Templates-DnaU_7nb.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-OTducEVg.js → Tenant-1dw4SFBA.js} +1 -1
  73. package/src/assets/web-panel/assets/Terminal-Pe1vBvOm.js +3 -0
  74. package/src/assets/web-panel/assets/{TimelineRenderer-kCmFL2wc.js → TimelineRenderer-dDxMvAvM.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-BUfD650M.js → Tokens-CPJMLjkE.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-CqpM6xE7.js → Trigger-B1IWp6HK.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust--4gS7a0j.js → Trust-iswzFvfA.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-B7wfki-b.js → UkeySign-CuMmDUvU.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-FwDEX2S-.js → VideoEditing-BguHSBQ5.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-DS_c2rMk.js → Wallet-CW4PFXSw.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-CdMhP-GP.js → WebAuthn-YOO0lqjJ.js} +4 -4
  82. package/src/assets/web-panel/assets/{WorkflowEditor-DVvpoOmg.js → WorkflowEditor-A_z3yLuG.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-BQyTT2BS.js → chat-BSHj9uiJ.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-DvylfUTx.js → colors-D7gA-kvN.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-Budvh2nW.js → compact-item-ChDt0wUv.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-DkNa84zG.js → createContext-5UAhDsNU.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-NW6VMT5L.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-Dc1juUIf.js → hasIn-7ysmGHSf.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-BCv_FUY5.js → index--UCy6rsJ.js} +1 -1
  90. package/src/assets/web-panel/assets/index-A6oY6RQQ.js +1 -0
  91. package/src/assets/web-panel/assets/{index-DecFF9je.js → index-B6OX-6N1.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-DO9Lvv1w.js → index-BGlolJwU.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-Cz41iB_M.js → index-BLoQ2FkI.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-CKoWcis9.js → index-BTzZlYgQ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DMCqz0wy.js → index-B_xBUmAE.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BQJA__yH.js → index-BcPEgfGF.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-D2dcbmzD.js → index-BhsGGFa4.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B0u5DW4Z.js → index-BoCy4bxa.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BgxdM7b_.js → index-BzPxVTI2.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BWcGURYh.js → index-C4nXq9eB.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BC08UMEf.js → index-C62SpQws.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-D_0nyIY9.js → index-C93TfkpQ.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BEviVulf.js → index-CGVsJplV.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-C8he-Xo0.js → index-CHdEHlNY.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C1X5QpSy.js → index-COwKdUAS.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Bk_Uhu49.js → index-Cl10KB1R.js} +1 -1
  107. package/src/assets/web-panel/assets/index-Cn2g4vqt.js +1 -0
  108. package/src/assets/web-panel/assets/{index-YVdWdhK_.js → index-CylU_ot3.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DwJ0d_2Z.js → index-D-pJNNc5.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DRNJnXik.js → index-D9R6sJiP.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-D7FYxxFT.js → index-DSRnnGez.js} +3 -3
  112. package/src/assets/web-panel/assets/{index-By8Bs_eN.js → index-Db4hf2WV.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-yx5Y6xb7.js → index-DcKVERvm.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D74oTZL7.js → index-DfjMbFZA.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-jTGSFnNF.js → index-Dj3IHF24.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CbCIBifY.js → index-Dq4fd0cB.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BCD2L2SI.js → index-DslmMjVo.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BgYKjtNP.js → index-DttrXREN.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BTzrvuB0.js → index-HUiKkQOf.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CGHLsKyb.js → index-NtFFgW-x.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-TsPv8m1Z.js → index-QPBJl4wk.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BTnZ44a_.js → index-WM_jYoK8.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CFMS9PKh.js → index-ZOmjAajS.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DTcZkWJ7.js → index-_8xZf-zU.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-eD_MN29w.js → index-pk9WOpeN.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BYuozZuh.js → index-s_MPIulF.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DxCPTrC-.js → index-trVj-RG1.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-gLjyJG0Q.js → initDefaultProps-BcWdcWH2.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-BtXv1r2p.js → motion-D-GC86LC.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-BgFqW2gA.js → move-7N01T4vz.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-CeIwl-eJ.js → omit-B8_G8lAi.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-VlY4igbs.js → pickAttrs-BeEwgLq8.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-B9Wjn3oR.js → placementArrow-CiQwkkN_.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-BBgHTvYX.js → responsiveObserve-CtfIP2YM.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-DWw81KAi.js → slide-DnA-Z3fK.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-Bsho38w-.js → statusUtils-Ckaf7hg9.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-BNvVEdm1.js → styleChecker-CE7d6-LQ.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-DG9bkwrT.js → useFlexGapSupport-BBC2EqTi.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-DU7qrIrQ.js → useFs-BWncdesy.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-DX-Bf7VJ.js → usePersonalDataHub-BVJgKdiT.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-B1UcnNoK.js → vnode-CdZoGwk8.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-BFgJuvLv.js → zoom-8BsyiHWV.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/lib/sensitive-file-guard.js +58 -0
  145. package/src/lib/sub-agent-context.js +3 -0
  146. package/src/runtime/agent-core.js +55 -0
  147. package/src/runtime/headless-stream.js +36 -4
  148. package/src/assets/web-panel/assets/ChatBubbleRenderer-WGpUTY92.js +0 -1
  149. package/src/assets/web-panel/assets/MobileProjects-kk6hAwkK.js +0 -1
  150. package/src/assets/web-panel/assets/OrderTableRenderer-DOwptdNb.js +0 -1
  151. package/src/assets/web-panel/assets/Terminal-ywwPryM5.js +0 -3
  152. package/src/assets/web-panel/assets/devWarning-CG_75MBJ.js +0 -1
  153. package/src/assets/web-panel/assets/index-Ba6DLEa1.js +0 -1
  154. package/src/assets/web-panel/assets/index-CLycnSs-.js +0 -1
@@ -901,6 +901,40 @@ export async function executeTool(name, args, context = {}) {
901
901
  ruleAllowed = true;
902
902
  }
903
903
 
904
+ // Sensitive-file write guard (Claude-Code 2.1.160 parity): shell startup
905
+ // files / PowerShell profiles / git+husky hooks execute code on the user's
906
+ // next shell or commit — even otherwise-permitted edit flows confirm first.
907
+ // An explicit settings `allow` rule is the only bypass (exact user
908
+ // pre-authorization); headless without a confirmer fails closed.
909
+ if (
910
+ (name === "write_file" || name === "edit_file") &&
911
+ settingsVerdict.decision !== "allow" &&
912
+ args?.path
913
+ ) {
914
+ const { sensitiveFileReason } = await import(
915
+ "../lib/sensitive-file-guard.js"
916
+ );
917
+ const sensReason = sensitiveFileReason(args.path);
918
+ if (sensReason) {
919
+ const confirm = context.permissionConfirm || context.shellConfirm || null;
920
+ const ok =
921
+ typeof confirm === "function"
922
+ ? await confirm({
923
+ tool: name,
924
+ args,
925
+ rule: null,
926
+ reason: `sensitive file: ${sensReason}`,
927
+ })
928
+ : false;
929
+ if (!ok) {
930
+ return {
931
+ error: `[Sensitive File] Writing "${args.path}" requires confirmation (${sensReason}) — denied. Add a settings allow rule to pre-authorize.`,
932
+ policy: { decision: "ask", via: "sensitive-file" },
933
+ };
934
+ }
935
+ }
936
+ }
937
+
904
938
  // Plan mode: check if tool is allowed (a settings `allow` rule pre-authorizes)
905
939
  if (
906
940
  planManager.isActive() &&
@@ -980,6 +1014,7 @@ export async function executeTool(name, args, context = {}) {
980
1014
  shellConfirm: context.shellConfirm || null,
981
1015
  additionalDirectories: context.additionalDirectories || null,
982
1016
  ruleAllowed,
1017
+ subAgentDepth: context.subAgentDepth || 0,
983
1018
  });
984
1019
  } catch (err) {
985
1020
  if (hookDb) {
@@ -1150,6 +1185,7 @@ async function executeToolInner(
1150
1185
  shellConfirm,
1151
1186
  additionalDirectories,
1152
1187
  ruleAllowed = false,
1188
+ subAgentDepth = 0,
1153
1189
  },
1154
1190
  ) {
1155
1191
  const localToolDescriptor =
@@ -1528,6 +1564,7 @@ async function executeToolInner(
1528
1564
  interaction,
1529
1565
  sessionId,
1530
1566
  llmOptions,
1567
+ subAgentDepth,
1531
1568
  }),
1532
1569
  );
1533
1570
  }
@@ -2186,6 +2223,13 @@ async function _executeRunCode(args, cwd) {
2186
2223
 
2187
2224
  // ─── spawn_sub_agent implementation ──────────────────────────────────────
2188
2225
 
2226
+ /**
2227
+ * Max sub-agent nesting depth (Claude-Code 2.1.172 parity: sub-agents may
2228
+ * spawn their own sub-agents, capped at 5 levels so a runaway model cannot
2229
+ * recurse forever). Main loop = depth 0, its children = 1, …
2230
+ */
2231
+ export const MAX_SUB_AGENT_DEPTH = 5;
2232
+
2189
2233
  /**
2190
2234
  * Execute a spawn_sub_agent tool call.
2191
2235
  * Creates an isolated SubAgentContext, runs it, and returns only the summary.
@@ -2195,6 +2239,13 @@ async function _executeRunCode(args, cwd) {
2195
2239
  * @returns {Promise<object>}
2196
2240
  */
2197
2241
  async function _executeSpawnSubAgent(args, ctx) {
2242
+ // Nesting cap: refuse before any context/registry work.
2243
+ const currentDepth = ctx.subAgentDepth || 0;
2244
+ if (currentDepth >= MAX_SUB_AGENT_DEPTH) {
2245
+ return {
2246
+ error: `spawn_sub_agent: max nesting depth (${MAX_SUB_AGENT_DEPTH}) reached — complete the task directly instead of delegating further.`,
2247
+ };
2248
+ }
2198
2249
  let {
2199
2250
  role,
2200
2251
  task,
@@ -2296,6 +2347,7 @@ async function _executeSpawnSubAgent(args, ctx) {
2296
2347
  cwd: ctx.cwd,
2297
2348
  profile: profile || null,
2298
2349
  llmOptions: subLlmOptions,
2350
+ depth: currentDepth + 1, // nested spawns see their own level
2299
2351
  });
2300
2352
 
2301
2353
  const emit = (type, payload) => {
@@ -3332,6 +3384,9 @@ export async function* agentLoop(messages, options) {
3332
3384
  autoCheckpoint: options.autoCheckpoint || false,
3333
3385
  checkpointSession:
3334
3386
  options.checkpointSession || options.sessionId || "agent",
3387
+ // Sub-agent nesting level (0 = main loop); spawn_sub_agent caps at
3388
+ // MAX_SUB_AGENT_DEPTH using this.
3389
+ subAgentDepth: options.subAgentDepth || 0,
3335
3390
  };
3336
3391
 
3337
3392
  throwIfAborted(signal);
@@ -102,8 +102,19 @@ export function parseInputEvent(line) {
102
102
  .map((b) => (typeof b === "string" ? b : b?.text || ""))
103
103
  .join("");
104
104
  }
105
- if (typeof content !== "string" || !content.trim()) return null;
106
- return { text: content };
105
+ // Vision input (chat-panel image paste): {"type":"user","text":…,
106
+ // "images":["/abs/file.png", …]} — file paths, resolved at turn build via
107
+ // the same image-input pipeline as `cc agent --image`.
108
+ const rawImages = obj && typeof obj === "object" ? obj.images || msg.images : null;
109
+ const images = Array.isArray(rawImages)
110
+ ? rawImages.filter((p) => typeof p === "string" && p.trim()).slice(0, 8)
111
+ : [];
112
+ if (typeof content !== "string" || !content.trim()) {
113
+ // An image-only turn is valid — give the model something to act on.
114
+ if (images.length) return { text: "Please look at the attached image(s).", images };
115
+ return null;
116
+ }
117
+ return images.length ? { text: content, images } : { text: content };
107
118
  }
108
119
 
109
120
  /**
@@ -727,10 +738,31 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
727
738
  // optional polish — never fail the turn over it
728
739
  }
729
740
 
730
- messages.push({ role: "user", content: userContent });
741
+ // Attach pasted/added images (panel parity with `--image`): file paths →
742
+ // data URLs → OpenAI-style multimodal content. buildUserContent returns
743
+ // the plain string when there are no images, so text turns are unchanged.
744
+ let turnContent = userContent;
745
+ if (parsed.images && parsed.images.length) {
746
+ try {
747
+ const { resolveImages, buildUserContent } =
748
+ await import("../lib/image-input.js");
749
+ turnContent = buildUserContent(userContent, resolveImages(parsed.images));
750
+ } catch (err) {
751
+ emit({
752
+ type: "result",
753
+ subtype: "error",
754
+ is_error: true,
755
+ result: `image attach failed: ${err.message}`,
756
+ session_id: sessionId,
757
+ });
758
+ continue; // bad attachment kills the turn, not the session
759
+ }
760
+ }
761
+
762
+ messages.push({ role: "user", content: turnContent });
731
763
  if (persist) {
732
764
  try {
733
- store.appendUserMessage(sessionId, userContent);
765
+ store.appendUserMessage(sessionId, turnContent);
734
766
  } catch {
735
767
  /* best-effort */
736
768
  }
@@ -1 +0,0 @@
1
- import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-D7FYxxFT.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",M,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const z=k(N,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-GzZ4oH/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{z as default};
@@ -1 +0,0 @@
1
- import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-BvqAck49.js";import{_ as v,b as m}from"./index-D7FYxxFT.js";import{a7 as y,M}from"./icons-DP3uiYxy.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-GzZ4oH/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
@@ -1 +0,0 @@
1
- import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as o}from"./vendor-BvqAck49.js";import{_ as S}from"./index-D7FYxxFT.js";import"./icons-DP3uiYxy.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const a=p,e=o(()=>a.event.content||{}),d=o(()=>a.event.extra||{}),m=o(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=o(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=o(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=o(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=o(()=>e.value.status||e.value.state),b=o(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=o(()=>{if(!a.event.occurredAt)return"";const t=new Date(a.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:a,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:o};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},H={key:1,class:"row"};function M(p,r,a,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(a.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(a.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",H,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const G=S(k,[["render",M],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-GzZ4oH/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{G as default};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./xterm-BZcWGsqw.js","./markdown-CsiA8-E5.js","./markdown-Dfs9RUU9.css","./addon-fit-CK6X9sAG.js","./xterm-DFuMZ0ql.css"])))=>i.map(i=>d[i]);
2
- import{u as fe,_ as me,d as V,e as U}from"./index-D7FYxxFT.js";import{I as z,J as x,U as _,Q as D,S as H,K as T,V as R,c as A,F as J,Z as K,R as E,o as Q,f as Y,w as $,n as q,b as ee,r as S,P as y,_ as ve,a2 as we,a3 as he,a4 as _e}from"./vendor-BvqAck49.js";import{R as ye,b as pe,as as ge}from"./icons-DP3uiYxy.js";const k=new Map,C=new Map,N=new Set,F=new Set;let te=!1;function xe(c){te||(te=!0,c.onMessage(o=>{if(!(!o||typeof o.type!="string")){if(o.type==="terminal.stdout"){const{sessionId:s,data:e,seq:i}=o.payload||{};if(!s)return;let w;try{const d=atob(e||""),f=new Uint8Array(d.length);for(let n=0;n<d.length;n++)f[n]=d.charCodeAt(n);w=new TextDecoder("utf-8").decode(f)}catch{w=""}const u={sessionId:s,data:w,seq:i};k.get(s)?.forEach(d=>d(u)),N.forEach(d=>d(u))}else if(o.type==="terminal.exit"){const{sessionId:s,exitCode:e,signal:i}=o.payload||{};if(!s)return;const w={sessionId:s,exitCode:e,signal:i};C.get(s)?.forEach(u=>u(w)),F.forEach(u=>u(w))}}}))}function ne(c){const o=new TextEncoder().encode(c);let s="";for(let e=0;e<o.length;e++)s+=String.fromCharCode(o[e]);return btoa(s)}function ae(c){const o=atob(c||""),s=new Uint8Array(o.length);for(let e=0;e<o.length;e++)s[e]=o.charCodeAt(e);return new TextDecoder("utf-8").decode(s)}function oe(){const c=fe();xe(c);async function o(n={}){const a=await c.sendRaw({type:"terminal.create",payload:{shell:n.shell,cwd:n.cwd,env:n.env,cols:n.cols,rows:n.rows}});if(a.ok===!1)throw new Error(a.error||"terminal_create_failed");return a.result??a}async function s(){const n=await c.sendRaw({type:"terminal.list",payload:{}});if(n.ok===!1)throw new Error(n.error||"terminal_list_failed");const a=n.result??n;return Array.isArray(a.sessions)?a.sessions:[]}async function e(n,a){const r=await c.sendRaw({type:"terminal.stdin",payload:{sessionId:n,data:ne(String(a))}});if(r.ok===!1)throw new Error(r.error||"terminal_stdin_failed");return r.result??r}async function i(n,a,r){const h=await c.sendRaw({type:"terminal.resize",payload:{sessionId:n,cols:a,rows:r}});if(h.ok===!1)throw new Error(h.error||"terminal_resize_failed");return h.result??h}async function w(n){const a=await c.sendRaw({type:"terminal.close",payload:{sessionId:n}});if(a.ok===!1)throw new Error(a.error||"terminal_close_failed");return a.result??a}async function u(n,a=0){const r=await c.sendRaw({type:"terminal.history",payload:{sessionId:n,fromSeq:a}});if(r.ok===!1)throw new Error(r.error||"terminal_history_failed");const h=r.result??r;return{truncated:!!h.truncated,chunks:(h.chunks||[]).map(L=>({seq:L.seq,data:ae(L.data)}))}}function d(n,a){return n?(k.has(n)||k.set(n,new Set),k.get(n).add(a),()=>{k.get(n)?.delete(a),k.get(n)?.size===0&&k.delete(n)}):(N.add(a),()=>N.delete(a))}function f(n,a){return n?(C.has(n)||C.set(n,new Set),C.get(n).add(a),()=>{C.get(n)?.delete(a),C.get(n)?.size===0&&C.delete(n)}):(F.add(a),()=>F.delete(a))}return{create:o,list:s,stdin:e,resize:i,close:w,history:u,onStdout:d,onExit:f,_internal:{stdoutSubs:k,exitSubs:C,toBase64Utf8:ne,fromBase64Utf8:ae}}}const Se={__name:"Terminal",setup(c,{expose:o}){o();const s=oe(),e=S([]),i=S(null),w=S("pwsh"),u=S(!1),d=S(!1),f=S(""),n=S(""),a=S([]),r=[{value:"pwsh",label:"PowerShell"},{value:"cmd",label:"CMD"},{value:"bash",label:"Bash"},{value:"wsl",label:"WSL"}],h=ee(()=>e.value.find(t=>t.id===i.value));function L(t){return t?t.slice(0,8):""}let O=null,M=null;async function I(){if(O)return{xtermMod:O,fitAddonMod:M};try{O=await U(()=>import("./xterm-BZcWGsqw.js").then(t=>t.x),__vite__mapDeps([0,1,2]),import.meta.url),M=await U(()=>import("./addon-fit-CK6X9sAG.js").then(t=>t.a),__vite__mapDeps([3,1,2]),import.meta.url),await U(()=>Promise.resolve({}),__vite__mapDeps([4]),import.meta.url)}catch(t){throw n.value="xterm 资源加载失败:"+(t?.message||"未知错误"),t}return{xtermMod:O,fitAddonMod:M}}async function B(t){await q();const{xtermMod:l,fitAddonMod:p}=await I(),b=a.value.find(v=>v?.dataset?.sessionId===t.id);if(!b)return;const m=new l.Terminal({cursorBlink:!0,fontFamily:'Consolas, "Courier New", monospace',fontSize:13,theme:{background:"#1e1e1e",foreground:"#d4d4d4"},convertEol:!1}),P=new p.FitAddon;m.loadAddon(P),m.open(b);try{P.fit()}catch{}t.xterm=m,t.fitAddon=P;const ie=m.onData(v=>{s.stdin(t.id,v).catch(g=>{String(g?.message||"").includes("dangerous_keyword_blocked")?V.warning("该命令被桌面端拦截(高危关键字)"):V.error("stdin 失败: "+(g?.message||g))})}),ce=s.onStdout(t.id,({data:v,seq:g})=>{t.lastSeq=g,m.write(v)}),de=s.onExit(t.id,({exitCode:v,signal:g})=>{t.alive=!1,t.exitCode=v,t.signal=g,m.writeln(`\r
3
- \x1B[33m[session exited, code=${v}, signal=${g??"-"}]\x1B[0m`)});t.offs=()=>{try{ie.dispose?.()}catch{}ce(),de()};try{const{chunks:v,truncated:g}=await s.history(t.id,0);g&&m.writeln("\x1B[2m[history truncated — earlier output was evicted]\x1B[0m");for(const G of v)m.write(G.data),t.lastSeq=G.seq}catch(v){m.writeln(`\x1B[31m[history fetch failed: ${v?.message||v}]\x1B[0m`)}const j=new ResizeObserver(()=>{try{P.fit(),s.resize(t.id,m.cols,m.rows).catch(()=>{})}catch{}});j.observe(b);const ue=t.offs;t.offs=()=>{try{j.disconnect()}catch{}ue()}}async function re(){u.value=!0,f.value="";try{const t=await s.create({shell:w.value,cols:80,rows:24}),l={id:t.sessionId,shell:t.shell,cwd:"",alive:!0,lastSeq:0,exitCode:null,xterm:null,fitAddon:null,offs:()=>{}};e.value.push(l),i.value=l.id,await B(l)}catch(t){f.value=t?.message||String(t)}finally{u.value=!1}}async function se(t){try{await s.close(t)}catch(l){f.value=l?.message||String(l)}setTimeout(()=>W(t),500)}function W(t){const l=e.value.findIndex(b=>b.id===t);if(l===-1)return;const p=e.value[l];try{p.offs?.()}catch{}try{p.xterm?.dispose?.()}catch{}e.value.splice(l,1),i.value===t&&(i.value=e.value[0]?.id||null)}function le(t){i.value=t,q(()=>{const l=e.value.find(p=>p.id===t);try{l?.fitAddon?.fit()}catch{}})}async function X(){d.value=!0,f.value="";try{const t=await s.list();for(const l of t){const p=e.value.find(m=>m.id===l.id);if(p){p.alive=l.alive,p.lastSeq=l.lastSeq;continue}const b={id:l.id,shell:l.shell,cwd:l.cwd,alive:l.alive,lastSeq:l.lastSeq,exitCode:null,xterm:null,fitAddon:null,offs:()=>{}};e.value.push(b),await B(b)}!i.value&&e.value.length>0&&(i.value=e.value[0].id)}catch(t){f.value=t?.message||String(t)}finally{d.value=!1}}Q(async()=>{await X()}),Y(()=>{for(const t of e.value){try{t.offs?.()}catch{}try{t.xterm?.dispose?.()}catch{}}}),$(i,()=>{q(()=>{const t=h.value;try{t?.fitAddon?.fit()}catch{}})});const Z={term:s,sessions:e,activeId:i,newShell:w,creating:u,loadingList:d,error:f,warning:n,xtermContainers:a,shellOptions:r,active:h,shortId:L,get xtermMod(){return O},set xtermMod(t){O=t},get fitAddonMod(){return M},set fitAddonMod(t){M=t},loadXterm:I,mountXterm:B,onCreate:re,onClose:se,removeSession:W,activate:le,refreshList:X,ref:S,computed:ee,onMounted:Q,onBeforeUnmount:Y,nextTick:q,watch:$,get message(){return V},get PlusOutlined(){return ge},get CloseOutlined(){return pe},get ReloadOutlined(){return ye},get useTerminal(){return oe}};return Object.defineProperty(Z,"__isScriptSetup",{enumerable:!1,value:!0}),Z}},be={class:"terminal-page"},ke={class:"terminal-header"},Ce={class:"page-sub"},Ae={class:"terminal-body"},Ee={class:"session-tabs"},Oe=["onClick"],Te={class:"session-shell"},Re={class:"session-id"},Me={key:0,class:"session-empty"},ze={class:"xterm-host"},Le=["data-session-id"],Pe={key:0,class:"xterm-placeholder"},De={key:1,class:"terminal-footer"},qe={key:0,class:"footer-exit"};function Be(c,o,s,e,i,w){const u=z("a-tag"),d=z("a-select"),f=z("a-button"),n=z("a-space"),a=z("a-alert");return y(),x("div",be,[_("div",ke,[_("div",null,[o[3]||(o[3]=_("h2",{class:"page-title"},"远程终端",-1)),_("p",Ce,[o[2]||(o[2]=D(" 桌面端托管的 PTY 会话;Android 端可远程操控同一通道 ",-1)),e.warning?(y(),H(u,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:T(()=>[D(E(e.warning),1)]),_:1})):R("v-if",!0)])]),A(n,null,{default:T(()=>[A(d,{value:e.newShell,"onUpdate:value":o[0]||(o[0]=r=>e.newShell=r),style:{width:"130px"},size:"small",options:e.shellOptions},null,8,["value"]),A(f,{type:"primary",size:"small",loading:e.creating,onClick:e.onCreate},{icon:T(()=>[A(e.PlusOutlined)]),default:T(()=>[o[4]||(o[4]=D(" 新会话 ",-1))]),_:1},8,["loading"]),A(f,{size:"small",loading:e.loadingList,onClick:e.refreshList},{icon:T(()=>[A(e.ReloadOutlined)]),default:T(()=>[o[5]||(o[5]=D(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),e.error?(y(),H(a,{key:0,message:e.error,type:"error","show-icon":"",closable:"",style:{"margin-bottom":"12px"},onClose:o[1]||(o[1]=r=>e.error="")},null,8,["message"])):R("v-if",!0),_("div",Ae,[_("div",Ee,[(y(!0),x(J,null,K(e.sessions,r=>(y(),x("div",{key:r.id,class:ve(["session-tab",{active:r.id===e.activeId,dead:!r.alive}]),onClick:h=>e.activate(r.id)},[_("span",Te,E(r.shell),1),_("span",Re,E(e.shortId(r.id)),1),A(e.CloseOutlined,{class:"session-close",onClick:we(h=>e.onClose(r.id),["stop"])},null,8,["onClick"])],10,Oe))),128)),e.sessions.length===0?(y(),x("div",Me,' 点击 "新会话" 创建第一个终端 ')):R("v-if",!0)]),_("div",ze,[(y(!0),x(J,null,K(e.sessions,r=>he((y(),x("div",{key:r.id,ref_for:!0,ref:"xtermContainers","data-session-id":r.id,class:"xterm-container"},null,8,Le)),[[_e,r.id===e.activeId]])),128)),e.sessions.length===0?(y(),x("div",Pe,[...o[6]||(o[6]=[_("span",null,"无活跃会话",-1)])])):R("v-if",!0)])]),e.active?(y(),x("div",De,[_("span",null,E(e.active.shell)+" · "+E(e.active.cwd||"(默认 cwd)")+" · seq "+E(e.active.lastSeq),1),e.active.alive?R("v-if",!0):(y(),x("span",qe,"已退出 (code="+E(e.active.exitCode??"-")+")",1))])):R("v-if",!0)])}const Fe=me(Se,[["render",Be],["__scopeId","data-v-65366a29"],["__file","/tmp/cc-web-panel-GzZ4oH/repo/packages/web-panel/src/views/Terminal.vue"]]);export{Fe as default};
@@ -1 +0,0 @@
1
- import{O as r}from"./index-D7FYxxFT.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-bJlVEnFC.js";import{U as t}from"./index-D7FYxxFT.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-BBgHTvYX.js";import"./useFlexGapSupport-DG9bkwrT.js";import"./styleChecker-BNvVEdm1.js";import"./index-BWcGURYh.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-LhgveyhM.js";import{U as t}from"./index-D7FYxxFT.js";import"./vendor-BvqAck49.js";import"./index-BWcGURYh.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};