chainlesschain 0.166.32 → 0.166.36

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 (174) 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-Zs-zPwVG.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-B3luFrPA.js → ActionButton-HZlxM6H0.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-jbZ8R2S3.js → Analytics-CXyThRDb.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-CFS2vzPS.js → AppLayout-DeyYh_EF.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-sS0Qpy5q.js → Artifacts-BQDtMwkx.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-CZ7kfjCG.js → Audit-DNH4UOux.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-BpWc5SgP.js → BackgroundAgents-BkKdIxE6.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-DpEYnvoy.js → Backup-DYy4aJom.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-kFzUGLnl.js → BaseInput-DjoyGVYm.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-BP_8aAfJ.js → Chat-D86ZYgOD.js} +6 -6
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-yFeZ15D4.js → ChatBubbleRenderer-RxI_YYth.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-HR1HQ06d.js → Checkbox-C7p8UY99.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-DxAqDPjT.js → Codegen-DnapqgV5.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-BaCLih7J.js → Col-C29J2DBT.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-ZX64uW8D.js → Community-Bf3KeLCr.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-CLtMoXTt.js → Compact-DA83wB48.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BlyxBDrs.js → Compliance-CXXVgRFG.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CtQZIYPh.js → Cowork-B28Ftuqv.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-BebN-ajI.js → Cron-CO-BcnDf.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-3gRU0-58.js → Crosschain-BmgPMFCs.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-DSVTtLnb.js → DID-CYW9WslA.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-CvnhOWqc.js → Dashboard-CWWhVWds.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BhdofmCJ.js → Dropdown-CjTuc1-n.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-Dhpua9Lo.js → EmailListRenderer-BrROAu4d.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DA1mLqQ4.js → FamilyGuardDashboard-Ci8Lmk8W.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-D6SUyKGb.js → Federation-CKzKVLE_.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-BcMiwguB.js → FormItemContext-CC2CK5PQ.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-CGEB1WcH.js → GenericCardRenderer-BYa3ElyT.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-DGCNNqR_.js → Git-Bmn3ucA4.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-D4HVyFdL.js → Governance-DqEOXitg.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-BOoEmvKl.js → Inference-BjfeExba.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-ECLI0C0_.js → KnowledgeGraph-CBTyIFlJ.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-Cf9GjHtX.js → Logs-KZfA_M9Q.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-C3J59f8v.js → MarkdownRenderer-BG7vi3V4.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-DeL4rOAJ.js → Marketplace-BFeK4he0.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-Dvn3KpLW.js → McpTools-Brg7uUoK.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-CSlLy-aw.js → Memory-Ce4AmyX3.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-yNIe8-74.js → MobileBridge-Dx1VBL_E.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CsS8Lozw.js → MobileProjects-DPyRr2Xl.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Q7iMzSds.js → Mtc-BzRmtDQU.js} +3 -3
  43. package/src/assets/web-panel/assets/{MtcAudit-CW71IQrK.js → MtcAudit-DvZ5kLvJ.js} +2 -2
  44. package/src/assets/web-panel/assets/{Multisig-pursAeeT.js → Multisig-D8uGUjX1.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-DtNo1qqO.js → NLProgramming-igc-TQE5.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-B1xUFwUT.js → Notes-CTqDYlek.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-BgmQs_J8.js → NotificationSettings-CkcLa2rb.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-DI9t8YZl.js → OrderTableRenderer-BfScYvnH.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-BbrrT6gR.js → Organization-BjKK9SdB.js} +2 -2
  50. package/src/assets/web-panel/assets/{Overflow-BcPi4YUc.js → Overflow-BkcghTPE.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-DfRteW76.js → P2P-l9f34Xu8.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-De81lu5Q.js → PdhVaultBrowser-yVXWmwWe.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-DLCRaOe3.js → Permissions-DeSYs0VV.js} +3 -3
  54. package/src/assets/web-panel/assets/{PersonalDataHub-fuTL6z8u.js → PersonalDataHub-CmKmhy0q.js} +5 -5
  55. package/src/assets/web-panel/assets/{Pipeline-D3ztsQDw.js → Pipeline-DBxS4R_r.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-4f-SQ4ie.js → Privacy-CKngdGw3.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-CC_ZFjrV.js → ProjectInit-0Pso0jXN.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-C9FWHcne.js → ProjectSettings-BHrqWQ6r.js} +2 -2
  59. package/src/assets/web-panel/assets/{Projects-CR3ETMQQ.js → Projects-B8wIh9PK.js} +1 -1
  60. package/src/assets/web-panel/assets/{Providers-BWcbdgXx.js → Providers-CXFTOHRV.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-BavxpdIK.js → QrScannerModal-DfN0c_BN.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-CZ7gupY4.js → QuickAsk-v1Z5hty_.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-BQNpBYLL.js → Recommend-DOaVmZUi.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-2LU0Vr44.js → RemoteSession--EWcPBY1.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-oYWo7qyp.js → Reputation-DUWFSNvV.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-B8Yj-Csx.js → Row-0-bFnXWF.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CbxKbHJr.js → RssFeed-B_uTfubW.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-DGe-u9s0.js → Search-CqxiTLfB.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-BwjfMAFI.js → Security-CGoHOz5B.js} +2 -2
  70. package/src/assets/web-panel/assets/{Services-BB5NQHwQ.js → Services-COhAbS45.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-BPSVUive.js → Skeleton-B97crp6v.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-DU2D-IYQ.js → Skills-er_XdavV.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-DLX0vcyj.js → Sla-RpkWkzOL.js} +1 -1
  74. package/src/assets/web-panel/assets/SpeechSettings-DDVXmT5y.js +1 -0
  75. package/src/assets/web-panel/assets/{SyncSettings-QuDslViv.js → SyncSettings-Bbiw6ohw.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-C-jF6Kwk.js → Tasks-CRghr7lo.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-B6tY1zm-.js → Templates-BUQkfydG.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BXx5FAY1.js → Tenant-CfUFOsZu.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-CNk8KI4J.js → Terminal-BGY7gi4M.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-Bo2YVc2l.js → TimelineRenderer-B3Len0l7.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-Bs1Oq8t9.js → Tokens-BjeHn2zI.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-CtDhiQxG.js → Trigger-ctcZ2mcv.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-riAZiPHp.js → Trust-oncF3TpO.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-DZRzYaNL.js → UkeySign-BwKbVYCd.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-DTwOdg2x.js → VideoEditing-D1dgL-3U.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-ByuDECxb.js → Wallet-4hXAfjBL.js} +3 -3
  87. package/src/assets/web-panel/assets/{WebAuthn-CkSKfId0.js → WebAuthn-C8p3cotb.js} +5 -5
  88. package/src/assets/web-panel/assets/{WorkflowEditor-BmyJJndu.js → WorkflowEditor-BnrjG77E.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-s1LiqLff.js → chat-B-YNK7EI.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-CMKVIFUx.js → colors-B9HYvK-e.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-DQGdG4Y5.js → compact-item-BJr0quBA.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-Csln9jj1.js → createContext-CXfbQEWD.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-DNpXMZaQ.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-D1RYDhMF.js → hasIn-B7Q02hdZ.js} +1 -1
  95. package/src/assets/web-panel/assets/index-2hcdmWpb.js +1 -0
  96. package/src/assets/web-panel/assets/{index-DmIeFdLq.js → index-4gZEpDAG.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CUVbDS_3.js → index-6wWd08X-.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CiB2ZOQm.js → index-B6h86qjh.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-Cew8V1UQ.js → index-BB4KIBso.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DIFiRztW.js → index-BClzZrmx.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Bqhj13Jf.js → index-BNL9lmWL.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-D1kWd1be.js → index-BU_adeUp.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-rHRlGEnX.js → index-Bd3nX6aj.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CTg3OrkW.js → index-Bf0OxvOh.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C1y8O1ZP.js → index-BleXwr2w.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CGBHLqy3.js → index-BmCD1_HC.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B39ap5Fq.js → index-BmvpVSmM.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-D6eoC11O.js → index-BoNVnnAq.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CUlRsoXi.js → index-BtunVZuS.js} +1 -1
  110. package/src/assets/web-panel/assets/{index--G_4msyB.js → index-BvRqE3Un.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-B0vls3Cv.js → index-C3M8M9_U.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-ugL-2h6d.js → index-C7IZWdoB.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BxVtT9q8.js → index-CEujQqdl.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-C8sTim5H.js → index-COdAugDt.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DHic4uvV.js → index-CQ7qYZS4.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-D3TPgm-r.js → index-CU7cBzr9.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BFHhLE91.js → index-CXgHZ_HG.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DauplA4h.js → index-CcyxVqzn.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-D2v6xn0e.js → index-D0zuXz4s.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CHmRaTdN.js → index-D1GP2MQz.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-FLnF1aVs.js → index-D5g5_oua.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CmAjtQdv.js → index-DMoUa3dF.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-8mlgjcck.js → index-DPUg6cVc.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BJsa5jwk.js → index-D_UneDq3.js} +1 -1
  125. package/src/assets/web-panel/assets/index-DbQCUG4D.js +1 -0
  126. package/src/assets/web-panel/assets/{index-BsmEoBNu.js → index-DsV1HA0Z.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Bl5BNEwF.js → index-DutYFyC0.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BvrkxTu0.js → index-G7Z_On_n.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BiT8auXA.js → index-Gjegl5Ig.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-jPM2-LMz.js → index-HzCaU25O.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DQ86qdvJ.js → index-cq5Q-RHa.js} +19 -19
  132. package/src/assets/web-panel/assets/{index-CJwH7xWo.js → index-iCKFl_jt.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DU23ertt.js → index-kAggAkrB.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-DWJU65d6.js → initDefaultProps-DrzGM6fO.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-B0cCdvX2.js → motion-SE_xFnGL.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CSWGW4YZ.js → move-CrPjKNiG.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-_P9unVrC.js → mtc-parser-CpcyFPK6.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-eUFaswv5.js → omit-BV0g7vf4.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-Hmk4wpqj.js → pickAttrs-lWpsc-k6.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-COIVVq2l.js → placementArrow-CiewvU4X.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-CkXZS7fs.js → responsiveObserve-DbF8pamO.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-BGdyZ1Ue.js → slide-Bn82Ip9-.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-rbVNSZAN.js → statusUtils-J76gk_-G.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-CcdFI5tK.js → styleChecker-BL95J74a.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-C9yiJQMh.js → useFlexGapSupport-BUzhdQsv.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-B73ulQmg.js → useFs-B2Fppepb.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DNN-hD_j.js → usePersonalDataHub-DjTASfYE.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-BN1KizIr.js → vnode-BwrOgBqP.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-0KE4Sg53.js → zoom-B6MeT_Gw.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/commands/llm.js +4 -3
  152. package/src/data/changelog.json +52 -0
  153. package/src/lib/evolution/evolution-artifact-ports.js +40 -3
  154. package/src/lib/evolution/evolution-file-identity.js +50 -0
  155. package/src/lib/evolution/evolution-file-witness.js +206 -91
  156. package/src/lib/evolution/evolution-ledger-file-backend.js +4 -0
  157. package/src/lib/evolution/evolution-ledger.js +37 -5
  158. package/src/lib/evolution/evolution-witness-segments.js +330 -0
  159. package/src/lib/evolution/progressive-canary-external-watchdog.js +6 -4
  160. package/src/lib/evolution/skill-candidate-registry.js +45 -11
  161. package/src/lib/evolution/skill-release-registry.js +46 -12
  162. package/src/lib/llm-connection-probe.js +21 -4
  163. package/src/lib/remote-read-loop-guard.js +72 -13
  164. package/src/lib/text-file-search-worker.js +147 -0
  165. package/src/lib/text-file-search.js +116 -0
  166. package/src/lib/web-fetch-snapshots.js +211 -0
  167. package/src/lib/web-fetch.js +192 -18
  168. package/src/lib/web-search.js +118 -10
  169. package/src/runtime/agent-core.js +44 -0
  170. package/src/runtime/coding-agent-contract-shared.cjs +98 -4
  171. package/src/assets/web-panel/assets/SpeechSettings-CsPt1rpa.js +0 -1
  172. package/src/assets/web-panel/assets/devWarning-C8YOOF96.js +0 -1
  173. package/src/assets/web-panel/assets/index-BUXHmygu.js +0 -1
  174. 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 u,J as j,U as b,R as c,c as a,K as i,a as R,r as k,o as F,b as C,P as O,Q as p,S as z,V as E}from"./vendor-Bn1JzzAn.js";import{t as M,_ as Q,b as K,u as T,d as S}from"./index-DQ86qdvJ.js";import{i as X,R as q}from"./icons-DG5UD-6K.js";const v=Object.freeze({defaultEngine:"webspeech",webSpeech:{lang:"zh-CN"},whisperAPI:{apiKey:"",baseURL:"https://api.openai.com/v1",model:"whisper-1",language:"zh",timeout:6e4},whisperLocal:{serverUrl:"http://localhost:8002",modelSize:"base",device:"auto",timeout:12e4}}),Y=["webspeech","whisper-api","whisper-local"];function B(g,t){if(typeof g=="number"&&Number.isFinite(g))return g;const s=parseFloat(g);return Number.isFinite(s)?s:t}function Z(g){return JSON.parse(JSON.stringify(g))}function D(g){const t=Z(v);if(!g)return t;const s=g.trim();if(!s||/key not found/i.test(s))return t;const e=M(s);if(!e||typeof e!="object"||Array.isArray(e))return t;if(typeof e.defaultEngine=="string"&&Y.includes(e.defaultEngine)&&(t.defaultEngine=e.defaultEngine),e.webSpeech&&typeof e.webSpeech=="object"&&typeof e.webSpeech.lang=="string"&&e.webSpeech.lang&&(t.webSpeech.lang=e.webSpeech.lang),e.whisperAPI&&typeof e.whisperAPI=="object"){const l=e.whisperAPI;typeof l.apiKey=="string"&&(t.whisperAPI.apiKey=l.apiKey),typeof l.baseURL=="string"&&l.baseURL&&(t.whisperAPI.baseURL=l.baseURL),typeof l.model=="string"&&l.model&&(t.whisperAPI.model=l.model),typeof l.language=="string"&&l.language&&(t.whisperAPI.language=l.language),l.timeout!==void 0&&(t.whisperAPI.timeout=B(l.timeout,v.whisperAPI.timeout))}if(e.whisperLocal&&typeof e.whisperLocal=="object"){const l=e.whisperLocal;typeof l.serverUrl=="string"&&l.serverUrl&&(t.whisperLocal.serverUrl=l.serverUrl),typeof l.modelSize=="string"&&l.modelSize&&(t.whisperLocal.modelSize=l.modelSize),typeof l.device=="string"&&l.device&&(t.whisperLocal.device=l.device),l.timeout!==void 0&&(t.whisperLocal.timeout=B(l.timeout,v.whisperLocal.timeout))}return t}function J(g,t){const s={};g.defaultEngine!==t.defaultEngine&&(s.defaultEngine=t.defaultEngine);for(const e of["webSpeech","whisperAPI","whisperLocal"]){const l=g[e]||{},w=t[e]||{};for(const o of Object.keys(v[e]))l[o]!==w[o]&&(s[`${e}.${o}`]=w[o])}return s}const $={__name:"SpeechSettings",setup(g,{expose:t}){t();const{t:s}=K(),e=T(),l=k(!1),w=k(!1),o=R(JSON.parse(JSON.stringify(v))),h=k(JSON.parse(JSON.stringify(v))),y=C(()=>[{value:"webspeech",label:s("speechSettings.engineOptions.webspeech")},{value:"whisper-api",label:s("speechSettings.engineOptions.whisper-api")},{value:"whisper-local",label:s("speechSettings.engineOptions.whisper-local")}]),f=C(()=>{const d=`speechSettings.engineHint.${o.defaultEngine}`,n=s(d);return n===d?"":n}),_=C(()=>Object.keys(J(h.value,o)).length>0);function m(d){o.defaultEngine=d.defaultEngine,Object.assign(o.webSpeech,d.webSpeech),Object.assign(o.whisperAPI,d.whisperAPI),Object.assign(o.whisperLocal,d.whisperLocal),h.value=JSON.parse(JSON.stringify(d))}async function r(){l.value=!0;try{const{output:d}=await e.execute("config get speech",1e4);m(D(d))}catch(d){/key not found/i.test(d.message)?m(JSON.parse(JSON.stringify(v))):S.error(s("speechSettings.messages.loadFailed",{err:d.message}))}finally{l.value=!1}}function N(){m(h.value)}async function L(){const d=J(h.value,o),n=Object.keys(d);if(n.length===0){S.info(s("speechSettings.messages.noChanges"));return}w.value=!0;let P=0,I=0;for(const A of n){const H=d[A],V=String(H).replace(/"/g,'\\"'),W=`config set speech.${A} "${V}"`;try{const{output:U,exitCode:G}=await e.execute(W,1e4);G!==0||/error|failed|失败/i.test(U)?(I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.slice(0,80)}))):P++}catch(U){I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.message}))}}w.value=!1,I===0?(S.success(s("speechSettings.messages.saveOk",{count:P})),h.value=JSON.parse(JSON.stringify(o))):P>0&&(S.warning(s("speechSettings.messages.savePartial",{ok:P,fail:I})),await r())}F(()=>{r()});const x={t:s,ws:e,loading:l,saving:w,form:o,baseline:h,engineOptions:y,engineHint:f,isDirty:_,applyConfig:m,loadConfig:r,resetForm:N,saveConfig:L,reactive:R,ref:k,computed:C,onMounted:F,get useI18n(){return K},get ReloadOutlined(){return q},get SoundOutlined(){return X},get message(){return S},get useWsStore(){return T},get parseSpeechConfig(){return D},get diffSpeechConfig(){return J},get SPEECH_DEFAULTS(){return v}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},te={class:"page-title"},ae={class:"page-sub"},ie={style:{color:"var(--text-primary)"}},le={style:{color:"var(--text-muted)","font-size":"11px"}},ne={style:{color:"var(--text-primary)"}},se={style:{color:"var(--text-primary)"}},oe={style:{color:"var(--text-primary)"}},re={style:{display:"flex",gap:"12px","align-items":"center"}},de={key:0,style:{color:"#faad14","font-size":"12px"}};function pe(g,t,s,e,l,w){const o=u("a-button"),h=u("a-alert"),y=u("a-select"),f=u("a-form-item"),_=u("a-form"),m=u("a-card"),r=u("a-select-option"),N=u("a-input-password"),L=u("a-input"),x=u("a-input-number"),d=u("a-spin");return O(),j("div",null,[b("div",ee,[b("div",null,[b("h2",te,c(e.t("speechSettings.title")),1),b("p",ae,c(e.t("speechSettings.subtitle")),1)]),a(o,{loading:e.loading,onClick:e.loadConfig},{icon:i(()=>[a(e.ReloadOutlined)]),default:i(()=>[p(" "+c(e.t("speechSettings.refresh")),1)]),_:1},8,["loading"])]),a(h,{message:e.t("speechSettings.alert.message"),description:e.t("speechSettings.alert.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),a(d,{spinning:e.loading},{default:i(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ie,[a(e.SoundOutlined,{style:{"margin-right":"8px"}}),p(c(e.t("speechSettings.engineCardTitle")),1)])]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.engineLabel")},{extra:i(()=>[b("span",le,c(e.engineHint),1)]),default:i(()=>[a(y,{value:e.form.defaultEngine,"onUpdate:value":t[0]||(t[0]=n=>e.form.defaultEngine=n),style:{width:"320px"},disabled:e.saving,options:e.engineOptions},null,8,["value","disabled","options"])]),_:1},8,["label"])]),_:1})]),_:1}),e.form.defaultEngine==="webspeech"?(O(),z(m,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ne,c(e.t("speechSettings.webSpeech.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.webSpeech.langLabel")},{default:i(()=>[a(y,{value:e.form.webSpeech.lang,"onUpdate:value":t[1]||(t[1]=n=>e.form.webSpeech.lang=n),style:{width:"240px"},disabled:e.saving},{default:i(()=>[a(r,{value:"zh-CN"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-CN")),1)]),_:1}),a(r,{value:"zh-TW"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-TW")),1)]),_:1}),a(r,{value:"en-US"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-US")),1)]),_:1}),a(r,{value:"en-GB"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-GB")),1)]),_:1}),a(r,{value:"ja-JP"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ja-JP")),1)]),_:1}),a(r,{value:"ko-KR"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ko-KR")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):E("v-if",!0),e.form.defaultEngine==="whisper-api"?(O(),z(m,{key:1,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",se,c(e.t("speechSettings.whisperAPI.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperAPI.apiKeyLabel")},{default:i(()=>[a(N,{value:e.form.whisperAPI.apiKey,"onUpdate:value":t[2]||(t[2]=n=>e.form.whisperAPI.apiKey=n),placeholder:"sk-...",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.baseUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.baseURL,"onUpdate:value":t[3]||(t[3]=n=>e.form.whisperAPI.baseURL=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.modelLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.model,"onUpdate:value":t[4]||(t[4]=n=>e.form.whisperAPI.model=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.languageLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.language,"onUpdate:value":t[5]||(t[5]=n=>e.form.whisperAPI.language=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.timeout,"onUpdate:value":t[6]||(t[6]=n=>e.form.whisperAPI.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):E("v-if",!0),e.form.defaultEngine==="whisper-local"?(O(),z(m,{key:2,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",oe,c(e.t("speechSettings.whisperLocal.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperLocal.serverUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperLocal.serverUrl,"onUpdate:value":t[7]||(t[7]=n=>e.form.whisperLocal.serverUrl=n),placeholder:"http://localhost:8002",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.modelSizeLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.modelSize,"onUpdate:value":t[8]||(t[8]=n=>e.form.whisperLocal.modelSize=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"tiny"},{default:i(()=>[...t[11]||(t[11]=[p("tiny",-1)])]),_:1}),a(r,{value:"base"},{default:i(()=>[...t[12]||(t[12]=[p("base",-1)])]),_:1}),a(r,{value:"small"},{default:i(()=>[...t[13]||(t[13]=[p("small",-1)])]),_:1}),a(r,{value:"medium"},{default:i(()=>[...t[14]||(t[14]=[p("medium",-1)])]),_:1}),a(r,{value:"large"},{default:i(()=>[...t[15]||(t[15]=[p("large",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.deviceLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.device,"onUpdate:value":t[9]||(t[9]=n=>e.form.whisperLocal.device=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"auto"},{default:i(()=>[...t[16]||(t[16]=[p("auto",-1)])]),_:1}),a(r,{value:"cpu"},{default:i(()=>[...t[17]||(t[17]=[p("cpu",-1)])]),_:1}),a(r,{value:"cuda"},{default:i(()=>[...t[18]||(t[18]=[p("cuda",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperLocal.timeout,"onUpdate:value":t[10]||(t[10]=n=>e.form.whisperLocal.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):E("v-if",!0),b("div",re,[a(o,{onClick:e.resetForm,disabled:e.saving||e.loading},{default:i(()=>[p(c(e.t("speechSettings.buttons.reset")),1)]),_:1},8,["disabled"]),a(o,{type:"primary",loading:e.saving,disabled:!e.isDirty,onClick:e.saveConfig},{default:i(()=>[p(c(e.t("speechSettings.buttons.save")),1)]),_:1},8,["loading","disabled"]),e.isDirty?(O(),j("span",de,c(e.t("speechSettings.dirtyHint")),1)):E("v-if",!0)])]),_:1},8,["spinning"])])}const ue=Q($,[["render",pe],["__scopeId","data-v-2b18ccaa"],["__file","/tmp/cc-web-panel-XSvACA/repo/packages/web-panel/src/views/SpeechSettings.vue"]]);export{ue 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};