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.
- package/README.md +22 -0
- package/package.json +2 -2
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-CDpT0WXV.js → AIOps-CBFnwYRX.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BNfUljWx.js → ActionButton-Sl4eXWpR.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-C9323DEx.js → Analytics-DB0lD9Kb.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CRrjb2db.js → AppLayout-j77EmkRK.js} +3 -3
- package/src/assets/web-panel/assets/{Artifacts-Db-DGqJS.js → Artifacts-CU3izCW9.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CJdHRJ0W.js → Audit-C44fSibb.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-_RSCnTYs.js → BackgroundAgents-pM_NnJW3.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-8GFQi-dM.js → Backup-AOHXqhxN.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-C87NtgUZ.js → BaseInput-DaYc8oA_.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DcTMWS8G.js → Chat-CmlCAXxW.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-5ZDPTW_H.js → ChatBubbleRenderer-CkCSkJDJ.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DM9EmYee.js → Checkbox-DISI7iaA.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-M2YqDRNN.js → Codegen-BYpeKUpf.js} +1 -1
- package/src/assets/web-panel/assets/{Col-oB1LLxyf.js → Col-Dk6VwWGq.js} +1 -1
- package/src/assets/web-panel/assets/{Community-TcVZK5tF.js → Community-BDyTedMu.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-XKmq-3K_.js → Compact-CTNlGM9X.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-C6CBiDRy.js → Compliance-C_tw3IdT.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Dz9CGqXH.js → Cowork-cduHWEmo.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-CxJDgDVL.js → Cron-Dqotjv-s.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-DMP0JsaQ.js → Crosschain-ByW7RsJQ.js} +1 -1
- package/src/assets/web-panel/assets/{DID-I5IQeogb.js → DID-BI-lafPj.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BfLW2MXj.js → Dashboard-8m50TRZL.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BK8EjAlh.js → Dropdown-CN3hmRTc.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-C3iqSv5I.js → EmailListRenderer-t0lzxsDT.js} +1 -1
- package/src/assets/web-panel/assets/EvolutionSettings-DabpA3cQ.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-T19rnqm-.js → FamilyGuardDashboard-BYN4UshY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CozrbPMy.js → Federation-n44OtIXp.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-k1dCLNNJ.js → FormItemContext-B-WXDu_I.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DbaW_Jvt.js → GenericCardRenderer-Bm7v-mTf.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CQHRyEIt.js → Git-BMIS6sbo.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BMJYZgMy.js → Governance-B1EhHobE.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-B7mpNU7V.js → Inference-Dy_HJWHo.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Br0Blg6B.js → KnowledgeGraph-BVdfUbZy.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-HIdk0S6M.js → Logs-Dph_oLQk.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-CNHYqcxm.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Bkfq69UP.js → Marketplace-Bw4HWORj.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-dtmx0bHO.js → McpTools-Be6DPfA1.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CrRlOuEf.js → Memory-DlvLafC9.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-D4ZIZiAH.js → MobileBridge-Upc_Jwlt.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-C90Rw7GE.js → MobileProjects-I17jrUbY.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CC6k_uh4.js → Mtc-DyBzY0GH.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-T_CUIYUy.js → MtcAudit-2-7xAwEo.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-N_e0RRWk.js → Multisig-DtUZpFmZ.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Iq3VzEv0.js → NLProgramming-iInH7jBr.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-B5sKJUJt.js → Notes-BO3Z3vaS.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-K8UVp8qQ.js → NotificationSettings-ClX_0jFE.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BWNyM-6m.js → OrderTableRenderer-Czw742w4.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DMO1NJxI.js → Organization-BATEx24i.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BBY6b31Z.js → Overflow-B_PXMNia.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DmsL0y0v.js → P2P-BSiE8PqT.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-C65AX_RY.js → PdhVaultBrowser-BbklUgZY.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CWcpRtWa.js → Permissions-B7bpflT_.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub--ZNDIdsn.js → PersonalDataHub-BWZS4BLy.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-DCdj5NGb.js → Pipeline-DP2YSs6H.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BRKu7Q3E.js → Privacy-DB9ptoH0.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BJ7ozIAb.js → ProjectInit-BAfePyYk.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B2cVLiXW.js → ProjectSettings-BEXn4Cm3.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Ce9r_W-p.js → Projects-BzSs0rzn.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BDespvGZ.js → Providers-CRX9TdRO.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-BUNO4fDU.js → QrScannerModal-DUWcSY5L.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D2TUqeBV.js → QuickAsk-Cgo3Z_hs.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BNNQPHBH.js → Recommend-Dcinx0IW.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-D2t1V_Cm.js → RemoteSession-BMZzTnAN.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-DVK5hEqI.js → Reputation-BdZzpOp9.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BB9RTwmE.js → Row-DqM8GVcx.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DmEO7liZ.js → RssFeed-Soj_QBK3.js} +2 -2
- package/src/assets/web-panel/assets/{Search-UwEYjnDB.js → Search-Cn2es0-v.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DebqSsMp.js → Security-t7C4hz3n.js} +3 -3
- package/src/assets/web-panel/assets/{Services-CuuPts3C.js → Services-ChF-e_Uf.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DbWpmbgf.js → Skeleton-BiPIyK-2.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BaK7SxzT.js → Skills-HgkKJenJ.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-BFHv51Jb.js → Sla-BSfluv_k.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-B9b1R6uK.js → SpeechSettings-Sm0Gz9tM.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BnO0CN02.js → SyncSettings-DlhBMnfU.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-Dy01Vq49.js → Tasks-C7OUvsnp.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BCy2AMHc.js → Templates-CrMtw87y.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-4Tx9y_Y1.js → Tenant-DSNSB6j5.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CPOoUH8J.js → Terminal-Cmh78FQg.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-C85GlJzu.js → TimelineRenderer-BE8b8lHR.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-_xneFBGF.js → Tokens-BrtgdIvJ.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BizG4rTr.js → Trigger-HCmaoKDp.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Dh8EIn3n.js → Trust-GASQ4F-2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-C5NWoHWQ.js → UkeySign-B8kSzWGr.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-0YfrySL6.js → VideoEditing-Nn-clhv5.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BZVH8Ags.js → Wallet-DdYMKTYk.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-kNofa6vm.js → WebAuthn-xJXUr_eK.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-BNO34_j0.js → WorkflowEditor-CbSa87av.js} +1 -1
- package/src/assets/web-panel/assets/{chat-ifQ2FlwD.js → chat-CVrNLGUV.js} +1 -1
- package/src/assets/web-panel/assets/{colors-1TL8H6EH.js → colors-e2veLfIA.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DBfRjs_T.js → compact-item-CNd7nhUq.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Bs6V4iBf.js → createContext-DEudTVqv.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DW7he-SA.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-Bz6LMY_0.js → hasIn-BlSAFZa3.js} +1 -1
- package/src/assets/web-panel/assets/{index--WvT2Il3.js → index-0y7tHZdT.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMVktlxG.js → index-4ZT0vIJt.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6RClMZl.js → index-7-7rr4Mf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BB1Af7Fv.js → index-B1C1wS5c.js} +1 -1
- package/src/assets/web-panel/assets/{index-lUL3bD2z.js → index-BG-VNepa.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtB45Hok.js → index-BMIhGZUR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOww5Qny.js → index-BRNCKg4q.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiZ7Nz5-.js → index-B_UNX_xq.js} +1 -1
- package/src/assets/web-panel/assets/{index-C9QYxq61.js → index-BmVFeSEq.js} +1 -1
- package/src/assets/web-panel/assets/{index-BoCTDcn6.js → index-Bp4Gcn9u.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXtiLagi.js → index-BpH6T1gA.js} +1 -1
- package/src/assets/web-panel/assets/{index-B5SJCUZ7.js → index-BptI9bLu.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cn7EIWmI.js → index-Bqeb4jnC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvM2xBUA.js → index-Bwtt-0CQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-EK3XtMxA.js → index-C4h_Bvd2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDhy4eCS.js → index-C6zGNZ5H.js} +1 -1
- package/src/assets/web-panel/assets/{index-rGhS02f8.js → index-CHMrAZiR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQL_tldd.js → index-CK6Rb66R.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7d6QlfR.js → index-CU4Y4VVN.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cykt9BbN.js → index-CWuv47z0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXJXMaZe.js → index-CYNoXhxl.js} +1 -1
- package/src/assets/web-panel/assets/{index-f_7L9GvP.js → index-CgVwz2jD.js} +1 -1
- package/src/assets/web-panel/assets/{index-vHtnQsnV.js → index-ClROBPWd.js} +1 -1
- package/src/assets/web-panel/assets/{index-BhPDhmvN.js → index-D7yJceTZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cu_V6ZJH.js → index-DFv-nsIT.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNKHoXWI.js → index-DFzvcZ3Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-vb1XIxEB.js → index-DJ5gsewX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWPp-d07.js → index-DVORJydf.js} +1 -1
- package/src/assets/web-panel/assets/{index-pOUFfRdN.js → index-D_D7lcnQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-cNwsev6n.js → index-DtrqgNBl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBh48_Mh.js → index-DwjWRUTf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxqC3LiO.js → index-DyFZ7gDd.js} +1 -1
- package/src/assets/web-panel/assets/{index-XJIV7HEw.js → index-Ec6VBiV-.js} +1 -1
- package/src/assets/web-panel/assets/index-IkoHuWRe.js +1 -0
- package/src/assets/web-panel/assets/{index-CXVBQ82k.js → index-Jk99aZIr.js} +3 -3
- package/src/assets/web-panel/assets/{index-84mi5rsv.js → index-Lm9pm1zm.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6c0j-Ki.js → index-MuTb62K6.js} +1 -1
- package/src/assets/web-panel/assets/index-MwqsDbb1.js +1 -0
- package/src/assets/web-panel/assets/{index-DEPPzM8I.js → index-hzUfIn4u.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DpRIjwTt.js → initDefaultProps-C6fpNcA5.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CG4_9o-Z.js → motion-Bjh9Come.js} +1 -1
- package/src/assets/web-panel/assets/{move-Dku1fXtf.js → move-DFa4ul-_.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BvAVeX-3.js → mtc-parser-KoYqA_e5.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DFu0x78D.js → omit-ByTjP-wG.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CmI-FNcK.js → pickAttrs-CG_rmTxx.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CGERYewB.js → placementArrow-LDePZ8V9.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D7G8bF5J.js → responsiveObserve-DZFzH4RR.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B2sXwWXy.js → slide-DfXQyTvD.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DI5yh0n3.js → statusUtils-CuhqsJfO.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-deGJ5dp_.js → styleChecker-qqVjJw5u.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-OqHBXEmi.js → useFlexGapSupport-BPxnCxcb.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Dqgx0Qv_.js → useFs-D11NLCjV.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Be-lveh2.js → usePersonalDataHub-HbZVcaCX.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CFxB876W.js → vnode-CZHQlfTu.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BFOYrl4e.js → zoom-CV3rUknJ.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/context.js +31 -11
- package/src/commands/evolution-deployment.js +70 -0
- package/src/commands/plugin.js +36 -5
- package/src/data/changelog.json +78 -0
- package/src/gateways/ws/evolution-deployment-topic-handlers.js +20 -0
- package/src/generated/cc-agent-protocol.schema.json +44 -1
- package/src/harness/prompt-compressor.js +12 -4
- package/src/lib/background-agent-list-index.js +222 -0
- package/src/lib/background-agent-supervisor.js +38 -0
- package/src/lib/codex-app-server-adapter.js +1 -0
- package/src/lib/context-memory-kernel/provider-context.js +69 -4
- package/src/lib/deferred-question-context.js +160 -4
- package/src/lib/eval/plugin-suite.js +286 -22
- package/src/lib/evolution/evolution-deployment-config.js +16 -1
- package/src/lib/evolution/evolution-deployment-profile.js +102 -58
- package/src/lib/evolution/evolution-test-deployment.js +386 -0
- package/src/lib/model-context-window.js +3 -2
- package/src/lib/runtime-usage-ledger.js +5 -0
- package/src/lib/session-host-snapshot.js +16 -0
- package/src/repl/agent-repl.js +19 -4
- package/src/runtime/agent-core.js +13 -0
- package/src/runtime/headless-runner.js +4 -0
- package/src/runtime/headless-stream.js +171 -14
- package/src/assets/web-panel/assets/EvolutionSettings-BJmBzpW6.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-HxeocBHy.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BHnbnuYL.js +0 -1
- package/src/assets/web-panel/assets/index-CsRz9-ZH.js +0 -1
- 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
|
},
|
package/src/repl/agent-repl.js
CHANGED
|
@@ -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:
|
|
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 =
|
|
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
|
|
9760
|
-
|
|
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 {
|
|
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
|
|
2475
|
-
|
|
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
|
-
|
|
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({
|
|
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};
|