chainlesschain 0.162.109 → 0.162.111

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 (157) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-DOMx_gkg.js → AIOps-Dx2g8DpX.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-C3V6-KN7.js → ActionButton-B8Lo5phW.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-DhcH00zB.js → Analytics-BU0vuI3z.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-DxaARGVc.js → AppLayout-qXfIaD4s.js} +3 -3
  6. package/src/assets/web-panel/assets/{Audit-B5v_yPs_.js → Audit-P72yyUJV.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-y0trXy2c.js → Backup-UzVc5fsz.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-BKmOrsWP.js → BaseInput-Bjp6HmHC.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-YxvzoXfA.js → Chat-BXIaBLL2.js} +6 -6
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BT502wFg.js → ChatBubbleRenderer-Tos6mvVK.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-CWlobcH7.js → Checkbox-CBCKEULn.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-DyDnpB9x.js → Codegen-CKGgNFCv.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-vSk5m8e6.js → Col-BeKCXMuc.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-ms1KDyit.js → Community-DdEqA8hQ.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-CgOlMunA.js → Compact-vozeJTi_.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-BtmnlvkF.js → Compliance-CNJT80_l.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-oEgcjamv.js → Cowork-sxPYkNyf.js} +2 -2
  18. package/src/assets/web-panel/assets/{Cron-C45dOmbZ.js → Cron-DlszkLq4.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-COCW4N4S.js → Crosschain-C444Z6V9.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-D6L3jdjB.js → DID-Davn7zId.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-CZO_nWR9.js → Dashboard-0Ot1Ln5d.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-BHogrwxg.js → Dropdown-TZs_Zca_.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-DVU5KA6Y.js → EmailListRenderer-DgTnHNdf.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BpJuZRlS.js → FamilyGuardDashboard-B9no2fGW.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-C8XUIu9h.js → Federation-BHSHha9G.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-Dkv__07L.js → FormItemContext-Q0FBeG3d.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-PI4Hv6J7.js → GenericCardRenderer-C6zutFMf.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-DwoiOK7x.js → Git-BEnJDdpd.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-CZMrVnKF.js → Governance-BR4-6CZb.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-DGMCR5fY.js → Inference-MhzqAfW3.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-CHnyTP7N.js → KnowledgeGraph-BBV6cAOb.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-aHwf1vTL.js → Logs-CdT6H1Go.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-DrrJWlYy.js → Marketplace-C70PbAnT.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-FsvEQItl.js → McpTools-DJ7s6ZsI.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-BaLEbZZU.js → Memory-PZOsSn-W.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-Cbpe-UlH.js → MobileBridge-B92HKTS-.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileProjects-WpHJ6m0I.js → MobileProjects-CdyFsRSF.js} +1 -1
  38. package/src/assets/web-panel/assets/{Mtc-B2-MRjt7.js → Mtc-BPvqaEd3.js} +2 -2
  39. package/src/assets/web-panel/assets/{MtcAudit-BPKg4478.js → MtcAudit-O_Hbuei5.js} +4 -4
  40. package/src/assets/web-panel/assets/{Multisig-DL-OMvg9.js → Multisig-BUzJ8CU3.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-BFbo7QJF.js → NLProgramming-BPVPJs9L.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-DxlawFPj.js → Notes-Clllz42a.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-mXTgzIC1.js → NotificationSettings-CzYj1Stb.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-BUcf5CYv.js → OrderTableRenderer-CruZ1EVE.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-FeID8_Wf.js → Organization-B6orc6fs.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-DTFS4Vaz.js → Overflow-B9YUj9fc.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-BkylEhA8.js → P2P-D5s0_yCK.js} +2 -2
  48. package/src/assets/web-panel/assets/PdhVaultBrowser-CLD9lBih.js +7 -0
  49. package/src/assets/web-panel/assets/{Permissions-BSQ09sRI.js → Permissions-Bg0d2P49.js} +3 -3
  50. package/src/assets/web-panel/assets/{PersonalDataHub-Ba5iRuIi.js → PersonalDataHub-DUdprkx0.js} +2 -2
  51. package/src/assets/web-panel/assets/{Pipeline-DmL3Gpxg.js → Pipeline-P5nxxgmn.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-DAvd_DSh.js → Privacy-CGBXQVYn.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-AxBuFwBR.js → ProjectInit-nyhwIdsc.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-BZ40fAt5.js → ProjectSettings-CxAir6zJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-BHNbHuBF.js → Projects-DjSUR09w.js} +1 -1
  56. package/src/assets/web-panel/assets/Providers-D79W7rI4.js +1 -0
  57. package/src/assets/web-panel/assets/{QuickAsk-CzKbOUkP.js → QuickAsk-CKcZDQmH.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-D82aHoFt.js → Recommend-DY7WGUfS.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-zpuCi7ft.js → Reputation-BHSHoWyL.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-BDq7p96-.js → Row-DHIKnFWR.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-pAo6EJPy.js → RssFeed-CCTno3xq.js} +3 -3
  62. package/src/assets/web-panel/assets/Search-BuIHlvNF.js +1 -0
  63. package/src/assets/web-panel/assets/{Security-Gn-HnKp5.js → Security-BCfzcijJ.js} +3 -3
  64. package/src/assets/web-panel/assets/{Services-BlfMJ4ZL.js → Services-DN5AqFLj.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-Q8cKUNTJ.js → Skeleton-Bf-bQNVZ.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-BjOLODy1.js → Skills-BhsZnWn7.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-TbklgbfG.js → Sla-DiGAjtH5.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-DzKKyV6J.js → SpeechSettings-DrKpQyqM.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-Bq-76qhL.js → SyncSettings-BB7L3WIK.js} +2 -2
  70. package/src/assets/web-panel/assets/{Tasks-DWBUnqic.js → Tasks-j0Orler1.js} +1 -1
  71. package/src/assets/web-panel/assets/{Templates-CS77urAR.js → Templates-BmCw5FcI.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-B1hx8tjz.js → Tenant-CosLW_bB.js} +1 -1
  73. package/src/assets/web-panel/assets/{Terminal-CNX2SAIP.js → Terminal-BaXtGGWV.js} +2 -2
  74. package/src/assets/web-panel/assets/{TimelineRenderer-CS_iGXXB.js → TimelineRenderer-DRxjvSRn.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-CPfe_Ndx.js → Tokens-BbzOX-w9.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-DARLZ6w5.js → Trigger-2hgI6vxF.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-R_mlmd7H.js → Trust-BtN76dZ_.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-CysEd--z.js → UkeySign-P1MMpJ6M.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-eQ46o05K.js → VideoEditing-mVto-BAL.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-C5788NxS.js → Wallet-DXPq6ZB6.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-CK_CPM4k.js → WebAuthn-B3l84wPo.js} +5 -5
  82. package/src/assets/web-panel/assets/{WorkflowEditor-DhvdLkE6.js → WorkflowEditor-tx9XyCXN.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-CcKQhy1e.js → chat-C2edClle.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-B4d3_MCE.js → colors-zv8-ytfB.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-DC-Xf92z.js → compact-item-DBZtkGzs.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-KBHDmwRY.js → createContext-CKI5OFIw.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning--C3K0QR-.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-DEuYFeVL.js → hasIn-Coy3oSp1.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-ChJ_B7b9.js → index-5NgeEoKe.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-DhGYNT5Y.js → index-B4VqSetp.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-p5OuYAoC.js → index-B7KfsA2c.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-C4Ose5wC.js → index-BFdKuftV.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-gOIec6-U.js → index-BcWEO3hN.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-Tcf8b4Dr.js → index-BdaOq1JN.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CxtHBFqA.js → index-Bhg2yols.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-8BCBAwoA.js → index-BlJcDi7S.js} +3 -3
  97. package/src/assets/web-panel/assets/{index-ZbZ9FKyc.js → index-BtKKoSv6.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Bm39r2a4.js → index-C-zLZsBH.js} +1 -1
  99. package/src/assets/web-panel/assets/index-C3coGtcp.js +1 -0
  100. package/src/assets/web-panel/assets/{index-DTudiivg.js → index-C6JuZUZF.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-EnBI6ILp.js → index-CNq3K_ot.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-2Csz0FGD.js → index-C_s_9SXg.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BB9f50Gt.js → index-CcbwpMn8.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CTgs-ddr.js → index-Ce4nDGfM.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-VkeJvcgx.js → index-ChwUxlyQ.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Cl0As6V5.js → index-CntdCK8F.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BK8vM7es.js → index-CsOlyPhR.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BZjC0VTy.js → index-CskKid3w.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DkoDAyug.js → index-Cxc27KZH.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BJbBr6_l.js → index-D7_-t3kR.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DQXNz0yD.js → index-DDi6Al0l.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CCnk_-ug.js → index-DMbpi_L6.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B4RknAfS.js → index-DTmxd6OS.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-N4xZOl6m.js → index-DTpHYzZ9.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BxlEfskb.js → index-DbVqizl6.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BCbc993k.js → index-Dg6tHb34.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BwD3FKsC.js → index-DqK2W-FP.js} +1 -1
  118. package/src/assets/web-panel/assets/index-Dz7ZZdm4.js +1 -0
  119. package/src/assets/web-panel/assets/{index-B5cOdkHy.js → index-UYz58LRo.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CdabmsmR.js → index-VXMiiI1U.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DE0-JQay.js → index-WIaX8Xil.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Cyb-NAiR.js → index-XUdoPMSi.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-JXP0mbdx.js → index-YVaiFo0k.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-tW1RyKbL.js → index-cHUvyVAv.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DQMDCc8g.js → index-iDQpG3F_.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DZN3yAE2.js → index-iWVmVaJY.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DSXxbnHU.js → index-yb-33k6-.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-BSjGxzmn.js → initDefaultProps-cmuOliyS.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-B5_Cszlm.js → motion-L8NYhKjt.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-Zi4ZApRv.js → move-DhOWjgTO.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-BNHsjZx4.js → omit-B7mBGzmE.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-GzJRqTuY.js → pickAttrs-BqBmGbuI.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-CXfzbh2d.js → placementArrow-Bn2nt-i-.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-lhENMtmd.js → responsiveObserve-Be4beK0V.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-BaUzfEHc.js → slide-fXtV4NQl.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-ZYc611Fn.js → statusUtils-C_uISQQt.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-CaymUbb1.js → styleChecker-CU8rSpth.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-9EAy_UPY.js → useFlexGapSupport-4Eew0ra6.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-CUqinWaA.js → useFs-BV8X0vMd.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-eOXrcae-.js → usePersonalDataHub-CfLWlSz8.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-gBQTchDv.js → vnode-BFEcByvT.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-CCC5-LNi.js → zoom-B2L4y4I0.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/pdh.js +1 -4
  145. package/src/lib/code-agent.js +16 -4
  146. package/src/lib/content-recommender.js +15 -8
  147. package/src/lib/dlp-engine.js +26 -8
  148. package/src/lib/repl-bang-memorize.js +27 -1
  149. package/src/lib/runnable-provider.js +12 -0
  150. package/src/lib/settings-loader.cjs +29 -1
  151. package/src/repl/agent-repl.js +22 -2
  152. package/src/assets/web-panel/assets/PdhVaultBrowser-D8bxEEcj.js +0 -7
  153. package/src/assets/web-panel/assets/Providers-CDkzXPon.js +0 -1
  154. package/src/assets/web-panel/assets/Search-BXv5RRMM.js +0 -1
  155. package/src/assets/web-panel/assets/devWarning-Da3Hdd0q.js +0 -1
  156. package/src/assets/web-panel/assets/index-BMeXnsEn.js +0 -1
  157. package/src/assets/web-panel/assets/index-BdqPeWvV.js +0 -1
@@ -187,7 +187,9 @@ function addRule({ cwd = process.cwd(), kind, rule, scope = "project" } = {}) {
187
187
  try {
188
188
  data = JSON.parse(text) || {};
189
189
  } catch (err) {
190
- throw new Error(`refusing to overwrite malformed ${file} (${err.message})`);
190
+ throw new Error(
191
+ `refusing to overwrite malformed ${file} (${err.message})`,
192
+ );
191
193
  }
192
194
  }
193
195
  if (!data.permissions || typeof data.permissions !== "object") {
@@ -237,10 +239,36 @@ function loadSettingsConfig(opts = {}) {
237
239
  return { model, env, files };
238
240
  }
239
241
 
242
+ /**
243
+ * Read a top-level boolean setting across the layered `.claude/settings.json`
244
+ * files (last/closest layer wins — same precedence as the permission rules).
245
+ * Non-boolean values are ignored. Returns `undefined` when no layer sets it, so
246
+ * a caller can distinguish "unset" from an explicit `false`.
247
+ *
248
+ * @param {string} key top-level settings key (e.g. "respondToBashCommands")
249
+ * @param {object} [opts]
250
+ * @param {string} [opts.cwd=process.cwd()]
251
+ * @param {string} [opts.settingsFile]
252
+ * @param {(msg:string)=>void} [opts.onWarn]
253
+ * @returns {boolean|undefined}
254
+ */
255
+ function readBooleanSetting(key, opts = {}) {
256
+ const cwd = opts.cwd || process.cwd();
257
+ let value;
258
+ for (const file of settingsPaths(cwd, opts.settingsFile)) {
259
+ const data = readSettingsFile(file, { onWarn: opts.onWarn });
260
+ if (data && typeof data[key] === "boolean") {
261
+ value = data[key]; // last (closest) layer wins
262
+ }
263
+ }
264
+ return value;
265
+ }
266
+
240
267
  module.exports = {
241
268
  loadSettings,
242
269
  loadSettingsConfig,
243
270
  readSettingsFile,
271
+ readBooleanSetting,
244
272
  settingsPaths,
245
273
  parseEnvList,
246
274
  ruleSource,
@@ -112,6 +112,10 @@ let _permissionRules = null;
112
112
  let _permissionConfirm = null;
113
113
  // .claude/settings.json `hooks` block (decision-capable PreToolUse/PostToolUse).
114
114
  let _settingsHooks = null;
115
+ // .claude/settings.json `respondToBashCommands` (Claude-Code 2.1.186): whether a
116
+ // `!command` auto-triggers an assistant response to its output. undefined =
117
+ // unset → defaults OFF (opt-in) in shouldRespondToBashCommands.
118
+ let _respondToBash;
115
119
 
116
120
  /**
117
121
  * Fire settings.json Notification hooks (observe-only) — the agent needs the
@@ -444,8 +448,13 @@ export async function startAgentRepl(options = {}) {
444
448
  // Load .claude/settings.json permission rules + wire an interactive confirmer
445
449
  // so `ask` rules prompt (rather than fall closed like headless does).
446
450
  try {
447
- const { loadSettings } = await import("../lib/settings-loader.cjs");
451
+ const { loadSettings, readBooleanSetting } =
452
+ await import("../lib/settings-loader.cjs");
448
453
  const loaded = loadSettings({ cwd: process.cwd() });
454
+ // Claude-Code 2.1.186 respondToBashCommands (default OFF / opt-in when unset).
455
+ _respondToBash = readBooleanSetting("respondToBashCommands", {
456
+ cwd: process.cwd(),
457
+ });
449
458
  const total =
450
459
  loaded.rules.allow.length +
451
460
  loaded.rules.ask.length +
@@ -1253,7 +1262,8 @@ export async function startAgentRepl(options = {}) {
1253
1262
  // no LLM round-trip — and fold the output into the conversation context.
1254
1263
  if (trimmed.startsWith("!") && trimmed.slice(1).trim()) {
1255
1264
  try {
1256
- const { runBangCommand } = await import("../lib/repl-bang-memorize.js");
1265
+ const { runBangCommand, shouldRespondToBashCommands } =
1266
+ await import("../lib/repl-bang-memorize.js");
1257
1267
  const res = runBangCommand(trimmed, { cwd: process.cwd() });
1258
1268
  logger.log(chalk.gray(`$ ${res.cmd}`));
1259
1269
  if (res.stdout)
@@ -1268,6 +1278,16 @@ export async function startAgentRepl(options = {}) {
1268
1278
  );
1269
1279
  if (res.error) logger.error(`shell error: ${res.error.message}`);
1270
1280
  logger.log(chalk.gray(`(exit ${res.exitCode})`));
1281
+ // Claude-Code 2.1.186 `respondToBashCommands` (opt-in, default OFF):
1282
+ // when enabled, the assistant automatically responds to the command
1283
+ // output. Re-dispatch the captured <bash-input>/<bash-output> as a
1284
+ // normal user turn so the FULL turn machinery (streaming render, tools,
1285
+ // session persistence) is reused — the bash-tagged content can't
1286
+ // re-trigger the `!` branch.
1287
+ if (shouldRespondToBashCommands({ settingValue: _respondToBash })) {
1288
+ await handleLine(res.contextMessage.content);
1289
+ return; // the nested turn already re-prompted
1290
+ }
1271
1291
  messages.push(res.contextMessage);
1272
1292
  } catch (err) {
1273
1293
  logger.error(`! command failed: ${err.message}`);
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-BT502wFg.js","./vendor-BvqAck49.js","./index-8BCBAwoA.js","./icons-DP3uiYxy.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-BUcf5CYv.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-CS_iGXXB.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-DVU5KA6Y.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-PI4Hv6J7.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
- import{E as ue,r as E,b as w,I as g,P as u,J as O,U as v,c,S as C,V as x,_ as M,F as V,Z as se,a0 as le,R,K as m,Q as b,W as j,o as J}from"./vendor-BvqAck49.js";import{u as U}from"./usePersonalDataHub-eOXrcae-.js";import{_ as D,e as A,d as P}from"./index-8BCBAwoA.js";import{a9 as q,af as z,M as Q,aH as G,u as Z,aG as H,ap as K,ab as W,e as de,d as fe,k as pe,ah as me,az as _e,R as ye}from"./icons-DP3uiYxy.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Y=300,X=ue("pdhBrowser",()=>{const r=E({...I}),t=E([]),n=E(null),e=E(!1),o=E(!1),l=E(null),a=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const L=w(()=>t.value.length>0),F=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function y(){const S=++d;e.value=!0,l.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,a.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;l.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,l.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,a.value=p.mode||a.value}catch(p){l.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function ae(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Y)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...I},t.value=[],n.value=null,l.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:l,mode:a,shortQuery:s,facets:i,hasResults:L,canLoadMore:F,search:y,loadMore:k,setFilter:ae,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Y}}),ge=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["vscode","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["local-files","system"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:W,social:K,email:H,shopping:Z,travel:G,system:Q,"ai-chat":z,other:q};function l(i){return o[i]||q}function a(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:l,badgeStyle:a,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return Z},get CarOutlined(){return G},get MobileOutlined(){return Q},get RobotOutlined(){return z},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,l){const a=g("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(a,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(le(e.iconFor(s)),{class:"icon"})),v("span",we,R(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(a,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),xe={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,l=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=w(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function L(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[y,k]=h;o("set-filter","since",y?+y:null),o("set-filter","until",k?+k:null)}const F={props:e,emit:o,placeholderText:l,adapterOptions:a,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:L,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(F,"__isScriptSetup",{enumerable:!1,value:!0}),F}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},Le={key:2,class:"hint"};function Fe(r,t,n,e,o,l){const a=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Ee,[c(a,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):x("v-if",!0),n.shortQuery?(u(),O("span",Re,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",Le,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):x("v-if",!0)])}const je=D(xe,[["render",Fe],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Ae={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=j(()=>A(()=>import("./ChatBubbleRenderer-BT502wFg.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=j(()=>A(()=>import("./OrderTableRenderer-BUcf5CYv.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=j(()=>A(()=>import("./TimelineRenderer-CS_iGXXB.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),l=j(()=>A(()=>import("./EmailListRenderer-DVU5KA6Y.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=j(()=>A(()=>import("./GenericCardRenderer-PI4Hv6J7.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return l;default:return a}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:l,GenericCardRenderer:a,rendererFor:s,defineAsyncComponent:j,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,l){return u(),C(le(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Ae,[["render",De],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
3
- `)+`
4
- `}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const l=Number.isFinite(o.occurredAt)?o.occurredAt:null,a=l?new Date(l).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",l!=null?String(l):"",a,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
5
- `)+`
6
- `}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
7
- `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),l=document.createElement("a");return l.href=o,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0"),a=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${l}${s}.${a}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function l(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function a({key:i}){try{const d=l(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:l,onClick:a,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,l){const a=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(a,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+R(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function l(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const a={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:l,onMounted:J,computed:w,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:je,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},ze={key:0},Qe={key:0},Ge={key:1},Ze={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(r,t,n,e,o,l){const a=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),L=g("a-alert"),F=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(a,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(a,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):x("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=y=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=y=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",ze,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,R(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",Qe,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,R(e.categoryLabel(e.store.filters.category)),1),v("strong",null,R(e.store.facets.byCategory[e.store.filters.category]||0),1)])):x("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,R(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):x("v-if",!0),v("span",Ze," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),C(L,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):x("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(F,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):x("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${y.id}`,event:y},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",Ke,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=y=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):x("v-if",!0)])]),_:1})]),_:1})])}const tt=D(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{tt as default};
@@ -1 +0,0 @@
1
- import{E as N,r as k,I as m,J as T,U as d,c as i,K as l,V as u,S as P,F as R,Z as q,o as I,a as A,P as g,Q as _,R as C,_ as E}from"./vendor-BvqAck49.js";import{u as M,_ as H,d as x}from"./index-8BCBAwoA.js";import{a as D,b as W,c as j}from"./parsers-UEvh_ShA.js";import{R as Z}from"./icons-DP3uiYxy.js";const B=N("providers",()=>{const L=k(!1),o=k(null),v=k([]),e=k([]),w=k(null);async function U(){const s=M();L.value=!0;try{const{output:f}=await s.execute("llm providers",15e3);v.value=D(f);const p=v.value.find(h=>h.active);p&&(w.value=p.name);const{output:b}=await s.execute("llm models",15e3);e.value=W(b)}catch(f){console.error("Failed to load providers:",f)}finally{L.value=!1}}async function y(s){await M().execute(`llm switch ${s}`,1e4),v.value.forEach(p=>p.active=p.name===s),w.value=s}async function a(s){const f=M();o.value=s;try{const{output:p,exitCode:b}=await f.execute("llm test",3e4),h=v.value.find(F=>F.name===s);return h&&(h.status=b===0?"ok":"error"),b===0}catch{const p=v.value.find(b=>b.name===s);return p&&(p.status="error"),!1}finally{o.value=null}}return{loading:L,testing:o,providers:v,localModels:e,activeProvider:w,loadProviders:U,switchProvider:y,testProvider:a}}),J={__name:"Providers",setup(L,{expose:o}){o();const v=B(),e=M(),w=k(!1),U=k(!1),y=k(!1),a=A({provider:void 0,model:"",apiKey:"",baseUrl:"",temperature:.7,maxTokens:4096});let s={};const f=["ollama","openai","anthropic","volcengine","deepseek","gemini","groq","mistral","custom","zhipu"],p={ollama:"Ollama(本地)",openai:"OpenAI",anthropic:"Anthropic",volcengine:"火山引擎(豆包)",deepseek:"DeepSeek",gemini:"Google Gemini",groq:"Groq",mistral:"Mistral",custom:"Custom(自定义)",zhipu:"智谱 AI"},b=f.map(n=>({value:n,label:p[n]||n}));async function h(n){try{await v.switchProvider(n),x.success(`已切换到 ${n}`)}catch(t){x.error(`切换失败: ${t.message}`)}}async function F(n){await v.testProvider(n)?x.success(`${n} 连接正常`):x.warning(`${n} 连接失败,请检查配置`)}async function z(){w.value=!0;try{const{output:n}=await e.execute("config list",15e3),t=j(n);t.provider&&(a.provider=t.provider),t.model&&(a.model=t.model),t.apiKey&&(a.apiKey=t.apiKey),t.baseUrl&&(a.baseUrl=t.baseUrl),t.temperature!==void 0&&(a.temperature=t.temperature),t.maxTokens!==void 0&&(a.maxTokens=t.maxTokens),s={provider:t.provider??"",model:t.model??"",apiKey:t.apiKey??"",baseUrl:t.baseUrl??"",temperature:t.temperature??a.temperature,maxTokens:t.maxTokens??a.maxTokens},x.success("配置已加载")}catch(n){x.error(`加载配置失败: ${n.message}`)}finally{w.value=!1}}async function O(){U.value=!0;const n=[],t=[];try{if(a.provider&&a.provider!==s.provider)try{await e.execute(`config set llm.provider ${a.provider}`,1e4),t.push("provider")}catch(c){n.push(`provider: ${c.message}`)}if(a.model&&a.model!==s.model)try{await e.execute(`config set llm.model ${a.model}`,1e4),t.push("model")}catch(c){n.push(`model: ${c.message}`)}if(a.apiKey&&a.apiKey!==s.apiKey)try{await e.execute(`config set llm.apiKey ${a.apiKey}`,1e4),t.push("apiKey")}catch(c){n.push(`apiKey: ${c.message}`)}if(a.baseUrl!==void 0&&a.baseUrl!==s.baseUrl)try{await e.execute(`config set llm.baseUrl ${a.baseUrl}`,1e4),t.push("baseUrl")}catch(c){n.push(`baseUrl: ${c.message}`)}if(a.temperature!==s.temperature)try{await e.execute(`config set llm.temperature ${a.temperature}`,1e4),t.push("temperature")}catch(c){n.push(`temperature: ${c.message}`)}if(a.maxTokens!==s.maxTokens)try{await e.execute(`config set llm.maxTokens ${a.maxTokens}`,1e4),t.push("maxTokens")}catch(c){n.push(`maxTokens: ${c.message}`)}n.length>0?x.warning(`部分配置保存失败: ${n.join("; ")}`):t.length>0?(x.success(`已保存 ${t.length} 项配置`),s={...a},(t.includes("apiKey")||t.includes("provider")||t.includes("baseUrl")||t.includes("model"))&&(y.value=!0),t.includes("provider")&&v.loadProviders()):x.info("没有检测到配置变更")}catch(c){x.error(`保存配置失败: ${c.message}`)}finally{U.value=!1}}function S(){a.provider=s.provider||void 0,a.model=s.model||"",a.apiKey=s.apiKey||"",a.baseUrl=s.baseUrl||"",a.temperature=s.temperature??.7,a.maxTokens=s.maxTokens??4096}I(()=>{v.loadProviders(),z()});const K={providersStore:v,ws:e,configLoading:w,configSaving:U,showRestartHint:y,configForm:a,get loadedConfig(){return s},set loadedConfig(n){s=n},knownProviders:f,providerLabels:p,providerOptions:b,switchProvider:h,test:F,loadConfig:z,saveConfig:O,resetForm:S,onMounted:I,reactive:A,ref:k,get ReloadOutlined(){return Z},get message(){return x},get useProvidersStore(){return B},get useWsStore(){return M},get parseLlmConfigOutput(){return j}};return Object.defineProperty(K,"__isScriptSetup",{enumerable:!1,value:!0}),K}},Q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},X={key:1,style:{"text-align":"center",padding:"60px"}},Y={class:"providers-grid"},$={style:{display:"flex","align-items":"center",gap:"12px","margin-bottom":"12px"}},ee={style:{"font-size":"24px"}},oe={style:{flex:"1"}},ae={style:{color:"#e0e0e0","font-weight":"500"}},te={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},re={style:{display:"flex",gap:"8px","justify-content":"flex-end"}},se={key:0,style:{"margin-top":"24px"}},ne={style:{color:"#ccc","font-family":"monospace","font-size":"13px"}},ie={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"16px"}},le={class:"config-grid"},de={style:{display:"flex","align-items":"center",gap:"12px"}},ce={style:{display:"flex",gap:"12px","justify-content":"flex-end","margin-top":"16px"}};function me(L,o,v,e,w,U){const y=m("a-button"),a=m("a-alert"),s=m("a-spin"),f=m("a-tag"),p=m("a-badge"),b=m("a-card"),h=m("a-list-item"),F=m("a-list"),z=m("a-divider"),O=m("a-select"),S=m("a-form-item"),K=m("a-input"),n=m("a-input-password"),t=m("a-slider"),c=m("a-input-number"),V=m("a-form");return g(),T("div",null,[d("div",Q,[o[10]||(o[10]=d("div",null,[d("h2",{class:"page-title"},"LLM 配置"),d("p",{class:"page-sub"},"管理 AI 服务提供商")],-1)),i(y,{type:"primary",ghost:"",loading:e.providersStore.loading,onClick:o[0]||(o[0]=r=>e.providersStore.loadProviders())},{icon:l(()=>[i(e.ReloadOutlined)]),default:l(()=>[o[9]||(o[9]=_(" 刷新 ",-1))]),_:1},8,["loading"])]),u(" Active Provider Banner "),e.providersStore.activeProvider?(g(),P(a,{key:0,type:"success",style:{"margin-bottom":"20px",background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)"},"show-icon":""},{message:l(()=>[d("span",null,[o[11]||(o[11]=_("当前激活:",-1)),d("strong",null,C(e.providersStore.activeProvider),1)])]),_:1})):u("v-if",!0),u(" Loading "),e.providersStore.loading?(g(),T("div",X,[i(s,{size:"large"}),o[12]||(o[12]=d("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载 LLM 信息中...",-1))])):(g(),T(R,{key:2},[u(" Providers Grid "),d("div",null,[d("div",Y,[(g(!0),T(R,null,q(e.providersStore.providers,r=>(g(),P(b,{key:r.name,class:E(["provider-card",{active:r.active}]),style:{background:"var(--bg-card)"},size:"small"},{default:l(()=>[d("div",$,[d("span",ee,C(r.icon),1),d("div",oe,[d("div",ae,C(r.label),1),d("div",te,C(r.name),1)]),d("div",null,[r.active?(g(),P(f,{key:0,color:"green"},{default:l(()=>[...o[13]||(o[13]=[_("活跃",-1)])]),_:1})):r.status==="ok"?(g(),P(p,{key:1,status:"success",text:""})):r.status==="error"?(g(),P(p,{key:2,status:"error",text:""})):u("v-if",!0)])]),d("div",re,[i(y,{size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"},loading:e.providersStore.testing===r.name,onClick:G=>e.test(r.name)},{default:l(()=>[...o[14]||(o[14]=[_(" 测试 ",-1)])]),_:1},8,["loading","onClick"]),r.active?(g(),P(f,{key:1,color:"green",style:{margin:"0","line-height":"24px"}},{default:l(()=>[...o[16]||(o[16]=[_("当前",-1)])]),_:1})):(g(),P(y,{key:0,size:"small",type:"primary",ghost:"",onClick:G=>e.switchProvider(r.name)},{default:l(()=>[...o[15]||(o[15]=[_(" 切换 ",-1)])]),_:1},8,["onClick"]))])]),_:2},1032,["class"]))),128))]),u(" Local Models (Ollama) "),e.providersStore.localModels.length?(g(),T("div",se,[o[17]||(o[17]=d("h3",{style:{color:"#ccc","font-size":"15px","margin-bottom":"12px"}}," 本地模型(Ollama) ",-1)),i(F,{"data-source":e.providersStore.localModels,size:"small",style:{background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)"}},{renderItem:l(({item:r})=>[i(h,{style:{padding:"10px 16px","border-color":"#252525"}},{actions:l(()=>[i(f,{color:"cyan",style:{"font-size":"10px"}},{default:l(()=>[_(C(r.size||"local"),1)]),_:2},1024)]),default:l(()=>[d("span",ne,C(r.name),1)]),_:2},1024)]),_:1},8,["data-source"])])):u("v-if",!0),u(" LLM Parameter Settings "),i(z,{style:{"border-color":"var(--border-color)",margin:"32px 0 24px"}}),e.showRestartHint?(g(),P(a,{key:1,type:"warning","show-icon":"",closable:"",style:{"margin-bottom":"16px"},message:"配置已保存,但当前聊天会话仍在用旧 key",description:"桌面端的 LLM 会话只在新建会话时重读配置。请新建一个 Chat,或重启应用,新 key/Provider 才会生效。",onClose:o[1]||(o[1]=r=>e.showRestartHint=!1)})):u("v-if",!0),d("div",ie,[o[19]||(o[19]=d("h3",{class:"section-title"},"LLM 参数设置",-1)),i(y,{size:"small",loading:e.configLoading,onClick:e.loadConfig,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:l(()=>[i(e.ReloadOutlined)]),default:l(()=>[o[18]||(o[18]=_(" 加载配置 ",-1))]),_:1},8,["loading"])]),i(b,{class:"config-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[i(V,{model:e.configForm,layout:"vertical",class:"config-form"},{default:l(()=>[d("div",le,[u(" Provider "),i(S,{label:"Provider(提供商)"},{default:l(()=>[i(O,{value:e.configForm.provider,"onUpdate:value":o[2]||(o[2]=r=>e.configForm.provider=r),placeholder:"选择 LLM 提供商",options:e.providerOptions,style:{width:"100%"},disabled:e.configSaving},null,8,["value","options","disabled"])]),_:1}),u(" Model "),i(S,{label:"Model(模型名称)"},{default:l(()=>[i(K,{value:e.configForm.model,"onUpdate:value":o[3]||(o[3]=r=>e.configForm.model=r),placeholder:"例如 doubao-seed-1-6-251015","allow-clear":"",disabled:e.configSaving},null,8,["value","disabled"])]),_:1}),u(" API Key "),i(S,{label:"API Key"},{default:l(()=>[i(n,{value:e.configForm.apiKey,"onUpdate:value":o[4]||(o[4]=r=>e.configForm.apiKey=r),placeholder:"输入 API Key",disabled:e.configSaving},null,8,["value","disabled"])]),_:1}),u(" Base URL "),i(S,{label:"Base URL"},{default:l(()=>[i(K,{value:e.configForm.baseUrl,"onUpdate:value":o[5]||(o[5]=r=>e.configForm.baseUrl=r),placeholder:"例如 https://ark.cn-beijing.volces.com/api/v3","allow-clear":"",disabled:e.configSaving},null,8,["value","disabled"])]),_:1}),u(" Temperature "),i(S,{label:"Temperature(温度)"},{default:l(()=>[d("div",de,[i(t,{value:e.configForm.temperature,"onUpdate:value":o[6]||(o[6]=r=>e.configForm.temperature=r),min:0,max:2,step:.1,style:{flex:"1"},disabled:e.configSaving},null,8,["value","disabled"]),i(c,{value:e.configForm.temperature,"onUpdate:value":o[7]||(o[7]=r=>e.configForm.temperature=r),min:0,max:2,step:.1,precision:1,style:{width:"80px"},disabled:e.configSaving},null,8,["value","disabled"])])]),_:1}),u(" Max Tokens "),i(S,{label:"Max Tokens(最大输出长度)"},{default:l(()=>[i(c,{value:e.configForm.maxTokens,"onUpdate:value":o[8]||(o[8]=r=>e.configForm.maxTokens=r),min:256,max:128e3,step:256,style:{width:"100%"},placeholder:"4096",disabled:e.configSaving},null,8,["value","disabled"])]),_:1})]),d("div",ce,[i(y,{onClick:e.resetForm,disabled:e.configSaving,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:l(()=>[...o[20]||(o[20]=[_(" 重置 ",-1)])]),_:1},8,["disabled"]),i(y,{type:"primary",loading:e.configSaving,onClick:e.saveConfig},{default:l(()=>[...o[21]||(o[21]=[_(" 保存配置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1})])],2112))])}const ge=H(J,[["render",me],["__scopeId","data-v-64155d06"],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/views/Providers.vue"]]);export{ge as default};
@@ -1 +0,0 @@
1
- import{I as u,J as g,U as m,R as c,c as r,K as t,V as f,S,r as v,o as se,a as ie,b as j,P as d,Q as _,a2 as Se,F as O,Z as L}from"./vendor-BvqAck49.js";import{_ as ke,b as ce,u as de,E as ue,d as I}from"./index-8BCBAwoA.js";import{s as ye}from"./community-parser-CO25nZFt.js";import{at as Ce,l as Te,a4 as Ne,a_ as Ae,a9 as Oe,a2 as ze,$ as we,k as Ee,R as Me}from"./icons-DP3uiYxy.js";function ae(n){const o=ye(n);if(!o)return null;try{return JSON.parse(o)}catch{}const s=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const Fe=Object.freeze(["bm25","vector","hybrid"]);function Ie(n,o=0){return typeof n=="number"&&Number.isFinite(n)?n:o}function Re(n){if(Array.isArray(n))return n.filter(o=>typeof o=="string");if(typeof n!="string")return[];try{const o=JSON.parse(n);if(Array.isArray(o))return o.filter(s=>typeof s=="string")}catch{}return[]}function J(n){if(!n)return{noDb:!1,error:""};const o=ye(n),s=/Database not available/i.test(o);return{noDb:s,error:s?"Database not available":""}}function De(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,score:Ie(n.score,0),title:String(n.title||""),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",snippet:String(n.snippet||""),_idx:o}:null}function fe(n){const o=ae(n);return Array.isArray(o)?o.map(De).filter(Boolean):[]}function he(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,title:String(n.title||""),content:n.content??"",tags:Re(n.tags),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",updatedAt:n.updated_at??n.updatedAt??"",_idx:o}:null}function ge(n){const o=ae(n);return Array.isArray(o)?o.map(he).filter(Boolean):[]}function me(n){const o=ae(n);return!o||typeof o!="object"||Array.isArray(o)?null:he(o,0)}function _e(n){if(!Array.isArray(n)||n.length===0)return{total:0,categories:[],tags:[]};const o=new Map,s=new Map;for(const e of n){o.set(e.category,(o.get(e.category)||0)+1);for(const x of e.tags)s.set(x,(s.get(x)||0)+1)}return{total:n.length,categories:[...o.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count),tags:[...s.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count)}}function Le(n){if(n==null||n==="")return"—";const o=String(n),s=o.includes(" ")&&!o.includes("T")?o.replace(" ","T")+"Z":o,e=new Date(s);return isNaN(e.getTime())?o:e.toLocaleString("zh-CN",{hour12:!1})}const G="cc.web-panel.search.recent",re=8,Pe={__name:"Search",setup(n,{expose:o}){o();const{t:s}=ce(),e=de(),x=ue.PRESENTED_IMAGE_SIMPLE,q=v(!1),C=v(!1),P=v(!1),B=v(!1),z=v([]),h=v([]),A=v({noDb:!1,error:""}),T=ie({query:"",mode:"hybrid",topK:10}),Q=v(""),w=v(U()),K=v("results"),k=v(""),N=v(""),E=v(!1),M=v(null),V=j(()=>_e(z.value)),Y=j(()=>h.value.length?Math.max(...h.value.map(l=>l.score)):0),Z=j(()=>[{title:s("search.noteColumns.title"),key:"title"},{title:s("search.noteColumns.category"),key:"category",width:"120px"},{title:s("search.noteColumns.tags"),key:"tags",width:"240px"},{title:s("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:s("search.noteColumns.action"),key:"action",width:"180px"}]),W=j(()=>{let l=z.value;if(k.value&&(l=l.filter(i=>i.category===k.value)),N.value.trim()){const i=N.value.trim().toLowerCase();l=l.filter(y=>y.tags.some(b=>b.toLowerCase().includes(i)))}return l});function H(l){const i=`search.mode.${l}`,y=s(i);return y===i?l:y}function X(l){const i=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let y=0;for(let b=0;b<(l||"").length;b++)y=y*31+l.charCodeAt(b)>>>0;return i[y%i.length]}function $(l){return l>=.7?"#52c41a":l>=.5?"#1677ff":l>=.3?"#faad14":"#ff4d4f"}function R(l){return String(l).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function F(l,i){if(!i||!l)return R(l);const y=i.split(/\s+/).filter(Boolean);let b=R(l);for(const be of y){const xe=new RegExp(`(${be.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");b=b.replace(xe,"<mark>$1</mark>")}return b}function ee(l,i){return i?F(l,i):R(l)}function U(){try{const l=localStorage.getItem(G);if(l){const i=JSON.parse(l);if(Array.isArray(i))return i.filter(y=>typeof y=="string").slice(0,re)}}catch{}return[]}function a(l){const i=l.trim();if(!i)return;const y=[i,...w.value.filter(b=>b!==i)];w.value=y.slice(0,re);try{localStorage.setItem(G,JSON.stringify(w.value))}catch{}}function p(){w.value=[];try{localStorage.removeItem(G)}catch{}}function D(l){T.query=l,te()}async function oe(){q.value=!0,A.value={noDb:!1,error:""};try{const{output:l}=await e.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),i=J(l);if(i.noDb){A.value=i,z.value=[];return}z.value=ge(l)}catch(l){I.error(s("search.messages.loadIndexFailed",{err:l?.message||l}))}finally{q.value=!1}}async function te(){const l=T.query.trim();if(!l){I.warning(s("search.messages.queryRequired"));return}P.value=!0,A.value={noDb:!1,error:""};try{const i=[`search ${ne(l)}`,`--mode ${T.mode}`,`--top-k ${T.topK||10}`,"--json"],{output:y}=await e.execute(i.join(" "),15e3),b=J(y);if(b.noDb){A.value=b,h.value=[],B.value=!0,Q.value=l;return}h.value=fe(y),Q.value=l,B.value=!0,a(l),K.value="results"}catch(i){I.error(s("search.messages.searchFailed",{err:i?.message||i}))}finally{P.value=!1}}function ne(l){return`"${String(l).replace(/"/g,'\\"')}"`}function pe(l){T.query=l.title,T.mode="vector",te()}async function ve(l){E.value=!0,C.value=!0,M.value=null;try{const{output:i}=await e.execute(`note show ${l} --json`,8e3);if(J(i).noDb){I.error(s("search.messages.needInit"));return}M.value=me(i),M.value||I.error(s("search.messages.noteLoadFailed"))}catch(i){I.error(s("search.messages.loadFailed",{err:i?.message||i}))}finally{C.value=!1}}se(oe);const le={t:s,ws:e,EMPTY_IMG:x,RECENT_LS:G,RECENT_MAX:re,loadingIndex:q,loadingNote:C,searching:P,searched:B,notes:z,results:h,errorState:A,form:T,currentQuery:Q,recentQueries:w,activeTab:K,indexCategoryFilter:k,indexTagFilter:N,showNoteModal:E,currentNote:M,indexSummary:V,topScore:Y,noteColumns:Z,filteredNotes:W,modeLabel:H,categoryColor:X,scoreColor:$,escapeHtml:R,highlightSnippet:F,highlightContent:ee,loadRecent:U,pushRecent:a,clearRecent:p,rerunQuery:D,loadIndex:oe,runSearch:te,shellQuote:ne,searchSimilar:pe,viewNote:ve,ref:v,computed:j,onMounted:se,reactive:ie,get useI18n(){return ce},get ReloadOutlined(){return Me},get SearchOutlined(){return Ee},get ThunderboltOutlined(){return we},get BookOutlined(){return ze},get AppstoreOutlined(){return Oe},get TagsOutlined(){return Ae},get FileTextOutlined(){return Ne},get TrophyOutlined(){return Te},get EyeOutlined(){return Ce},get message(){return I},get Empty(){return ue},get useWsStore(){return de},get parseSearchResults(){return fe},get parseNotes(){return ge},get parseNote(){return me},get buildIndexSummary(){return _e},get detectSearchError(){return J},get formatSearchTime(){return Le},get SEARCH_MODES(){return Fe}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Qe={class:"page-title"},je={class:"page-sub"},qe={key:0,class:"recent-row"},Ke={class:"recent-label"},He={class:"score-block"},Ue={class:"result-title"},Je={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ge={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},Ve={key:0,class:"result-snippet"},Ye=["innerHTML"],Ze={class:"filter-bar"},We={key:0,class:"tag-row"},Xe={class:"tag-row-label"},$e={class:"tag-count"},et={style:{color:"var(--text-primary)","font-weight":"500"}},tt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},at={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{padding:"40px","text-align":"center"}},lt={key:1,style:{"padding-top":"8px"}},st={style:{"font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"var(--text-muted)"}},ct={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},dt={key:0,class:"note-content"},ut=["innerHTML"];function ft(n,o,s,e,x,q){const C=u("a-button"),P=u("a-space"),B=u("a-alert"),z=u("a-input"),h=u("a-col"),A=u("a-radio-button"),T=u("a-radio-group"),Q=u("a-input-number"),w=u("a-row"),K=u("a-form"),k=u("a-tag"),N=u("a-card"),E=u("a-statistic"),M=u("a-empty"),V=u("a-progress"),Y=u("a-list-item-meta"),Z=u("a-list-item"),W=u("a-list"),H=u("a-tab-pane"),X=u("a-table"),$=u("a-tabs"),R=u("a-spin"),F=u("a-descriptions-item"),ee=u("a-descriptions"),U=u("a-modal");return d(),g("div",null,[m("div",Be,[m("div",null,[m("h2",Qe,c(e.t("search.title")),1),m("p",je,c(e.t("search.subtitle")),1)]),r(P,null,{default:t(()=>[r(C,{loading:e.loadingIndex,onClick:e.loadIndex},{icon:t(()=>[r(e.ReloadOutlined)]),default:t(()=>[_(" "+c(e.t("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),f(" noDb banner "),e.errorState.noDb?(d(),S(B,{key:0,type:"info","show-icon":"",message:e.t("search.noDb.message"),description:e.t("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):f("v-if",!0),f(" Search bar "),r(N,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[r(K,{layout:"vertical",model:e.form,onSubmit:Se(e.runSearch,["prevent"])},{default:t(()=>[r(w,{gutter:12},{default:t(()=>[r(h,{span:14},{default:t(()=>[r(z,{value:e.form.query,"onUpdate:value":o[0]||(o[0]=a=>e.form.query=a),size:"large",placeholder:e.t("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:e.runSearch},{prefix:t(()=>[r(e.SearchOutlined)]),_:1},8,["value","placeholder"])]),_:1}),r(h,{span:4},{default:t(()=>[r(T,{value:e.form.mode,"onUpdate:value":o[1]||(o[1]=a=>e.form.mode=a),size:"large","button-style":"solid"},{default:t(()=>[(d(!0),g(O,null,L(e.SEARCH_MODES,a=>(d(),S(A,{key:a,value:a},{default:t(()=>[_(c(e.modeLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),r(h,{span:3},{default:t(()=>[r(Q,{value:e.form.topK,"onUpdate:value":o[2]||(o[2]=a=>e.form.topK=a),min:1,max:50,placeholder:e.t("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),r(h,{span:3},{default:t(()=>[r(C,{type:"primary",size:"large",loading:e.searching,block:"",onClick:e.runSearch},{icon:t(()=>[r(e.ThunderboltOutlined)]),default:t(()=>[_(" "+c(e.t("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),f(" Recent queries chips "),e.recentQueries.length?(d(),g("div",qe,[m("span",Ke,c(e.t("search.recent.label")),1),(d(!0),g(O,null,L(e.recentQueries,a=>(d(),S(k,{key:a,color:"blue",class:"recent-chip",onClick:p=>e.rerunQuery(a)},{default:t(()=>[_(c(a),1)]),_:2},1032,["onClick"]))),128)),r(C,{size:"small",type:"link",danger:"",onClick:e.clearRecent},{default:t(()=>[_(c(e.t("search.recent.clear")),1)]),_:1})])):f("v-if",!0)]),_:1}),f(" Stat cards "),r(w,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.indexedNotes"),value:e.indexSummary.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[r(e.BookOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.categories"),value:e.indexSummary.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[r(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.tags"),value:e.indexSummary.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[r(e.TagsOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.results"),value:e.results.length,"value-style":{color:e.results.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[r(e.FileTextOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),r(h,{xs:24,sm:8,lg:4},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.topScore"),value:e.topScore,precision:3,"value-style":{color:e.scoreColor(e.topScore),fontSize:"20px"}},{prefix:t(()=>[r(e.TrophyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),f(" Tabs "),r($,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"search-tabs"},{default:t(()=>[f(" ── Results tab ───────────────────────────────────────── "),r(H,{key:"results",tab:e.t("search.tabs.results")},{default:t(()=>[e.searched?e.results.length?(d(),S(W,{key:2,"data-source":e.results,"item-layout":"vertical",size:"large"},{renderItem:t(({item:a})=>[r(Z,{class:"result-row"},{actions:t(()=>[r(C,{type:"link",size:"small",onClick:p=>e.viewNote(a.id)},{icon:t(()=>[r(e.EyeOutlined)]),default:t(()=>[_(" "+c(e.t("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[m("div",He,[r(V,{type:"circle",percent:Math.round(Math.min(1,a.score)*100),"stroke-color":e.scoreColor(a.score),format:()=>a.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[r(Y,null,{title:t(()=>[m("span",Ue,c(a.title||e.t("search.results.noTitle")),1),r(k,{color:e.categoryColor(a.category),style:{"margin-left":"8px"}},{default:t(()=>[_(c(a.category),1)]),_:2},1032,["color"])]),description:t(()=>[m("span",Je,c(a.id.slice(0,16)),1),m("span",Ge,c(e.formatSearchTime(a.createdAt)),1)]),_:2},1024),a.snippet?(d(),g("div",Ve,[m("span",{innerHTML:e.highlightSnippet(a.snippet,e.currentQuery)},null,8,Ye)])):f("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):(d(),S(M,{key:1,description:e.t("search.results.noMatch",{query:e.currentQuery}),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"])):(d(),S(M,{key:0,description:e.t("search.results.promptEmpty"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),f(" ── Index browser tab ────────────────────────────────── "),r(H,{key:"index",tab:e.t("search.tabs.index")},{default:t(()=>[m("div",Ze,[r(T,{value:e.indexCategoryFilter,"onUpdate:value":o[3]||(o[3]=a=>e.indexCategoryFilter=a),size:"small","button-style":"solid"},{default:t(()=>[r(A,{value:""},{default:t(()=>[_(c(e.t("search.index.allCategories")),1)]),_:1}),(d(!0),g(O,null,L(e.indexSummary.categories.slice(0,6),a=>(d(),S(A,{key:a.name,value:a.name},{default:t(()=>[_(c(a.name)+" ("+c(a.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),r(z,{value:e.indexTagFilter,"onUpdate:value":o[4]||(o[4]=a=>e.indexTagFilter=a),placeholder:e.t("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),f(" Top tags chips "),e.indexSummary.tags.length?(d(),g("div",We,[m("span",Xe,c(e.t("search.index.topTagsLabel")),1),(d(!0),g(O,null,L(e.indexSummary.tags.slice(0,12),a=>(d(),S(k,{key:a.name,color:e.indexTagFilter===a.name?"blue":"default",class:"tag-chip",onClick:p=>e.indexTagFilter=e.indexTagFilter===a.name?"":a.name},{default:t(()=>[_(c(a.name)+" ",1),m("span",$e,c(a.count),1)]),_:2},1032,["color","onClick"]))),128))])):f("v-if",!0),r(X,{columns:e.noteColumns,"data-source":e.filteredNotes,pagination:{pageSize:20,showTotal:a=>e.t("search.totals.rows",{count:a})},size:"small",loading:e.loadingIndex,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:p})=>[a.key==="title"?(d(),g(O,{key:0},[m("span",et,c(p.title||e.t("search.results.noTitle")),1),m("div",tt,c(p.id.slice(0,16)),1)],64)):f("v-if",!0),a.key==="category"?(d(),S(k,{key:1,color:e.categoryColor(p.category)},{default:t(()=>[_(c(p.category),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="tags"?(d(),g(O,{key:2},[(d(!0),g(O,null,L(p.tags.slice(0,4),D=>(d(),S(k,{key:D,color:"default",style:{"font-size":"11px"}},{default:t(()=>[_(c(D),1)]),_:2},1024))),128)),p.tags.length>4?(d(),g("span",rt,"+"+c(p.tags.length-4),1)):f("v-if",!0)],64)):f("v-if",!0),a.key==="createdAt"?(d(),g("span",at,c(e.formatSearchTime(p.createdAt)),1)):f("v-if",!0),a.key==="action"?(d(),g(O,{key:4},[r(C,{size:"small",type:"link",onClick:D=>e.viewNote(p.id)},{default:t(()=>[_(c(e.t("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),r(C,{size:"small",type:"link",onClick:D=>e.searchSimilar(p)},{default:t(()=>[_(c(e.t("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):f("v-if",!0)]),emptyText:t(()=>[m("div",ot,[r(e.BookOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(e.indexCategoryFilter||e.indexTagFilter?e.t("search.empty.filtered"):e.t("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Note detail modal ─────────────────────────────────── "),r(U,{open:e.showNoteModal,"onUpdate:open":o[6]||(o[6]=a=>e.showNoteModal=a),title:e.t("search.note.title",{title:e.currentNote?.title||""}),width:780,footer:null},{default:t(()=>[e.loadingNote?(d(),g("div",nt,[r(R)])):e.currentNote?(d(),g("div",lt,[r(ee,{column:2,size:"small",bordered:""},{default:t(()=>[r(F,{label:e.t("search.note.id"),span:2},{default:t(()=>[m("span",st,c(e.currentNote.id),1)]),_:1},8,["label"]),r(F,{label:e.t("search.note.category")},{default:t(()=>[r(k,{color:e.categoryColor(e.currentNote.category)},{default:t(()=>[_(c(e.currentNote.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),r(F,{label:e.t("search.note.tags")},{default:t(()=>[(d(!0),g(O,null,L(e.currentNote.tags,a=>(d(),S(k,{key:a,color:"default"},{default:t(()=>[_(c(a),1)]),_:2},1024))),128)),e.currentNote.tags.length?f("v-if",!0):(d(),g("span",it,"—"))]),_:1},8,["label"]),r(F,{label:e.t("search.note.createdAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.createdAt)),1)]),_:1},8,["label"]),r(F,{label:e.t("search.note.updatedAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.updatedAt)),1)]),_:1},8,["label"])]),_:1}),m("h4",ct,c(e.t("search.note.content")),1),e.currentNote.content?(d(),g("div",dt,[m("span",{innerHTML:e.highlightContent(e.currentNote.content,e.currentQuery)},null,8,ut)])):(d(),S(M,{key:1,description:e.t("search.note.emptyContent"),image:e.EMPTY_IMG},null,8,["description","image"]))])):f("v-if",!0)]),_:1},8,["open","title"])])}const ht=ke(Pe,[["render",ft],["__scopeId","data-v-d2b94ce3"],["__file","/tmp/cc-web-panel-yxZFLS/repo/packages/web-panel/src/views/Search.vue"]]);export{ht as default};
@@ -1 +0,0 @@
1
- import{O as r}from"./index-8BCBAwoA.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-BDq7p96-.js";import{U as t}from"./index-8BCBAwoA.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-lhENMtmd.js";import"./useFlexGapSupport-9EAy_UPY.js";import"./styleChecker-CaymUbb1.js";import"./index-BCbc993k.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-vSk5m8e6.js";import{U as t}from"./index-8BCBAwoA.js";import"./vendor-BvqAck49.js";import"./index-BCbc993k.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};