chainlesschain 0.166.106 → 0.166.108
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 +187 -8
- package/package.json +2 -2
- 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-CKwEku2e.js → AIOps-B5HWUFaS.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BSUOuTpW.js → ActionButton-DCIKpxoQ.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CGxvL_FI.js → Analytics-dsgvjCEQ.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-bCPwz-5w.js → AppLayout-DWDH5Qbm.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-2_BOWo6e.js → Artifacts-BD8S8kzU.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CBOruzgW.js → Audit-CDXv4Aoj.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-lg0IU5HN.js → BackgroundAgents-BLAQ5Uy0.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-OspCi452.js → Backup-moPac6tF.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BMkliqlz.js → BaseInput-C_6nzsLU.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BfoiUZwp.js → Chat-cYuslkFG.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BjnfMwep.js → ChatBubbleRenderer-Ceh3MG6M.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-jTMlkNQZ.js → Checkbox-Qjb-XOX_.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CycyJcnU.js → Codegen-IYRWXlMA.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BVWlReQj.js → Col-CsQ9jv8M.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CKRHl4xK.js → Community-BbNmfTwe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BtpfMdhT.js → Compact-SShDx-nr.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DtHB1Ct1.js → Compliance-CLWhKIJp.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-D_8X7-RK.js → Cowork-D4tK9_s3.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-DMCOyvEa.js → Cron-D7GnfQ1z.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CeHdsu7m.js → Crosschain-TG86SH3X.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CL6mR6zX.js → DID-6pue0NCO.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-oz9n6DC7.js → Dashboard-BwkJ29du.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CbWm8mWu.js → Dropdown-DEvpYDof.js} +1 -1
- package/src/assets/web-panel/assets/EmailListRenderer-CQj7UlKJ.js +1 -0
- package/src/assets/web-panel/assets/{EvolutionSettings-DPwqgRYm.js → EvolutionSettings-tpvPMM9W.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DkV4YMFj.js → FamilyGuardDashboard-CWYFW75O.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CpUKHIOH.js → Federation-gRIi96rM.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C6KXRgjR.js → FormItemContext-B7Nr3YkV.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-C5Y4L5E3.js → GenericCardRenderer-b1BgGgLT.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CBwKdF8s.js → Git-Dis1jjO7.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Dt-OR7Aa.js → Governance-C4Yg99Am.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Czkl-Lhl.js → Inference-D4UQRbGu.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-C7NE4949.js → KnowledgeGraph-Co_kLMAq.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CoAuZiMG.js → Logs-D4BRp7bg.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-DTkjTwGI.js → MarkdownRenderer-Dgy8arQI.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-IzrV-7zH.js → Marketplace-ys0j1vr9.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DYEea7aS.js → McpTools-B3ZvRZe_.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-Uqe7ZrV6.js → Memory-BOa0jbr-.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-D092EGyM.js → MobileBridge-CWJRmUbj.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-7ty8vTpj.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-gg4jzfB-.js → Mtc-CCcOk5m5.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-BibGfs71.js → MtcAudit-vlrrScbQ.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-BmB5yRXP.js → Multisig-C8K59S_8.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BBSlPDyY.js → NLProgramming-oTpFYVme.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Bui3-KiC.js → Notes-BhqAJWiz.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-ovXtbHe5.js → NotificationSettings-DCnV1CJM.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Bq-qD7eG.js → OrderTableRenderer-CZGnsrVW.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DacIY9oJ.js → Organization-DX1LuQlJ.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-CX8osheZ.js → Overflow-CbfKrFdT.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-1lnikqVp.js → P2P-BEwYZuHL.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-DCrU-V6A.js → PdhVaultBrowser-YNmWbwd7.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-Dfcb6kM2.js → Permissions-DyZ18LiA.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-dvgai4hf.js → PersonalDataHub-B2J3aw2g.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-nymAEtnK.js → Pipeline-CXl2ZlhQ.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-D0Vd91oM.js → Privacy-I5SDmgAp.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BpUBcu7o.js → ProjectInit-Crl9tXw3.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DIzwTT-M.js → ProjectSettings-DCFtFlSK.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Den4RUw6.js → Projects-Do5BQq1i.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-Cq8p-M0d.js → Providers-Cb7OWa3y.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DSmqOfYk.js → QrScannerModal-CJmhAU-s.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-BDHCeSnA.js → QuickAsk-Cu6lEWou.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B_9M8oF4.js → Recommend-Crip3jLB.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-5ot4leHy.js → RemoteSession-KxYY-2CB.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-B3F013PY.js → Reputation-D0vN-htI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BMyBJnZw.js → Row-wqzd_xCD.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-WmV0l52g.js → RssFeed-8lsPfb0a.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Wl80yXnR.js → Search-C-e8qAeU.js} +1 -1
- package/src/assets/web-panel/assets/{Security-gbDMKb5m.js → Security-CMM9WgFy.js} +4 -4
- package/src/assets/web-panel/assets/{Services-Bx2Bjhah.js → Services-CZdxjN2B.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BvJNybjV.js → Skeleton-BI3XNk35.js} +1 -1
- package/src/assets/web-panel/assets/Skills-DMlsh9It.js +1 -0
- package/src/assets/web-panel/assets/{Sla-BM9gyZwc.js → Sla-HQruznKY.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Bu9FL9Tz.js → SpeechSettings-Dl-MFq3w.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D8ICJsMt.js → SyncSettings-BU224vDm.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-DESg3yCs.js +1 -0
- package/src/assets/web-panel/assets/{Templates-BJzpTD0W.js → Templates-Jb3TPz4Q.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BN8eX4R2.js → Tenant-CQ-GTrfa.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CjtP9bpq.js → Terminal-BbMl3Rue.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CpNRa4XW.js → TimelineRenderer-CS_vstKF.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-2lNNvNAH.js → Tokens-BaopVl1f.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DxtxXyPg.js → Trigger-DtnD4WUN.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CakzGeF9.js → Trust-CsvG4Tmf.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CvJeRXwV.js → UkeySign-C1-A-cOV.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-D80pMzcO.js → VideoEditing-CNgJPdSL.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BF-VOBmZ.js → Wallet-CdF41501.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DXyoAzE_.js → WebAuthn-D-JmxD5g.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-X6CDxzrF.js → WorkflowEditor-C0XunR13.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BcUhqjeA.js → chat-BBAZpD_G.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Dw4bKaCm.js → colors-BxSxO5BX.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BWhu5Eri.js → compact-item-BoxL8pg5.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BLJ9JKoN.js → createContext-W5JAyZmY.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BI5TZ7EX.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DIkCiJbt.js → hasIn-HpiKDPVC.js} +1 -1
- package/src/assets/web-panel/assets/index-9-JLDK5n.js +1 -0
- package/src/assets/web-panel/assets/{index-BAwcMKaD.js → index-9caMEwQ-.js} +1 -1
- package/src/assets/web-panel/assets/{index-0mHbawfQ.js → index-B05_YRHZ.js} +1 -1
- package/src/assets/web-panel/assets/index-B7m8ioaQ.js +1 -0
- package/src/assets/web-panel/assets/{index-D3wp_jgy.js → index-B9VxE1C-.js} +1 -1
- package/src/assets/web-panel/assets/{index-BotMuGS2.js → index-BA3WWQAT.js} +1 -1
- package/src/assets/web-panel/assets/{index-LOsZYbic.js → index-BSJ0cAle.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5qms36i.js → index-BW4PP5GN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDfB6hWf.js → index-BZAbaY64.js} +1 -1
- package/src/assets/web-panel/assets/{index-BipG-tDs.js → index-Ba4usRFM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CgsVg5Up.js → index-BgMViZIY.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTPoBbIR.js → index-BtFAEG08.js} +1 -1
- package/src/assets/web-panel/assets/{index-DKzG3kBM.js → index-Bwn6k_qw.js} +1 -1
- package/src/assets/web-panel/assets/{index-PRYboDFm.js → index-C4uI7WCB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQbWGvE4.js → index-C5kqii-G.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1fufz1A.js → index-C7GIUWWF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjEP26Te.js → index-CM_gdohF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BcTch6Fp.js → index-CRg3aOoj.js} +1 -1
- package/src/assets/web-panel/assets/{index-04SKBH8l.js → index-CcyzZloJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DHLW27Je.js → index-CehxfRUR.js} +1 -1
- package/src/assets/web-panel/assets/{index-5vzPcr1g.js → index-D6m6B4Wy.js} +1 -1
- package/src/assets/web-panel/assets/{index-DV4FSjmI.js → index-DSyfxxQS.js} +3 -3
- package/src/assets/web-panel/assets/{index-D5vFJmmX.js → index-DaJk9U9V.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxLDNxEQ.js → index-DcmAiq_Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-Erv8A9.js → index-DdEcQ1rp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqGqoID5.js → index-DinY7IQa.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGMzh2oj.js → index-DkSnlgK_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxfimJOH.js → index-DlPvZgv8.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOjQi7oU.js → index-DuM9I1If.js} +1 -1
- package/src/assets/web-panel/assets/{index-uMtx6e3D.js → index-DwidpDEE.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXJ8t1hK.js → index-IO2I7nzu.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cmc7qH2C.js → index-JrMBRi62.js} +1 -1
- package/src/assets/web-panel/assets/{index-BaStonJm.js → index-QzlEbtRL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cr05twNa.js → index-V6VIJe2N.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGFqk1-E.js → index-_38IJqoP.js} +1 -1
- package/src/assets/web-panel/assets/{index-u0tqS0iq.js → index-_p4e3KfB.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1r2R4a-.js → index-gvfIRZxJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CFGOV-YT.js → index-ooP1pQCt.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUC4TZWg.js → index-p6rNtYud.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-Bx6Hj_FG.js → initDefaultProps-Dfn6M05J.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BSWivB70.js → motion-BRRwFqGO.js} +1 -1
- package/src/assets/web-panel/assets/{move-Dv1Pg9R7.js → move-DpDPN6zR.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-Bqtl8fsk.js → mtc-parser-BHlSE87F.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DpOBjOSQ.js → omit-CEOri_L5.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D-M-dz48.js → pickAttrs-DqICh-ad.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DsTLAifk.js → placementArrow-DQizFFiV.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BVTetMpc.js → responsiveObserve-DmFHPdvC.js} +1 -1
- package/src/assets/web-panel/assets/{slide-abEcz-Cv.js → slide-s2s1XS3T.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CBhrdU2G.js → statusUtils-IwEIbBan.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CFq8ZCKa.js → styleChecker-CIFLlbXH.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-o4eE7fDV.js → useFlexGapSupport-CFkN2Cgh.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Hs9W8ihi.js → useFs-BSY6O48s.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Bnet5Jho.js → usePersonalDataHub-iJl3VnU0.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DJfN4kWs.js → vnode-vu8ReMs7.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BzV-2e7X.js → zoom-CeSrYAHp.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +2 -2
- package/src/commands/agent.js +20 -20
- package/src/commands/goal.js +299 -1
- package/src/commands/plugin.js +129 -68
- package/src/constants.js +2 -2
- package/src/data/changelog.json +29 -3
- package/src/harness/jsonl-session-store.js +128 -5
- package/src/harness/prompt-compressor.js +18 -10
- package/src/harness/structured-handoff.js +151 -13
- package/src/lib/agent-session-export.js +20 -0
- package/src/lib/background-agent-supervisor.js +54 -0
- package/src/lib/cli-goal-catalog.js +129 -0
- package/src/lib/cli-goal-source.js +119 -0
- package/src/lib/coding-task-guidance.js +2 -1
- package/src/lib/config-schema.js +1 -1
- package/src/lib/context-memory-kernel/live-compaction.js +75 -12
- package/src/lib/eval/stream-terminal.js +27 -2
- package/src/lib/evolution/evolution-artifact-ports.js +22 -11
- package/src/lib/evolution/evolution-file-witness.js +86 -63
- package/src/lib/evolution/evolution-ledger-file-backend.js +22 -0
- package/src/lib/evolution/evolution-ledger-file-manifest-catalog.js +34 -35
- package/src/lib/evolution/evolution-ledger-file-manifest-head-store.js +32 -39
- package/src/lib/evolution/evolution-ledger.js +367 -169
- package/src/lib/evolution/evolution-manifest-state-reader.js +58 -0
- package/src/lib/evolution/evolution-physical-state-reader.js +308 -0
- package/src/lib/evolution/evolution-witness-segments.js +12 -13
- package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +82 -56
- package/src/lib/evolution/rrsi-observed-text-index.js +17 -1
- package/src/lib/evolution/rrsi-tenant-index-anchor-history.js +5 -0
- package/src/lib/execution-location-failure-site.js +20 -3
- package/src/lib/goal-store.js +8 -1
- package/src/lib/image-input.js +43 -14
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/plugin-runtime/capabilities.js +10 -0
- package/src/lib/plugin-runtime/cli-goal-draft-request.js +138 -0
- package/src/lib/plugin-runtime/cli-goal-drafts.js +413 -0
- package/src/lib/plugin-runtime/cli-goal-extension-host.js +234 -0
- package/src/lib/plugin-runtime/examples/goal-description-drafter/plugin.json +17 -0
- package/src/lib/plugin-runtime/examples/goal-evidence-viewer/plugin.json +25 -0
- package/src/lib/plugin-runtime/examples/goal-progress-viewer/plugin.json +21 -0
- package/src/lib/plugin-runtime/examples/project-delivery-assistant/plugin.json +38 -0
- package/src/lib/plugin-runtime/goal-extension-contract.js +190 -0
- package/src/lib/plugin-runtime/goal-extensions.js +277 -0
- package/src/lib/plugin-runtime/install.js +40 -40
- package/src/lib/plugin-runtime/manifest.js +12 -0
- package/src/lib/plugin-runtime/policy.js +1 -0
- package/src/lib/project-goal-connection.js +225 -0
- package/src/lib/project-goal-draft-connection.js +217 -0
- package/src/lib/read-file-loop-guard.js +124 -8
- package/src/lib/session-host-snapshot.js +3 -0
- package/src/lib/session-message-provenance.js +24 -5
- package/src/lib/session-tool-round.js +39 -0
- package/src/lib/session-transcript-history.js +2 -0
- package/src/lib/session-transcript-page.js +4 -1
- package/src/lib/session-transcript-structure.js +4 -0
- package/src/lib/task-model-selector.js +1 -1
- package/src/repl/agent-repl.js +14 -7
- package/src/repl/config-summary.js +1 -1
- package/src/runtime/__tests__/message-roles.test.js +29 -0
- package/src/runtime/agent-core.js +116 -44
- package/src/runtime/headless-runner.js +191 -34
- package/src/runtime/headless-stream.js +144 -48
- package/src/runtime/message-roles.js +43 -0
- package/src/runtime/policies/agent-policy.js +1 -0
- package/src/workers/background-agent-worker.js +146 -47
- package/src/assets/web-panel/assets/EmailListRenderer-DXlmbC45.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-CwA1VoVJ.js +0 -1
- package/src/assets/web-panel/assets/Skills-Tz4rQcDp.js +0 -1
- package/src/assets/web-panel/assets/Tasks-B6MowBDo.js +0 -1
- package/src/assets/web-panel/assets/devWarning-D_MJgDGJ.js +0 -1
- package/src/assets/web-panel/assets/index-BP8log78.js +0 -1
- package/src/assets/web-panel/assets/index-PexF9zYf.js +0 -1
package/src/commands/agent.js
CHANGED
|
@@ -336,7 +336,7 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
336
336
|
)
|
|
337
337
|
.option(
|
|
338
338
|
"--vision-model <id>",
|
|
339
|
-
"
|
|
339
|
+
"Explicit image model override (otherwise: multimodal main model, then config llm.visionModel or doubao-seed-2-0-lite-260215)",
|
|
340
340
|
)
|
|
341
341
|
.option("--session <id>", "Resume a previous agent session")
|
|
342
342
|
.option(
|
|
@@ -1417,29 +1417,12 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1417
1417
|
}
|
|
1418
1418
|
}
|
|
1419
1419
|
|
|
1420
|
-
// When an image is attached, default the run to the configured vision LLM
|
|
1421
|
-
// (config.llm provider/baseUrl/apiKey + llm.visionModel | --vision-model |
|
|
1422
|
-
// doubao default) so `cc agent --image foo.png` works without extra flags.
|
|
1423
|
-
// Explicit --provider/--model/etc. always win; no image 鈫?unchanged.
|
|
1424
|
-
const visionLlm = resolveVisionLlm({
|
|
1425
|
-
hasImage: images.length > 0,
|
|
1426
|
-
flags: {
|
|
1427
|
-
provider: options.provider,
|
|
1428
|
-
model: explicitCliModel,
|
|
1429
|
-
baseUrl: options.baseUrl,
|
|
1430
|
-
apiKey: options.apiKey,
|
|
1431
|
-
visionModel: options.visionModel,
|
|
1432
|
-
},
|
|
1433
|
-
llm: loadConfig().llm || {},
|
|
1434
|
-
});
|
|
1435
|
-
|
|
1436
1420
|
// Config-default LLM (parity with cc ask/chat): a bare `cc agent` honors
|
|
1437
1421
|
// config.json `llm` (provider/model/baseUrl/apiKey) instead of silently
|
|
1438
1422
|
// assuming local ollama 鈥?this is what makes the editor chat panel work
|
|
1439
1423
|
// against a cloud-configured setup. Explicit --provider wins outright;
|
|
1440
|
-
// the
|
|
1441
|
-
//
|
|
1442
|
-
// flags there, and BEFORE every dispatch (headless/stream/REPL) since
|
|
1424
|
+
// resolve the main model before checking whether it can handle images,
|
|
1425
|
+
// and BEFORE every dispatch (headless/stream/REPL) since
|
|
1443
1426
|
// they all read options.provider/model/baseUrl/apiKey.
|
|
1444
1427
|
{
|
|
1445
1428
|
const { applyAgentModelDefaults, reconcileConfigLlmProvider } =
|
|
@@ -1497,6 +1480,21 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1497
1480
|
}
|
|
1498
1481
|
}
|
|
1499
1482
|
|
|
1483
|
+
const visionLlm = resolveVisionLlm({
|
|
1484
|
+
hasImage: images.length > 0,
|
|
1485
|
+
flags: {
|
|
1486
|
+
model: explicitCliModel,
|
|
1487
|
+
visionModel: options.visionModel,
|
|
1488
|
+
},
|
|
1489
|
+
llm: {
|
|
1490
|
+
...loadConfig().llm,
|
|
1491
|
+
provider: options.provider,
|
|
1492
|
+
model: options.model,
|
|
1493
|
+
baseUrl: options.baseUrl,
|
|
1494
|
+
apiKey: options.apiKey,
|
|
1495
|
+
},
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1500
1498
|
// Claude-Code 2.1.183 parity: warn up front if the now-resolved model is
|
|
1501
1499
|
// a provider-retired snapshot, before the run fails with an opaque "model
|
|
1502
1500
|
// not found". (The "auto-updated to a newer model" half is handled by the
|
|
@@ -1980,6 +1978,7 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
1980
1978
|
prompt,
|
|
1981
1979
|
images,
|
|
1982
1980
|
model: visionLlm.model || options.model,
|
|
1981
|
+
visionModel: options.visionModel,
|
|
1983
1982
|
thinking,
|
|
1984
1983
|
thinkingBudget,
|
|
1985
1984
|
provider: visionLlm.provider || options.provider,
|
|
@@ -2239,6 +2238,7 @@ export function registerAgentCommand(program, dependencies = {}) {
|
|
|
2239
2238
|
skillRetrievalRevocationReader,
|
|
2240
2239
|
}).createAgentRuntime({
|
|
2241
2240
|
model: options.model,
|
|
2241
|
+
visionModel: options.visionModel,
|
|
2242
2242
|
thinking,
|
|
2243
2243
|
thinkingBudget,
|
|
2244
2244
|
provider: options.provider,
|
package/src/commands/goal.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import chalk from "chalk";
|
|
21
|
+
import { stripVTControlCharacters } from "node:util";
|
|
21
22
|
import { logger } from "../lib/logger.js";
|
|
22
23
|
|
|
23
24
|
const STATUS_COLOR = {
|
|
@@ -180,7 +181,304 @@ export function registerGoalCommand(program) {
|
|
|
180
181
|
}
|
|
181
182
|
});
|
|
182
183
|
|
|
183
|
-
|
|
184
|
+
goal
|
|
185
|
+
.command("catalog")
|
|
186
|
+
.description(
|
|
187
|
+
"Read a bounded page of standalone goal metadata for selection",
|
|
188
|
+
)
|
|
189
|
+
.option(
|
|
190
|
+
"--after <cursor>",
|
|
191
|
+
"Continue from the previous page in the same store",
|
|
192
|
+
)
|
|
193
|
+
.option("--limit <n>", "Candidates per page (1–20)", "20")
|
|
194
|
+
.option(
|
|
195
|
+
"--connection <file>",
|
|
196
|
+
"Read the single goal in a temporary desktop connection",
|
|
197
|
+
)
|
|
198
|
+
.option("--json", "Output the metadata page as JSON")
|
|
199
|
+
.action(async (options) => {
|
|
200
|
+
try {
|
|
201
|
+
const { readCliGoalCatalog } = await import(
|
|
202
|
+
"../lib/cli-goal-catalog.js"
|
|
203
|
+
);
|
|
204
|
+
const readCatalog =
|
|
205
|
+
options.connection !== undefined
|
|
206
|
+
? (await import("../lib/project-goal-connection.js"))
|
|
207
|
+
.readProjectGoalCatalog
|
|
208
|
+
: readCliGoalCatalog;
|
|
209
|
+
const result = await readCatalog({
|
|
210
|
+
connection: options.connection,
|
|
211
|
+
after: options.after,
|
|
212
|
+
limit: Number(options.limit),
|
|
213
|
+
});
|
|
214
|
+
if (options.json) {
|
|
215
|
+
console.log(JSON.stringify(result, null, 2));
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
for (const entry of result.entries)
|
|
219
|
+
logger.log(
|
|
220
|
+
stripVTControlCharacters(
|
|
221
|
+
`${entry.id} ${entry.status} ${entry.title}`,
|
|
222
|
+
),
|
|
223
|
+
);
|
|
224
|
+
logger.log(
|
|
225
|
+
`Scanned ${result.scannedCount}; skipped ${result.skippedCount} invalid sources; ${result.invalidNameCount} invalid names in directory.`,
|
|
226
|
+
);
|
|
227
|
+
if (result.nextCursor)
|
|
228
|
+
logger.log(`Next page: cc goal catalog --after ${result.nextCursor}`);
|
|
229
|
+
} catch (err) {
|
|
230
|
+
fail("catalog", err);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
goal
|
|
235
|
+
.command("panels <id>")
|
|
236
|
+
.description("Read authorized extension panels for a standalone CLI goal")
|
|
237
|
+
.option("--plugin <name>", "Select one installed plugin")
|
|
238
|
+
.option(
|
|
239
|
+
"--connection <file>",
|
|
240
|
+
"Read through a temporary, explicitly authorized desktop connection",
|
|
241
|
+
)
|
|
242
|
+
.option(
|
|
243
|
+
"--expected-store <storeId>",
|
|
244
|
+
"Require the store selected from goal catalog",
|
|
245
|
+
)
|
|
246
|
+
.option(
|
|
247
|
+
"--scope <scope>",
|
|
248
|
+
"Select its user, project or local install scope",
|
|
249
|
+
)
|
|
250
|
+
.option("--json", "Output the read-only panel snapshot as JSON")
|
|
251
|
+
.action(async (id, options) => {
|
|
252
|
+
try {
|
|
253
|
+
const { readCliGoalExtensionPanels } = await import(
|
|
254
|
+
"../lib/plugin-runtime/cli-goal-extension-host.js"
|
|
255
|
+
);
|
|
256
|
+
const result = await readCliGoalExtensionPanels(id, {
|
|
257
|
+
plugin: options.plugin,
|
|
258
|
+
scope: options.scope,
|
|
259
|
+
expectedStore: options.expectedStore,
|
|
260
|
+
connection: options.connection,
|
|
261
|
+
});
|
|
262
|
+
if (options.json) {
|
|
263
|
+
console.log(JSON.stringify(result, null, 2));
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
logger.log(
|
|
267
|
+
`Goal panel snapshot: ${result.goalRef.id} (revision ${result.goalRef.revision})`,
|
|
268
|
+
);
|
|
269
|
+
for (const panel of result.panels) {
|
|
270
|
+
logger.log(
|
|
271
|
+
stripVTControlCharacters(
|
|
272
|
+
`\n${panel.plugin.name} [${panel.plugin.scope}]\n${panel.text}`,
|
|
273
|
+
),
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
if (!result.panels.length)
|
|
277
|
+
logger.log("No authorized goal panels are available.");
|
|
278
|
+
for (const entry of result.dropped)
|
|
279
|
+
logger.log(
|
|
280
|
+
stripVTControlCharacters(
|
|
281
|
+
` ${entry.name || "plugins"}: ${entry.reason}`,
|
|
282
|
+
),
|
|
283
|
+
);
|
|
284
|
+
} catch (err) {
|
|
285
|
+
fail("panels", err);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
goal
|
|
290
|
+
.command("draft-request <id>")
|
|
291
|
+
.description(
|
|
292
|
+
"Export an untrusted description request for explicit desktop adoption",
|
|
293
|
+
)
|
|
294
|
+
.requiredOption(
|
|
295
|
+
"--connection <file>",
|
|
296
|
+
"Read one explicitly connected desktop goal",
|
|
297
|
+
)
|
|
298
|
+
.requiredOption("--plugin <name>", "Select the installed proposal plugin")
|
|
299
|
+
.requiredOption(
|
|
300
|
+
"--scope <scope>",
|
|
301
|
+
"Select its user, project or local scope",
|
|
302
|
+
)
|
|
303
|
+
.requiredOption(
|
|
304
|
+
"--source <proposalId>",
|
|
305
|
+
"Exact native risk proposal ID copied from the desktop",
|
|
306
|
+
)
|
|
307
|
+
.requiredOption(
|
|
308
|
+
"--request-id <id>",
|
|
309
|
+
"Stable request identity; reuse the same file for retry",
|
|
310
|
+
)
|
|
311
|
+
.requiredOption("--title <text>", "Request title")
|
|
312
|
+
.requiredOption(
|
|
313
|
+
"--description-file <file>",
|
|
314
|
+
"UTF-8 proposed description, at most 8192 bytes",
|
|
315
|
+
)
|
|
316
|
+
.requiredOption(
|
|
317
|
+
"--out <file>",
|
|
318
|
+
"New request file; never overwrites an existing file",
|
|
319
|
+
)
|
|
320
|
+
.option(
|
|
321
|
+
"--expected-store <storeId>",
|
|
322
|
+
"Require the selected project goal store",
|
|
323
|
+
)
|
|
324
|
+
.option("--json", "Output the export result; no native draft is created")
|
|
325
|
+
.action(async (id, options) => {
|
|
326
|
+
try {
|
|
327
|
+
const { exportCliGoalDraftRequest } = await import(
|
|
328
|
+
"../lib/plugin-runtime/cli-goal-draft-request.js"
|
|
329
|
+
);
|
|
330
|
+
const result = await exportCliGoalDraftRequest(id, options);
|
|
331
|
+
if (options.json) console.log(JSON.stringify(result, null, 2));
|
|
332
|
+
else
|
|
333
|
+
logger.log(
|
|
334
|
+
stripVTControlCharacters(
|
|
335
|
+
`Request exported: ${result.file}\nNo native draft has been saved. Import this file in the desktop and review the full text. Request: ${result.requestId}`,
|
|
336
|
+
),
|
|
337
|
+
);
|
|
338
|
+
} catch (error) {
|
|
339
|
+
fail("draft-request", error);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
goal
|
|
344
|
+
.command("draft-access")
|
|
345
|
+
.description(
|
|
346
|
+
"Export a plugin label for separate native pending-draft authorization",
|
|
347
|
+
)
|
|
348
|
+
.requiredOption(
|
|
349
|
+
"--plugin <name>",
|
|
350
|
+
"Select an installed, trusted proposal plugin",
|
|
351
|
+
)
|
|
352
|
+
.requiredOption(
|
|
353
|
+
"--scope <scope>",
|
|
354
|
+
"Its user, project or local installation scope",
|
|
355
|
+
)
|
|
356
|
+
.requiredOption(
|
|
357
|
+
"--out <file>",
|
|
358
|
+
"New access request file; contains no native authority",
|
|
359
|
+
)
|
|
360
|
+
.option("--json", "Output the access export result as JSON")
|
|
361
|
+
.action(async (options) => {
|
|
362
|
+
const captured = {
|
|
363
|
+
...options,
|
|
364
|
+
cwd: process.cwd(),
|
|
365
|
+
env: { ...process.env },
|
|
366
|
+
};
|
|
367
|
+
try {
|
|
368
|
+
const { exportCliGoalDraftAccess } = await import(
|
|
369
|
+
"../lib/plugin-runtime/cli-goal-drafts.js"
|
|
370
|
+
);
|
|
371
|
+
const result = await exportCliGoalDraftAccess(captured);
|
|
372
|
+
if (captured.json) console.log(JSON.stringify(result, null, 2));
|
|
373
|
+
else
|
|
374
|
+
logger.log(
|
|
375
|
+
stripVTControlCharacters(
|
|
376
|
+
`Access request exported: ${result.file}\nOpen it in the desktop for separate native authorization; this file grants no permission.`,
|
|
377
|
+
),
|
|
378
|
+
);
|
|
379
|
+
} catch (error) {
|
|
380
|
+
fail("draft-access", error);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
for (const [name, description] of [
|
|
385
|
+
[
|
|
386
|
+
"draft-sources",
|
|
387
|
+
"Read current source IDs under a v3 pending-draft connection",
|
|
388
|
+
],
|
|
389
|
+
[
|
|
390
|
+
"draft-send",
|
|
391
|
+
"Save one pending suggestion with a durable submission reference",
|
|
392
|
+
],
|
|
393
|
+
["draft-receipt", "Reconcile a recorded submission without resending it"],
|
|
394
|
+
]) {
|
|
395
|
+
const command = goal
|
|
396
|
+
.command(`${name} <id>`)
|
|
397
|
+
.description(description)
|
|
398
|
+
.requiredOption(
|
|
399
|
+
"--connection <file>",
|
|
400
|
+
"Separately authorized v3 desktop pending-draft connection",
|
|
401
|
+
)
|
|
402
|
+
.requiredOption(
|
|
403
|
+
"--plugin <name>",
|
|
404
|
+
"Select the exact installed proposal plugin",
|
|
405
|
+
)
|
|
406
|
+
.requiredOption(
|
|
407
|
+
"--scope <scope>",
|
|
408
|
+
"Its user, project or local installation scope",
|
|
409
|
+
)
|
|
410
|
+
.option(
|
|
411
|
+
"--expected-store <storeId>",
|
|
412
|
+
"Require the selected project goal store",
|
|
413
|
+
)
|
|
414
|
+
.option("--json", "Output the bounded result as JSON");
|
|
415
|
+
if (name === "draft-sources")
|
|
416
|
+
command.option(
|
|
417
|
+
"--after <cursor>",
|
|
418
|
+
"Continue after a returned source cursor",
|
|
419
|
+
);
|
|
420
|
+
else
|
|
421
|
+
command.requiredOption(
|
|
422
|
+
"--record <file>",
|
|
423
|
+
"Durable no-credential submission reference; an existing reference is only queried",
|
|
424
|
+
);
|
|
425
|
+
if (name === "draft-send")
|
|
426
|
+
command
|
|
427
|
+
.requiredOption(
|
|
428
|
+
"--source <proposalId>",
|
|
429
|
+
"Exact source ID returned by draft-sources",
|
|
430
|
+
)
|
|
431
|
+
.requiredOption(
|
|
432
|
+
"--request-id <id>",
|
|
433
|
+
"Stable request identity; preserve it when querying an unknown result",
|
|
434
|
+
)
|
|
435
|
+
.requiredOption("--title <text>", "Pending suggestion title")
|
|
436
|
+
.requiredOption(
|
|
437
|
+
"--description-file <file>",
|
|
438
|
+
"UTF-8 proposed description, at most 8192 bytes",
|
|
439
|
+
);
|
|
440
|
+
command.action(async (id, options) => {
|
|
441
|
+
const captured = {
|
|
442
|
+
...options,
|
|
443
|
+
cwd: process.cwd(),
|
|
444
|
+
env: { ...process.env },
|
|
445
|
+
};
|
|
446
|
+
try {
|
|
447
|
+
const host = await import("../lib/plugin-runtime/cli-goal-drafts.js");
|
|
448
|
+
const run =
|
|
449
|
+
name === "draft-sources"
|
|
450
|
+
? host.readCliGoalDraftSources
|
|
451
|
+
: name === "draft-send"
|
|
452
|
+
? host.sendCliGoalDraft
|
|
453
|
+
: host.readCliGoalDraftReceipt;
|
|
454
|
+
const result = await run(id, captured);
|
|
455
|
+
if (captured.json) console.log(JSON.stringify(result, null, 2));
|
|
456
|
+
else if (name === "draft-sources") {
|
|
457
|
+
for (const source of result.sources.entries)
|
|
458
|
+
logger.log(
|
|
459
|
+
stripVTControlCharacters(
|
|
460
|
+
`${source.id} task ${source.sourceTaskId} review ${source.reviewId}`,
|
|
461
|
+
),
|
|
462
|
+
);
|
|
463
|
+
logger.log(
|
|
464
|
+
`Scanned ${result.sources.scannedCount}; unavailable ${result.sources.unavailableCount}.`,
|
|
465
|
+
);
|
|
466
|
+
if (result.sources.nextCursor)
|
|
467
|
+
logger.log(`Next cursor: ${result.sources.nextCursor}`);
|
|
468
|
+
} else
|
|
469
|
+
logger.log(
|
|
470
|
+
stripVTControlCharacters(
|
|
471
|
+
result.state === "saved"
|
|
472
|
+
? `Pending suggestion saved: ${result.proposalId}\nTask modification still requires native preview and confirmation. Reference: ${result.record}`
|
|
473
|
+
: `${result.state === "unknown" ? "Submission result unknown" : "No matching submission existed at query time"}. No automatic resend was performed.\nQuery the same reference with draft-receipt: ${result.record}`,
|
|
474
|
+
),
|
|
475
|
+
);
|
|
476
|
+
} catch (error) {
|
|
477
|
+
fail(name, error);
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
|
|
184
482
|
const kr = goal.command("kr").description("Manage key results");
|
|
185
483
|
|
|
186
484
|
kr.command("add <id> <text>")
|