chainlesschain 0.166.47 → 0.166.56

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 (180) hide show
  1. package/README.md +22 -0
  2. package/package.json +2 -2
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-CDpT0WXV.js → AIOps-CBFnwYRX.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-BNfUljWx.js → ActionButton-Sl4eXWpR.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-C9323DEx.js → Analytics-DB0lD9Kb.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CRrjb2db.js → AppLayout-j77EmkRK.js} +3 -3
  8. package/src/assets/web-panel/assets/{Artifacts-Db-DGqJS.js → Artifacts-CU3izCW9.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-CJdHRJ0W.js → Audit-C44fSibb.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-_RSCnTYs.js → BackgroundAgents-pM_NnJW3.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-8GFQi-dM.js → Backup-AOHXqhxN.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-C87NtgUZ.js → BaseInput-DaYc8oA_.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-DcTMWS8G.js → Chat-CmlCAXxW.js} +5 -5
  14. package/src/assets/web-panel/assets/{ChatBubbleRenderer-5ZDPTW_H.js → ChatBubbleRenderer-CkCSkJDJ.js} +1 -1
  15. package/src/assets/web-panel/assets/{Checkbox-DM9EmYee.js → Checkbox-DISI7iaA.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-M2YqDRNN.js → Codegen-BYpeKUpf.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-oB1LLxyf.js → Col-Dk6VwWGq.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-TcVZK5tF.js → Community-BDyTedMu.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-XKmq-3K_.js → Compact-CTNlGM9X.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-C6CBiDRy.js → Compliance-C_tw3IdT.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-Dz9CGqXH.js → Cowork-cduHWEmo.js} +4 -4
  22. package/src/assets/web-panel/assets/{Cron-CxJDgDVL.js → Cron-Dqotjv-s.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-DMP0JsaQ.js → Crosschain-ByW7RsJQ.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-I5IQeogb.js → DID-BI-lafPj.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-BfLW2MXj.js → Dashboard-8m50TRZL.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-BK8EjAlh.js → Dropdown-CN3hmRTc.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-C3iqSv5I.js → EmailListRenderer-t0lzxsDT.js} +1 -1
  28. package/src/assets/web-panel/assets/EvolutionSettings-DabpA3cQ.js +1 -0
  29. package/src/assets/web-panel/assets/{FamilyGuardDashboard-T19rnqm-.js → FamilyGuardDashboard-BYN4UshY.js} +1 -1
  30. package/src/assets/web-panel/assets/{Federation-CozrbPMy.js → Federation-n44OtIXp.js} +1 -1
  31. package/src/assets/web-panel/assets/{FormItemContext-k1dCLNNJ.js → FormItemContext-B-WXDu_I.js} +1 -1
  32. package/src/assets/web-panel/assets/{GenericCardRenderer-DbaW_Jvt.js → GenericCardRenderer-Bm7v-mTf.js} +1 -1
  33. package/src/assets/web-panel/assets/{Git-CQHRyEIt.js → Git-BMIS6sbo.js} +2 -2
  34. package/src/assets/web-panel/assets/{Governance-BMJYZgMy.js → Governance-B1EhHobE.js} +1 -1
  35. package/src/assets/web-panel/assets/{Inference-B7mpNU7V.js → Inference-Dy_HJWHo.js} +1 -1
  36. package/src/assets/web-panel/assets/{KnowledgeGraph-Br0Blg6B.js → KnowledgeGraph-BVdfUbZy.js} +1 -1
  37. package/src/assets/web-panel/assets/{Logs-HIdk0S6M.js → Logs-Dph_oLQk.js} +2 -2
  38. package/src/assets/web-panel/assets/MarkdownRenderer-CNHYqcxm.js +1 -0
  39. package/src/assets/web-panel/assets/{Marketplace-Bkfq69UP.js → Marketplace-Bw4HWORj.js} +1 -1
  40. package/src/assets/web-panel/assets/{McpTools-dtmx0bHO.js → McpTools-Be6DPfA1.js} +3 -3
  41. package/src/assets/web-panel/assets/{Memory-CrRlOuEf.js → Memory-DlvLafC9.js} +2 -2
  42. package/src/assets/web-panel/assets/{MobileBridge-D4ZIZiAH.js → MobileBridge-Upc_Jwlt.js} +1 -1
  43. package/src/assets/web-panel/assets/{MobileProjects-C90Rw7GE.js → MobileProjects-I17jrUbY.js} +1 -1
  44. package/src/assets/web-panel/assets/{Mtc-CC6k_uh4.js → Mtc-DyBzY0GH.js} +4 -4
  45. package/src/assets/web-panel/assets/{MtcAudit-T_CUIYUy.js → MtcAudit-2-7xAwEo.js} +2 -2
  46. package/src/assets/web-panel/assets/{Multisig-N_e0RRWk.js → Multisig-DtUZpFmZ.js} +3 -3
  47. package/src/assets/web-panel/assets/{NLProgramming-Iq3VzEv0.js → NLProgramming-iInH7jBr.js} +1 -1
  48. package/src/assets/web-panel/assets/{Notes-B5sKJUJt.js → Notes-BO3Z3vaS.js} +4 -4
  49. package/src/assets/web-panel/assets/{NotificationSettings-K8UVp8qQ.js → NotificationSettings-ClX_0jFE.js} +1 -1
  50. package/src/assets/web-panel/assets/{OrderTableRenderer-BWNyM-6m.js → OrderTableRenderer-Czw742w4.js} +1 -1
  51. package/src/assets/web-panel/assets/{Organization-DMO1NJxI.js → Organization-BATEx24i.js} +4 -4
  52. package/src/assets/web-panel/assets/{Overflow-BBY6b31Z.js → Overflow-B_PXMNia.js} +1 -1
  53. package/src/assets/web-panel/assets/{P2P-DmsL0y0v.js → P2P-BSiE8PqT.js} +2 -2
  54. package/src/assets/web-panel/assets/{PdhVaultBrowser-C65AX_RY.js → PdhVaultBrowser-BbklUgZY.js} +3 -3
  55. package/src/assets/web-panel/assets/{Permissions-CWcpRtWa.js → Permissions-B7bpflT_.js} +4 -4
  56. package/src/assets/web-panel/assets/{PersonalDataHub--ZNDIdsn.js → PersonalDataHub-BWZS4BLy.js} +3 -3
  57. package/src/assets/web-panel/assets/{Pipeline-DCdj5NGb.js → Pipeline-DP2YSs6H.js} +1 -1
  58. package/src/assets/web-panel/assets/{Privacy-BRKu7Q3E.js → Privacy-DB9ptoH0.js} +1 -1
  59. package/src/assets/web-panel/assets/{ProjectInit-BJ7ozIAb.js → ProjectInit-BAfePyYk.js} +2 -2
  60. package/src/assets/web-panel/assets/{ProjectSettings-B2cVLiXW.js → ProjectSettings-BEXn4Cm3.js} +2 -2
  61. package/src/assets/web-panel/assets/{Projects-Ce9r_W-p.js → Projects-BzSs0rzn.js} +1 -1
  62. package/src/assets/web-panel/assets/{Providers-BDespvGZ.js → Providers-CRX9TdRO.js} +1 -1
  63. package/src/assets/web-panel/assets/{QrScannerModal-BUNO4fDU.js → QrScannerModal-DUWcSY5L.js} +1 -1
  64. package/src/assets/web-panel/assets/{QuickAsk-D2TUqeBV.js → QuickAsk-Cgo3Z_hs.js} +1 -1
  65. package/src/assets/web-panel/assets/{Recommend-BNNQPHBH.js → Recommend-Dcinx0IW.js} +1 -1
  66. package/src/assets/web-panel/assets/{RemoteSession-D2t1V_Cm.js → RemoteSession-BMZzTnAN.js} +2 -2
  67. package/src/assets/web-panel/assets/{Reputation-DVK5hEqI.js → Reputation-BdZzpOp9.js} +1 -1
  68. package/src/assets/web-panel/assets/{Row-BB9RTwmE.js → Row-DqM8GVcx.js} +1 -1
  69. package/src/assets/web-panel/assets/{RssFeed-DmEO7liZ.js → RssFeed-Soj_QBK3.js} +2 -2
  70. package/src/assets/web-panel/assets/{Search-UwEYjnDB.js → Search-Cn2es0-v.js} +1 -1
  71. package/src/assets/web-panel/assets/{Security-DebqSsMp.js → Security-t7C4hz3n.js} +3 -3
  72. package/src/assets/web-panel/assets/{Services-CuuPts3C.js → Services-ChF-e_Uf.js} +2 -2
  73. package/src/assets/web-panel/assets/{Skeleton-DbWpmbgf.js → Skeleton-BiPIyK-2.js} +1 -1
  74. package/src/assets/web-panel/assets/{Skills-BaK7SxzT.js → Skills-HgkKJenJ.js} +1 -1
  75. package/src/assets/web-panel/assets/{Sla-BFHv51Jb.js → Sla-BSfluv_k.js} +1 -1
  76. package/src/assets/web-panel/assets/{SpeechSettings-B9b1R6uK.js → SpeechSettings-Sm0Gz9tM.js} +1 -1
  77. package/src/assets/web-panel/assets/{SyncSettings-BnO0CN02.js → SyncSettings-DlhBMnfU.js} +2 -2
  78. package/src/assets/web-panel/assets/{Tasks-Dy01Vq49.js → Tasks-C7OUvsnp.js} +1 -1
  79. package/src/assets/web-panel/assets/{Templates-BCy2AMHc.js → Templates-CrMtw87y.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tenant-4Tx9y_Y1.js → Tenant-DSNSB6j5.js} +1 -1
  81. package/src/assets/web-panel/assets/{Terminal-CPOoUH8J.js → Terminal-Cmh78FQg.js} +2 -2
  82. package/src/assets/web-panel/assets/{TimelineRenderer-C85GlJzu.js → TimelineRenderer-BE8b8lHR.js} +1 -1
  83. package/src/assets/web-panel/assets/{Tokens-_xneFBGF.js → Tokens-BrtgdIvJ.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trigger-BizG4rTr.js → Trigger-HCmaoKDp.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trust-Dh8EIn3n.js → Trust-GASQ4F-2.js} +1 -1
  86. package/src/assets/web-panel/assets/{UkeySign-C5NWoHWQ.js → UkeySign-B8kSzWGr.js} +1 -1
  87. package/src/assets/web-panel/assets/{VideoEditing-0YfrySL6.js → VideoEditing-Nn-clhv5.js} +1 -1
  88. package/src/assets/web-panel/assets/{Wallet-BZVH8Ags.js → Wallet-DdYMKTYk.js} +4 -4
  89. package/src/assets/web-panel/assets/{WebAuthn-kNofa6vm.js → WebAuthn-xJXUr_eK.js} +3 -3
  90. package/src/assets/web-panel/assets/{WorkflowEditor-BNO34_j0.js → WorkflowEditor-CbSa87av.js} +1 -1
  91. package/src/assets/web-panel/assets/{chat-ifQ2FlwD.js → chat-CVrNLGUV.js} +1 -1
  92. package/src/assets/web-panel/assets/{colors-1TL8H6EH.js → colors-e2veLfIA.js} +1 -1
  93. package/src/assets/web-panel/assets/{compact-item-DBfRjs_T.js → compact-item-CNd7nhUq.js} +1 -1
  94. package/src/assets/web-panel/assets/{createContext-Bs6V4iBf.js → createContext-DEudTVqv.js} +1 -1
  95. package/src/assets/web-panel/assets/devWarning-DW7he-SA.js +1 -0
  96. package/src/assets/web-panel/assets/{hasIn-Bz6LMY_0.js → hasIn-BlSAFZa3.js} +1 -1
  97. package/src/assets/web-panel/assets/{index--WvT2Il3.js → index-0y7tHZdT.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DMVktlxG.js → index-4ZT0vIJt.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B6RClMZl.js → index-7-7rr4Mf.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BB1Af7Fv.js → index-B1C1wS5c.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-lUL3bD2z.js → index-BG-VNepa.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CtB45Hok.js → index-BMIhGZUR.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DOww5Qny.js → index-BRNCKg4q.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BiZ7Nz5-.js → index-B_UNX_xq.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C9QYxq61.js → index-BmVFeSEq.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BoCTDcn6.js → index-Bp4Gcn9u.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CXtiLagi.js → index-BpH6T1gA.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-B5SJCUZ7.js → index-BptI9bLu.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Cn7EIWmI.js → index-Bqeb4jnC.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DvM2xBUA.js → index-Bwtt-0CQ.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-EK3XtMxA.js → index-C4h_Bvd2.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DDhy4eCS.js → index-C6zGNZ5H.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-rGhS02f8.js → index-CHMrAZiR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BQL_tldd.js → index-CK6Rb66R.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-C7d6QlfR.js → index-CU4Y4VVN.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Cykt9BbN.js → index-CWuv47z0.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BXJXMaZe.js → index-CYNoXhxl.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-f_7L9GvP.js → index-CgVwz2jD.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-vHtnQsnV.js → index-ClROBPWd.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BhPDhmvN.js → index-D7yJceTZ.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Cu_V6ZJH.js → index-DFv-nsIT.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CNKHoXWI.js → index-DFzvcZ3Q.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-vb1XIxEB.js → index-DJ5gsewX.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DWPp-d07.js → index-DVORJydf.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-pOUFfRdN.js → index-D_D7lcnQ.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-cNwsev6n.js → index-DtrqgNBl.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CBh48_Mh.js → index-DwjWRUTf.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BxqC3LiO.js → index-DyFZ7gDd.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-XJIV7HEw.js → index-Ec6VBiV-.js} +1 -1
  130. package/src/assets/web-panel/assets/index-IkoHuWRe.js +1 -0
  131. package/src/assets/web-panel/assets/{index-CXVBQ82k.js → index-Jk99aZIr.js} +3 -3
  132. package/src/assets/web-panel/assets/{index-84mi5rsv.js → index-Lm9pm1zm.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-C6c0j-Ki.js → index-MuTb62K6.js} +1 -1
  134. package/src/assets/web-panel/assets/index-MwqsDbb1.js +1 -0
  135. package/src/assets/web-panel/assets/{index-DEPPzM8I.js → index-hzUfIn4u.js} +1 -1
  136. package/src/assets/web-panel/assets/{initDefaultProps-DpRIjwTt.js → initDefaultProps-C6fpNcA5.js} +1 -1
  137. package/src/assets/web-panel/assets/{motion-CG4_9o-Z.js → motion-Bjh9Come.js} +1 -1
  138. package/src/assets/web-panel/assets/{move-Dku1fXtf.js → move-DFa4ul-_.js} +1 -1
  139. package/src/assets/web-panel/assets/{mtc-parser-BvAVeX-3.js → mtc-parser-KoYqA_e5.js} +1 -1
  140. package/src/assets/web-panel/assets/{omit-DFu0x78D.js → omit-ByTjP-wG.js} +1 -1
  141. package/src/assets/web-panel/assets/{pickAttrs-CmI-FNcK.js → pickAttrs-CG_rmTxx.js} +1 -1
  142. package/src/assets/web-panel/assets/{placementArrow-CGERYewB.js → placementArrow-LDePZ8V9.js} +1 -1
  143. package/src/assets/web-panel/assets/{responsiveObserve-D7G8bF5J.js → responsiveObserve-DZFzH4RR.js} +1 -1
  144. package/src/assets/web-panel/assets/{slide-B2sXwWXy.js → slide-DfXQyTvD.js} +1 -1
  145. package/src/assets/web-panel/assets/{statusUtils-DI5yh0n3.js → statusUtils-CuhqsJfO.js} +1 -1
  146. package/src/assets/web-panel/assets/{styleChecker-deGJ5dp_.js → styleChecker-qqVjJw5u.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFlexGapSupport-OqHBXEmi.js → useFlexGapSupport-BPxnCxcb.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFs-Dqgx0Qv_.js → useFs-D11NLCjV.js} +1 -1
  149. package/src/assets/web-panel/assets/{usePersonalDataHub-Be-lveh2.js → usePersonalDataHub-HbZVcaCX.js} +1 -1
  150. package/src/assets/web-panel/assets/{vnode-CFxB876W.js → vnode-CZHQlfTu.js} +1 -1
  151. package/src/assets/web-panel/assets/{zoom-BFOYrl4e.js → zoom-CV3rUknJ.js} +1 -1
  152. package/src/assets/web-panel/index.html +1 -1
  153. package/src/commands/context.js +31 -11
  154. package/src/commands/evolution-deployment.js +70 -0
  155. package/src/commands/plugin.js +36 -5
  156. package/src/data/changelog.json +78 -0
  157. package/src/gateways/ws/evolution-deployment-topic-handlers.js +20 -0
  158. package/src/generated/cc-agent-protocol.schema.json +44 -1
  159. package/src/harness/prompt-compressor.js +12 -4
  160. package/src/lib/background-agent-list-index.js +222 -0
  161. package/src/lib/background-agent-supervisor.js +38 -0
  162. package/src/lib/codex-app-server-adapter.js +1 -0
  163. package/src/lib/context-memory-kernel/provider-context.js +69 -4
  164. package/src/lib/deferred-question-context.js +160 -4
  165. package/src/lib/eval/plugin-suite.js +286 -22
  166. package/src/lib/evolution/evolution-deployment-config.js +16 -1
  167. package/src/lib/evolution/evolution-deployment-profile.js +102 -58
  168. package/src/lib/evolution/evolution-test-deployment.js +386 -0
  169. package/src/lib/model-context-window.js +3 -2
  170. package/src/lib/runtime-usage-ledger.js +5 -0
  171. package/src/lib/session-host-snapshot.js +16 -0
  172. package/src/repl/agent-repl.js +19 -4
  173. package/src/runtime/agent-core.js +13 -0
  174. package/src/runtime/headless-runner.js +4 -0
  175. package/src/runtime/headless-stream.js +171 -14
  176. package/src/assets/web-panel/assets/EvolutionSettings-BJmBzpW6.js +0 -1
  177. package/src/assets/web-panel/assets/MarkdownRenderer-HxeocBHy.js +0 -1
  178. package/src/assets/web-panel/assets/devWarning-BHnbnuYL.js +0 -1
  179. package/src/assets/web-panel/assets/index-CsRz9-ZH.js +0 -1
  180. package/src/assets/web-panel/assets/index-DnjMFf3m.js +0 -1
