chainlesschain 0.166.32 → 0.166.34

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 (169) hide show
  1. package/README.md +24 -1
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-DKUOkYex.js → AIOps-D8PJmSrh.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-B3luFrPA.js → ActionButton-DG6DqHA3.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-jbZ8R2S3.js → Analytics-DiLleeWs.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-CFS2vzPS.js → AppLayout-DxYkhlHK.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-sS0Qpy5q.js → Artifacts-BAW3Kdsi.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-CZ7kfjCG.js → Audit-DBr4uY6E.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-BpWc5SgP.js → BackgroundAgents-Dw0r-bHX.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-DpEYnvoy.js → Backup-AyhwYsio.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-kFzUGLnl.js → BaseInput-Cj8qJotr.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-BP_8aAfJ.js → Chat-DcvimQ0u.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer--joJ1e2f.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-HR1HQ06d.js → Checkbox-C2mlU77l.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-DxAqDPjT.js → Codegen-CAfc3YaV.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-BaCLih7J.js → Col-CIxoxtJI.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-ZX64uW8D.js → Community-DvufZoRg.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-CLtMoXTt.js → Compact-55JTa99J.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BlyxBDrs.js → Compliance-BllWog6P.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CtQZIYPh.js → Cowork-ThsFGc5p.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-BebN-ajI.js → Cron-CZjl5Ig2.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-3gRU0-58.js → Crosschain-DIAKAoQT.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-DSVTtLnb.js → DID-ayygwEil.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-CvnhOWqc.js → Dashboard-C3Xjm2UO.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BhdofmCJ.js → Dropdown-C1S3zf-j.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-Dhpua9Lo.js → EmailListRenderer-DRvriU-H.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DA1mLqQ4.js → FamilyGuardDashboard-iSX2bmsD.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-D6SUyKGb.js → Federation-Dk0Stkv-.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-BcMiwguB.js → FormItemContext-DasXSGff.js} +1 -1
  30. package/src/assets/web-panel/assets/GenericCardRenderer-Dv9XGlxI.js +1 -0
  31. package/src/assets/web-panel/assets/{Git-DGCNNqR_.js → Git-B5PgXL3Z.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-D4HVyFdL.js → Governance-B78x11e_.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-BOoEmvKl.js → Inference-b7CX1RqW.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-ECLI0C0_.js → KnowledgeGraph--MgBzMVp.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-Cf9GjHtX.js → Logs-CYCiGmVc.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-C3J59f8v.js → MarkdownRenderer-yrl10SWw.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-DeL4rOAJ.js → Marketplace-CsbwQ0eM.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-Dvn3KpLW.js → McpTools-0GBWHVra.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-CSlLy-aw.js → Memory-fAywmAYr.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-yNIe8-74.js → MobileBridge-BeNEyy3s.js} +1 -1
  41. package/src/assets/web-panel/assets/MobileProjects-Zt1cpErd.js +1 -0
  42. package/src/assets/web-panel/assets/{Mtc-Q7iMzSds.js → Mtc-CqRhJB70.js} +5 -5
  43. package/src/assets/web-panel/assets/{MtcAudit-CW71IQrK.js → MtcAudit-BEyGZflc.js} +4 -4
  44. package/src/assets/web-panel/assets/{Multisig-pursAeeT.js → Multisig-luz3EBT2.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-DtNo1qqO.js → NLProgramming-Dkbvp8IX.js} +1 -1
  46. package/src/assets/web-panel/assets/Notes-Cf9I2K8j.js +7 -0
  47. package/src/assets/web-panel/assets/{NotificationSettings-BgmQs_J8.js → NotificationSettings-BTfuzynL.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-DBmCtl2H.js +1 -0
  49. package/src/assets/web-panel/assets/{Organization-BbrrT6gR.js → Organization-BbG3-vDy.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-BcPi4YUc.js → Overflow-CMtFKEIQ.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-DfRteW76.js → P2P-6SAEb_lU.js} +2 -2
  52. package/src/assets/web-panel/assets/PdhVaultBrowser-CWG2OLvh.js +7 -0
  53. package/src/assets/web-panel/assets/{Permissions-DLCRaOe3.js → Permissions-ClZxZKZl.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-fuTL6z8u.js → PersonalDataHub-BYkyoZDT.js} +5 -5
  55. package/src/assets/web-panel/assets/{Pipeline-D3ztsQDw.js → Pipeline-B28ZgADI.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-4f-SQ4ie.js → Privacy-BxtZywbB.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-CC_ZFjrV.js → ProjectInit-DPqoRnxK.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-C9FWHcne.js → ProjectSettings-QjKvMkau.js} +2 -2
  59. package/src/assets/web-panel/assets/{Projects-CR3ETMQQ.js → Projects-Cp0Z8ZG0.js} +1 -1
  60. package/src/assets/web-panel/assets/{Providers-BWcbdgXx.js → Providers-CrS-rbyb.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-BavxpdIK.js → QrScannerModal-xTrhbVAU.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-CZ7gupY4.js → QuickAsk-DFOqJoq-.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-BQNpBYLL.js → Recommend-DXlKqu2-.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-2LU0Vr44.js → RemoteSession-BLLaZH8K.js} +3 -3
  65. package/src/assets/web-panel/assets/{Reputation-oYWo7qyp.js → Reputation-CUgAdJ11.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-B8Yj-Csx.js → Row-DzOO3wP-.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CbxKbHJr.js → RssFeed-B6GrRvh8.js} +2 -2
  68. package/src/assets/web-panel/assets/{Search-DGe-u9s0.js → Search-Cj3zKLb3.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-BwjfMAFI.js → Security-LnktzidI.js} +3 -3
  70. package/src/assets/web-panel/assets/{Services-BB5NQHwQ.js → Services-BQ6sIc2K.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-BPSVUive.js → Skeleton-CCSV3Jbw.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-DU2D-IYQ.js → Skills-CpoQ4SNk.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-DLX0vcyj.js → Sla-DbAbgRPq.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-CsPt1rpa.js → SpeechSettings-C4cJ_hoD.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-QuDslViv.js → SyncSettings-BKFzjN9Z.js} +2 -2
  76. package/src/assets/web-panel/assets/Tasks-Cf4bl7NS.js +1 -0
  77. package/src/assets/web-panel/assets/{Templates-B6tY1zm-.js → Templates-DTEQfFAQ.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BXx5FAY1.js → Tenant-wToJWKXB.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-CNk8KI4J.js → Terminal-1s3c7kmF.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-Bo2YVc2l.js → TimelineRenderer-BcfsYW3u.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-Bs1Oq8t9.js → Tokens-Byez6FY0.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-CtDhiQxG.js → Trigger-Cq8mZO88.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-riAZiPHp.js → Trust-DUrMmEwR.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-DZRzYaNL.js → UkeySign-CVHwXrVU.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-DTwOdg2x.js → VideoEditing-CDKbTRUS.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-ByuDECxb.js → Wallet-BqnEBIOy.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-CkSKfId0.js → WebAuthn-CeTMpj7_.js} +5 -5
  88. package/src/assets/web-panel/assets/{WorkflowEditor-BmyJJndu.js → WorkflowEditor-F6OgjV3C.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-s1LiqLff.js → chat-CMHUCwq3.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-CMKVIFUx.js → colors-DzVM_fpJ.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-DQGdG4Y5.js → compact-item-Hhmg51yT.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-Csln9jj1.js → createContext-SwHt7x3Q.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-5q_Y0E88.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-D1RYDhMF.js → hasIn-HGNKkn9A.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CiB2ZOQm.js → index--iOqM_AI.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DQ86qdvJ.js → index-AQcDW8bB.js} +19 -19
  97. package/src/assets/web-panel/assets/{index-DHic4uvV.js → index-B6YQN5_R.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-FLnF1aVs.js → index-BDE-WiE5.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-D3TPgm-r.js → index-BDhCx17_.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BvrkxTu0.js → index-BDt4wSl6.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-D6eoC11O.js → index-BJqNTF1S.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-Bqhj13Jf.js → index-BRikmONJ.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-Bl5BNEwF.js → index-B_HgLPC5.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CGBHLqy3.js → index-Ba2Kszdy.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C1y8O1ZP.js → index-BlHB5eax.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-rHRlGEnX.js → index-BmPYmoY3.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B39ap5Fq.js → index-Bq9MMKno.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CTg3OrkW.js → index-BstLYy9q.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-D1kWd1be.js → index-C-YkiVyL.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CHmRaTdN.js → index-C1QJxiOL.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-8mlgjcck.js → index-CDtzUt75.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BFHhLE91.js → index-CMG_2fK2.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DIFiRztW.js → index-COOcGOyK.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CUVbDS_3.js → index-CWkWh48N.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BsmEoBNu.js → index-Cc-d6f0F.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DU23ertt.js → index-ChLHLBkF.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-jPM2-LMz.js → index-Cnm4zroJ.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-B0vls3Cv.js → index-Co4RcBua.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CmAjtQdv.js → index-D5dcWBqg.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DmIeFdLq.js → index-DQT5thlV.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BJsa5jwk.js → index-Dcg7nQDe.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-ugL-2h6d.js → index-DgoefbLs.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-D2v6xn0e.js → index-DyZUrnje.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BiT8auXA.js → index-E-bI8HpV.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BxVtT9q8.js → index-F7Grz3-G.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CUlRsoXi.js → index-MDdTkUpA.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CJwH7xWo.js → index-aKV4Py_2.js} +1 -1
  128. package/src/assets/web-panel/assets/index-dl9TJMh5.js +1 -0
  129. package/src/assets/web-panel/assets/{index--G_4msyB.js → index-jrRtmiUh.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-C8sTim5H.js → index-oz0Xxs8D.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-Cew8V1UQ.js → index-pwLuJGFh.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DauplA4h.js → index-sYkFp9A4.js} +1 -1
  133. package/src/assets/web-panel/assets/index-x0DDgUaT.js +1 -0
  134. package/src/assets/web-panel/assets/{initDefaultProps-DWJU65d6.js → initDefaultProps-C_2QM45F.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-B0cCdvX2.js → motion-DkxY04tR.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CSWGW4YZ.js → move-D0CJlA7D.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-_P9unVrC.js → mtc-parser-DjP38YUD.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-eUFaswv5.js → omit-C9CJDaGT.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-Hmk4wpqj.js → pickAttrs-D5Wq2fa8.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-COIVVq2l.js → placementArrow-DJ6Dixs7.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-CkXZS7fs.js → responsiveObserve-DMmM0Dee.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-BGdyZ1Ue.js → slide-DipmpYA-.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-rbVNSZAN.js → statusUtils-DSqw6_nU.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-CcdFI5tK.js → styleChecker-t828MYjI.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-C9yiJQMh.js → useFlexGapSupport-COsSNzDQ.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-B73ulQmg.js → useFs-Bq5IEzv_.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DNN-hD_j.js → usePersonalDataHub-CUKM0HdW.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-BN1KizIr.js → vnode-l-JwAt2M.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-0KE4Sg53.js → zoom-D7xkW-gD.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/data/changelog.json +26 -0
  152. package/src/lib/remote-read-loop-guard.js +72 -13
  153. package/src/lib/text-file-search-worker.js +147 -0
  154. package/src/lib/text-file-search.js +116 -0
  155. package/src/lib/web-fetch-snapshots.js +211 -0
  156. package/src/lib/web-fetch.js +192 -18
  157. package/src/lib/web-search.js +118 -10
  158. package/src/runtime/agent-core.js +44 -0
  159. package/src/runtime/coding-agent-contract-shared.cjs +98 -4
  160. package/src/assets/web-panel/assets/ChatBubbleRenderer-yFeZ15D4.js +0 -1
  161. package/src/assets/web-panel/assets/GenericCardRenderer-CGEB1WcH.js +0 -1
  162. package/src/assets/web-panel/assets/MobileProjects-CsS8Lozw.js +0 -1
  163. package/src/assets/web-panel/assets/Notes-B1xUFwUT.js +0 -7
  164. package/src/assets/web-panel/assets/OrderTableRenderer-DI9t8YZl.js +0 -1
  165. package/src/assets/web-panel/assets/PdhVaultBrowser-De81lu5Q.js +0 -7
  166. package/src/assets/web-panel/assets/Tasks-C-jF6Kwk.js +0 -1
  167. package/src/assets/web-panel/assets/devWarning-C8YOOF96.js +0 -1
  168. package/src/assets/web-panel/assets/index-BUXHmygu.js +0 -1
  169. package/src/assets/web-panel/assets/index-CsNpDb_W.js +0 -1
@@ -388,7 +388,8 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
388
388
  title: "Search Files",
389
389
  kind: "filesystem",
390
390
  tier: "mvp",
391
- description: "Search for files by name pattern or content",
391
+ description:
392
+ "Search for files by name pattern or content. For a long text file, pass path and pattern: returns matching line/column positions, nearby context, and nextRead arguments for read_file. This streams the file instead of loading it into model context. Continue capped results with nextOffset as offset. Omit path for the existing directory search.",
392
393
  inputSchema: {
393
394
  type: "object",
394
395
  properties: {
@@ -396,6 +397,40 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
396
397
  type: "string",
397
398
  description: "Glob pattern or search string",
398
399
  },
400
+ path: {
401
+ type: "string",
402
+ description:
403
+ "One text file to search by literal keyword (takes precedence over directory/content_search).",
404
+ },
405
+ regex: {
406
+ type: "boolean",
407
+ description:
408
+ "Single-file search only: evaluate a regular expression in overlapping 64K text windows (default false). Prefer literals for exact coverage across window boundaries.",
409
+ },
410
+ caseSensitive: {
411
+ type: "boolean",
412
+ description: "Single-file search only: match case (default false).",
413
+ },
414
+ offset: {
415
+ type: "integer",
416
+ minimum: 0,
417
+ description:
418
+ "Single-file search: zero-based character offset to continue from nextOffset (default 0).",
419
+ },
420
+ maxMatches: {
421
+ type: "integer",
422
+ minimum: 1,
423
+ maximum: 100,
424
+ description:
425
+ "Single-file search: maximum matching excerpts (default 20).",
426
+ },
427
+ contextChars: {
428
+ type: "integer",
429
+ minimum: 0,
430
+ maximum: 1000,
431
+ description:
432
+ "Single-file search: characters around each match (default 150).",
433
+ },
399
434
  directory: {
400
435
  type: "string",
401
436
  description: "Directory to search in (default: cwd)",
@@ -699,7 +734,7 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
699
734
  kind: "network",
700
735
  tier: "extension",
701
736
  description:
702
- "Fetch a web page or API endpoint over HTTP(S). Returns extracted markdown text by default. Honors allowlist from .chainlesschain/config.json:webFetch.",
737
+ "Download a web page over HTTP(S), save the extracted text locally, and return one chunk. Continue with the same URL/format and returned snapshotId + nextOffset as offset; subsequent chunks read the saved document without downloading again. Use maxChars to limit each chunk, not maxBytes. Snapshots expire after 30 minutes or cache eviction. GitHub Actions pages contain status/annotations; retrieve actual job logs using authenticated gh run view <run-id> --job <job-id> --log-failed --repo <owner/repo>. Honors allowlist from .chainlesschain/config.json:webFetch.",
703
738
  inputSchema: {
704
739
  type: "object",
705
740
  properties: {
@@ -714,7 +749,53 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
714
749
  },
715
750
  maxBytes: {
716
751
  type: "number",
717
- description: "Maximum response size in bytes (default: 2000000)",
752
+ description:
753
+ "Raw HTTP download limit BEFORE text extraction (default: 10000000 / 10 MB). Larger text pages return a marked incomplete prefix by default; raise this for more of the page. Do not lower this to shorten output; use maxChars instead.",
754
+ },
755
+ maxChars: {
756
+ type: "number",
757
+ description:
758
+ "Characters per saved-text chunk (default: 20000). Returns hasMore, nextOffset and snapshotId for continuation. Applies to markdown/text/html; JSON values remain intact.",
759
+ },
760
+ snapshotId: {
761
+ type: "string",
762
+ description:
763
+ "Returned snapshot ID. Reads the already downloaded document from local storage without any HTTP request. Keep the same URL and format.",
764
+ },
765
+ query: {
766
+ type: "string",
767
+ description:
768
+ "Search the saved webpage for a literal keyword without network access (requires snapshotId). Returns matching offsets/context and nextRead arguments. Omit query when reading the matched section.",
769
+ },
770
+ maxMatches: {
771
+ type: "integer",
772
+ minimum: 1,
773
+ maximum: 100,
774
+ description:
775
+ "Saved-page keyword search: result limit (default 20); continue with nextOffset as offset.",
776
+ },
777
+ contextChars: {
778
+ type: "integer",
779
+ minimum: 0,
780
+ maximum: 1000,
781
+ description:
782
+ "Saved-page keyword search: context around each hit (default 150).",
783
+ },
784
+ caseSensitive: {
785
+ type: "boolean",
786
+ description:
787
+ "Saved-page keyword search: case-sensitive matching (default false).",
788
+ },
789
+ offset: {
790
+ type: "number",
791
+ description:
792
+ "Zero-based character position in extracted text (default: 0). For the next chunk, use the previous result's nextOffset with its snapshotId.",
793
+ },
794
+ onOverflow: {
795
+ type: "string",
796
+ enum: ["truncate", "error"],
797
+ description:
798
+ "When the raw download exceeds maxBytes: truncate (default) returns the available prefix with downloadTruncated=true and guidance to fetch more; error requires a complete response. JSON always requires a complete response.",
718
799
  },
719
800
  timeout: {
720
801
  type: "number",
@@ -739,7 +820,7 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
739
820
  kind: "network",
740
821
  tier: "extension",
741
822
  description:
742
- "Search the web for a query and return ranked results (title, url, snippet) plus an optional synthesized answer. Use this to discover URLs, then web_fetch to read a page. Backend is configured via .chainlesschain/config.json:webSearch (default provider: auto — uses whichever API key is set, else keyless DuckDuckGo).",
823
+ "Discover web sources from keywords when no URL is known. Return ranked results (title, url, snippet) plus an optional synthesized answer; cite source URLs. This is keyword search, not URL fetching. Use web_fetch only for sources that need full-text inspection, then search/read their saved snapshot locally. Backend is configured via .chainlesschain/config.json:webSearch (default provider: auto — uses whichever API key is set, else keyless DuckDuckGo). Verification challenges are errors, not empty search results.",
743
824
  inputSchema: {
744
825
  type: "object",
745
826
  properties: {
@@ -766,6 +847,19 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
766
847
  type: "number",
767
848
  description: "Maximum number of results to return (default: 8)",
768
849
  },
850
+ maxBytes: {
851
+ type: "integer",
852
+ minimum: 1,
853
+ description:
854
+ "Raw search response download limit (default 10000000). Do not lower this to shorten snippets.",
855
+ },
856
+ maxSnippetChars: {
857
+ type: "integer",
858
+ minimum: 1,
859
+ maximum: 10000,
860
+ description:
861
+ "Characters per search-result snippet (default 2000). Read the linked webpage for full text.",
862
+ },
769
863
  timeout: {
770
864
  type: "number",
771
865
  description: "Request timeout in ms (default: 15000)",
@@ -1 +0,0 @@
1
- import{I as h,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-Bn1JzzAn.js";import{_ as k}from"./index-DQ86qdvJ.js";import"./icons-DG5UD-6K.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"),v=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${v}`}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"},A={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=h("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",A,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,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 j=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
@@ -1 +0,0 @@
1
- import{I as x,P as s,J as i,U as l,R as n,c as g,K as u,Q as _,V as m,F as C,Z as N,S as T,b as p}from"./vendor-Bn1JzzAn.js";import{_ as V}from"./index-DQ86qdvJ.js";import"./icons-DG5UD-6K.js";const w={__name:"GenericCardRenderer",props:{event:{type:Object,required:!0}},setup(v,{expose:f}){f();const t=v,o=p(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),c=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),k=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),S=String(e.getMinutes()).padStart(2,"0");return`${c}-${r}-${k} ${b}:${S}`}catch{return""}}),h=p(()=>{const e=t.event.content||{};return e.text||e.title||e.subject||e.name||e.prompt||JSON.stringify(e).slice(0,200)}),y=p(()=>{const e=t.event.content||{};return e.body||e.snippet||e.description||e.from||e.counterparty||null}),d=p(()=>{const e=t.event.content||{},c=t.event.extra||{},r=[];return e.amount!=null&&r.push({k:"金额",v:e.amount,color:"gold"}),c.merchant&&r.push({k:"商户",v:c.merchant,color:"green"}),c.orderNo&&r.push({k:"订单",v:c.orderNo,color:"purple"}),e.from&&e.to&&r.push({k:"路线",v:`${e.from} → ${e.to}`,color:"cyan"}),e.trainNo&&r.push({k:"车次",v:e.trainNo,color:"cyan"}),e.model&&r.push({k:"模型",v:e.model,color:"magenta"}),t.event.place&&r.push({k:"地点",v:t.event.place,color:"geekblue"}),r}),a={props:t,formattedTime:o,primaryText:h,secondaryText:y,metaChips:d,computed:p};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},A={class:"event-card"},B={class:"card-head"},R={class:"time"},j={key:0,class:"actor"},D={class:"card-body"},F={class:"primary"},G={key:0,class:"secondary"},O={key:0,class:"card-meta"},I={class:"meta-k"};function J(v,f,t,o,h,y){const d=x("a-tag");return s(),i("div",A,[l("div",B,[l("span",R,n(o.formattedTime),1),g(d,{color:"blue",class:"adapter"},{default:u(()=>[_(n(t.event.source.adapter),1)]),_:1}),g(d,{class:"subtype"},{default:u(()=>[_(n(t.event.subtype),1)]),_:1}),t.event.actor?(s(),i("span",j,"@"+n(t.event.actor),1)):m("v-if",!0)]),l("div",D,[l("div",F,n(o.primaryText),1),o.secondaryText?(s(),i("div",G,n(o.secondaryText),1)):m("v-if",!0)]),o.metaChips.length>0?(s(),i("div",O,[(s(!0),i(C,null,N(o.metaChips,a=>(s(),T(d,{key:a.k,color:a.color},{default:u(()=>[l("span",I,n(a.k)+":",1),_(" "+n(a.v),1)]),_:2},1032,["color"]))),128))])):m("v-if",!0)])}const E=V(w,[["render",J],["__scopeId","data-v-c52d08ab"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/pdh/renderers/GenericCardRenderer.vue"]]);export{E 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-Bn1JzzAn.js";import{_ as v,b as m}from"./index-DQ86qdvJ.js";import{a8 as y,M}from"./icons-DG5UD-6K.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 I=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{I as default};
@@ -1,7 +0,0 @@
1
- import{I as f,P as w,S as L,K as a,J as V,c as n,V as x,w as F,b as P,a as X,r as u,U as A,Q as k,R as z,F as te,M as le,o as re,Z as se}from"./vendor-Bn1JzzAn.js";import{u as J,_ as ae,d as C}from"./index-DQ86qdvJ.js";import{u as ie}from"./useFs-B73ulQmg.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{ax as me,ay as ue,az as pe,aA as ge,a5 as ve,R as we,at as _e}from"./icons-DG5UD-6K.js";function ye(m){if(m&&m.ok===!1)throw new Error(m.error||"knowledge handler failed");return m?.result??m}function ne(m){return String(m).replace(/(["\\])/g,"\\$1")}function Z(){const m=J();async function t({title:b,content:e,tags:h=[],type:g="note"}={}){if(typeof b!="string"||!b.trim())throw new Error("title is required");if(typeof e!="string")throw new Error("content is required");const r=Array.isArray(h)?h.filter(Boolean):[];if(de().isEmbedded){const i=await m.sendRaw({type:"knowledge.add-item",item:{title:b.trim(),content:e,tags:r,type:g}},2e4),_=ye(i);if(_?.success===!1)throw new Error(_.error||"knowledge.add-item failed");return _?.item??null}let s=`note add "${ne(b.trim())}" -c "${ne(e)}"`;r.length&&(s+=` -t "${ne(r.join(","))}"`);const{output:d}=await m.execute(s,15e3);if(d&&/^[\s\S]*✖|error/i.test(d))throw new Error(d.slice(0,200));return{title:b.trim(),content:e,tags:r,type:g}}return{addItem:t}}const he={__name:"ClipboardImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(m,{expose:t,emit:b}){t();const e=m,h=b,g=Z(),r=P({get:()=>e.modelValue,set:p=>h("update:modelValue",p)}),s=u(!1),d=u(""),i=X({title:"",content:"",tagsRaw:""}),_=()=>`剪贴板导入 - ${new Date().toLocaleString()}`;function S(){i.title=_(),i.content="",i.tagsRaw="",d.value=""}async function v(){if(d.value="",!navigator.clipboard?.readText){d.value="当前环境不支持剪贴板读取 API";return}try{const p=await navigator.clipboard.readText();i.content=p||"",p||(d.value="剪贴板为空")}catch(p){d.value="读取剪贴板失败:"+(p?.message||String(p))}}F(()=>e.modelValue,async p=>{p&&(S(),await v())},{immediate:!0});async function O(){if(!i.content.trim()){C.warning("内容为空,无法保存");return}s.value=!0;try{const p=i.tagsRaw.split(/[,,]/).map(c=>c.trim()).filter(Boolean),o=await g.addItem({title:i.title.trim()||_(),content:i.content,tags:p,type:"note"});C.success("已保存到知识库"),h("saved",o),r.value=!1}catch(p){C.error("保存失败:"+(p?.message||String(p)))}finally{s.value=!1}}function U(){r.value=!1}const E={props:e,emit:h,knowledge:g,open:r,loading:s,readError:d,formState:i,defaultTitle:_,resetForm:S,readClipboard:v,handleSave:O,handleCancel:U,ref:u,reactive:X,computed:P,watch:F,get message(){return C},get useKnowledge(){return Z}};return Object.defineProperty(E,"__isScriptSetup",{enumerable:!1,value:!0}),E}},be={key:0,style:{"margin-bottom":"16px"}};function Se(m,t,b,e,h,g){const r=f("a-alert"),s=f("a-input"),d=f("a-form-item"),i=f("a-textarea"),_=f("a-form"),S=f("a-modal");return w(),L(S,{open:e.open,"onUpdate:open":t[3]||(t[3]=v=>e.open=v),title:"剪贴板导入",width:640,"ok-text":e.loading?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:e.loading,disabled:!e.formState.content.trim()},onOk:e.handleSave,onCancel:e.handleCancel},{default:a(()=>[e.readError?(w(),V("div",be,[n(r,{type:"warning","show-icon":"",message:e.readError,description:"请确认浏览器/系统已授予剪贴板读取权限,或手动粘贴到下方输入框。"},null,8,["message"])])):x("v-if",!0),n(_,{layout:"vertical",model:e.formState},{default:a(()=>[n(d,{label:"标题"},{default:a(()=>[n(s,{value:e.formState.title,"onUpdate:value":t[0]||(t[0]=v=>e.formState.title=v),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),n(d,{label:"内容"},{default:a(()=>[n(i,{value:e.formState.content,"onUpdate:value":t[1]||(t[1]=v=>e.formState.content=v),placeholder:"粘贴或编辑要保存的内容…","auto-size":{minRows:10,maxRows:20},"show-count":""},null,8,["value"])]),_:1}),n(d,{label:"标签(逗号分隔,可选)"},{default:a(()=>[n(s,{value:e.formState.tagsRaw,"onUpdate:value":t[2]||(t[2]=v=>e.formState.tagsRaw=v),placeholder:"例如:素材, 链接","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","ok-text","ok-button-props"])}const xe=ae(he,[["render",Se],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/ClipboardImportDialog.vue"]]);function oe(m){if(m&&m.ok===!1)throw new Error(m.error||"screenshot handler failed");return m?.result??m}function ce(){const m=J();if(!de().isEmbedded)return{unsupported:!0,capture:async()=>{throw new Error("截图需要桌面壳;浏览器模式不支持")},ocr:async()=>{throw new Error("OCR 仅在桌面壳可用")},cleanup:async()=>{}};async function b({screenIndex:g}={}){const r=await m.sendRaw({type:"screenshot.capture",screenIndex:g},3e4),s=oe(r);if(s?.success===!1)throw new Error(s.error||"screenshot.capture failed");return s}async function e(g,r,s){if(!g)throw new Error("path is required");const d=await m.sendRaw({type:"screenshot.ocr",path:g,lang:r,engine:s},9e4),i=oe(d);if(i?.success===!1)throw new Error(i.error||"screenshot.ocr failed");return i}async function h(g){if(g)try{const r=await m.sendRaw({type:"screenshot.cleanup",path:g},1e4),s=oe(r);s?.success===!1&&console.warn("[useScreenshot] cleanup failed:",s.error)}catch(r){console.warn("[useScreenshot] cleanup error:",r?.message||r)}}return{unsupported:!1,capture:b,ocr:e,cleanup:h}}const ke={__name:"ScreenshotImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(m,{expose:t,emit:b}){t();const e=m,h=b,g=ce(),r=Z(),s=P({get:()=>e.modelValue,set:y=>h("update:modelValue",y)}),d=u(!1),i=u(!1),_=u(!1),S=u(""),v=u(null),O=u("auto"),U=u(null),E=u(""),p=u(""),o=u(null),c=X({title:"",content:"",tagsRaw:""}),N=P(()=>!!o.value&&(c.content.trim()||"").length>0),B=()=>`截图识别 - ${new Date().toLocaleString()}`;function q(){c.title=B(),c.content="",c.tagsRaw="",S.value="",v.value=null,U.value=null,E.value="",p.value="",o.value=null}async function D(){o.value?.path&&await g.cleanup(o.value.path)}async function j(){if(g.unsupported)return S.value="浏览器模式不支持截图,请用桌面壳",null;i.value=!0;try{return await g.capture({})}catch(y){return S.value=y?.message||String(y),null}finally{i.value=!1}}async function T(y){if(y){_.value=!0;try{const l=await g.ocr(y,void 0,O.value);c.content=l.text||"",v.value=typeof l.confidence=="number"?l.confidence:null,U.value=l.engine||null,E.value=l.model||"",p.value=l.fallbackReason||"",l.text||C.info("OCR 未识别到文本,可手动输入")}catch(l){C.warning("OCR 失败: "+(l?.message||String(l)))}finally{_.value=!1}}}async function Q(){p.value=""}async function G(){await D(),q();const y=await j();y&&(o.value=y,await T(y.path))}async function W(){o.value?.path&&await T(o.value.path)}F(()=>e.modelValue,async y=>{if(y){q();const l=await j();l&&(o.value=l,await T(l.path))}else await D(),o.value=null},{immediate:!0});async function H(){if(!N.value){C.warning("识别文本为空,无法保存");return}d.value=!0;try{const y=c.tagsRaw.split(/[,,]/).map(I=>I.trim()).filter(Boolean),l=await r.addItem({title:c.title.trim()||B(),content:c.content,tags:y,type:"note"});C.success("已保存到知识库"),h("saved",l),await D(),s.value=!1}catch(y){C.error("保存失败: "+(y?.message||String(y)))}finally{d.value=!1}}async function Y(){await D(),s.value=!1}const K={props:e,emit:h,screenshot:g,knowledge:r,open:s,loading:d,capturing:i,ocrLoading:_,captureError:S,ocrConfidence:v,ocrEngine:O,engineUsed:U,ocrModel:E,ocrFallbackReason:p,shot:o,formState:c,canSave:N,defaultTitle:B,resetState:q,cleanupShot:D,runCapture:j,runOcr:T,handleEngineChange:Q,handleRecapture:G,handleRerunOcr:W,handleSave:H,handleCancel:Y,ref:u,reactive:X,computed:P,watch:F,get message(){return C},get CameraOutlined(){return ue},get ScanOutlined(){return me},get useScreenshot(){return ce},get useKnowledge(){return Z}};return Object.defineProperty(K,"__isScriptSetup",{enumerable:!1,value:!0}),K}},Ce={key:0,style:{"margin-bottom":"16px"}},Oe={key:1,class:"ss-error"},Re={key:2},Ne={class:"ss-actions"},Ee={key:0,class:"ss-preview"},Ie=["src"];function Ve(m,t,b,e,h,g){const r=f("a-alert"),s=f("a-button"),d=f("a-select-option"),i=f("a-select"),_=f("a-tag"),S=f("a-tooltip"),v=f("a-input"),O=f("a-form-item"),U=f("a-spin"),E=f("a-textarea"),p=f("a-form"),o=f("a-modal");return w(),L(o,{open:e.open,"onUpdate:open":t[4]||(t[4]=c=>e.open=c),title:"截图识别",width:780,"ok-text":e.loading?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:e.loading,disabled:!e.canSave},onOk:e.handleSave,onCancel:e.handleCancel},{default:a(()=>[e.screenshot.unsupported?(w(),V("div",Ce,[n(r,{type:"warning","show-icon":"",message:"浏览器模式不支持截图",description:"screenshot-desktop 需要 OS 原生 API,请用桌面壳 (cc desktop) 打开本面板。"})])):e.captureError?(w(),V("div",Oe,[n(r,{type:"error","show-icon":"",message:e.captureError},null,8,["message"])])):(w(),V("div",Re,[A("div",Ne,[n(s,{size:"small",loading:e.capturing,onClick:e.handleRecapture},{icon:a(()=>[n(e.CameraOutlined)]),default:a(()=>[t[5]||(t[5]=k(" 重新截图 ",-1))]),_:1},8,["loading"]),n(s,{size:"small",loading:e.ocrLoading,disabled:!e.shot||e.ocrLoading,onClick:e.handleRerunOcr},{icon:a(()=>[n(e.ScanOutlined)]),default:a(()=>[t[6]||(t[6]=k(" 重跑 OCR ",-1))]),_:1},8,["loading","disabled"]),n(i,{value:e.ocrEngine,"onUpdate:value":t[0]||(t[0]=c=>e.ocrEngine=c),size:"small",style:{width:"140px"},disabled:e.ocrLoading,onChange:e.handleEngineChange},{default:a(()=>[n(d,{value:"auto"},{default:a(()=>[...t[7]||(t[7]=[k("自动 (推荐)",-1)])]),_:1}),n(d,{value:"llm"},{default:a(()=>[...t[8]||(t[8]=[k("视觉 LLM",-1)])]),_:1}),n(d,{value:"tesseract"},{default:a(()=>[...t[9]||(t[9]=[k("本地 Tesseract",-1)])]),_:1})]),_:1},8,["value","disabled"]),e.engineUsed==="llm"?(w(),L(_,{key:0,color:"blue"},{default:a(()=>[k(z(e.ocrModel||"豆包视觉"),1)]),_:1})):e.engineUsed==="tesseract"&&e.ocrConfidence!==null?(w(),L(_,{key:1},{default:a(()=>[k(" Tesseract · "+z(e.ocrConfidence)+"% ",1)]),_:1})):x("v-if",!0),e.ocrFallbackReason?(w(),L(S,{key:2,title:`LLM 识别失败已回落 Tesseract: ${e.ocrFallbackReason}`},{default:a(()=>[n(_,{color:"orange"},{default:a(()=>[...t[10]||(t[10]=[k("回落 Tesseract",-1)])]),_:1})]),_:1},8,["title"])):x("v-if",!0)]),e.shot?.dataUrl?(w(),V("div",Ee,[A("img",{src:e.shot.dataUrl,alt:"screenshot"},null,8,Ie)])):x("v-if",!0),n(p,{layout:"vertical",model:e.formState},{default:a(()=>[n(O,{label:"标题"},{default:a(()=>[n(v,{value:e.formState.title,"onUpdate:value":t[1]||(t[1]=c=>e.formState.title=c),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),n(O,null,{label:a(()=>[t[11]||(t[11]=A("span",null,"识别文本",-1)),e.ocrLoading?(w(),L(U,{key:0,size:"small",style:{"margin-left":"8px"}})):x("v-if",!0)]),default:a(()=>[n(E,{value:e.formState.content,"onUpdate:value":t[2]||(t[2]=c=>e.formState.content=c),placeholder:e.ocrLoading?"正在识别…":"识别结果,可手动编辑","auto-size":{minRows:8,maxRows:16},"show-count":""},null,8,["value","placeholder"])]),_:1}),n(O,{label:"标签 (逗号分隔, 可选)"},{default:a(()=>[n(v,{value:e.formState.tagsRaw,"onUpdate:value":t[3]||(t[3]=c=>e.formState.tagsRaw=c),placeholder:"例如: 截图, 参考","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]))]),_:1},8,["open","ok-text","ok-button-props"])}const Ue=ae(ke,[["render",Ve],["__scopeId","data-v-1d6234fd"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/ScreenshotImportDialog.vue"]]),Ae={__name:"Notes",setup(m,{expose:t}){t();const b=J(),e=ie(),h=le(),g=u(!1),r=u(!1),s=u(!1),d=u(!1),i=u(""),_=u([]),S=u([]),v=u(!1),O=u(""),U=u(!1),E=u(!1),p=u(!1),o=u(!1),c=u(null),N=u({title:"",content:"",tags:""});async function B(){C.success("剪贴板内容已保存到知识库"),await T()}async function q(){C.success("截图内容已保存到知识库"),await T()}const D=P(()=>v.value?S.value:_.value),j=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function T(){r.value=!0,i.value="";try{const{output:l}=await b.execute("note list",2e4);_.value=Q(l)}catch(l){i.value=`加载失败: ${l.message}`}finally{r.value=!1}}function Q(l){const I=[],$=l.split(`
2
- `);for(const ee of $){const R=ee.trim();if(!R||R.startsWith("─")||R.startsWith("Note")||R.match(/^\d+ note/i))continue;const M=R.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);M?I.push({key:M[1],id:M[1],title:M[2].trim(),tags:M[3]?M[3].split(",").map(fe=>fe.trim()):[],preview:(M[4]||"").trim().slice(0,100),content:""}):R.length>2&&!R.startsWith("✖")&&!R.startsWith("[")&&I.push({key:I.length,id:String(I.length),title:R,tags:[],preview:"",content:""})}return I}async function G(){if(!O.value.trim()){W();return}s.value=!0,v.value=!0;try{const{output:l}=await b.execute(`note search "${O.value}"`,15e3);S.value=Q(l)}catch{S.value=[]}finally{s.value=!1}}function W(){O.value="",v.value=!1,S.value=[]}async function H(){if(!N.value.title.trim()){C.warning("请输入标题");return}d.value=!0;try{let l=`note add "${N.value.title}"`;N.value.content&&(l+=` -c "${N.value.content.replace(/"/g,'\\"')}"`),N.value.tags&&(l+=` -t "${N.value.tags}"`);const{output:I}=await b.execute(l,15e3);I.includes("✖")||I.toLowerCase().includes("error")?C.error("添加失败: "+I.slice(0,100)):(C.success("笔记已添加"),U.value=!1,N.value={title:"",content:"",tags:""},await T())}catch(l){C.error("添加失败: "+l.message)}finally{d.value=!1}}function Y(l){c.value=l,E.value=!0}async function K(){if(!c.value)return;const l=c.value,I=l.tags?.length?`tags: [${l.tags.join(", ")}]
3
-
4
- `:"",$=`# ${l.title}
5
-
6
- ${I}${l.content||l.preview||""}
7
- `,ee=(l.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";g.value=!0;try{const R=await e.saveText($,{defaultPath:`${ee}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(R.canceled)return;C.success(R.path?`已导出到 ${R.path}`:"已导出")}catch(R){C.error(`导出失败: ${R.message||R}`)}finally{g.value=!1}}re(()=>{T(),h.query.clipboardImport&&(p.value=!0),h.query.screenshotOcr&&(o.value=!0)}),F(()=>h.query.clipboardImport,l=>{l&&(p.value=!0)}),F(()=>h.query.screenshotOcr,l=>{l&&(o.value=!0)});const y={ws:b,fs:e,route:h,exporting:g,loading:r,searching:s,adding:d,error:i,notes:_,searchResults:S,isSearchMode:v,searchQuery:O,showAdd:U,showView:E,showClipboardImport:p,showScreenshotImport:o,viewingNote:c,newNote:N,onClipboardSaved:B,onScreenshotSaved:q,displayNotes:D,columns:j,loadNotes:T,parseNoteList:Q,doSearch:G,clearSearch:W,addNote:H,viewNote:Y,exportNote:K,ref:u,computed:P,onMounted:re,watch:F,get useRoute(){return le},get PlusOutlined(){return _e},get ReloadOutlined(){return we},get FileTextOutlined(){return ve},get DownloadOutlined(){return ge},get SnippetsOutlined(){return pe},get CameraOutlined(){return ue},get message(){return C},get useWsStore(){return J},get useFs(){return ie},ClipboardImportDialog:xe,ScreenshotImportDialog:Ue};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}},Le={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-sub"},ze={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},De={key:0,style:{"text-align":"center",padding:"60px"}},Me={key:0,style:{color:"#e0e0e0","font-weight":"500"}},Fe={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Be={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},qe={style:{"margin-bottom":"10px"}},je={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}};function Qe(m,t,b,e,h,g){const r=f("a-button"),s=f("a-space"),d=f("a-input-search"),i=f("a-tag"),_=f("a-spin"),S=f("a-table"),v=f("a-input"),O=f("a-form-item"),U=f("a-textarea"),E=f("a-form"),p=f("a-modal");return w(),V("div",null,[A("div",Le,[A("div",null,[t[12]||(t[12]=A("h2",{class:"page-title"},"笔记管理",-1)),A("p",Te,"个人知识库 · "+z(e.notes.length)+" 条笔记",1)]),n(s,null,{default:a(()=>[n(r,{onClick:t[0]||(t[0]=o=>e.showAdd=!0),type:"primary"},{icon:a(()=>[n(e.PlusOutlined)]),default:a(()=>[t[13]||(t[13]=k(" 新建笔记 ",-1))]),_:1}),n(r,{onClick:t[1]||(t[1]=o=>e.showClipboardImport=!0)},{icon:a(()=>[n(e.SnippetsOutlined)]),default:a(()=>[t[14]||(t[14]=k(" 剪贴板导入 ",-1))]),_:1}),n(r,{onClick:t[2]||(t[2]=o=>e.showScreenshotImport=!0)},{icon:a(()=>[n(e.CameraOutlined)]),default:a(()=>[t[15]||(t[15]=k(" 截图识别 ",-1))]),_:1}),n(r,{ghost:"",loading:e.loading,onClick:e.loadNotes},{icon:a(()=>[n(e.ReloadOutlined)]),default:a(()=>[t[16]||(t[16]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),x(" Search "),A("div",ze,[n(d,{value:e.searchQuery,"onUpdate:value":t[3]||(t[3]=o=>e.searchQuery=o),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:e.searching,onSearch:e.doSearch,onClear:e.clearSearch},null,8,["value","loading"]),e.isSearchMode?(w(),L(i,{key:0,color:"blue",closable:"",onClose:e.clearSearch},{default:a(()=>[k(" 搜索: "+z(e.searchQuery),1)]),_:1})):x("v-if",!0)]),x(" Loading "),e.loading?(w(),V("div",De,[n(_,{size:"large"})])):(w(),V(te,{key:1},[x(" Notes Table "),n(S,{columns:e.columns,"data-source":e.displayNotes,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:a(({column:o,record:c})=>[o.key==="title"?(w(),V("span",Me,z(c.title),1)):x("v-if",!0),o.key==="tags"?(w(!0),V(te,{key:1},se(c.tags,N=>(w(),L(i,{key:N,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:a(()=>[k(z(N),1)]),_:2},1024))),128)):x("v-if",!0),o.key==="content"?(w(),V("span",Fe,z(c.preview),1)):x("v-if",!0),o.key==="actions"?(w(),L(r,{key:3,size:"small",type:"link",onClick:N=>e.viewNote(c)},{default:a(()=>[...t[17]||(t[17]=[k("查看",-1)])]),_:1},8,["onClick"])):x("v-if",!0)]),emptyText:a(()=>[A("div",Pe,[n(e.FileTextOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),k(" "+z(e.error||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])],2112)),x(" Add Note Modal "),n(p,{open:e.showAdd,"onUpdate:open":t[7]||(t[7]=o=>e.showAdd=o),title:"新建笔记","confirm-loading":e.adding,onOk:e.addNote},{default:a(()=>[n(E,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[n(O,{label:"标题",required:""},{default:a(()=>[n(v,{value:e.newNote.title,"onUpdate:value":t[4]||(t[4]=o=>e.newNote.title=o),placeholder:"笔记标题"},null,8,["value"])]),_:1}),n(O,{label:"内容"},{default:a(()=>[n(U,{value:e.newNote.content,"onUpdate:value":t[5]||(t[5]=o=>e.newNote.content=o),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),n(O,{label:"标签"},{default:a(()=>[n(v,{value:e.newNote.tags,"onUpdate:value":t[6]||(t[6]=o=>e.newNote.tags=o),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),x(" Clipboard import modal "),n(e.ClipboardImportDialog,{modelValue:e.showClipboardImport,"onUpdate:modelValue":t[8]||(t[8]=o=>e.showClipboardImport=o),onSaved:e.onClipboardSaved},null,8,["modelValue"]),x(" Screenshot OCR modal "),n(e.ScreenshotImportDialog,{modelValue:e.showScreenshotImport,"onUpdate:modelValue":t[9]||(t[9]=o=>e.showScreenshotImport=o),onSaved:e.onScreenshotSaved},null,8,["modelValue"]),x(" View Note Modal "),n(p,{open:e.showView,"onUpdate:open":t[11]||(t[11]=o=>e.showView=o),title:e.viewingNote?.title,width:"700px"},{footer:a(()=>[n(r,{onClick:t[10]||(t[10]=o=>e.showView=!1)},{default:a(()=>[...t[18]||(t[18]=[k("关闭",-1)])]),_:1}),e.viewingNote?(w(),L(r,{key:0,type:"primary",loading:e.exporting,onClick:e.exportNote},{icon:a(()=>[n(e.DownloadOutlined)]),default:a(()=>[t[19]||(t[19]=k(" 导出 .md ",-1))]),_:1},8,["loading"])):x("v-if",!0)]),default:a(()=>[e.viewingNote?(w(),V("div",Be,[A("div",qe,[(w(!0),V(te,null,se(e.viewingNote.tags,o=>(w(),L(i,{key:o,color:"blue"},{default:a(()=>[k(z(o),1)]),_:2},1024))),128))]),A("pre",je,z(e.viewingNote.content||e.viewingNote.preview),1)])):x("v-if",!0)]),_:1},8,["open","title"])])}const Ge=ae(Ae,[["render",Qe],["__scopeId","data-v-7992c921"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/views/Notes.vue"]]);export{Ge as default};
@@ -1 +0,0 @@
1
- import{I as h,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 a}from"./vendor-Bn1JzzAn.js";import{_ as w}from"./index-DQ86qdvJ.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{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=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),S=a(()=>{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"}),b=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.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:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:S,formattedTime:b,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},A={class:"val"},R={class:"row"},B={class:"val"},D={class:"row amount-row"},I={class:"val amount"},j={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,e,d,m){const c=h("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",A,n(e.merchantText),1)]),s("div",R,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",B,n(e.itemText),1)]),s("div",D,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",I,n(e.amountText),1)]),e.orderNo?(l(),u("div",j,[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",M,[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 K=w(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-yFeZ15D4.js","./vendor-Bn1JzzAn.js","./index-DQ86qdvJ.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-DI9t8YZl.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-Bo2YVc2l.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-Dhpua9Lo.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-CGEB1WcH.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
- import{E as ue,r as E,b as C,I as g,P as u,J as O,U as v,c,S as w,V as A,_ as M,F as V,Z as se,a0 as ae,R,K as m,Q as b,W as L,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-DNN-hD_j.js";import{_ as D,e as F,d as P}from"./index-DQ86qdvJ.js";import{aa as q,ag as Q,M as z,aI as G,v as X,aH as H,aq as K,ac as W,e as de,d as fe,k as pe,ai as me,aA as _e,R as ye}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Y=300,Z=ue("pdhBrowser",()=>{const r=E({...I}),t=E([]),n=E(null),e=E(!1),o=E(!1),a=E(null),l=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const x=C(()=>t.value.length>0),j=C(()=>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,a.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,l.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;a.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,a.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,l.value=p.mode||l.value}catch(p){a.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function le(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,a.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:a,mode:l,shortQuery:s,facets:i,hasResults:x,canLoadMore:j,search:y,loadMore:k,setFilter:le,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"],["meeting-","system"],["vscode","system"],["vscodium","system"],["jetbrains-ide","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["hbuilderx","system"],["local-files","system"],["cursor","ai-chat"],["claude-code","ai-chat"],["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=C(()=>n.facets.total||0),o={chat:W,social:K,email:H,shopping:X,travel:G,system:z,"ai-chat":Q,other:q};function a(i){return o[i]||q}function l(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:a,badgeStyle:l,computed:C,get AppstoreOutlined(){return q},get MessageOutlined(){return W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return X},get CarOutlined(){return G},get MobileOutlined(){return z},get RobotOutlined(){return Q},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],Ce={class:"label"};function we(r,t,n,e,o,a){const l=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(),w(l,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):A("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(),w(ae(e.iconFor(s)),{class:"icon"})),v("span",Ce,R(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),w(l,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):A("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",we],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Ae={__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,a=C(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),l=C(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=C(()=>!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=C(()=>!!(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 x(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 j={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:x,computed:C,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},xe={key:2,class:"hint"};function je(r,t,n,e,o,a){const l=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Ee,[c(l,{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(),w(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})):A("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",xe,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):A("v-if",!0)])}const Le=D(Ae,[["render",je],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>F(()=>import("./ChatBubbleRenderer-yFeZ15D4.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-DI9t8YZl.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-Bo2YVc2l.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=L(()=>F(()=>import("./EmailListRenderer-Dhpua9Lo.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=L(()=>F(()=>import("./GenericCardRenderer-CGEB1WcH.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 a;default:return l}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:a,GenericCardRenderer:l,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,a){return u(),w(ae(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-XSvACA/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 a=Number.isFinite(o.occurredAt)?o.occurredAt:null,l=a?new Date(a).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",a!=null?String(a):"",l,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),a=document.createElement("a");return a.href=o,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),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"),a=String(n.getDate()).padStart(2,"0"),l=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${a}${s}.${l}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=C(()=>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 a(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 l({key:i}){try{const d=a(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:a,onClick:l,computed:C,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,a){const l=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),w(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(l,{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-XSvACA/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=Z(),e=C(()=>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 a(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const l={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:a,onMounted:J,computed:C,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return Z},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Qe={key:0},ze={key:0},Ge={key:1},Xe={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(r,t,n,e,o,a){const l=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),x=g("a-alert"),j=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(),w(l,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),w(l,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):A("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",Qe,[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",ze,[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)])):A("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))])):A("v-if",!0),v("span",Xe," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),w(x,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):A("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),w(j,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):A("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),w(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"])])):A("v-if",!0)])]),_:1})]),_:1})])}const nt=D(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
@@ -1 +0,0 @@
1
- import{E as F,b as D,r as R,I as p,J as c,U as _,c as n,K as a,S as C,V as x,o as I,x as V,P as i,Q as k,R as r,F as T,Z as O}from"./vendor-Bn1JzzAn.js";import{u as P,_ as E}from"./index-DQ86qdvJ.js";import{R as U}from"./icons-DG5UD-6K.js";const B=F("tasks",()=>{const y=R([]),l=R(!1);let u=null,t=null,d=null;const b=D(()=>y.value.filter(e=>e.status==="running")),v=D(()=>y.value.filter(e=>e.status==="pending")),w=D(()=>y.value.filter(e=>e.status==="completed"||e.status==="failed"||e.status==="timeout"));async function s(){const e=P();l.value=!0;try{const g=await e.sendRaw({type:"tasks-list"});g&&Array.isArray(g.tasks)&&(y.value=g.tasks)}catch{}finally{l.value=!1}}async function m(e){const g=P();try{await g.sendRaw({type:"tasks-stop",taskId:e})}catch{}finally{await s()}}const f=R(null);function h(e=5e3){N(),s(),u=setInterval(s,e),S()}function N(){u&&(clearInterval(u),u=null),t&&(t(),t=null),d&&(clearTimeout(d),d=null)}function S(){const e=P();if(t)return;const g=z=>{z.type==="task:notification"&&z.payload?.task&&(f.value=z.payload.task,s(),d&&clearTimeout(d),d=setTimeout(()=>{f.value=null,d=null},8e3))};t=e.onRuntimeEvent(g)}function A(e){return!e||e<0?"-":e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${(e/6e4).toFixed(1)}m`}function o(e){switch(e){case"running":return"processing";case"pending":return"default";case"completed":return"success";case"failed":return"error";case"timeout":return"warning";default:return"default"}}return{tasks:y,loading:l,running:b,pending:v,completed:w,lastNotification:f,fetchTasks:s,stopTask:m,startPolling:h,stopPolling:N,formatDuration:A,getStatusColor:o}}),L={__name:"Tasks",setup(y,{expose:l}){l();const u=B(),t=[{title:"状态",key:"status",width:90},{title:"描述",key:"description",ellipsis:!0},{title:"类型",dataIndex:"type",width:100},{title:"耗时",key:"duration",width:90},{title:"创建时间",key:"createdAt",width:180},{title:"结果",key:"result",ellipsis:!0},{title:"操作",key:"action",width:80}];function d(s){return s.status==="running"&&s.startedAt?u.formatDuration(Date.now()-s.startedAt):s.completedAt&&s.startedAt?u.formatDuration(s.completedAt-s.startedAt):"-"}function b(s){return s?new Date(s).toLocaleString():"-"}function v(s,m){return s?s.length>m?`${s.slice(0,m)}...`:s:""}I(()=>u.startPolling(5e3)),V(()=>u.stopPolling());const w={store:u,columns:t,getDuration:d,formatTime:b,truncate:v,onMounted:I,onUnmounted:V,get ReloadOutlined(){return U},get useTasksStore(){return B}};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}},j={class:"page-header"},J={key:0,class:"error-text"},K={key:1},M={class:"task-header"},Q={class:"task-desc"},W={class:"task-id"},X={class:"task-meta"},Z=["title"],q={key:0,class:"error-text"},G={key:1,class:"success-text"},H={key:2,class:"muted-text"};function Y(y,l,u,t,d,b){const v=p("a-button"),w=p("a-space"),s=p("a-alert"),m=p("a-statistic"),f=p("a-card"),h=p("a-col"),N=p("a-row"),S=p("a-tag"),A=p("a-table");return i(),c("div",null,[_("div",j,[l[3]||(l[3]=_("div",null,[_("h2",{class:"page-title"},"后台任务"),_("p",{class:"page-sub"},"查看后台任务队列、实时通知和任务执行结果。")],-1)),n(w,null,{default:a(()=>[n(v,{ghost:"",loading:t.store.loading,onClick:l[0]||(l[0]=o=>t.store.fetchTasks())},{icon:a(()=>[n(t.ReloadOutlined)]),default:a(()=>[l[2]||(l[2]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),t.store.lastNotification?(i(),C(s,{key:0,type:t.store.lastNotification.status==="completed"?"success":"error","show-icon":"",closable:"",class:"banner",onClose:l[1]||(l[1]=o=>t.store.lastNotification=null)},{message:a(()=>[k(" 任务"+r(t.store.lastNotification.status==="completed"?"完成":"结束")+": "+r(t.store.lastNotification.description||t.store.lastNotification.id.slice(0,16)),1)]),description:a(()=>[t.store.lastNotification.error?(i(),c("span",J,r(t.store.lastNotification.error),1)):t.store.lastNotification.result?(i(),c("span",K,r(t.truncate(String(t.store.lastNotification.result),120)),1)):x("v-if",!0)]),_:1},8,["type"])):x("v-if",!0),n(N,{gutter:[16,16],class:"stats-row"},{default:a(()=>[n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"全部任务",value:t.store.tasks.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"运行中",value:t.store.running.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"等待中",value:t.store.pending.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"已完成",value:t.store.completed.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),t.store.running.length>0?(i(),C(f,{key:1,title:"运行中的任务",class:"panel-card",size:"small"},{default:a(()=>[(i(!0),c(T,null,O(t.store.running,o=>(i(),c("div",{key:o.id,class:"task-item running"},[_("div",M,[n(S,{color:t.store.getStatusColor(o.status)},{default:a(()=>[k(r(o.status.toUpperCase()),1)]),_:2},1032,["color"]),_("span",Q,r(o.description),1),_("span",W,r(o.id.slice(0,16)),1)]),_("div",X,[_("span",null,"类型: "+r(o.type||"-"),1),_("span",null,"已运行: "+r(t.store.formatDuration(Date.now()-o.startedAt)),1),n(v,{size:"small",danger:"",onClick:e=>t.store.stopTask(o.id)},{default:a(()=>[...l[4]||(l[4]=[k("停止",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})):x("v-if",!0),n(f,{class:"panel-card"},{default:a(()=>[n(A,{columns:t.columns,"data-source":t.store.tasks,pagination:{pageSize:15,size:"small"},loading:t.store.loading,"row-key":"id",size:"small"},{bodyCell:a(({column:o,record:e})=>[o.key==="status"?(i(),C(S,{key:0,color:t.store.getStatusColor(e.status)},{default:a(()=>[k(r(e.status),1)]),_:2},1032,["color"])):o.key==="description"?(i(),c("span",{key:1,title:e.command},r(e.description),9,Z)):o.key==="duration"?(i(),c(T,{key:2},[k(r(t.getDuration(e)),1)],64)):o.key==="createdAt"?(i(),c(T,{key:3},[k(r(t.formatTime(e.createdAt)),1)],64)):o.key==="result"?(i(),c(T,{key:4},[e.error?(i(),c("span",q,r(t.truncate(e.error,60)),1)):e.result?(i(),c("span",G,r(t.truncate(String(e.result),60)),1)):(i(),c("span",H,"-"))],64)):o.key==="action"?(i(),c(T,{key:5},[e.status==="running"?(i(),C(v,{key:0,size:"small",danger:"",onClick:g=>t.store.stopTask(e.id)},{default:a(()=>[...l[5]||(l[5]=[k(" 停止 ",-1)])]),_:1},8,["onClick"])):x("v-if",!0)],64)):x("v-if",!0)]),_:1},8,["data-source","loading"])]),_:1})])}const st=E(L,[["render",Y],["__scopeId","data-v-da5ff6a2"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/views/Tasks.vue"]]);export{st as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-DQ86qdvJ.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-B8Yj-Csx.js";import{a0 as t}from"./index-DQ86qdvJ.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CkXZS7fs.js";import"./useFlexGapSupport-C9yiJQMh.js";import"./styleChecker-CcdFI5tK.js";import"./index-BvrkxTu0.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-BaCLih7J.js";import{a0 as t}from"./index-DQ86qdvJ.js";import"./vendor-Bn1JzzAn.js";import"./index-BvrkxTu0.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};