chainlesschain 0.166.100 → 0.166.102
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/package.json +3 -3
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-Cd4iUOPt.js → AIOps-CyHIMEd8.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton--ucr-zko.js → ActionButton-vuNxDpHm.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DbejYMWk.js → Analytics-D0quEM0q.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CLgKxeGw.js → AppLayout-xRSVpbCs.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CTT5BIL5.js → Artifacts-ktfVAZBC.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DP-WBWe9.js → Audit-UJW6maH4.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-B6VqheJk.js → BackgroundAgents-BYrfdCoT.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-VWJK5zim.js → Backup-IBgsJ7BK.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-YGFO9RHd.js → BaseInput-BmP8_zxy.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CVfydnCd.js → Chat-urkw8_BF.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BICpB-qU.js → ChatBubbleRenderer-Cw44zZbh.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Bd5vKRMk.js → Checkbox-CYboo-__.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DHNgPHvg.js → Codegen-DaqR_Ay8.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CA2BYQ8T.js → Col-04BSIj_z.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DnKJ-qpI.js → Community-DxFk7Trv.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-C9BZ8t4r.js → Compact-mjgWlMCB.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-ByyQ2FOl.js → Compliance-CC5ee7QV.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-rXTwXE_c.js → Cowork-BK4BhHZd.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BuW-HODy.js → Cron-CP6jAxq0.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-OudNtbYW.js → Crosschain-DJPaViZS.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BQ6BxYNN.js → DID-BTLxkuOj.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Cz5HG8tz.js → Dashboard-Djkiqh3d.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BzclHOVv.js → Dropdown-t_eUhqom.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CbJETFdy.js → EmailListRenderer-7w6USx_J.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-Dx_pJG3d.js → EvolutionSettings-mU5IHEk5.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-6JCS1MNg.js → FamilyGuardDashboard-BCh-VBBC.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BrPkMYaf.js → Federation-Be_VpjI2.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Bhc9pobs.js → FormItemContext-D_lzQ7PI.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BxOh07uQ.js → GenericCardRenderer-LYu3KapV.js} +1 -1
- package/src/assets/web-panel/assets/{Git-D_idoujr.js → Git-BBeF-PP4.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-ZGfIRE-x.js → Governance-CoF8Kzg7.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DpAmcwbw.js → Inference-C4DLMnXS.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-D1S1UTgP.js → KnowledgeGraph-B2mlNewk.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-2sc8V5XV.js → Logs-DMZ_44Ya.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-Ck7Iv_9e.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-0xlFUKbe.js → Marketplace-BqDzTew_.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D25eJLGm.js → McpTools-BbwSbDN9.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BLRGd9hM.js → Memory-DAaTWgrm.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-zpFINGzn.js → MobileBridge-BjbTGxoR.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-Cbyd-8kx.js → MobileProjects-DMODOBr-.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-DgXgUlHc.js → Mtc-DT9N2rCs.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-DzcL-dKH.js → MtcAudit-DagMfUVv.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-C3OrZ6VN.js → Multisig-C1BKP6nM.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Bqp_vWA7.js → NLProgramming-B5LFh72i.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Dyn45-Ht.js → Notes-Q77V3ltW.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CLjafGZr.js → NotificationSettings-HxdpNIBs.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Dc0DpvBH.js +1 -0
- package/src/assets/web-panel/assets/{Organization-5gr9hyLm.js → Organization-QL3NZ7uW.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BRdU02hT.js → Overflow-B_gqOKho.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DIi7fzh6.js → P2P-BBJubU8Z.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BCbS1KpA.js → PdhVaultBrowser-CFnGd-2E.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-BjeP9VtA.js → Permissions-BKkznIUM.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-y8PXOQUc.js → PersonalDataHub-DYK7ZAcd.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-B0fL5uxY.js → Pipeline-CoeKpjoN.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-C8jCDn8Z.js → Privacy-Diw4G-92.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-B_L6Dc6V.js → ProjectInit-CHBOFkma.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Bb1CYbZh.js → ProjectSettings-BJIsgdOf.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CUSV10Cn.js → Projects-GJjItXIk.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-mBSTDJ0E.js → Providers-o8QCimor.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CHxgalvt.js → QrScannerModal-z2W-zvhW.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DI9KIMEV.js → QuickAsk-_yubhsna.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B5_zW1JH.js → Recommend-CucgJwih.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BkH4bmM5.js → RemoteSession-EzfIIRg1.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-DJrAqwAq.js → Reputation-_shttE67.js} +1 -1
- package/src/assets/web-panel/assets/{Row-xZ3MAM34.js → Row-DQA_S8-9.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CCsrLLiu.js → RssFeed-BOqWawXT.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CTCRKvaP.js → Search-Dx1v2xOq.js} +1 -1
- package/src/assets/web-panel/assets/{Security-D7joyfp2.js → Security-Bt4HHsT4.js} +4 -4
- package/src/assets/web-panel/assets/{Services-oqHPmTG4.js → Services-sruHiQ-r.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BR_32bTG.js → Skeleton-CiBxvmOJ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BoRz9mln.js → Skills-De9qKODU.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-UAGUHZ9b.js → Sla-B_6yn8Wp.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DeP_rMgv.js → SpeechSettings-C2CafExS.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CSzzMmeA.js → SyncSettings-Dhh3Qmb0.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-CcqOLsLB.js → Tasks-Mvo5mTWm.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-cDbkGSDG.js → Templates-D7WVTQQy.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DmOy58cq.js → Tenant-7ur9Yfxd.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CsRZH5vr.js → Terminal-BgzrOA6k.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BgJrk6HG.js → TimelineRenderer-Dco20pT1.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CCQglKDE.js → Tokens-hN6qBPag.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-t-Gt3oBY.js → Trigger-C4f_twAM.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DQgu2kI0.js → Trust-Wf1SMypp.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Cod2WUGj.js → UkeySign-DUXSyg3N.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-SGN5zaVK.js → VideoEditing-BvqsJaL0.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CnLEL-LD.js → Wallet-CgAbcjKl.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-C2keUpD6.js → WebAuthn-DaLT0W3s.js} +2 -2
- package/src/assets/web-panel/assets/{WorkflowEditor-B1GvrwWJ.js → WorkflowEditor-CQqAXoaS.js} +1 -1
- package/src/assets/web-panel/assets/{chat-1E9_P_qY.js → chat-BhlohFTB.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DuU6Os4q.js → colors-D7HqXIL8.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-C5NfOAcM.js → compact-item-Bqk4FCLY.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-D4Fxz9qQ.js → createContext-CEmWrWf0.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-YPX_TU7w.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-C6C49iFk.js → hasIn-CDY0pFi2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DP2DCKD-.js → index-1HBam9t1.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-bb-R99.js → index-6f6n0KFR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmvU4Tp_.js → index-B8L3_-sG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsH8mFp4.js → index-BHGOdvOQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVE2wCeb.js → index-BNrvBWDS.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJS6GTpv.js → index-BPmRkxeX.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7mh6xlu.js → index-BXRooi-O.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZKRZYTX.js → index-BiLu-ImR.js} +1 -1
- package/src/assets/web-panel/assets/{index-jFg3CPlQ.js → index-BuKGuH_y.js} +1 -1
- package/src/assets/web-panel/assets/{index-BULggEX6.js → index-BxXFRLTZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DPzunJER.js → index-BxYO6nde.js} +1 -1
- package/src/assets/web-panel/assets/{index-AO6iDCSL.js → index-C02yDu4f.js} +1 -1
- package/src/assets/web-panel/assets/{index-BU5mPkNX.js → index-C3opQg47.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSypQU1h.js → index-C9mvnSii.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZgT7pH-.js → index-CVrwozwH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpiOzt7U.js → index-CYcjOnDX.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlHkc48f.js → index-Cf1ha8l0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXb8gEWh.js → index-Chxt0t-A.js} +1 -1
- package/src/assets/web-panel/assets/{index-HQXFl8fh.js → index-CkjgSHVz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpaGe-dr.js → index-CkqBoCiu.js} +3 -3
- package/src/assets/web-panel/assets/{index-C2nO02uW.js → index-CqK0J4Sj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bu6qMjf4.js → index-CrsM-oiD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bk-paNL3.js → index-Cur88hoN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXn-e3ki.js → index-D0nfNmbq.js} +1 -1
- package/src/assets/web-panel/assets/index-D53szVZQ.js +1 -0
- package/src/assets/web-panel/assets/{index-CDVwN9Sv.js → index-DEzL7s7P.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_ON9La1.js → index-DGKRAO61.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQJoh5rw.js → index-DPBoWNwq.js} +1 -1
- package/src/assets/web-panel/assets/{index-cnDfwWU5.js → index-DRcDWMwP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBVqlelF.js → index-DmKdCWq1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BYg1dtne.js → index-DpI1LqJX.js} +1 -1
- package/src/assets/web-panel/assets/{index-B5lzRoHp.js → index-DuMt3ewl.js} +1 -1
- package/src/assets/web-panel/assets/{index-gh11zJ9h.js → index-Dwob5XoD.js} +1 -1
- package/src/assets/web-panel/assets/index-Ub2nJbV2.js +1 -0
- package/src/assets/web-panel/assets/{index-D1TXgNPA.js → index-XErJQ1yF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFK6PTGJ.js → index-aBHlgMrq.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dh-vezHe.js → index-e9oCy7_4.js} +1 -1
- package/src/assets/web-panel/assets/{index-bW6vfpLH.js → index-lBAbMOzg.js} +1 -1
- package/src/assets/web-panel/assets/{index-lNmDaf3J.js → index-o_lc3eww.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-3DSfnIpD.js → initDefaultProps-CIeEUxIN.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DxGLmgA0.js → motion-IPIj1ZtP.js} +1 -1
- package/src/assets/web-panel/assets/{move-DrlLG6m5.js → move-BfSeXZ-f.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BITbrJSb.js → mtc-parser-DX03-Xp4.js} +1 -1
- package/src/assets/web-panel/assets/{omit-D7k5vIbk.js → omit-z9EannfX.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BJSvYFWo.js → pickAttrs-DXKmRkqZ.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Bf4to1jA.js → placementArrow-k2HV7cIU.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BXzeyzTa.js → responsiveObserve-bX7CsyWy.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DLzNUNdj.js → slide-NskjQLbJ.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-wBBnrRm_.js → statusUtils-B3IoG-Er.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BnmJzXNr.js → styleChecker-DHv_UilX.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DrN8MrJb.js → useFlexGapSupport-DEqGB5Ng.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-dnkYGkjY.js → useFs-Bl9CbrqZ.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-k_xkv7-k.js → usePersonalDataHub-O-Ukv93M.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-B-v8PXpK.js → vnode-hGCHTaZt.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Coue8wAK.js → zoom-BWhIVeKQ.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/agent.js +64 -40
- package/src/commands/eval.js +11 -8
- package/src/data/changelog.json +26 -0
- package/src/harness/provider-backed-compaction.js +13 -5
- package/src/lib/config-schema.js +18 -5
- package/src/lib/context-memory-kernel/live-compaction.js +142 -61
- package/src/lib/context-memory-kernel/memory-query-index.js +5 -2
- package/src/lib/context-memory-kernel/runtime.js +4 -0
- package/src/lib/context-memory-kernel/segmented-memory-port.js +28 -3
- package/src/lib/context-source-ledger.js +52 -9
- package/src/lib/formal-budget-authority.js +533 -0
- package/src/lib/formal-budget-contract.js +609 -0
- package/src/lib/formal-budget-transport.js +345 -0
- package/src/lib/goal-condition-engine.js +25 -2
- package/src/lib/llm-config-defaults.js +10 -4
- package/src/lib/llm-pricing.js +16 -4
- package/src/lib/model-capabilities.js +26 -0
- package/src/lib/model-catalog-review.js +18 -1
- package/src/lib/model-context-catalog.js +41 -1
- package/src/lib/openai-responses.js +8 -0
- package/src/lib/skill-retrieval-router.js +1 -0
- package/src/lib/usage-pricing-context.js +33 -2
- package/src/repl/agent-repl.js +247 -153
- package/src/runtime/agent-core.js +371 -97
- package/src/runtime/coding-agent-contract-shared.cjs +14 -1
- package/src/runtime/headless-runner.js +1 -0
- package/src/runtime/headless-stream.js +137 -4
- package/src/runtime/mcp-tool-search.js +0 -0
- package/src/runtime/provider-stream-state.js +14 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-575jjYE6.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Bx8wMauC.js +0 -1
- package/src/assets/web-panel/assets/devWarning-zDWbYMr7.js +0 -1
- package/src/assets/web-panel/assets/index-BPBsZZnT.js +0 -1
- package/src/assets/web-panel/assets/index-CtGQDg7m.js +0 -1
package/src/commands/agent.js
CHANGED
|
@@ -308,6 +308,10 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
308
308
|
"LLM provider (ollama, openai, volcengine, deepseek, ...)",
|
|
309
309
|
)
|
|
310
310
|
.option("--base-url <url>", "API base URL")
|
|
311
|
+
.option(
|
|
312
|
+
"--service-tier <tier>",
|
|
313
|
+
"Reviewed provider service tier (standard, fast, flex, ultrafast)",
|
|
314
|
+
)
|
|
311
315
|
.option("--api-key <key>", "API key")
|
|
312
316
|
.option(
|
|
313
317
|
"--think [level]",
|
|
@@ -769,8 +773,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
769
773
|
// --capabilities: print the machine-readable manifest and exit — no
|
|
770
774
|
// config, no bootstrap, no network (gap-analysis 2026-07-11 快速收益 #6).
|
|
771
775
|
if (options.capabilities) {
|
|
772
|
-
const { buildAgentCapabilities } =
|
|
773
|
-
|
|
776
|
+
const { buildAgentCapabilities } = await import(
|
|
777
|
+
"../lib/headless-manifest.js"
|
|
778
|
+
);
|
|
774
779
|
console.log(JSON.stringify(buildAgentCapabilities(), null, 2));
|
|
775
780
|
return;
|
|
776
781
|
}
|
|
@@ -789,8 +794,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
789
794
|
let toolAdmission = null;
|
|
790
795
|
if (process.env.CC_TOOL_ADMISSION) {
|
|
791
796
|
try {
|
|
792
|
-
const { parseToolAdmissionConfig } =
|
|
793
|
-
|
|
797
|
+
const { parseToolAdmissionConfig } = await import(
|
|
798
|
+
"../lib/agent-tool-admission.js"
|
|
799
|
+
);
|
|
794
800
|
toolAdmission = parseToolAdmissionConfig(
|
|
795
801
|
process.env.CC_TOOL_ADMISSION,
|
|
796
802
|
);
|
|
@@ -878,8 +884,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
878
884
|
// screen readers (mono theme + no repainting status line). Applied
|
|
879
885
|
// before anything renders.
|
|
880
886
|
{
|
|
881
|
-
const { screenReaderRequested, applyScreenReaderMode } =
|
|
882
|
-
|
|
887
|
+
const { screenReaderRequested, applyScreenReaderMode } = await import(
|
|
888
|
+
"../lib/accessibility.js"
|
|
889
|
+
);
|
|
883
890
|
if (screenReaderRequested(options)) {
|
|
884
891
|
applyScreenReaderMode();
|
|
885
892
|
}
|
|
@@ -912,8 +919,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
912
919
|
};
|
|
913
920
|
if (options.worktree !== undefined || backgroundRequested) {
|
|
914
921
|
try {
|
|
915
|
-
const { resolveBackgroundWorktreePolicy } =
|
|
916
|
-
|
|
922
|
+
const { resolveBackgroundWorktreePolicy } = await import(
|
|
923
|
+
"../lib/background-worktree-policy.js"
|
|
924
|
+
);
|
|
917
925
|
worktreeDecision = resolveBackgroundWorktreePolicy({
|
|
918
926
|
background: backgroundRequested,
|
|
919
927
|
worktree: options.worktree,
|
|
@@ -965,8 +973,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
965
973
|
};
|
|
966
974
|
if (worktreeDecision.enabled) {
|
|
967
975
|
try {
|
|
968
|
-
const { setupAgentWorktree, finishAgentWorktree } =
|
|
969
|
-
|
|
976
|
+
const { setupAgentWorktree, finishAgentWorktree } = await import(
|
|
977
|
+
"../lib/agent-worktree.js"
|
|
978
|
+
);
|
|
970
979
|
_finishAgentWorktreeFn = finishAgentWorktree;
|
|
971
980
|
const detectedRepoRoot = worktreeDecision.repoRoot || invocationCwd;
|
|
972
981
|
const worktreeCwd =
|
|
@@ -994,8 +1003,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
994
1003
|
const { loadHooks } = await import("../lib/settings-hooks.cjs");
|
|
995
1004
|
_worktreeSettingsHooks =
|
|
996
1005
|
loadHooks({ cwd: _worktree.repoRoot }).hooks || null;
|
|
997
|
-
const { runWorktreeCreateHooks, dispatchAsyncHooks } =
|
|
998
|
-
|
|
1006
|
+
const { runWorktreeCreateHooks, dispatchAsyncHooks } = await import(
|
|
1007
|
+
"../lib/settings-hook-events.js"
|
|
1008
|
+
);
|
|
999
1009
|
await runWorktreeCreateHooks(_worktreeSettingsHooks, {
|
|
1000
1010
|
worktreePath: _worktree.path,
|
|
1001
1011
|
branch: _worktree.branch,
|
|
@@ -1003,8 +1013,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1003
1013
|
cwd: _worktree.path,
|
|
1004
1014
|
});
|
|
1005
1015
|
if (!_worktreeAsyncSupervisor) {
|
|
1006
|
-
const { AsyncHookSupervisor } =
|
|
1007
|
-
|
|
1016
|
+
const { AsyncHookSupervisor } = await import(
|
|
1017
|
+
"../lib/async-hook-supervisor.js"
|
|
1018
|
+
);
|
|
1008
1019
|
_worktreeAsyncSupervisor = new AsyncHookSupervisor({
|
|
1009
1020
|
persistStats: true,
|
|
1010
1021
|
});
|
|
@@ -1089,8 +1100,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1089
1100
|
// Claude-Code parity: auto-checkpoint defaults ON inside a git repo
|
|
1090
1101
|
// (shadow-commit engine, zero working-tree touch); explicit
|
|
1091
1102
|
// --checkpoint / --no-checkpoint always wins.
|
|
1092
|
-
const { resolveAutoCheckpoint } =
|
|
1093
|
-
|
|
1103
|
+
const { resolveAutoCheckpoint } = await import(
|
|
1104
|
+
"../lib/auto-checkpoint-default.js"
|
|
1105
|
+
);
|
|
1094
1106
|
const autoCheckpoint = resolveAutoCheckpoint({
|
|
1095
1107
|
flagValue: options.checkpoint,
|
|
1096
1108
|
flagSource: command?.getOptionValueSource?.("checkpoint"),
|
|
@@ -1118,8 +1130,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1118
1130
|
options.outputFormat !== "text" ||
|
|
1119
1131
|
!process.stdin.isTTY;
|
|
1120
1132
|
if (headlessIntent) {
|
|
1121
|
-
const { getLastLogicalSessionId } =
|
|
1122
|
-
|
|
1133
|
+
const { getLastLogicalSessionId } = await import(
|
|
1134
|
+
"../lib/session-transcript-migration.js"
|
|
1135
|
+
);
|
|
1123
1136
|
const database =
|
|
1124
1137
|
sessionBootstrapContext.db?.getDatabase?.() ||
|
|
1125
1138
|
sessionBootstrapContext.db?.getDb?.() ||
|
|
@@ -1127,8 +1140,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1127
1140
|
options.session = getLastLogicalSessionId(database);
|
|
1128
1141
|
} else {
|
|
1129
1142
|
// Interactive: picker across both stores (agent REPL rebuilds either).
|
|
1130
|
-
const { pickRecentSession } =
|
|
1131
|
-
|
|
1143
|
+
const { pickRecentSession } = await import(
|
|
1144
|
+
"../lib/session-picker.js"
|
|
1145
|
+
);
|
|
1132
1146
|
const picked = await pickRecentSession(sessionBootstrapContext, {
|
|
1133
1147
|
message: "Resume which agent session?",
|
|
1134
1148
|
});
|
|
@@ -1154,8 +1168,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1154
1168
|
// diagnostics belong on stderr; stdout may already be reserved for a
|
|
1155
1169
|
// JSON/NDJSON protocol selected by this command.
|
|
1156
1170
|
await withQuietStdout(async () => {
|
|
1157
|
-
const { sessionHasPersistedEvidence } =
|
|
1158
|
-
|
|
1171
|
+
const { sessionHasPersistedEvidence } = await import(
|
|
1172
|
+
"../harness/jsonl-session-store.js"
|
|
1173
|
+
);
|
|
1159
1174
|
if (!sessionHasPersistedEvidence(options.session)) {
|
|
1160
1175
|
const [{ bootstrap }, { ensureCanonicalSessionFromDatabase }] =
|
|
1161
1176
|
await Promise.all([
|
|
@@ -1185,8 +1200,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1185
1200
|
// a no-op (silent) for a fresh run.
|
|
1186
1201
|
if (options.forkSession && options.session) {
|
|
1187
1202
|
const store = await import("../harness/jsonl-session-store.js");
|
|
1188
|
-
const { applyForkSession } =
|
|
1189
|
-
|
|
1203
|
+
const { applyForkSession } = await import(
|
|
1204
|
+
"../runtime/headless-runner.js"
|
|
1205
|
+
);
|
|
1190
1206
|
const fork = applyForkSession(
|
|
1191
1207
|
{
|
|
1192
1208
|
forkSession: true,
|
|
@@ -1259,8 +1275,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1259
1275
|
let settingsSandbox = null;
|
|
1260
1276
|
let managedSettingsSandbox = null;
|
|
1261
1277
|
try {
|
|
1262
|
-
const { loadSettingsConfig } =
|
|
1263
|
-
|
|
1278
|
+
const { loadSettingsConfig } = await import(
|
|
1279
|
+
"../lib/settings-loader.cjs"
|
|
1280
|
+
);
|
|
1264
1281
|
const sc = loadSettingsConfig({
|
|
1265
1282
|
cwd: process.cwd(),
|
|
1266
1283
|
settingsFile: options.settings || null,
|
|
@@ -1451,8 +1468,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1451
1468
|
// never pollutes spawned-bin test stderr.
|
|
1452
1469
|
if (!process.env.VITEST && !process.env.VITEST_WORKER_ID) {
|
|
1453
1470
|
try {
|
|
1454
|
-
const { maybeWarnDeprecatedModel } =
|
|
1455
|
-
|
|
1471
|
+
const { maybeWarnDeprecatedModel } = await import(
|
|
1472
|
+
"../lib/model-deprecation.js"
|
|
1473
|
+
);
|
|
1456
1474
|
maybeWarnDeprecatedModel({ model: options.model });
|
|
1457
1475
|
} catch {
|
|
1458
1476
|
/* fail-open: a deprecation notice must never affect the run */
|
|
@@ -1536,8 +1554,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1536
1554
|
) {
|
|
1537
1555
|
decisionConfig = Object.freeze({ mode: "off" });
|
|
1538
1556
|
} else {
|
|
1539
|
-
const { resolveHeadlessSkillDecisionOptions } =
|
|
1540
|
-
|
|
1557
|
+
const { resolveHeadlessSkillDecisionOptions } = await import(
|
|
1558
|
+
"../runtime/headless-runner.js"
|
|
1559
|
+
);
|
|
1541
1560
|
decisionConfig = resolveHeadlessSkillDecisionOptions(options);
|
|
1542
1561
|
}
|
|
1543
1562
|
} catch (error) {
|
|
@@ -1599,8 +1618,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1599
1618
|
process.exit(1);
|
|
1600
1619
|
return;
|
|
1601
1620
|
}
|
|
1602
|
-
const { runAgentHeadlessStream } =
|
|
1603
|
-
|
|
1621
|
+
const { runAgentHeadlessStream } = await import(
|
|
1622
|
+
"../runtime/headless-stream.js"
|
|
1623
|
+
);
|
|
1604
1624
|
const { parseToolList, validateHeadlessInvocationOptions } =
|
|
1605
1625
|
await import("../runtime/headless-runner.js");
|
|
1606
1626
|
const cwd = process.cwd();
|
|
@@ -1859,8 +1879,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1859
1879
|
// presenting a fresh conversation as a successful resume.
|
|
1860
1880
|
if (resumeRequested && options.session) {
|
|
1861
1881
|
const hasPersistedEvidence = await withQuietStdout(async () => {
|
|
1862
|
-
const { sessionHasPersistedEvidence } =
|
|
1863
|
-
|
|
1882
|
+
const { sessionHasPersistedEvidence } = await import(
|
|
1883
|
+
"../harness/jsonl-session-store.js"
|
|
1884
|
+
);
|
|
1864
1885
|
return sessionHasPersistedEvidence(options.session);
|
|
1865
1886
|
});
|
|
1866
1887
|
if (!hasPersistedEvidence) {
|
|
@@ -1870,14 +1891,16 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1870
1891
|
);
|
|
1871
1892
|
}
|
|
1872
1893
|
}
|
|
1873
|
-
const { runAgentHeadless, parseToolList } =
|
|
1874
|
-
|
|
1894
|
+
const { runAgentHeadless, parseToolList } = await import(
|
|
1895
|
+
"../runtime/headless-runner.js"
|
|
1896
|
+
);
|
|
1875
1897
|
// --goal-condition: validate the spec up front so a bad prefix fails
|
|
1876
1898
|
// fast (before any model call) with a clear message.
|
|
1877
1899
|
if (options.goalCondition) {
|
|
1878
1900
|
try {
|
|
1879
|
-
const { parseGoalCondition } =
|
|
1880
|
-
|
|
1901
|
+
const { parseGoalCondition } = await import(
|
|
1902
|
+
"../lib/goal-condition-engine.js"
|
|
1903
|
+
);
|
|
1881
1904
|
parseGoalCondition(options.goalCondition);
|
|
1882
1905
|
} catch (e) {
|
|
1883
1906
|
process.stderr.write(`--goal-condition: ${e.message}\n`);
|
|
@@ -1896,8 +1919,9 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1896
1919
|
: null;
|
|
1897
1920
|
let evolutionComposition;
|
|
1898
1921
|
try {
|
|
1899
|
-
const { validateHeadlessInvocationOptions } =
|
|
1900
|
-
|
|
1922
|
+
const { validateHeadlessInvocationOptions } = await import(
|
|
1923
|
+
"../runtime/headless-runner.js"
|
|
1924
|
+
);
|
|
1901
1925
|
validateHeadlessInvocationOptions({
|
|
1902
1926
|
outputFormat: options.outputFormat,
|
|
1903
1927
|
permissionMode: options.permissionMode,
|
package/src/commands/eval.js
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
persistVerify01Receipts,
|
|
21
21
|
} from "../lib/eval/verify01-execution.js";
|
|
22
22
|
import executionBroker from "../lib/process-execution-broker/index.js";
|
|
23
|
-
import {
|
|
23
|
+
import { requireFormalBudgetRuntime } from "../lib/formal-budget-transport.js";
|
|
24
24
|
import {
|
|
25
25
|
TelemetryRecorder,
|
|
26
26
|
formatTelemetry,
|
|
@@ -117,6 +117,9 @@ function makeHeadlessRunAgent(opts = {}) {
|
|
|
117
117
|
throw new Error(
|
|
118
118
|
"VERIFY01 provider/model binding differs from the launcher",
|
|
119
119
|
);
|
|
120
|
+
// A valid task binding is not paid execution admission. Until every paid
|
|
121
|
+
// route and credential boundary is covered, refuse before spawning a child.
|
|
122
|
+
if (binding) requireFormalBudgetRuntime();
|
|
120
123
|
const inherited = { ...process.env, ...(opts.env || {}) };
|
|
121
124
|
const environmentValue = (name) => {
|
|
122
125
|
if (process.platform !== "win32") return inherited[name];
|
|
@@ -127,11 +130,10 @@ function makeHeadlessRunAgent(opts = {}) {
|
|
|
127
130
|
.find((candidate) => candidate.toLowerCase() === name.toLowerCase());
|
|
128
131
|
return key === undefined ? undefined : inherited[key];
|
|
129
132
|
};
|
|
130
|
-
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
// excluded. Normal, non-formal Eval retains its existing environment.
|
|
133
|
+
// Formal children retain platform plumbing and the isolated task binding.
|
|
134
|
+
// Provider credentials belong to the trusted budget host. Hooks, fallback
|
|
135
|
+
// configuration, NODE_OPTIONS and account tokens are excluded. This alone
|
|
136
|
+
// does not enforce OS egress; paid launch remains refused above.
|
|
135
137
|
const childEnvironment = binding
|
|
136
138
|
? {
|
|
137
139
|
...Object.fromEntries(
|
|
@@ -147,8 +149,6 @@ function makeHeadlessRunAgent(opts = {}) {
|
|
|
147
149
|
"LANG",
|
|
148
150
|
"LC_ALL",
|
|
149
151
|
"LC_CTYPE",
|
|
150
|
-
"CC_API_KEY",
|
|
151
|
-
...(providerKey ? [providerKey] : []),
|
|
152
152
|
]
|
|
153
153
|
.map((key) => [key, environmentValue(key)])
|
|
154
154
|
.filter(([, value]) => value !== undefined),
|
|
@@ -462,6 +462,9 @@ export function registerEvalCommand(program, { logger } = {}) {
|
|
|
462
462
|
throw new Error(
|
|
463
463
|
"frozen suite comparison is bound by its plan; --comparison-context cannot override it",
|
|
464
464
|
);
|
|
465
|
+
// Refuse before task setup, workspace creation or raw receipt writes.
|
|
466
|
+
// Dry runs remain offline harness diagnostics, never observations.
|
|
467
|
+
if (tasks.verification && !options.dryRun) requireFormalBudgetRuntime();
|
|
465
468
|
comparison =
|
|
466
469
|
tasks.verification?.comparison ||
|
|
467
470
|
createEvalComparison({
|
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.166.102",
|
|
7
|
+
"cliVersions": ["0.166.102"],
|
|
8
|
+
"date": null,
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Fixed - cc CLI 0.166.102: restore session pricing validation",
|
|
13
|
+
"body": "- Accept the reviewed Priority and Ultrafast pricing terms when validating the\n built-in model catalog, restoring session observability, budget and Eval\n projections while continuing to reject unknown tiers and invalid multipliers.\n- Make the model-switch warning regression insensitive to source formatting.\n- Publish Personal Data Hub 0.4.65 with source snapshots in answer citations\n before CLI 0.166.102, then pair VS Code 0.37.146 and JetBrains 0.4.164 after\n the exact release commit passes its complete Actions gates."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"productVersion": null,
|
|
19
|
+
"cliVersion": "0.166.101",
|
|
20
|
+
"cliVersions": ["0.166.101"],
|
|
21
|
+
"date": null,
|
|
22
|
+
"title": "",
|
|
23
|
+
"sections": [
|
|
24
|
+
{
|
|
25
|
+
"heading": "Fixed - cc CLI 0.166.101: preserve context, usage and task outcomes during compaction",
|
|
26
|
+
"body": "- Restore VS Code composer drafts after reset, session resume and closing the\n last tab, with retry controls for failed loads. Align LLM connection tests\n with the chat CLI and distinguish missing dependencies from provider errors.\n- Upgrade Context Memory Kernel to 0.1.10. Abort compaction with\n `context_over_budget` when planning would empty a nonempty context or discard\n a newly derived summary, including when summarizer fallback is enabled.\n- Preserve the original session context and head on rejection while retaining\n settled provider usage. Keep summary trust and selection budgets unchanged.\n- Propagate validated provider receipts before accounting. Mark rejected\n workflow compaction as failed, uncertain commits as requiring reconciliation,\n and interrupted ordinary tasks as incomplete.\n- Account for completed compaction usage once when canonical planning rejects\n its summary; stop on unknown usage or failed settlement without a paid retry.\n- Pair VS Code 0.37.145 and JetBrains 0.4.163 with CLI 0.166.101 after child\n package publication, public CLI verification and the final commit's complete\n Actions release gates. Formal evaluation and native/durable acceptance retain\n their separate evidence and unfinished status."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
4
30
|
{
|
|
5
31
|
"productVersion": null,
|
|
6
32
|
"cliVersion": "0.166.100",
|
|
@@ -151,10 +151,16 @@ export async function compactConversationWithProvider(messages, options = {}) {
|
|
|
151
151
|
}
|
|
152
152
|
chatFn = chatWithTools;
|
|
153
153
|
}
|
|
154
|
-
const invokeProviderCall = async (call) => {
|
|
155
|
-
|
|
154
|
+
const invokeProviderCall = async (call, deferUntilAdmission = false) => {
|
|
155
|
+
let callId = null;
|
|
156
|
+
const start = async () => {
|
|
157
|
+
callId = safeUsageCallId(await options.onProviderCallStart?.());
|
|
158
|
+
};
|
|
159
|
+
// Only the captured canonical transport can attest that request admission
|
|
160
|
+
// completed. Custom adapters keep the conservative pre-call boundary.
|
|
161
|
+
if (!deferUntilAdmission) await start();
|
|
156
162
|
try {
|
|
157
|
-
return attachProviderCallId(await call(), callId);
|
|
163
|
+
return attachProviderCallId(await call(start), callId);
|
|
158
164
|
} catch (error) {
|
|
159
165
|
attachProviderCallIdToError(error, callId);
|
|
160
166
|
throw error;
|
|
@@ -167,7 +173,7 @@ export async function compactConversationWithProvider(messages, options = {}) {
|
|
|
167
173
|
if (typeof chatFn !== "function") {
|
|
168
174
|
throw new Error("provider adapter unavailable");
|
|
169
175
|
}
|
|
170
|
-
return invokeProviderCall(async () => {
|
|
176
|
+
return invokeProviderCall(async (start) => {
|
|
171
177
|
const response = await chatFn([{ role: "user", content: prompt }], {
|
|
172
178
|
...(options.chatOptions || {}),
|
|
173
179
|
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
@@ -184,6 +190,8 @@ export async function compactConversationWithProvider(messages, options = {}) {
|
|
|
184
190
|
onToken: undefined,
|
|
185
191
|
onStall: undefined,
|
|
186
192
|
onStreamRetry: undefined,
|
|
193
|
+
onProviderCallStart:
|
|
194
|
+
evolutionIngress === null ? undefined : start,
|
|
187
195
|
maxOutputTokens,
|
|
188
196
|
});
|
|
189
197
|
return {
|
|
@@ -198,7 +206,7 @@ export async function compactConversationWithProvider(messages, options = {}) {
|
|
|
198
206
|
? { usageLedgerSettled: true }
|
|
199
207
|
: {}),
|
|
200
208
|
};
|
|
201
|
-
});
|
|
209
|
+
}, evolutionIngress !== null);
|
|
202
210
|
};
|
|
203
211
|
|
|
204
212
|
const compressor =
|
package/src/lib/config-schema.js
CHANGED
|
@@ -69,6 +69,19 @@ const DESCRIPTORS = [
|
|
|
69
69
|
default: DEFAULT_CONFIG.llm.model,
|
|
70
70
|
description: "Default model id",
|
|
71
71
|
}),
|
|
72
|
+
descriptor("llm.serviceTier", "string", {
|
|
73
|
+
enum: [
|
|
74
|
+
"standard",
|
|
75
|
+
"default",
|
|
76
|
+
"auto",
|
|
77
|
+
"fast",
|
|
78
|
+
"priority",
|
|
79
|
+
"flex",
|
|
80
|
+
"ultrafast",
|
|
81
|
+
],
|
|
82
|
+
description:
|
|
83
|
+
"Requested live service tier; model and endpoint support are checked before dispatch",
|
|
84
|
+
}),
|
|
72
85
|
descriptor("llm.visionModel", ["string", "null"], {
|
|
73
86
|
description: "Model used for image turns",
|
|
74
87
|
}),
|
|
@@ -502,11 +515,11 @@ function valueIssue(key, code, message) {
|
|
|
502
515
|
function isPersistedSecretRef(value) {
|
|
503
516
|
return Boolean(
|
|
504
517
|
value &&
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
518
|
+
typeof value === "object" &&
|
|
519
|
+
!Array.isArray(value) &&
|
|
520
|
+
Object.keys(value).length === 1 &&
|
|
521
|
+
typeof value.__cc_secret_ref === "string" &&
|
|
522
|
+
value.__cc_secret_ref.length > 0,
|
|
510
523
|
);
|
|
511
524
|
}
|
|
512
525
|
|