chainlesschain 0.166.142 → 0.166.143
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 +107 -2
- 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-BefmcZw2.js → AIOps-DNySV2Kf.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BBlS9rmj.js → ActionButton-ByFuxJsa.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DfNjXT9e.js → Analytics-ETbdywk5.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-CIBZPPMS.js → AppLayout-CuHekZaP.js} +2 -2
- package/src/assets/web-panel/assets/{Artifacts-CE66rTTZ.js → Artifacts-BJJq2BDq.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DOC8Lt8U.js → Audit-DXrietv8.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-9TMG041Q.js → BackgroundAgents-CFB1fxsr.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-us3KWb9F.js → Backup-VLtflRmp.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D6Q95Wr5.js → BaseInput-BbqBaS2r.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BPrM5ARp.js → Chat-t0g7BXL8.js} +1 -1
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-Drs9vSc4.js → ChatBubbleRenderer-JNFsjV0j.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DqZGMV0o.js → Checkbox-BCSclHQb.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CmolL6wr.js → Codegen-BcyINEHT.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BwHSmoYQ.js → Col-C-0WNlwS.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DGWqobpd.js → Community-DxZeoORX.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-t_yy09-r.js → Compact-BNnX4jpz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-D0S8-EsN.js → Compliance-KnjHtn9C.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Y1LiuRwP.js → Cowork-CDyCrhbX.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-FTqEw7QV.js → Cron-DxpS3D1G.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-C3rPZ4Qu.js → Crosschain-BSzTZYyc.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Ba2zySM-.js → DID-Bfj9Vdne.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-D6xyN2ND.js → Dashboard-CcERVdgo.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BF4QuXJw.js → Dropdown-BtYXAz6E.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-s9dUxq14.js → EmailListRenderer-fdCMeGXU.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-CoAKOfqZ.js → EvolutionSettings-LHxhcuF2.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CEznwH1c.js → FamilyGuardDashboard-MIgtLsos.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-rIzOt8-a.js → Federation-9-TOztwa.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BARFiExr.js → FormItemContext-BKcwEE6w.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DI0A4swS.js → GenericCardRenderer-DJBPVUK2.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DdmysND4.js → Git-C_XYISjG.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-DrdhwUz2.js → Governance-DWsbPrwq.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Scm8tumd.js → Inference-D0_bYket.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-_6bgPs4W.js → KnowledgeGraph-BoA3VQlw.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DW_v7bSo.js → Logs-LEGItChf.js} +1 -1
- package/src/assets/web-panel/assets/{MarkdownRenderer-7JABuv1j.js → MarkdownRenderer-DOHVc-Uw.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-0h3YSvME.js → Marketplace-BKovl9NH.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Byrg0Y3e.js → McpTools-D61ktoGb.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-Cyoq-o29.js → Memory-CllorS0l.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-ISIlploU.js → MobileBridge-D-dJ78bk.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-04EncaRx.js → MobileProjects-CaxMKkd3.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BMzkpyOF.js → Mtc-qEc62Qsx.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-Cx7BR5sz.js → MtcAudit-BY68jOZJ.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-D4pmkSX4.js → Multisig-eCCR8ELt.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-CCfaaWNu.js → NLProgramming-VtGv8pky.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Mq-1ZyaH.js → Notes-CPkYQySe.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-rzf5V1TR.js → NotificationSettings-BuAvlHUu.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-OREUs5ue.js → OrderTableRenderer-CLf_HAGv.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BQfOATgw.js → Organization-DjujhMbD.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-D7Pa6aaA.js → Overflow-RznznTS4.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CaJ79ZsC.js → P2P-DSa5ot0t.js} +1 -1
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CtimQQN3.js → PdhVaultBrowser-oSEh6vkf.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-AzmmkLZ0.js → Permissions-CdOZguX9.js} +1 -1
- package/src/assets/web-panel/assets/{PersonalDataHub-BRU8ME7z.js → PersonalDataHub-B4--6iEF.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-BnNqutXh.js → Pipeline-BnI57jE8.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-gMyZcxsz.js → Privacy-C8MId3ad.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CkK-Fvr0.js → ProjectInit-DPGyYO8a.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-CGY_uiIX.js → ProjectSettings-qBMqaJaO.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-DBNC7xXG.js → Projects-Bq87Syce.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BVgWawtE.js → Providers-CVuG9Ugf.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DZILESCa.js → QrScannerModal-C94c8m3q.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DwRBzFWW.js → QuickAsk-BvfsXZ8s.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B3VxvUih.js → Recommend-CoezBYH9.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DM74lufU.js → RemoteSession-CcYC4v3u.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DOOEuGHh.js → Reputation-diDbL4cO.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BZJYAo0S.js → Row-5qp3_fNS.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CYw44jcD.js → RssFeed-BCsMvpV4.js} +1 -1
- package/src/assets/web-panel/assets/{Search-CbypjDNG.js → Search-Br9nVxOp.js} +1 -1
- package/src/assets/web-panel/assets/{Security-0rSBDrXh.js → Security-BdOUzRfA.js} +1 -1
- package/src/assets/web-panel/assets/{Services-kqP79CBD.js → Services-Cp9TqzyN.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-BjxvGVfI.js → Skeleton-DSdWsUMR.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-SOoWyPCO.js → Skills-DRczAMTe.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-kdRVAT19.js → Sla-B6G_Vd8N.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DILtcMaJ.js → SpeechSettings-BCcLx5x4.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-C98Jauc4.js → SyncSettings-BFhwtxCp.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-Bw-KaQAs.js → Tasks-DGRE6VHO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CDJ027Hd.js → Templates-CJkJRFzd.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BqNV62UA.js → Tenant-CAOv6p00.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-B8aQ3GLO.js → Terminal-CDrwwrKj.js} +1 -1
- package/src/assets/web-panel/assets/{TimelineRenderer-BSpccq11.js → TimelineRenderer-DI0YE2SN.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BbGMoFO6.js → Tokens-DmqWTZSG.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-D75Mawa_.js → Trigger-CkXkhmjk.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BiK_Pk05.js → Trust-U8YJLcoJ.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dv2xX_b9.js → UkeySign-BLTozMmr.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CdBWfeEE.js → VideoEditing-DHKyFlZa.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Cvrp4agg.js → Wallet-DapBxIQt.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-D0Htlf3v.js → WebAuthn-CkvG3yOr.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-nuUBOHIF.js → WorkflowEditor-cNLsinXP.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C6MLShIo.js → chat-BzgkgfMC.js} +1 -1
- package/src/assets/web-panel/assets/{colors-9G5FqFOC.js → colors-BPpVKQsb.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-0M49EurU.js → compact-item-zepznuTv.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CiDDLED_.js → createContext-BRto-SQH.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-wZvUczmn.js → hasIn-CqsmU_n6.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0JZ_ccM.js → index-B-bNzvdU.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_XOMujL.js → index-B0Z6rfV-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwX9cOL6.js → index-B9_jRD2e.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwUOiN8M.js → index-BEXKES7V.js} +1 -1
- package/src/assets/web-panel/assets/{index-8jz-X3xg.js → index-BGHd4D8F.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVV2mBbo.js → index-BLwY9y0X.js} +1 -1
- package/src/assets/web-panel/assets/{index-qJcOtd8J.js → index-B_l6gfDh.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6TAOS4G.js → index-BeBxP1M6.js} +1 -1
- package/src/assets/web-panel/assets/{index-C63qiwQz.js → index-BeSzdB7x.js} +1 -1
- package/src/assets/web-panel/assets/{index-k0BVfcwQ.js → index-BuBnM6Kz.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXIY2BIN.js → index-Bz7pG8z3.js} +1 -1
- package/src/assets/web-panel/assets/{index-D51V5vmz.js → index-CBI-7Q3W.js} +1 -1
- package/src/assets/web-panel/assets/{index-BWTcG128.js → index-CTk9gY88.js} +1 -1
- package/src/assets/web-panel/assets/{index-sBsJaBmM.js → index-CdHXVSZ4.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dclwd_lj.js → index-CmPnDXx4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlcOkfzz.js → index-CnezE05k.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOxTmc3k.js → index-CwkhrUmw.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cs66y4oC.js → index-CzoKAiyT.js} +3 -3
- package/src/assets/web-panel/assets/{index-BzeA3eRQ.js → index-DDPmr5Yr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdaLWIz-.js → index-DEbAW3Ec.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvWRS-s7.js → index-DJSn3owP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DN9t1qjW.js → index-DKa_jSfj.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTCIIdoS.js → index-DUclk35X.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmS2P_eX.js → index-DXkw-nt5.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoxzvhoN.js → index-D_-w4KkD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz1SAgnb.js → index-D_asIcU7.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfwJm0DU.js → index-Df_CY0We.js} +1 -1
- package/src/assets/web-panel/assets/{index-JhfNEldK.js → index-Dnvj_XU-.js} +1 -1
- package/src/assets/web-panel/assets/index-DruOFzuF.js +1 -0
- package/src/assets/web-panel/assets/{index-D9J_tLGk.js → index-DvGttIXQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcZxOXd8.js → index-JrVhUwyh.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdUmgLxP.js → index-LVvzNdPa.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTy9gD3m.js → index-Q5sAV7wp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtbFv3Et.js → index-S8fkzbQ_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCfxxScC.js → index-Z6DBe2RU.js} +1 -1
- package/src/assets/web-panel/assets/{index-dJ_V_Fqy.js → index-faHHtBKj.js} +1 -1
- package/src/assets/web-panel/assets/index-hhOrZ6HO.js +1 -0
- package/src/assets/web-panel/assets/{index-DeHSwWVG.js → index-w36TkwyO.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2wN6VIq.js → index-wbvZayBb.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DyIyjurJ.js → initDefaultProps-BlhbrsQk.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B2D0PuTM.js → motion-UZx12NPM.js} +1 -1
- package/src/assets/web-panel/assets/{move-B22T5MnN.js → move-BTby5W4q.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-i4b7HNzF.js → mtc-parser-BOOaGiCg.js} +1 -1
- package/src/assets/web-panel/assets/{omit-ByNIr_gz.js → omit-BVylGzEr.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-_xP2RvxA.js → pickAttrs-Cp3Nflbr.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CVDvzK0z.js → placementArrow-BVXYvwH2.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CI1toXJ_.js → responsiveObserve-C67SbpBN.js} +1 -1
- package/src/assets/web-panel/assets/{slide-2_VosSRQ.js → slide-CnBvM22R.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CMiWWrZC.js → statusUtils-T8fy53tf.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DY8wTVCe.js → styleChecker-Bf7i4nlm.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DkdcgIyl.js → useFlexGapSupport-BUKk7jqw.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-gpl11PEF.js → useFs-T5lg6SpD.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DqnQ0H9y.js → usePersonalDataHub-Brvye8Tg.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CgY9xUvr.js → vnode-CK992ojP.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Ch0jan5_.js → zoom-CcABB_97.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/goal.js +211 -177
- package/src/commands/setup.js +17 -0
- package/src/data/changelog.json +14 -1
- package/src/lib/llm-onboarding-catalog.json +4 -3
- package/src/lib/plugin-runtime/cli-goal-capabilities.js +1 -0
- package/src/lib/plugin-runtime/cli-goal-draft-request.js +24 -10
- package/src/lib/plugin-runtime/cli-goal-drafts.js +77 -30
- package/src/lib/plugin-runtime/examples/goal-task-creator/README.md +60 -0
- package/src/lib/plugin-runtime/examples/goal-task-creator/plugin.json +13 -0
- package/src/lib/plugin-runtime/examples/project-delivery-assistant/README.md +47 -14
- package/src/lib/plugin-runtime/examples/project-delivery-assistant/plugin.json +8 -7
- package/src/lib/plugin-runtime/goal-extensions.js +1 -0
- package/src/lib/project-goal-connection.js +15 -3
- package/src/lib/project-goal-draft-connection.js +18 -11
- package/src/assets/web-panel/assets/index-C101Sec6.js +0 -1
- package/src/assets/web-panel/assets/index-D23TaGOp.js +0 -1
package/src/commands/goal.js
CHANGED
|
@@ -198,9 +198,8 @@ export function registerGoalCommand(program) {
|
|
|
198
198
|
.option("--json", "Output the metadata page as JSON")
|
|
199
199
|
.action(async (options) => {
|
|
200
200
|
try {
|
|
201
|
-
const { readCliGoalCatalog } =
|
|
202
|
-
"../lib/cli-goal-catalog.js"
|
|
203
|
-
);
|
|
201
|
+
const { readCliGoalCatalog } =
|
|
202
|
+
await import("../lib/cli-goal-catalog.js");
|
|
204
203
|
const readCatalog =
|
|
205
204
|
options.connection !== undefined
|
|
206
205
|
? (await import("../lib/project-goal-connection.js"))
|
|
@@ -250,9 +249,8 @@ export function registerGoalCommand(program) {
|
|
|
250
249
|
.option("--json", "Output the read-only panel snapshot as JSON")
|
|
251
250
|
.action(async (id, options) => {
|
|
252
251
|
try {
|
|
253
|
-
const { readCliGoalExtensionPanels } =
|
|
254
|
-
"../lib/plugin-runtime/cli-goal-extension-host.js"
|
|
255
|
-
);
|
|
252
|
+
const { readCliGoalExtensionPanels } =
|
|
253
|
+
await import("../lib/plugin-runtime/cli-goal-extension-host.js");
|
|
256
254
|
const result = await readCliGoalExtensionPanels(id, {
|
|
257
255
|
plugin: options.plugin,
|
|
258
256
|
scope: options.scope,
|
|
@@ -333,9 +331,8 @@ export function registerGoalCommand(program) {
|
|
|
333
331
|
};
|
|
334
332
|
const json = options.json;
|
|
335
333
|
try {
|
|
336
|
-
const { replayCliGoalEvents } =
|
|
337
|
-
"../lib/plugin-runtime/cli-goal-event-history.js"
|
|
338
|
-
);
|
|
334
|
+
const { replayCliGoalEvents } =
|
|
335
|
+
await import("../lib/plugin-runtime/cli-goal-event-history.js");
|
|
339
336
|
await replayCliGoalEvents(id, selection, async (page) => {
|
|
340
337
|
const output = json
|
|
341
338
|
? JSON.stringify(page) + "\n"
|
|
@@ -447,197 +444,234 @@ export function registerGoalCommand(program) {
|
|
|
447
444
|
}
|
|
448
445
|
});
|
|
449
446
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
)
|
|
459
|
-
.requiredOption("--plugin <name>", "Select the installed proposal plugin")
|
|
460
|
-
.requiredOption(
|
|
461
|
-
"--scope <scope>",
|
|
462
|
-
"Select its user, project or local scope",
|
|
463
|
-
)
|
|
464
|
-
.requiredOption(
|
|
465
|
-
"--source <proposalId>",
|
|
466
|
-
"Exact native risk proposal ID copied from the desktop",
|
|
467
|
-
)
|
|
468
|
-
.requiredOption(
|
|
469
|
-
"--request-id <id>",
|
|
470
|
-
"Stable request identity; reuse the same file for retry",
|
|
471
|
-
)
|
|
472
|
-
.requiredOption("--title <text>", "Request title")
|
|
473
|
-
.requiredOption(
|
|
474
|
-
"--description-file <file>",
|
|
475
|
-
"UTF-8 proposed description, at most 8192 bytes",
|
|
476
|
-
)
|
|
477
|
-
.requiredOption(
|
|
478
|
-
"--out <file>",
|
|
479
|
-
"New request file; never overwrites an existing file",
|
|
480
|
-
)
|
|
481
|
-
.option(
|
|
482
|
-
"--expected-store <storeId>",
|
|
483
|
-
"Require the selected project goal store",
|
|
484
|
-
)
|
|
485
|
-
.option("--json", "Output the export result; no native draft is created")
|
|
486
|
-
.action(async (id, options) => {
|
|
487
|
-
try {
|
|
488
|
-
const { exportCliGoalDraftRequest } = await import(
|
|
489
|
-
"../lib/plugin-runtime/cli-goal-draft-request.js"
|
|
490
|
-
);
|
|
491
|
-
const result = await exportCliGoalDraftRequest(id, options);
|
|
492
|
-
if (options.json) console.log(JSON.stringify(result, null, 2));
|
|
493
|
-
else
|
|
494
|
-
logger.log(
|
|
495
|
-
stripVTControlCharacters(
|
|
496
|
-
`Request exported: ${result.file}\nNo native draft has been saved. Import this file in the desktop and review the full text. Request: ${result.requestId}`,
|
|
497
|
-
),
|
|
498
|
-
);
|
|
499
|
-
} catch (error) {
|
|
500
|
-
fail("draft-request", error);
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
goal
|
|
505
|
-
.command("draft-access")
|
|
506
|
-
.description(
|
|
507
|
-
"Export a plugin label for separate native pending-draft authorization",
|
|
508
|
-
)
|
|
509
|
-
.requiredOption(
|
|
510
|
-
"--plugin <name>",
|
|
511
|
-
"Select an installed, trusted proposal plugin",
|
|
512
|
-
)
|
|
513
|
-
.requiredOption(
|
|
514
|
-
"--scope <scope>",
|
|
515
|
-
"Its user, project or local installation scope",
|
|
516
|
-
)
|
|
517
|
-
.requiredOption(
|
|
518
|
-
"--out <file>",
|
|
519
|
-
"New access request file; contains no native authority",
|
|
520
|
-
)
|
|
521
|
-
.option("--json", "Output the access export result as JSON")
|
|
522
|
-
.action(async (options) => {
|
|
523
|
-
const captured = {
|
|
524
|
-
...options,
|
|
525
|
-
cwd: process.cwd(),
|
|
526
|
-
env: { ...process.env },
|
|
527
|
-
};
|
|
528
|
-
try {
|
|
529
|
-
const { exportCliGoalDraftAccess } = await import(
|
|
530
|
-
"../lib/plugin-runtime/cli-goal-drafts.js"
|
|
531
|
-
);
|
|
532
|
-
const result = await exportCliGoalDraftAccess(captured);
|
|
533
|
-
if (captured.json) console.log(JSON.stringify(result, null, 2));
|
|
534
|
-
else
|
|
535
|
-
logger.log(
|
|
536
|
-
stripVTControlCharacters(
|
|
537
|
-
`Access request exported: ${result.file}\nOpen it in the desktop for separate native authorization; this file grants no permission.`,
|
|
538
|
-
),
|
|
539
|
-
);
|
|
540
|
-
} catch (error) {
|
|
541
|
-
fail("draft-access", error);
|
|
542
|
-
}
|
|
543
|
-
});
|
|
544
|
-
|
|
545
|
-
for (const [name, description] of [
|
|
546
|
-
[
|
|
547
|
-
"draft-sources",
|
|
548
|
-
"Read current source IDs under a v3 pending-draft connection",
|
|
549
|
-
],
|
|
550
|
-
[
|
|
551
|
-
"draft-send",
|
|
552
|
-
"Save one pending suggestion with a durable submission reference",
|
|
553
|
-
],
|
|
554
|
-
["draft-receipt", "Reconcile a recorded submission without resending it"],
|
|
555
|
-
]) {
|
|
556
|
-
const command = goal
|
|
557
|
-
.command(`${name} <id>`)
|
|
558
|
-
.description(description)
|
|
447
|
+
for (const creation of [false, true]) {
|
|
448
|
+
const exportCommand = goal
|
|
449
|
+
.command(creation ? "draft-create-request <id>" : "draft-request <id>")
|
|
450
|
+
.description(
|
|
451
|
+
creation
|
|
452
|
+
? "Export an untrusted task-creation request for explicit desktop adoption"
|
|
453
|
+
: "Export an untrusted description request for explicit desktop adoption",
|
|
454
|
+
)
|
|
559
455
|
.requiredOption(
|
|
560
456
|
"--connection <file>",
|
|
561
|
-
"
|
|
457
|
+
"Read one explicitly connected desktop goal",
|
|
562
458
|
)
|
|
459
|
+
.requiredOption("--plugin <name>", "Select the installed proposal plugin")
|
|
563
460
|
.requiredOption(
|
|
564
|
-
"--
|
|
565
|
-
"Select
|
|
461
|
+
"--scope <scope>",
|
|
462
|
+
"Select its user, project or local scope",
|
|
566
463
|
)
|
|
567
464
|
.requiredOption(
|
|
568
|
-
"--
|
|
569
|
-
"
|
|
465
|
+
"--source <proposalId>",
|
|
466
|
+
"Exact native risk proposal ID copied from the desktop",
|
|
467
|
+
)
|
|
468
|
+
.requiredOption(
|
|
469
|
+
"--request-id <id>",
|
|
470
|
+
"Stable request identity; reuse the same file for retry",
|
|
471
|
+
)
|
|
472
|
+
.requiredOption("--title <text>", "Request title")
|
|
473
|
+
.requiredOption(
|
|
474
|
+
"--description-file <file>",
|
|
475
|
+
"UTF-8 proposed description, at most 8192 bytes",
|
|
476
|
+
)
|
|
477
|
+
.requiredOption(
|
|
478
|
+
"--out <file>",
|
|
479
|
+
"New request file; never overwrites an existing file",
|
|
570
480
|
)
|
|
571
481
|
.option(
|
|
572
482
|
"--expected-store <storeId>",
|
|
573
483
|
"Require the selected project goal store",
|
|
574
484
|
)
|
|
575
|
-
.option("--json", "Output the
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
485
|
+
.option("--json", "Output the export result; no native draft is created")
|
|
486
|
+
.action(async (id, options) => {
|
|
487
|
+
try {
|
|
488
|
+
const { exportCliGoalDraftRequest, exportCliGoalTaskCreateRequest } =
|
|
489
|
+
await import("../lib/plugin-runtime/cli-goal-draft-request.js");
|
|
490
|
+
const result = await (
|
|
491
|
+
creation
|
|
492
|
+
? exportCliGoalTaskCreateRequest
|
|
493
|
+
: exportCliGoalDraftRequest
|
|
494
|
+
)(id, options);
|
|
495
|
+
if (options.json) console.log(JSON.stringify(result, null, 2));
|
|
496
|
+
else
|
|
497
|
+
logger.log(
|
|
498
|
+
stripVTControlCharacters(
|
|
499
|
+
`Request exported: ${result.file}\nNo native draft has been saved. Import this file in the desktop and review the full text. Request: ${result.requestId}`,
|
|
500
|
+
),
|
|
501
|
+
);
|
|
502
|
+
} catch (error) {
|
|
503
|
+
fail(creation ? "draft-create-request" : "draft-request", error);
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
if (creation)
|
|
507
|
+
exportCommand.requiredOption(
|
|
508
|
+
"--task-type <type>",
|
|
509
|
+
"Explicit native task type for this pending creation request",
|
|
585
510
|
);
|
|
586
|
-
|
|
587
|
-
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
for (const creation of [false, true]) {
|
|
514
|
+
goal
|
|
515
|
+
.command(creation ? "draft-create-access" : "draft-access")
|
|
516
|
+
.description(
|
|
517
|
+
"Export a plugin label for separate native pending-draft authorization",
|
|
518
|
+
)
|
|
519
|
+
.requiredOption(
|
|
520
|
+
"--plugin <name>",
|
|
521
|
+
"Select an installed, trusted proposal plugin",
|
|
522
|
+
)
|
|
523
|
+
.requiredOption(
|
|
524
|
+
"--scope <scope>",
|
|
525
|
+
"Its user, project or local installation scope",
|
|
526
|
+
)
|
|
527
|
+
.requiredOption(
|
|
528
|
+
"--out <file>",
|
|
529
|
+
"New access request file; contains no native authority",
|
|
530
|
+
)
|
|
531
|
+
.option("--json", "Output the access export result as JSON")
|
|
532
|
+
.action(async (options) => {
|
|
533
|
+
const captured = {
|
|
534
|
+
...options,
|
|
535
|
+
cwd: process.cwd(),
|
|
536
|
+
env: { ...process.env },
|
|
537
|
+
};
|
|
538
|
+
try {
|
|
539
|
+
const { exportCliGoalDraftAccess, exportCliGoalCreateDraftAccess } =
|
|
540
|
+
await import("../lib/plugin-runtime/cli-goal-drafts.js");
|
|
541
|
+
const result = await (
|
|
542
|
+
creation ? exportCliGoalCreateDraftAccess : exportCliGoalDraftAccess
|
|
543
|
+
)(captured);
|
|
544
|
+
if (captured.json) console.log(JSON.stringify(result, null, 2));
|
|
545
|
+
else
|
|
546
|
+
logger.log(
|
|
547
|
+
stripVTControlCharacters(
|
|
548
|
+
`Access request exported: ${result.file}\nOpen it in the desktop for separate native authorization; this file grants no permission.`,
|
|
549
|
+
),
|
|
550
|
+
);
|
|
551
|
+
} catch (error) {
|
|
552
|
+
fail(creation ? "draft-create-access" : "draft-access", error);
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
for (const creation of [false, true]) {
|
|
558
|
+
for (const [name, description] of [
|
|
559
|
+
[
|
|
560
|
+
"draft-sources",
|
|
561
|
+
"Read current source IDs under a v3 pending-draft connection",
|
|
562
|
+
],
|
|
563
|
+
[
|
|
564
|
+
"draft-send",
|
|
565
|
+
"Save one pending suggestion with a durable submission reference",
|
|
566
|
+
],
|
|
567
|
+
["draft-receipt", "Reconcile a recorded submission without resending it"],
|
|
568
|
+
]) {
|
|
569
|
+
const command = goal
|
|
570
|
+
.command(
|
|
571
|
+
`${creation ? name.replace("draft-", "draft-create-") : name} <id>`,
|
|
572
|
+
)
|
|
573
|
+
.description(
|
|
574
|
+
creation ? description.replace("v3", "v6 creation") : description,
|
|
575
|
+
)
|
|
588
576
|
.requiredOption(
|
|
589
|
-
"--
|
|
590
|
-
|
|
577
|
+
"--connection <file>",
|
|
578
|
+
creation
|
|
579
|
+
? "Separately authorized v6 creation pending-draft connection"
|
|
580
|
+
: "Separately authorized v3 desktop pending-draft connection",
|
|
591
581
|
)
|
|
592
582
|
.requiredOption(
|
|
593
|
-
"--
|
|
594
|
-
"
|
|
583
|
+
"--plugin <name>",
|
|
584
|
+
"Select the exact installed proposal plugin",
|
|
595
585
|
)
|
|
596
|
-
.requiredOption("--title <text>", "Pending suggestion title")
|
|
597
586
|
.requiredOption(
|
|
598
|
-
"--
|
|
599
|
-
"
|
|
587
|
+
"--scope <scope>",
|
|
588
|
+
"Its user, project or local installation scope",
|
|
589
|
+
)
|
|
590
|
+
.option(
|
|
591
|
+
"--expected-store <storeId>",
|
|
592
|
+
"Require the selected project goal store",
|
|
593
|
+
)
|
|
594
|
+
.option("--json", "Output the bounded result as JSON");
|
|
595
|
+
if (name === "draft-sources")
|
|
596
|
+
command.option(
|
|
597
|
+
"--after <cursor>",
|
|
598
|
+
"Continue after a returned source cursor",
|
|
600
599
|
);
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
600
|
+
else
|
|
601
|
+
command.requiredOption(
|
|
602
|
+
"--record <file>",
|
|
603
|
+
"Durable no-credential submission reference; an existing reference is only queried",
|
|
604
|
+
);
|
|
605
|
+
if (name === "draft-send")
|
|
606
|
+
command
|
|
607
|
+
.requiredOption(
|
|
608
|
+
"--source <proposalId>",
|
|
609
|
+
"Exact source ID returned by draft-sources",
|
|
610
|
+
)
|
|
611
|
+
.requiredOption(
|
|
612
|
+
"--request-id <id>",
|
|
613
|
+
"Stable request identity; preserve it when querying an unknown result",
|
|
614
|
+
)
|
|
615
|
+
.requiredOption("--title <text>", "Pending suggestion title")
|
|
616
|
+
.requiredOption(
|
|
617
|
+
"--description-file <file>",
|
|
618
|
+
"UTF-8 proposed description, at most 8192 bytes",
|
|
619
|
+
);
|
|
620
|
+
if (creation && name === "draft-send")
|
|
621
|
+
command.requiredOption(
|
|
622
|
+
"--task-type <type>",
|
|
623
|
+
"Explicit native task type; saved pending only",
|
|
624
|
+
);
|
|
625
|
+
command.action(async (id, options) => {
|
|
626
|
+
const captured = {
|
|
627
|
+
...options,
|
|
628
|
+
cwd: process.cwd(),
|
|
629
|
+
env: { ...process.env },
|
|
630
|
+
};
|
|
631
|
+
try {
|
|
632
|
+
const host = await import("../lib/plugin-runtime/cli-goal-drafts.js");
|
|
633
|
+
const run =
|
|
634
|
+
name === "draft-sources"
|
|
635
|
+
? creation
|
|
636
|
+
? host.readCliGoalCreateDraftSources
|
|
637
|
+
: host.readCliGoalDraftSources
|
|
638
|
+
: name === "draft-send"
|
|
639
|
+
? creation
|
|
640
|
+
? host.sendCliGoalCreateDraft
|
|
641
|
+
: host.sendCliGoalDraft
|
|
642
|
+
: creation
|
|
643
|
+
? host.readCliGoalCreateDraftReceipt
|
|
644
|
+
: host.readCliGoalDraftReceipt;
|
|
645
|
+
const result = await run(id, captured);
|
|
646
|
+
if (captured.json) console.log(JSON.stringify(result, null, 2));
|
|
647
|
+
else if (name === "draft-sources") {
|
|
648
|
+
for (const source of result.sources.entries)
|
|
649
|
+
logger.log(
|
|
650
|
+
stripVTControlCharacters(
|
|
651
|
+
`${source.id} task ${source.sourceTaskId} review ${source.reviewId}`,
|
|
652
|
+
),
|
|
653
|
+
);
|
|
654
|
+
logger.log(
|
|
655
|
+
`Scanned ${result.sources.scannedCount}; unavailable ${result.sources.unavailableCount}.`,
|
|
656
|
+
);
|
|
657
|
+
if (result.sources.nextCursor)
|
|
658
|
+
logger.log(`Next cursor: ${result.sources.nextCursor}`);
|
|
659
|
+
} else
|
|
619
660
|
logger.log(
|
|
620
661
|
stripVTControlCharacters(
|
|
621
|
-
|
|
662
|
+
result.state === "saved"
|
|
663
|
+
? `Pending suggestion saved: ${result.proposalId}\nTask ${creation ? "creation" : "modification"} still requires native preview and confirmation. Reference: ${result.record}`
|
|
664
|
+
: `${result.state === "unknown" ? "Submission result unknown" : "No matching submission existed at query time"}. No automatic resend was performed.\nQuery the same reference with ${creation ? "draft-create-receipt" : "draft-receipt"}: ${result.record}`,
|
|
622
665
|
),
|
|
623
666
|
);
|
|
624
|
-
|
|
625
|
-
|
|
667
|
+
} catch (error) {
|
|
668
|
+
fail(
|
|
669
|
+
creation ? name.replace("draft-", "draft-create-") : name,
|
|
670
|
+
error,
|
|
626
671
|
);
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
logger.log(
|
|
631
|
-
stripVTControlCharacters(
|
|
632
|
-
result.state === "saved"
|
|
633
|
-
? `Pending suggestion saved: ${result.proposalId}\nTask modification still requires native preview and confirmation. Reference: ${result.record}`
|
|
634
|
-
: `${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}`,
|
|
635
|
-
),
|
|
636
|
-
);
|
|
637
|
-
} catch (error) {
|
|
638
|
-
fail(name, error);
|
|
639
|
-
}
|
|
640
|
-
});
|
|
672
|
+
}
|
|
673
|
+
});
|
|
674
|
+
}
|
|
641
675
|
}
|
|
642
676
|
|
|
643
677
|
const kr = goal.command("kr").description("Manage key results");
|
package/src/commands/setup.js
CHANGED
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
askPassword,
|
|
28
28
|
} from "../lib/prompts.js";
|
|
29
29
|
import logger from "../lib/logger.js";
|
|
30
|
+
import { normalizeLlmEndpoint } from "../lib/llm-connection-resolution.js";
|
|
30
31
|
import {
|
|
31
32
|
assessEvolutionDeploymentReadiness,
|
|
32
33
|
getEvolutionDeploymentStatus,
|
|
@@ -151,6 +152,10 @@ async function runSetup(options) {
|
|
|
151
152
|
// Abort before changing provider/baseUrl so an old provider's credential
|
|
152
153
|
// can never be paired with and sent to a newly selected endpoint.
|
|
153
154
|
assertRequiredProviderCredential(providerInfo, apiKey);
|
|
155
|
+
} else if (provider === "custom") {
|
|
156
|
+
apiKey = await askPassword(
|
|
157
|
+
"Enter the platform API key (optional; leave blank if not required):",
|
|
158
|
+
);
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
if (provider === "custom" || providerInfo.isProxy) {
|
|
@@ -187,6 +192,18 @@ async function runSetup(options) {
|
|
|
187
192
|
|
|
188
193
|
// Step 7: Save config
|
|
189
194
|
const applySetupValues = (config) => {
|
|
195
|
+
const previous = config.llm || {};
|
|
196
|
+
const sameTarget =
|
|
197
|
+
previous.provider === provider &&
|
|
198
|
+
normalizeLlmEndpoint(
|
|
199
|
+
provider,
|
|
200
|
+
previous.baseUrl || providerInfo.defaultBaseUrl,
|
|
201
|
+
) === normalizeLlmEndpoint(provider, baseUrl);
|
|
202
|
+
if (provider === "custom" && !apiKey && !sameTarget) {
|
|
203
|
+
delete previous.apiKey;
|
|
204
|
+
delete previous.apiKeyHelper;
|
|
205
|
+
}
|
|
206
|
+
config.llm = previous;
|
|
190
207
|
config.setupCompleted = true;
|
|
191
208
|
config.completedAt = new Date().toISOString();
|
|
192
209
|
config.edition = edition;
|
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.166.143",
|
|
7
|
+
"cliVersions": ["0.166.143"],
|
|
8
|
+
"date": "2026-11-06",
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Added - cc CLI 0.166.143: local compute and pending task creation (candidate, 2026-11-06)",
|
|
13
|
+
"body": "- Pair Session Core 0.3.26, Open VSX 0.37.179 and JetBrains 0.4.196 after exact-source three-OS gates and OIDC upstream publication/readback.\n- Add local OpenAI-compatible platform choices (LEXDATA / vLLM / SGLang) in both IDEs, optional platform credentials, explicit HTTP consent and atomic configuration/readback; do not reuse old target credentials when switching keyless endpoints.\n- Add controlled goal task-creation request files, v6 pending-draft connections and the admitted project-delivery-assistant 0.3.0 declaration; native preview/confirmation and matching desktop support remain required.\n- Desktop source also includes per-call governed Ollama, Volcengine and private OpenAI drafting, Memory output authorization and durable no-retry recovery. This release does not publish desktop/mobile clients.\n- Preserve the two synthetic real Volcengine cases (1,176 tokens, unknown cost) separately from the 374 focused regressions/22 checks. LEXDATA actual inference, real GUI and independent business-effect acceptance remain unverified."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
4
17
|
{
|
|
5
18
|
"productVersion": null,
|
|
6
19
|
"cliVersion": "0.166.142",
|
|
@@ -9,7 +22,7 @@
|
|
|
9
22
|
"title": "",
|
|
10
23
|
"sections": [
|
|
11
24
|
{
|
|
12
|
-
"heading": "Added - cc CLI 0.166.142: authorized goal events and retained recovery (
|
|
25
|
+
"heading": "Added - cc CLI 0.166.142: authorized goal events and retained recovery (released, 2026-11-05)",
|
|
13
26
|
"body": "- Add standalone status and separately authorized native risk/action observation, plus a transactional retained event journal in Session Core 0.3.25.\n- Add one-page CLI replay with durable new/resume checkpoints, at-least-once delivery, and explicit VS Code / JetBrains recovery controls.\n- Compose the data-only project-delivery-assistant 0.2.0 scenario with full declaration consent and per-operation capability limits; native confirmation remains separate from pending drafts.\n- Pair Open VSX 0.37.178 and JetBrains 0.4.195 only after the exact-source CLI matrices, OIDC publication and public package verification. Real GUI and business-effect acceptance remain separate."
|
|
14
27
|
}
|
|
15
28
|
]
|
|
@@ -121,11 +121,12 @@
|
|
|
121
121
|
},
|
|
122
122
|
{
|
|
123
123
|
"id": "custom",
|
|
124
|
-
"label": "
|
|
125
|
-
"cliLabel": "
|
|
124
|
+
"label": "Local compute / OpenAI compatible (LEXDATA / vLLM / SGLang)",
|
|
125
|
+
"cliLabel": "本地算力平台 / OpenAI 兼容 (力数/vLLM/SGLang等)",
|
|
126
126
|
"baseUrl": "",
|
|
127
127
|
"defaultModel": "",
|
|
128
|
-
"needsKey":
|
|
128
|
+
"needsKey": false,
|
|
129
|
+
"visionModel": ""
|
|
129
130
|
}
|
|
130
131
|
]
|
|
131
132
|
}
|
|
@@ -3,9 +3,11 @@ import path from "node:path";
|
|
|
3
3
|
import { cliGoalExtensionHost } from "./cli-goal-capabilities.js";
|
|
4
4
|
import { createProjectGoalConnection } from "../project-goal-connection.js";
|
|
5
5
|
import { collectGoalExtensions } from "./goal-extensions.js";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
createGoalDraftRequest,
|
|
8
|
+
createGoalTaskCreateRequest,
|
|
9
|
+
} from "@chainlesschain/session-core/goal-draft-request-contract";
|
|
7
10
|
import { digestBusinessObjectContent as digest } from "@chainlesschain/session-core/business-object-contract";
|
|
8
|
-
const HOST = cliGoalExtensionHost(["proposal:task.description.update"]);
|
|
9
11
|
function fail(code) {
|
|
10
12
|
throw new Error(code);
|
|
11
13
|
}
|
|
@@ -49,12 +51,19 @@ export function readGoalDraftDescription(file) {
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
export async function exportCliGoalDraftRequest(id, options = {}) {
|
|
54
|
+
return exportRequest(id, options, false);
|
|
55
|
+
}
|
|
56
|
+
export async function exportCliGoalTaskCreateRequest(id, options = {}) {
|
|
57
|
+
return exportRequest(id, options, true);
|
|
58
|
+
}
|
|
59
|
+
async function exportRequest(id, options, creation) {
|
|
52
60
|
options = Object.freeze({
|
|
53
61
|
...options,
|
|
54
62
|
env: Object.freeze({ ...(options.env || process.env) }),
|
|
55
63
|
});
|
|
56
64
|
const cwd = path.resolve(options.cwd || process.cwd()),
|
|
57
65
|
env = Object.freeze({ ...(options.env || process.env) });
|
|
66
|
+
const type = creation ? "task.create" : "task.description.update";
|
|
58
67
|
if (
|
|
59
68
|
!options.connection ||
|
|
60
69
|
!options.plugin ||
|
|
@@ -73,7 +82,7 @@ export async function exportCliGoalDraftRequest(id, options = {}) {
|
|
|
73
82
|
const hostOptions = {
|
|
74
83
|
cwd,
|
|
75
84
|
env,
|
|
76
|
-
host:
|
|
85
|
+
host: cliGoalExtensionHost([`proposal:${type}`]),
|
|
77
86
|
managedSettingsFile: options.managedSettingsFile,
|
|
78
87
|
};
|
|
79
88
|
const admitted = () =>
|
|
@@ -81,12 +90,11 @@ export async function exportCliGoalDraftRequest(id, options = {}) {
|
|
|
81
90
|
(entry) => entry.name === options.plugin && entry.scope === options.scope,
|
|
82
91
|
);
|
|
83
92
|
const plugin = admitted();
|
|
84
|
-
if (
|
|
85
|
-
!plugin ||
|
|
86
|
-
!plugin.declaration.proposals.includes("task.description.update")
|
|
87
|
-
)
|
|
93
|
+
if (!plugin || !plugin.declaration.proposals.includes(type))
|
|
88
94
|
fail("GOAL_DRAFT_PLUGIN_NOT_ADMITTED");
|
|
89
|
-
const request =
|
|
95
|
+
const request = (
|
|
96
|
+
creation ? createGoalTaskCreateRequest : createGoalDraftRequest
|
|
97
|
+
)({
|
|
90
98
|
declaredPlugin: {
|
|
91
99
|
name: plugin.name,
|
|
92
100
|
scope: plugin.scope,
|
|
@@ -94,7 +102,8 @@ export async function exportCliGoalDraftRequest(id, options = {}) {
|
|
|
94
102
|
},
|
|
95
103
|
declarationDigest: digest(plugin.declaration),
|
|
96
104
|
proposal: {
|
|
97
|
-
type
|
|
105
|
+
type,
|
|
106
|
+
...(creation ? { taskType: options.taskType } : {}),
|
|
98
107
|
goalRef: snapshot.goalRef,
|
|
99
108
|
sourceRef: options.source,
|
|
100
109
|
requestId: options.requestId,
|
|
@@ -123,12 +132,17 @@ export async function exportCliGoalDraftRequest(id, options = {}) {
|
|
|
123
132
|
fs.closeSync(fd);
|
|
124
133
|
}
|
|
125
134
|
return {
|
|
126
|
-
schema:
|
|
135
|
+
schema: creation
|
|
136
|
+
? "chainlesschain.goal-task-create-export/v1"
|
|
137
|
+
: "chainlesschain.goal-draft-export/v1",
|
|
127
138
|
state: "request-exported",
|
|
128
139
|
goalRef: request.proposal.goalRef,
|
|
129
140
|
declaredPlugin: request.declaredPlugin,
|
|
130
141
|
requestId: request.proposal.requestId,
|
|
131
142
|
contentDigest: request.contentDigest,
|
|
132
143
|
file,
|
|
144
|
+
...(creation
|
|
145
|
+
? { type: "task.create", taskType: request.proposal.taskType }
|
|
146
|
+
: {}),
|
|
133
147
|
};
|
|
134
148
|
}
|