@@ -28,6 +28,10 @@ import {
28
28
  } from "./session-message-provenance.js";
29
29
  import { createSessionTranscriptStructureProjection } from "./session-transcript-structure.js";
30
30
  import { normalizeSessionBudgetRootConfig } from "./session-budget-production-root.js";
31
+ import {
32
+ createDeferredQuestionEventReducer,
33
+ reduceDeferredQuestionEvents,
34
+ } from "./deferred-question-context.js";
31
35
 
32
36
  export const SESSION_HOST_SNAPSHOT_SCHEMA =
33
37
  "chainlesschain.session-host-snapshot/v1";
@@ -292,6 +296,7 @@ export function projectVerifiedSessionHostSnapshot(sessionId, events) {
292
296
  sessionId,
293
297
  verified: true,
294
298
  });
299
+ const deferred = reduceDeferredQuestionEvents(safeEvents, { sessionId });
295
300
  return Object.freeze({
296
301
  snapshot: projectSessionHostObservation({
297
302
  sessionId,
@@ -301,6 +306,9 @@ export function projectVerifiedSessionHostSnapshot(sessionId, events) {
301
306
  }),
302
307
  messages,
303
308
  recovery,
309
+ deferredQuestions: deferred.pendingQuestions,
310
+ deferredAnswers: deferred.answers,
311
+ deferredQuestionSequence: deferred.maxSequence,
304
312
  sessionBudgetRoot: sessionBudgetRootFromEvents(safeEvents),
305
313
  });
306
314
  }
@@ -316,6 +324,9 @@ function createStreamingSessionHostProjection(sessionId) {
316
324
  sessionId,
317
325
  verified: true,
318
326
  });
327
+ const deferredQuestionReducer = createDeferredQuestionEventReducer({
328
+ sessionId,
329
+ });
319
330
 
320
331
  return {
321
332
  accept(event) {
@@ -337,6 +348,7 @@ function createStreamingSessionHostProjection(sessionId) {
337
348
  lastEventType =
338
349
  typeof safeEvent.type === "string" ? safeEvent.type : null;
339
350
  mcpReducer.accept(safeEvent);
351
+ deferredQuestionReducer.accept(safeEvent);
340
352
  },
341
353
  finish({ headHash, eventCount, readMessages }) {
342
354
  structure.finish();
@@ -351,6 +363,7 @@ function createStreamingSessionHostProjection(sessionId) {
351
363
  projectCanonicalResumeMessages(recoveredMessages, { strict: true }),
352
364
  );
353
365
  const recovery = mcpReducer.finish();
366
+ const deferred = deferredQuestionReducer.finish();
354
367
  return Object.freeze({
355
368
  snapshot: projectSessionHostProjection({
356
369
  sessionId,
@@ -363,6 +376,9 @@ function createStreamingSessionHostProjection(sessionId) {
363
376
  }),
364
377
  messages,
365
378
  recovery,
379
+ deferredQuestions: deferred.pendingQuestions,
380
+ deferredAnswers: deferred.answers,
381
+ deferredQuestionSequence: deferred.maxSequence,
366
382
  sessionBudgetRoot,
367
383
  });
368
384
  },
@@ -5579,6 +5579,7 @@ async function startAgentReplInWorkspaceOwned(
5579
5579
  let _customStatus = false; // true when a settings.json command is configured
5580
5580
  let _curModel = model; // tracks the per-turn active model for the readout
5581
5581
  let _ctxUsedTokens = 0;
5582
+ let _ctxRequestWindow = null;
5582
5583
  let _turnCount = 0;
5583
5584
  const _costStore = newCostStore(); // running token spend for `/cost`
5584
5585
  let _renderStatus = null;
@@ -5598,7 +5599,8 @@ async function startAgentReplInWorkspaceOwned(
5598
5599
  provider,
5599
5600
  cwd: process.cwd(),
5600
5601
  usedTokens: _ctxUsedTokens,
5601
- contextWindow: getContextWindow(_curModel, provider),
5602
+ contextWindow:
5603
+ _ctxRequestWindow ?? getContextWindow(_curModel, provider, options),
5602
5604
  turn: _turnCount,
5603
5605
  });
5604
5606
  // Custom command wins; otherwise the built-in context-usage render.
@@ -7190,7 +7192,9 @@ async function startAgentReplInWorkspaceOwned(
7190
7192
  messages,
7191
7193
  estimateTokens,
7192
7194
  );
7193
- const window = getContextWindow(model, provider) || 0;
7195
+ const window =
7196
+ _ctxRequestWindow ??
7197
+ (getContextWindow(model, provider, options) || 0);
7194
7198
  logger.log(chalk.bold("\nContext usage (live session):"));
7195
7199
  const rows = [
7196
7200
  ["system", buckets.system, counts.system],
@@ -9756,8 +9760,19 @@ async function startAgentReplInWorkspaceOwned(
9756
9760
  _curModel = activeModel;
9757
9761
  _turnCount += 1;
9758
9762
  if (usageEvents?.length) {
9759
- const last = usageEvents[usageEvents.length - 1]?.usage || {};
9760
- const used = (last.input_tokens || 0) + (last.output_tokens || 0);
9763
+ const lastCall = [...usageEvents]
9764
+ .reverse()
9765
+ .find(
9766
+ (event) =>
9767
+ !event.attribution && (!event.source || event.source === "model"),
9768
+ );
9769
+ _ctxRequestWindow = lastCall?.contextWindow ?? null;
9770
+ const last = lastCall?.usage || {};
9771
+ const used =
9772
+ (last.input_tokens || 0) +
9773
+ (last.output_tokens || 0) +
9774
+ (last.cache_read_input_tokens || 0) +
9775
+ (last.cache_creation_input_tokens || 0);
9761
9776
  if (used > 0) _ctxUsedTokens = used;
9762
9777
  }
9763
9778
 
@@ -13497,6 +13497,8 @@ async function _getAutoCompactor(options) {
13497
13497
  compressor = new PromptCompressor({
13498
13498
  model: options.model,
13499
13499
  provider: options.provider,
13500
+ baseUrl: options.baseUrl,
13501
+ contextMemoryModelWindowTokens: options.contextMemoryModelWindowTokens,
13500
13502
  llmQuery,
13501
13503
  summaryInputMaxChars: options.compactionInputMaxChars,
13502
13504
  });
@@ -15154,6 +15156,16 @@ export async function* agentLoop(messages, options) {
15154
15156
  }
15155
15157
  : {}),
15156
15158
  };
15159
+ // Resolve before dispatch, including compatibility/skip-planning runs.
15160
+ // The panel and persisted transcript use this same request configuration.
15161
+ const requestContextWindow =
15162
+ canonicalProviderContext?.modelCapabilities?.contextWindowTokens ??
15163
+ resolveModelCapabilityProfile({
15164
+ provider: options.provider || "ollama",
15165
+ model: options.model,
15166
+ baseUrl: options.baseUrl,
15167
+ contextMemoryModelWindowTokens: options.contextMemoryModelWindowTokens,
15168
+ }).contextWindowTokens;
15157
15169
  // The consumer receives this boundary before `.next()` resumes into the
15158
15170
  // provider call, so a durable append failure can prevent spend.
15159
15171
  yield modelUsageCall;
@@ -15281,6 +15293,7 @@ export async function* agentLoop(messages, options) {
15281
15293
  provider: modelUsageCall.provider,
15282
15294
  model: modelUsageCall.model,
15283
15295
  usage: result.usage,
15296
+ contextWindow: requestContextWindow,
15284
15297
  };
15285
15298
  } else {
15286
15299
  yield {
@@ -3406,6 +3406,10 @@ async function runAgentHeadlessInWorkspace(
3406
3406
  provider: event.provider,
3407
3407
  model: event.model,
3408
3408
  usage: event.usage,
3409
+ ...(event.contextWindow
3410
+ ? { contextWindow: event.contextWindow }
3411
+ : {}),
3412
+ ...(event.attribution ? { attribution: event.attribution } : {}),
3409
3413
  ...(event.source ? { source: event.source } : {}),
3410
3414
  });
3411
3415
  if (costBudget) {
@@ -32,7 +32,12 @@ import {
32
32
  normalizeInteractionBinding,
33
33
  sameInteractionBinding,
34
34
  } from "../lib/interaction-binding.js";
35
- import { DeferredQuestionContext } from "../lib/deferred-question-context.js";
35
+ import {
36
+ DEFERRED_QUESTION_EVENTS,
37
+ DeferredQuestionContext,
38
+ normalizeDeferredQuestionAnswer,
39
+ normalizeDeferredQuestionRequest,
40
+ } from "../lib/deferred-question-context.js";
36
41
  import { composePrepareCall } from "../lib/goal-context.js";
37
42
  import {
38
43
  addHooksV2EventObserver,
@@ -1135,6 +1140,10 @@ async function runTurn(
1135
1140
  provider: event.provider,
1136
1141
  model: event.model,
1137
1142
  usage: event.usage,
1143
+ ...(event.contextWindow
1144
+ ? { contextWindow: event.contextWindow }
1145
+ : {}),
1146
+ ...(event.attribution ? { attribution: event.attribution } : {}),
1138
1147
  ...(event.source ? { source: event.source } : {}),
1139
1148
  });
1140
1149
  if (costBudget) {
@@ -1684,6 +1693,9 @@ async function runAgentHeadlessStreamInWorkspace(
1684
1693
  let canonicalResume = null;
1685
1694
  let canonicalResumeMessages = null;
1686
1695
  let canonicalMcpCallRecovery = null;
1696
+ let canonicalDeferredQuestions = [];
1697
+ let canonicalDeferredAnswers = [];
1698
+ let canonicalDeferredQuestionSequence = 0;
1687
1699
  if (persist) {
1688
1700
  const readResumeState =
1689
1701
  deps.readSessionHostResumeState || readSessionHostResumeState;
@@ -1786,6 +1798,21 @@ async function runAgentHeadlessStreamInWorkspace(
1786
1798
  );
1787
1799
  }
1788
1800
  canonicalResumeMessages = [...canonicalResume.messages];
1801
+ canonicalDeferredQuestions = Array.isArray(
1802
+ canonicalResume.deferredQuestions,
1803
+ )
1804
+ ? [...canonicalResume.deferredQuestions]
1805
+ : [];
1806
+ canonicalDeferredAnswers = Array.isArray(
1807
+ canonicalResume.deferredAnswers,
1808
+ )
1809
+ ? [...canonicalResume.deferredAnswers]
1810
+ : [];
1811
+ canonicalDeferredQuestionSequence = Number.isSafeInteger(
1812
+ canonicalResume.deferredQuestionSequence,
1813
+ )
1814
+ ? canonicalResume.deferredQuestionSequence
1815
+ : 0;
1789
1816
  const notice = formatMcpLedgerRecoveryNotice(canonicalResume.recovery);
1790
1817
  if (notice) {
1791
1818
  canonicalMcpCallRecovery = {
@@ -2471,8 +2498,23 @@ async function runAgentHeadlessStreamInWorkspace(
2471
2498
  options.interactiveQuestions === true ||
2472
2499
  process.env.CC_INTERACTIVE_QUESTIONS === "1";
2473
2500
  const pendingQuestions = new Map();
2474
- const deferredQuestionContext = new DeferredQuestionContext({ sessionId });
2475
- let questionSeq = 0;
2501
+ const persistDeferredQuestionEvent = (type, data) => {
2502
+ if (!persist) return true;
2503
+ requireSynchronousRecoveryResult(
2504
+ store.appendAuthorityEvent(sessionId, type, data),
2505
+ type,
2506
+ );
2507
+ return true;
2508
+ };
2509
+ const deferredQuestionContext = new DeferredQuestionContext({
2510
+ sessionId,
2511
+ initialAnswers: canonicalDeferredAnswers,
2512
+ onConsumed: (questionIds) =>
2513
+ persistDeferredQuestionEvent(DEFERRED_QUESTION_EVENTS.CONSUMED, {
2514
+ questionIds,
2515
+ }),
2516
+ });
2517
+ let questionSeq = canonicalDeferredQuestionSequence;
2476
2518
  const questionTimeoutMs =
2477
2519
  Number(process.env.CC_QUESTION_TIMEOUT_MS) > 0
2478
2520
  ? Number(process.env.CC_QUESTION_TIMEOUT_MS)
@@ -2480,6 +2522,38 @@ async function runAgentHeadlessStreamInWorkspace(
2480
2522
  const settleQuestion = (id, answer, via) => {
2481
2523
  const p = pendingQuestions.get(id);
2482
2524
  if (!p) return;
2525
+ let durableAnswer = null;
2526
+ if (p.mode === "deferred") {
2527
+ durableAnswer = normalizeDeferredQuestionAnswer(
2528
+ {
2529
+ questionId: id,
2530
+ question: p.question,
2531
+ answer,
2532
+ options: p.options,
2533
+ multiSelect: p.multiSelect,
2534
+ purpose: p.purpose,
2535
+ binding: p.binding,
2536
+ requestedRevision: p.contextRevision,
2537
+ resolvedRevision: turns,
2538
+ },
2539
+ sessionId,
2540
+ );
2541
+ try {
2542
+ if (!durableAnswer) throw new Error("invalid deferred answer binding");
2543
+ persistDeferredQuestionEvent(
2544
+ DEFERRED_QUESTION_EVENTS.RESOLVED,
2545
+ durableAnswer,
2546
+ );
2547
+ } catch {
2548
+ emit({
2549
+ type: "question_response_rejected",
2550
+ id,
2551
+ reason: "persistence_failed",
2552
+ session_id: sessionId,
2553
+ });
2554
+ return;
2555
+ }
2556
+ }
2483
2557
  pendingQuestions.delete(id);
2484
2558
  clearTimeout(p.timer);
2485
2559
  emit({
@@ -2491,14 +2565,7 @@ async function runAgentHeadlessStreamInWorkspace(
2491
2565
  session_id: sessionId,
2492
2566
  });
2493
2567
  if (p.mode === "deferred") {
2494
- deferredQuestionContext.record({
2495
- questionId: id,
2496
- question: p.question,
2497
- answer,
2498
- binding: p.binding,
2499
- requestedRevision: p.contextRevision,
2500
- resolvedRevision: turns,
2501
- });
2568
+ deferredQuestionContext.record(durableAnswer);
2502
2569
  return;
2503
2570
  }
2504
2571
  p.resolve(answer);
@@ -2508,6 +2575,19 @@ async function runAgentHeadlessStreamInWorkspace(
2508
2575
  if (!p) return;
2509
2576
  pendingQuestions.delete(id);
2510
2577
  clearTimeout(p.timer);
2578
+ if (
2579
+ p.mode === "deferred" &&
2580
+ !["pipe-closed", "session-closed", "stdin-closed"].includes(via)
2581
+ ) {
2582
+ try {
2583
+ persistDeferredQuestionEvent(DEFERRED_QUESTION_EVENTS.EXPIRED, {
2584
+ questionId: id,
2585
+ });
2586
+ } catch {
2587
+ // The unresolved request remains in the durable transcript and can be
2588
+ // surfaced again after the persistence boundary recovers.
2589
+ }
2590
+ }
2511
2591
  emit({
2512
2592
  type: "question_resolved",
2513
2593
  id,
@@ -2566,6 +2646,50 @@ async function runAgentHeadlessStreamInWorkspace(
2566
2646
  }
2567
2647
  deferredQuestionContext.clear();
2568
2648
  });
2649
+ const restoredQuestionEvents = [];
2650
+ // An opted-out/legacy pipe must not receive a newly introduced interactive
2651
+ // event. Keep its durable request untouched so a capable reconnect can
2652
+ // surface it later; already-resolved answers can still be consumed as data.
2653
+ for (const value of interactiveQuestions ? canonicalDeferredQuestions : []) {
2654
+ const restored = normalizeDeferredQuestionRequest(value, sessionId);
2655
+ if (!restored) continue;
2656
+ questionSeq = Math.max(questionSeq, restored.binding.sequence);
2657
+ const timer = setTimeout(
2658
+ () => failQuestion(restored.questionId, "timeout"),
2659
+ questionTimeoutMs,
2660
+ );
2661
+ timer.unref?.();
2662
+ pendingQuestions.set(restored.questionId, {
2663
+ resolve: null,
2664
+ reject: null,
2665
+ timer,
2666
+ binding: restored.binding,
2667
+ mode: "deferred",
2668
+ purpose: restored.purpose,
2669
+ question: restored.question,
2670
+ options: restored.options,
2671
+ multiSelect: restored.multiSelect,
2672
+ contextRevision: restored.requestedRevision,
2673
+ });
2674
+ restoredQuestionEvents.push({
2675
+ type: "question_request",
2676
+ id: restored.questionId,
2677
+ session_id: sessionId,
2678
+ binding: restored.binding,
2679
+ ...(restored.binding.turnId ? { turn_id: restored.binding.turnId } : {}),
2680
+ ...(restored.binding.toolUseId
2681
+ ? { tool_use_id: restored.binding.toolUseId }
2682
+ : {}),
2683
+ mode: "deferred",
2684
+ blocking: false,
2685
+ purpose: restored.purpose,
2686
+ context_revision: restored.requestedRevision,
2687
+ question: restored.question,
2688
+ options: restored.options,
2689
+ multiSelect: restored.multiSelect,
2690
+ restored: true,
2691
+ });
2692
+ }
2569
2693
  const registerInteractiveQuestion = (
2570
2694
  {
2571
2695
  question,
@@ -2599,7 +2723,7 @@ async function runAgentHeadlessStreamInWorkspace(
2599
2723
  const ms = Number(timeoutMs) > 0 ? Number(timeoutMs) : questionTimeoutMs;
2600
2724
  const timer = setTimeout(() => failQuestion(id, "timeout"), ms);
2601
2725
  timer.unref?.();
2602
- pendingQuestions.set(id, {
2726
+ const pending = {
2603
2727
  resolve,
2604
2728
  reject,
2605
2729
  timer,
@@ -2607,8 +2731,36 @@ async function runAgentHeadlessStreamInWorkspace(
2607
2731
  mode,
2608
2732
  purpose,
2609
2733
  question: typeof question === "string" ? question : "",
2734
+ options: Array.isArray(qOptions) ? qOptions : null,
2735
+ multiSelect: multiSelect === true,
2610
2736
  contextRevision: turns,
2611
- });
2737
+ };
2738
+ if (mode === "deferred") {
2739
+ const durableRequest = normalizeDeferredQuestionRequest(
2740
+ {
2741
+ questionId: id,
2742
+ question: pending.question,
2743
+ options: pending.options,
2744
+ multiSelect: pending.multiSelect,
2745
+ purpose,
2746
+ binding,
2747
+ requestedRevision: turns,
2748
+ },
2749
+ sessionId,
2750
+ );
2751
+ try {
2752
+ if (!durableRequest)
2753
+ throw new Error("invalid deferred question binding");
2754
+ persistDeferredQuestionEvent(
2755
+ DEFERRED_QUESTION_EVENTS.REQUESTED,
2756
+ durableRequest,
2757
+ );
2758
+ } catch (error) {
2759
+ clearTimeout(timer);
2760
+ throw error;
2761
+ }
2762
+ }
2763
+ pendingQuestions.set(id, pending);
2612
2764
  emit({
2613
2765
  type: "question_request",
2614
2766
  id,
@@ -2932,6 +3084,7 @@ async function runAgentHeadlessStreamInWorkspace(
2932
3084
  additional_directories: additionalDirectories,
2933
3085
  resumed_messages: resumedMessages,
2934
3086
  });
3087
+ for (const event of restoredQuestionEvents) emit(event);
2935
3088
 
2936
3089
  // P0-2 visible recovery notice: same `raw` info-line contract as
2937
3090
  // provider_fallback / version_skew (the shipped IDE panels map `raw` → an
@@ -4103,7 +4256,11 @@ async function runAgentHeadlessStreamInWorkspace(
4103
4256
  event,
4104
4257
  "headless semantic compaction usage settlement",
4105
4258
  );
4106
- emit({ type: "token_usage", ...usageEvent });
4259
+ emit({
4260
+ type: "token_usage",
4261
+ ...usageEvent,
4262
+ source: "semantic-compaction",
4263
+ });
4107
4264
  if (costBudget) {
4108
4265
  costBudget.add(usageEvent);
4109
4266
  costExceeded = costBudget.exceeded();
@@ -1 +0,0 @@
1
- import{I as l,J as C,U as i,c as a,K as o,o as D,r as k,a as L,b as O,P as S,Q as _,R as u,F as B,Z as q,V,S as H}from"./vendor-Bn1JzzAn.js";import{_ as U,u as I,d as y}from"./index-CXVBQ82k.js";import{R as W}from"./icons-DG5UD-6K.js";function N(p){return["ask","agent"].map(t=>{const s=p?.readiness?.[t],e=s?.state==="admitted",d=s?.scope==="deployment-admission"&&s.runtimeVerification==="not_checked"&&Array.isArray(s.requiredCommands)&&s.requiredCommands.includes(t)&&(e?s.ready===!0&&s.taskReady===null:["not_configured","disabled","invalid","command_not_allowed"].includes(s.state)&&s.ready===!1&&s.taskReady===!1);return{command:t,state:d?s.state:"unknown",summary:d?e?"部署准入通过":"部署准入被阻断":"未提供准入诊断",detail:d&&typeof s.detail=="string"?s.detail:"当前 CLI 未提供可识别的部署准入诊断,请更新 CLI。",remediation:d&&typeof s.remediation=="string"?s.remediation:""}})}function j(p,t){for(const s of Object.keys(p))delete p[s];Object.assign(p,{source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[],readiness:null},t||{})}const A={__name:"EvolutionSettings",setup(p,{expose:t}){t();const s=I(),e=k(!1),d=k(!1),w=k(!1),m=k(""),g=k(""),c=L({source:"none",effectiveEnabled:!1,profileEnabled:!1,verified:!1,commands:[]}),h=O(()=>e.value||d.value||w.value),x=O(()=>N(c));function b(r){j(c,r),m.value=c.descriptorPath||"",g.value=c.trustRootPath||""}async function v(r,n=3e4){return await s.waitConnected(8e3),(await s.sendRaw(r,n)).result}async function R(){e.value=!0;try{b(await v({type:"evolution.deployment.status"}))}catch(r){y.error("读取配置失败:"+r.message)}finally{e.value=!1}}async function E(){if(!m.value.trim()||!g.value.trim()){y.warning("请填写描述符和信任根公钥的绝对路径");return}d.value=!0;try{b(await v({type:"evolution.deployment.configure",descriptorPath:m.value.trim(),trustRootPath:g.value.trim()},6e4)),y.success("签名校验通过,配置已保存并启用;自动发布仍为 HOLD")}catch(r){y.error("配置失败:"+r.message)}finally{d.value=!1}}async function f(){w.value=!0;try{b(await v({type:"evolution.deployment.set-enabled",enabled:!c.profileEnabled})),y.success(c.profileEnabled?"已启用":"已停用")}catch(r){y.error("更新失败:"+r.message)}finally{w.value=!1}}D(R);const P={ws:s,loading:e,saving:d,toggling:w,descriptorPath:m,trustRootPath:g,status:c,busy:h,readinessRows:x,apply:b,request:v,loadStatus:R,save:E,toggle:f,computed:O,onMounted:D,reactive:L,ref:k,get ReloadOutlined(){return W},get message(){return y},get useWsStore(){return I},get deploymentReadinessRows(){return N},get replaceDeploymentStatus(){return j}};return Object.defineProperty(P,"__isScriptSetup",{enumerable:!1,value:!0}),P}},F={class:"page-head"},J={class:"mono"},K={class:"mono"},z={class:"admission-status","aria-live":"polite"},M=["data-admission-command"],Q={class:"mono"},T={key:0,class:"mono"};function Y(p,t,s,e,d,w){const m=l("a-button"),g=l("a-alert"),c=l("a-input"),h=l("a-form-item"),x=l("a-space"),b=l("a-form"),v=l("a-card"),R=l("a-col"),E=l("a-tag"),f=l("a-descriptions-item"),P=l("a-descriptions"),r=l("a-row");return S(),C("div",null,[i("div",F,[t[3]||(t[3]=i("div",null,[i("h2",{class:"page-title"},"Skill 自进化配置"),i("p",{class:"page-sub"},"统一配置受治理部署;CLI、IDE 插件与 cc ui 共享。")],-1)),a(m,{loading:e.loading,onClick:e.loadStatus},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[t[2]||(t[2]=_("刷新 ",-1))]),_:1},8,["loading"])]),a(g,{message:"不会开启自动发布",description:"此开关只启用经过签名的 Skill 自进化运行时。候选项进入 active 前仍需人工审核,自动发布始终保持 HOLD。",type:"warning","show-icon":"",class:"notice"}),a(r,{gutter:16},{default:o(()=>[a(R,{xs:24,xl:15},{default:o(()=>[a(v,{title:"签名部署",class:"panel-card"},{default:o(()=>[a(b,{layout:"vertical"},{default:o(()=>[a(h,{label:"签名部署描述符"},{extra:o(()=>[...t[4]||(t[4]=[_("Web 页面不能读取本机文件选择器,请填写运行 cc ui 的机器上的绝对路径。",-1)])]),default:o(()=>[a(c,{value:e.descriptorPath,"onUpdate:value":t[0]||(t[0]=n=>e.descriptorPath=n),disabled:e.busy,placeholder:"deployment descriptor JSON 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(h,{label:"Ed25519 信任根公钥"},{default:o(()=>[a(c,{value:e.trustRootPath,"onUpdate:value":t[1]||(t[1]=n=>e.trustRootPath=n),disabled:e.busy,placeholder:"信任根 public key 的服务器绝对路径"},null,8,["value","disabled"])]),_:1}),a(x,null,{default:o(()=>[a(m,{type:"primary",loading:e.saving,onClick:e.save},{default:o(()=>[...t[5]||(t[5]=[_("校验、保存并启用",-1)])]),_:1},8,["loading"]),a(m,{danger:e.status.profileEnabled,disabled:!e.status.descriptorPath,loading:e.toggling,onClick:e.toggle},{default:o(()=>[_(u(e.status.profileEnabled?"停用":"启用"),1)]),_:1},8,["danger","disabled","loading"])]),_:1})]),_:1})]),_:1})]),_:1}),a(R,{xs:24,xl:9},{default:o(()=>[a(v,{title:"治理状态",class:"panel-card status-card"},{default:o(()=>[a(P,{column:1,size:"small"},{default:o(()=>[a(f,{label:"生效状态"},{default:o(()=>[a(E,{color:e.status.effectiveEnabled?"green":"default"},{default:o(()=>[_(u(e.status.effectiveEnabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),a(f,{label:"生效来源"},{default:o(()=>[_(u(e.status.source||"none"),1)]),_:1}),a(f,{label:"签名校验"},{default:o(()=>[a(E,{color:e.status.verified?"green":"red"},{default:o(()=>[_(u(e.status.verified?"已通过":"未通过"),1)]),_:1},8,["color"])]),_:1}),a(f,{label:"自动发布"},{default:o(()=>[a(E,{color:"orange"},{default:o(()=>[...t[6]||(t[6]=[_("HOLD",-1)])]),_:1})]),_:1}),a(f,{label:"配置文件"},{default:o(()=>[i("span",J,u(e.status.profilePath||"—"),1)]),_:1}),a(f,{label:"允许命令"},{default:o(()=>[i("span",K,u((e.status.commands||[]).join(", ")||"—"),1)]),_:1})]),_:1}),i("section",z,[t[7]||(t[7]=i("h3",null,"模型命令部署准入",-1)),t[8]||(t[8]=i("p",null,"这里只检查部署准入,实际任务运行尚未验证。",-1)),(S(!0),C(B,null,q(e.readinessRows,n=>(S(),C("div",{key:n.command,"data-admission-command":n.command},[i("strong",null,u(n.command)+":"+u(n.summary),1),i("p",Q,u(n.detail),1),n.remediation?(S(),C("p",T,u(n.remediation),1)):V("v-if",!0)],8,M))),128))]),e.status.error?(S(),H(g,{key:0,message:e.status.error,type:"error","show-icon":"",class:"error"},null,8,["message"])):V("v-if",!0)]),_:1})]),_:1})]),_:1})])}const ee=U(A,[["render",Y],["__scopeId","data-v-5a42105e"],["__file","/tmp/cc-web-panel-oKYV8O/repo/packages/web-panel/src/views/EvolutionSettings.vue"]]);export{ee as default};
@@ -1 +0,0 @@
1
- import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-CXVBQ82k.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-oKYV8O/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-CXVBQ82k.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-oB1LLxyf.js";import{a0 as t}from"./index-CXVBQ82k.js";import"./vendor-Bn1JzzAn.js";import"./index-CtB45Hok.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-BB9RTwmE.js";import{a0 as t}from"./index-CXVBQ82k.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-D7G8bF5J.js";import"./useFlexGapSupport-OqHBXEmi.js";import"./styleChecker-deGJ5dp_.js";import"./index-CtB45Hok.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};