chainlesschain 0.162.77 → 0.162.79
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 +37 -1
- package/bin/chainlesschain.js +20 -1
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps--t6qElO3.js → AIOps-D89fD_7T.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-vRiifAww.js → ActionButton-d75flwX8.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BfSlGprA.js → Analytics-gvvBEb4T.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-B6L2I5ld.js → AppLayout-DzHOVS64.js} +4 -4
- package/src/assets/web-panel/assets/{Audit-Dwpk7vO2.js → Audit-15K7MhRC.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D7UuR3M8.js → Backup-BgVHsglI.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BzMDBTyZ.js → BaseInput-BRnvd4sF.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BxYUynGU.js → Chat-B2vtXu7s.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BYyCFqO0.js → ChatBubbleRenderer-d1EFM3dh.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DgpLcrjA.js → Checkbox-B5uV5Jhr.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-N5dSkUbq.js → Codegen-cVDMBVGV.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C1nf7jzT.js → Col-DtL6q7Hw.js} +1 -1
- package/src/assets/web-panel/assets/{Community-BuX21CEd.js → Community-DSyPZkqQ.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-M37IFQe_.js → Compact-CzfV_q4O.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-B_OBnXJx.js → Compliance-B_xhhLE1.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BcIn7Sb2.js → Cowork-Y49Qf0JX.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BtmA9AMI.js → Cron-B7JG-oLj.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-DlAiW2Iy.js → Crosschain-CukEkQtf.js} +1 -1
- package/src/assets/web-panel/assets/{DID-91Skenc5.js → DID-Bd4UVKdn.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BTzcKrw1.js → Dashboard-DRCQl7H1.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-VNCZqfkL.js → Dropdown-De47CuRY.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-B_o62liK.js → EmailListRenderer-C-wAkceB.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BqceYpym.js → FamilyGuardDashboard-DhLF_E0k.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BJFcp8S0.js → Federation-DAipUS1m.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DwsPen2h.js → FormItemContext-BCFyAd2j.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BOU0nfJP.js → GenericCardRenderer-wMdxrEV9.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C_92Ngor.js → Git-CcwP7HUN.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-SIBJc353.js → Governance-VF760JcB.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DcEwRh8C.js → Inference-DnR-GIn2.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-C4LQ8MJI.js → KnowledgeGraph-j-ewVKWO.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BXz2tihi.js → Logs-DgB7wSor.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DqXKQJ2n.js → Marketplace-fiKjzVWE.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CXVGQSUd.js → McpTools-BjXSMQrd.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-Bp8huWkt.js → Memory-C0L5lnSS.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-B3duw6FB.js → MobileBridge-C0Rgg1Su.js} +3 -3
- package/src/assets/web-panel/assets/{MobileProjects-Cn5YO60O.js → MobileProjects-BPA50hQb.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CE_M_-1m.js → Mtc-BUsHuAjB.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-Dev-y1Ei.js → MtcAudit-dlH8Q_7U.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-RILPE0-i.js → Multisig-L3_9beuW.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DsBeFM0w.js → NLProgramming-BG4sXy27.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-MONi8b1b.js → Notes-felgIvGS.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-mXNink9t.js → NotificationSettings-DHDT96AK.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Bvtv8CHQ.js → OrderTableRenderer-BYrkEfvR.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-_7rEqDWP.js → Organization-DdtOLkHG.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-CuqybwI0.js → Overflow-DLw5Pni7.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BvYN2SXJ.js → P2P-B-mZ5EXz.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BWGnb4i0.js → PdhVaultBrowser-DeOmNCwK.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-D2vyDMm6.js → Permissions-BeQMX71K.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BWaT70CA.js → PersonalDataHub-D5PoqtQI.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-T_Pztk-K.js → Pipeline-B0f5sqKF.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BTChzeM8.js → Privacy-Dj_gcxio.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BQQBICYM.js → ProjectInit-DmfPgied.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BOLO_fhW.js → ProjectSettings-BmBfocrv.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BfqkBhzi.js → Projects-BUif48cc.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DpWEAYh2.js → Providers-B0ztEAOV.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-MX8kg-uO.js → QuickAsk-BtMG4jH5.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-UOCp-h2X.js → Recommend-DQKN1En8.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-H_vE2kEf.js → Reputation-D34CvUxg.js} +1 -1
- package/src/assets/web-panel/assets/{Row-dupAolkD.js → Row-nnuDNx31.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DVoerh51.js → RssFeed-DHx9x8_B.js} +2 -2
- package/src/assets/web-panel/assets/{Search-5zxC_iWb.js → Search-CH-JYtn_.js} +1 -1
- package/src/assets/web-panel/assets/{Security-vg3XxdEZ.js → Security-nNKBmzm4.js} +3 -3
- package/src/assets/web-panel/assets/{Services-CWjum0P4.js → Services-xYk_lDxy.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BkVnAX7_.js → Skeleton-DTYyRduA.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-2oMJr3sU.js → Skills-DS19-9sF.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Bv8uLcr_.js → Sla-Cr_ir42Y.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BfvawAGM.js → SpeechSettings-Ch5Iq7Wy.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DzWmsU8K.js → SyncSettings-CTblfa_E.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-cbtuyShK.js → Tasks-z7lz3hjG.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-PP2omXNk.js → Templates-DGoMFd4r.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-Cab9qgCx.js → Tenant-DQUPvHxx.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-9kFA0Vf8.js → Terminal-Wt2wrbE6.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Cx8kncEg.js → TimelineRenderer-DGTc2UqL.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-D19NKMv_.js → Tokens-DPVnuARF.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DbRaTJsm.js → Trigger-DV5MPXC1.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-8EFY9ZrM.js → Trust-BBkMKqwS.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign--wxy-nr4.js → UkeySign-B_2E0qev.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BlRqqo2c.js → VideoEditing-CA-qKeVb.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-B2x_RfaK.js → Wallet-Ds4WURh-.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-DISokPYb.js → WebAuthn-BApiHjzz.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-DkuLYA12.js → WorkflowEditor-DFzmAnzV.js} +1 -1
- package/src/assets/web-panel/assets/{chat-MMwBSP3l.js → chat-DZ6sHPit.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CPP3K6Jb.js → colors-DgbwhHtE.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-2ruYr7FB.js → compact-item-C4QVYSzd.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BPpiGxaR.js → createContext-yXIs4TwU.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-C-HfIeF7.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CtP3Uqy-.js → hasIn-CPtuUtBl.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpBaxHIL.js → index-4g6pGxnX.js} +1 -1
- package/src/assets/web-panel/assets/{index-9SEWDDhb.js → index-B91hax9S.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2N_-y_W.js → index-B9DUiQ24.js} +3 -3
- package/src/assets/web-panel/assets/index-BBgWatYO.js +1 -0
- package/src/assets/web-panel/assets/{index-2cESIQ4O.js → index-BCb7MYMS.js} +1 -1
- package/src/assets/web-panel/assets/{index-D05imMj-.js → index-BIAxMDe9.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bq8gB01i.js → index-BJiGrT6V.js} +1 -1
- package/src/assets/web-panel/assets/{index-BM_RMGj5.js → index-BOKVSmKh.js} +1 -1
- package/src/assets/web-panel/assets/{index-COSm6DcE.js → index-BWJGry74.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bf1tNEoB.js → index-BaVYCMJa.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyCZ3fz1.js → index-Bd0JznCS.js} +1 -1
- package/src/assets/web-panel/assets/{index-oaNSovPm.js → index-BpBCKK6W.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSNoOIwN.js → index-BsXF9cn5.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIQO-prS.js → index-BxclR5gc.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6qsWs-4.js → index-C0LyE6R6.js} +1 -1
- package/src/assets/web-panel/assets/{index-COPqJgcW.js → index-CBAgy5pf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLAT0M1t.js → index-CJ550XXg.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7-Zo0uW.js → index-CTlz3MP6.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dc1ysHqq.js → index-CaC4gaQZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-6Sly6NDj.js → index-CnP2ftM5.js} +1 -1
- package/src/assets/web-panel/assets/index-CvCTol_u.js +1 -0
- package/src/assets/web-panel/assets/{index-Bjthf-eJ.js → index-D2KRfjEI.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bfr1HIma.js → index-DA0ePxNn.js} +1 -1
- package/src/assets/web-panel/assets/{index-Byddazfj.js → index-DC5iP1VB.js} +1 -1
- package/src/assets/web-panel/assets/{index-BkqTFggQ.js → index-DCGmeXfl.js} +1 -1
- package/src/assets/web-panel/assets/{index-BM7y07U3.js → index-DHnWI0jj.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZrah8Gb.js → index-DN4qpkKQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DS_ISOVj.js → index-DTLaRwKx.js} +1 -1
- package/src/assets/web-panel/assets/{index-DO_a65ut.js → index-DdFjcgqH.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dy85x86R.js → index-DopuoTzG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXGebJnR.js → index-DpDAGvyU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUQp8MdV.js → index-EGVlUtH-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cru4qTvK.js → index-IFh9qCi0.js} +1 -1
- package/src/assets/web-panel/assets/{index-oD_rJWBp.js → index-UEeNpaDD.js} +1 -1
- package/src/assets/web-panel/assets/{index-DzFVlsbg.js → index-ZCyyy3Zt.js} +1 -1
- package/src/assets/web-panel/assets/{index-h-zAHKNr.js → index-aKZjRwjv.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5g378QF.js → index-jBlY6-bF.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZyr02ib.js → index-kbcTc6Pf.js} +1 -1
- package/src/assets/web-panel/assets/{index-P_R2pJ9q.js → index-x9bXmSNB.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BrJf63uk.js → initDefaultProps-BDsxioXk.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BD8UoaTG.js → motion-erZ2fiIQ.js} +1 -1
- package/src/assets/web-panel/assets/{move-DbunBKV-.js → move-BFiiw4WK.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CkGNCa-h.js → omit-BRMVd4pM.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DTvTrHC2.js → pickAttrs-CGjoFXsq.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Cb7oz9vL.js → placementArrow-DU_Bnf7w.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-O7lB6MAE.js → responsiveObserve-DPdkYupg.js} +1 -1
- package/src/assets/web-panel/assets/{slide-C24m1SKv.js → slide-JfHiG96y.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-D_-9GtZ3.js → statusUtils-Dy-1guyd.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CrAYF9jD.js → styleChecker-Chaljnux.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CmgeoVPN.js → useFlexGapSupport-DOHIHBgY.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DzJSzGsy.js → useFs-BxSoQhIY.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Bgqky5YK.js → usePersonalDataHub-MOR76PYB.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-ErTJLgr4.js → vnode-BBGIyeYD.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-wlf3cppM.js → zoom-C1oFENec.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/audit.js +4 -3
- package/src/commands/automation.js +6 -14
- package/src/commands/bi.js +10 -9
- package/src/commands/codegen.js +5 -13
- package/src/commands/dao.js +8 -6
- package/src/commands/dbevo.js +13 -14
- package/src/commands/economy.js +3 -2
- package/src/commands/evolution.js +3 -2
- package/src/commands/federation.js +4 -3
- package/src/commands/governance.js +9 -4
- package/src/commands/hardening.js +5 -4
- package/src/commands/incentive.js +6 -5
- package/src/commands/kg.js +17 -10
- package/src/commands/lowcode.js +23 -11
- package/src/commands/marketplace.js +4 -3
- package/src/commands/mcp.js +17 -5
- package/src/commands/ops.js +9 -4
- package/src/commands/recommend.js +7 -5
- package/src/commands/scim.js +3 -2
- package/src/commands/session.js +9 -6
- package/src/commands/social.js +4 -3
- package/src/commands/sync.js +3 -2
- package/src/commands/tenant.js +11 -6
- package/src/commands/zkp.js +8 -9
- package/src/gateways/ws/ws-agent-handler.js +12 -3
- package/src/gateways/ws/ws-server.js +6 -0
- package/src/harness/background-task-manager.js +44 -18
- package/src/harness/mcp-client.js +125 -46
- package/src/lib/agent-core.js +2 -1
- package/src/lib/chat-core.js +209 -107
- package/src/lib/claude-code-bridge.js +13 -1
- package/src/lib/dao-governance.js +3 -3
- package/src/lib/downloader.js +82 -25
- package/src/lib/headless-config-command.js +62 -0
- package/src/lib/json-schema-output.js +55 -11
- package/src/lib/mcp-oauth.js +110 -21
- package/src/lib/mcp-serve.js +70 -11
- package/src/lib/multisig-runtime.js +22 -3
- package/src/lib/parse-json-option.js +35 -0
- package/src/lib/parse-number-option.js +27 -0
- package/src/lib/runnable-provider.js +97 -0
- package/src/repl/agent-repl.js +76 -17
- package/src/repl/config-summary.js +66 -0
- package/src/runtime/agent-core.js +189 -36
- package/src/runtime/headless-runner.js +49 -1
- package/src/runtime/headless-stream.js +34 -0
- package/src/assets/web-panel/assets/devWarning-D7iybGpP.js +0 -1
- package/src/assets/web-panel/assets/index-BzJrOJ0f.js +0 -1
- package/src/assets/web-panel/assets/index-QN-iyhAl.js +0 -1
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import { logger } from "../lib/logger.js";
|
|
10
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
10
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
12
|
import {
|
|
12
13
|
ensureGovernanceTables,
|
|
@@ -648,7 +649,8 @@ export function registerGovernanceCommand(program) {
|
|
|
648
649
|
const config = { proposerId, realm: opts.realm };
|
|
649
650
|
if (opts.displayName) config.displayName = opts.displayName;
|
|
650
651
|
if (opts.initialStatus) config.initialStatus = opts.initialStatus;
|
|
651
|
-
if (opts.metadata)
|
|
652
|
+
if (opts.metadata)
|
|
653
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
652
654
|
console.log(JSON.stringify(registerProposerV2(null, config), null, 2));
|
|
653
655
|
});
|
|
654
656
|
|
|
@@ -667,7 +669,8 @@ export function registerGovernanceCommand(program) {
|
|
|
667
669
|
.action((proposerId, status, opts) => {
|
|
668
670
|
const patch = {};
|
|
669
671
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
670
|
-
if (opts.metadata)
|
|
672
|
+
if (opts.metadata)
|
|
673
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
671
674
|
console.log(
|
|
672
675
|
JSON.stringify(
|
|
673
676
|
setProposerMaturityV2(null, proposerId, status, patch),
|
|
@@ -734,7 +737,8 @@ export function registerGovernanceCommand(program) {
|
|
|
734
737
|
scope: opts.scope,
|
|
735
738
|
};
|
|
736
739
|
if (opts.expiresAt) config.expiresAt = Number(opts.expiresAt);
|
|
737
|
-
if (opts.metadata)
|
|
740
|
+
if (opts.metadata)
|
|
741
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
738
742
|
console.log(JSON.stringify(createDelegationV2(null, config), null, 2));
|
|
739
743
|
});
|
|
740
744
|
|
|
@@ -753,7 +757,8 @@ export function registerGovernanceCommand(program) {
|
|
|
753
757
|
.action((delegationId, status, opts) => {
|
|
754
758
|
const patch = {};
|
|
755
759
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
756
|
-
if (opts.metadata)
|
|
760
|
+
if (opts.metadata)
|
|
761
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
757
762
|
console.log(
|
|
758
763
|
JSON.stringify(
|
|
759
764
|
setDelegationStatusV2(null, delegationId, status, patch),
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { logger } from "../lib/logger.js";
|
|
8
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
8
9
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
9
10
|
import {
|
|
10
11
|
ensureHardeningTables,
|
|
@@ -518,7 +519,7 @@ export function registerHardeningCommand(program) {
|
|
|
518
519
|
try {
|
|
519
520
|
const { db } = await bootstrap();
|
|
520
521
|
ensureHardeningTables(db);
|
|
521
|
-
const metadata = opts.metadata
|
|
522
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
522
523
|
const r = registerAuditV2(db, {
|
|
523
524
|
name,
|
|
524
525
|
type: opts.type,
|
|
@@ -594,7 +595,7 @@ export function registerHardeningCommand(program) {
|
|
|
594
595
|
if (opts.errorMessage !== undefined)
|
|
595
596
|
patch.errorMessage = opts.errorMessage;
|
|
596
597
|
if (opts.metadata !== undefined)
|
|
597
|
-
patch.metadata =
|
|
598
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
598
599
|
const r = setAuditStatusV2(db, auditId, status, patch);
|
|
599
600
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
600
601
|
else console.log(`${auditId} → ${r.status}`);
|
|
@@ -644,7 +645,7 @@ export function registerHardeningCommand(program) {
|
|
|
644
645
|
try {
|
|
645
646
|
const { db } = await bootstrap();
|
|
646
647
|
ensureHardeningTables(db);
|
|
647
|
-
const metadata = opts.metadata
|
|
648
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
648
649
|
const r = createBaselineV2(db, {
|
|
649
650
|
name,
|
|
650
651
|
version: opts.version,
|
|
@@ -690,7 +691,7 @@ export function registerHardeningCommand(program) {
|
|
|
690
691
|
const patch = {};
|
|
691
692
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
692
693
|
if (opts.metadata !== undefined)
|
|
693
|
-
patch.metadata =
|
|
694
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
694
695
|
const r = setBaselineStatusV2(db, baselineId, status, patch);
|
|
695
696
|
if (opts.json) console.log(JSON.stringify(r, null, 2));
|
|
696
697
|
else console.log(`${baselineId} → ${r.status}`);
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import { logger } from "../lib/logger.js";
|
|
9
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
9
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
10
11
|
import {
|
|
11
12
|
ensureTokenTables,
|
|
@@ -267,7 +268,7 @@ export function registerIncentiveCommand(program) {
|
|
|
267
268
|
try {
|
|
268
269
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
269
270
|
const db = _dbFromCtx(ctx);
|
|
270
|
-
const metadata = options.metadata
|
|
271
|
+
const metadata = parseJsonOption(options.metadata, "--metadata", null);
|
|
271
272
|
const contribution = recordContribution(db, {
|
|
272
273
|
userId,
|
|
273
274
|
type,
|
|
@@ -485,7 +486,7 @@ export function registerIncentiveCommand(program) {
|
|
|
485
486
|
const ctx = bootstrap();
|
|
486
487
|
try {
|
|
487
488
|
const db = _dbFromCtx(ctx);
|
|
488
|
-
const metadata = opts.metadata
|
|
489
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
489
490
|
const entry = registerAccountV2(db, { accountId, metadata });
|
|
490
491
|
logger.log(JSON.stringify(entry, null, 2));
|
|
491
492
|
} finally {
|
|
@@ -514,7 +515,7 @@ export function registerIncentiveCommand(program) {
|
|
|
514
515
|
const ctx = bootstrap();
|
|
515
516
|
try {
|
|
516
517
|
const db = _dbFromCtx(ctx);
|
|
517
|
-
const metadata = opts.metadata
|
|
518
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
518
519
|
const entry = setAccountStatusV2(db, accountId, status, {
|
|
519
520
|
reason: opts.reason,
|
|
520
521
|
metadata,
|
|
@@ -581,7 +582,7 @@ export function registerIncentiveCommand(program) {
|
|
|
581
582
|
const ctx = bootstrap();
|
|
582
583
|
try {
|
|
583
584
|
const db = _dbFromCtx(ctx);
|
|
584
|
-
const metadata = opts.metadata
|
|
585
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
585
586
|
const entry = submitClaimV2(db, {
|
|
586
587
|
claimId,
|
|
587
588
|
userId: opts.user,
|
|
@@ -616,7 +617,7 @@ export function registerIncentiveCommand(program) {
|
|
|
616
617
|
const ctx = bootstrap();
|
|
617
618
|
try {
|
|
618
619
|
const db = _dbFromCtx(ctx);
|
|
619
|
-
const metadata = opts.metadata
|
|
620
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
620
621
|
const entry = setClaimStatusV2(db, claimId, status, {
|
|
621
622
|
reason: opts.reason,
|
|
622
623
|
metadata,
|
package/src/commands/kg.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import fs from "fs";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import { logger } from "../lib/logger.js";
|
|
10
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
10
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
12
|
import {
|
|
12
13
|
ensureKnowledgeGraphTables,
|
|
@@ -111,9 +112,11 @@ export function registerKgCommand(program) {
|
|
|
111
112
|
try {
|
|
112
113
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
113
114
|
const db = _dbFromCtx(ctx);
|
|
114
|
-
const properties =
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const properties = parseJsonOption(
|
|
116
|
+
options.properties,
|
|
117
|
+
"--properties",
|
|
118
|
+
null,
|
|
119
|
+
);
|
|
117
120
|
const tags = options.tags
|
|
118
121
|
? options.tags
|
|
119
122
|
.split(",")
|
|
@@ -221,9 +224,11 @@ export function registerKgCommand(program) {
|
|
|
221
224
|
try {
|
|
222
225
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
223
226
|
const db = _dbFromCtx(ctx);
|
|
224
|
-
const properties =
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
const properties = parseJsonOption(
|
|
228
|
+
options.properties,
|
|
229
|
+
"--properties",
|
|
230
|
+
null,
|
|
231
|
+
);
|
|
227
232
|
const relation = addRelation(db, {
|
|
228
233
|
sourceId,
|
|
229
234
|
targetId,
|
|
@@ -492,7 +497,7 @@ export function registerKgCommand(program) {
|
|
|
492
497
|
.option("--json", "Output as JSON")
|
|
493
498
|
.action((entityId, opts) => {
|
|
494
499
|
try {
|
|
495
|
-
const metadata = opts.metadata
|
|
500
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
496
501
|
const rec = registerEntityV2(null, {
|
|
497
502
|
entityId,
|
|
498
503
|
ownerId: opts.owner,
|
|
@@ -533,7 +538,8 @@ export function registerKgCommand(program) {
|
|
|
533
538
|
try {
|
|
534
539
|
const patch = {};
|
|
535
540
|
if (opts.reason) patch.reason = opts.reason;
|
|
536
|
-
if (opts.metadata)
|
|
541
|
+
if (opts.metadata)
|
|
542
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
537
543
|
const rec = setEntityStatusV2(null, entityId, status, patch);
|
|
538
544
|
logger.success(`Entity ${entityId} → ${rec.status}`);
|
|
539
545
|
} catch (err) {
|
|
@@ -615,7 +621,7 @@ export function registerKgCommand(program) {
|
|
|
615
621
|
.option("--json", "Output as JSON")
|
|
616
622
|
.action((relationId, opts) => {
|
|
617
623
|
try {
|
|
618
|
-
const metadata = opts.metadata
|
|
624
|
+
const metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
619
625
|
const rec = registerRelationV2(null, {
|
|
620
626
|
relationId,
|
|
621
627
|
sourceEntityId: opts.source,
|
|
@@ -659,7 +665,8 @@ export function registerKgCommand(program) {
|
|
|
659
665
|
try {
|
|
660
666
|
const patch = {};
|
|
661
667
|
if (opts.reason) patch.reason = opts.reason;
|
|
662
|
-
if (opts.metadata)
|
|
668
|
+
if (opts.metadata)
|
|
669
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
663
670
|
const rec = setRelationStatusV2(null, relationId, status, patch);
|
|
664
671
|
logger.success(`Relation ${relationId} → ${rec.status}`);
|
|
665
672
|
} catch (err) {
|
package/src/commands/lowcode.js
CHANGED
|
@@ -226,12 +226,18 @@ export function registerLowcodeCommand(program) {
|
|
|
226
226
|
const db = ctx.db.getDatabase();
|
|
227
227
|
ensureLowcodeTables(db);
|
|
228
228
|
|
|
229
|
-
let config;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
229
|
+
let config = {};
|
|
230
|
+
if (options.config) {
|
|
231
|
+
try {
|
|
232
|
+
config = JSON.parse(options.config);
|
|
233
|
+
} catch (err) {
|
|
234
|
+
// Non-fatal by design (fall back to empty config), but surface the
|
|
235
|
+
// problem instead of swallowing it — a typo'd --config was silently
|
|
236
|
+
// dropped before, so the data source looked configured but wasn't.
|
|
237
|
+
logger.warn(
|
|
238
|
+
`Ignoring invalid --config JSON (using empty config): ${err.message}`,
|
|
239
|
+
);
|
|
240
|
+
}
|
|
235
241
|
}
|
|
236
242
|
|
|
237
243
|
const result = addDataSource(db, appId, name, type, config);
|
|
@@ -413,11 +419,17 @@ export function registerLowcodeCommand(program) {
|
|
|
413
419
|
const db = ctx.db.getDatabase();
|
|
414
420
|
ensureLowcodeTables(db);
|
|
415
421
|
|
|
416
|
-
let config;
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
422
|
+
let config = {};
|
|
423
|
+
if (options.config) {
|
|
424
|
+
try {
|
|
425
|
+
config = JSON.parse(options.config);
|
|
426
|
+
} catch (err) {
|
|
427
|
+
// Non-fatal by design (fall back to empty config), but surface the
|
|
428
|
+
// problem instead of swallowing it silently.
|
|
429
|
+
logger.warn(
|
|
430
|
+
`Ignoring invalid --config JSON (using empty config): ${err.message}`,
|
|
431
|
+
);
|
|
432
|
+
}
|
|
421
433
|
}
|
|
422
434
|
|
|
423
435
|
const result = registerDataSourceV2(db, {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import { logger } from "../lib/logger.js";
|
|
9
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
9
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
10
11
|
import {
|
|
11
12
|
ensureMarketplaceTables,
|
|
@@ -122,7 +123,7 @@ export function registerMarketplaceCommand(program) {
|
|
|
122
123
|
try {
|
|
123
124
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
124
125
|
const db = _dbFromCtx(ctx);
|
|
125
|
-
const pricing = options.pricing
|
|
126
|
+
const pricing = parseJsonOption(options.pricing, "--pricing", null);
|
|
126
127
|
const service = publishService(db, {
|
|
127
128
|
name,
|
|
128
129
|
version: options.version,
|
|
@@ -246,8 +247,8 @@ export function registerMarketplaceCommand(program) {
|
|
|
246
247
|
try {
|
|
247
248
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
248
249
|
const db = _dbFromCtx(ctx);
|
|
249
|
-
const input = options.input
|
|
250
|
-
const output = options.output
|
|
250
|
+
const input = parseJsonOption(options.input, "--input", null);
|
|
251
|
+
const output = parseJsonOption(options.output, "--output", null);
|
|
251
252
|
const inv = recordInvocation(db, {
|
|
252
253
|
serviceId,
|
|
253
254
|
callerId: options.caller,
|
package/src/commands/mcp.js
CHANGED
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
generateMcpServerScaffold,
|
|
23
23
|
SUPPORTED_TRANSPORTS,
|
|
24
24
|
} from "../lib/mcp-scaffold.js";
|
|
25
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
25
26
|
import {
|
|
26
27
|
CATALOG as REGISTRY_CATALOG,
|
|
27
28
|
CATEGORIES as REGISTRY_CATEGORIES,
|
|
@@ -236,7 +237,9 @@ export function registerMcpCommand(program) {
|
|
|
236
237
|
});
|
|
237
238
|
logger.log(chalk.bold("MCP server ready (Streamable-HTTP)"));
|
|
238
239
|
logger.log(` URL: ${chalk.cyan(handle.url)}`);
|
|
239
|
-
logger.log(
|
|
240
|
+
logger.log(
|
|
241
|
+
` Root: ${handle.root}${handle.readOnly ? " (read-only)" : ""}`,
|
|
242
|
+
);
|
|
240
243
|
if (handle.token) {
|
|
241
244
|
logger.log(` Auth: Bearer ${handle.token}`);
|
|
242
245
|
} else {
|
|
@@ -555,8 +558,17 @@ export function registerMcpCommand(program) {
|
|
|
555
558
|
if (options.json) {
|
|
556
559
|
console.log(JSON.stringify(result, null, 2));
|
|
557
560
|
} else {
|
|
558
|
-
|
|
559
|
-
|
|
561
|
+
// initialize succeeded but tools/list failed → connected, yet the
|
|
562
|
+
// tool list is unreliable. Surface it rather than a misleading
|
|
563
|
+
// "Tools: 0" (Claude-Code 2.1.181 parity).
|
|
564
|
+
if (result.toolsError) {
|
|
565
|
+
logger.warn(
|
|
566
|
+
`${chalk.yellow("!")} Connected to ${chalk.cyan(name)} ${chalk.gray("·")} tools fetch failed: ${result.toolsError}`,
|
|
567
|
+
);
|
|
568
|
+
} else {
|
|
569
|
+
logger.success(`Connected to ${chalk.cyan(name)}`);
|
|
570
|
+
logger.log(` ${chalk.gray("Tools:")} ${result.tools.length}`);
|
|
571
|
+
}
|
|
560
572
|
logger.log(
|
|
561
573
|
` ${chalk.gray("Resources:")} ${result.resources.length}`,
|
|
562
574
|
);
|
|
@@ -650,7 +662,7 @@ export function registerMcpCommand(program) {
|
|
|
650
662
|
serverName = match.server;
|
|
651
663
|
}
|
|
652
664
|
|
|
653
|
-
const args = options.args
|
|
665
|
+
const args = parseJsonOption(options.args, "--args", {});
|
|
654
666
|
const spinner = ora(`Calling ${tool}...`).start();
|
|
655
667
|
|
|
656
668
|
const result = await client.callTool(serverName, tool, args);
|
|
@@ -822,7 +834,7 @@ export function registerMcpCommand(program) {
|
|
|
822
834
|
}
|
|
823
835
|
server = match.server;
|
|
824
836
|
}
|
|
825
|
-
const args = options.args
|
|
837
|
+
const args = parseJsonOption(options.args, "--args", {});
|
|
826
838
|
const result = await client.getPrompt(server, name, args);
|
|
827
839
|
if (options.json) {
|
|
828
840
|
console.log(JSON.stringify(result, null, 2));
|
package/src/commands/ops.js
CHANGED
|
@@ -61,6 +61,7 @@ import {
|
|
|
61
61
|
autoTimeoutStuckRemediations,
|
|
62
62
|
getAiOpsStatsV2,
|
|
63
63
|
} from "../lib/aiops.js";
|
|
64
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
64
65
|
|
|
65
66
|
function _dbFromCtx(cmd) {
|
|
66
67
|
const root = cmd?.parent?.parent ?? cmd?.parent;
|
|
@@ -549,7 +550,8 @@ export function registerOpsCommand(program) {
|
|
|
549
550
|
const config = { playbookId, ownerId: opts.owner };
|
|
550
551
|
if (opts.name) config.name = opts.name;
|
|
551
552
|
if (opts.initialStatus) config.initialStatus = opts.initialStatus;
|
|
552
|
-
if (opts.metadata)
|
|
553
|
+
if (opts.metadata)
|
|
554
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
553
555
|
console.log(JSON.stringify(registerPlaybookV2(db, config), null, 2));
|
|
554
556
|
});
|
|
555
557
|
|
|
@@ -570,7 +572,8 @@ export function registerOpsCommand(program) {
|
|
|
570
572
|
const db = _dbFromCtx(cmd);
|
|
571
573
|
const patch = {};
|
|
572
574
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
573
|
-
if (opts.metadata)
|
|
575
|
+
if (opts.metadata)
|
|
576
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
574
577
|
console.log(
|
|
575
578
|
JSON.stringify(
|
|
576
579
|
setPlaybookMaturityV2(db, playbookId, status, patch),
|
|
@@ -639,7 +642,8 @@ export function registerOpsCommand(program) {
|
|
|
639
642
|
playbookId: opts.playbook,
|
|
640
643
|
};
|
|
641
644
|
if (opts.incident) config.incidentId = opts.incident;
|
|
642
|
-
if (opts.metadata)
|
|
645
|
+
if (opts.metadata)
|
|
646
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
643
647
|
console.log(JSON.stringify(submitRemediationV2(db, config), null, 2));
|
|
644
648
|
});
|
|
645
649
|
|
|
@@ -660,7 +664,8 @@ export function registerOpsCommand(program) {
|
|
|
660
664
|
const db = _dbFromCtx(cmd);
|
|
661
665
|
const patch = {};
|
|
662
666
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
663
|
-
if (opts.metadata)
|
|
667
|
+
if (opts.metadata)
|
|
668
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
664
669
|
console.log(
|
|
665
670
|
JSON.stringify(
|
|
666
671
|
setRemediationStatusV2(db, remediationId, status, patch),
|
|
@@ -65,6 +65,7 @@ import {
|
|
|
65
65
|
autoArchiveStaleFeeds,
|
|
66
66
|
getRecommendationStatsV2,
|
|
67
67
|
} from "../lib/content-recommendation.js";
|
|
68
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
68
69
|
|
|
69
70
|
function _dbFromCtx(cmd) {
|
|
70
71
|
const root = cmd?.parent?.parent ?? cmd?.parent;
|
|
@@ -140,8 +141,8 @@ export function registerRecommendCommand(program) {
|
|
|
140
141
|
.option("--json", "JSON output")
|
|
141
142
|
.action((userId, opts) => {
|
|
142
143
|
const db = _dbFromCtx(rec);
|
|
143
|
-
const topics = opts.topics
|
|
144
|
-
const interactionWeights = opts.weights
|
|
144
|
+
const topics = parseJsonOption(opts.topics, "--topics", {});
|
|
145
|
+
const interactionWeights = parseJsonOption(opts.weights, "--weights", {});
|
|
145
146
|
const result = createProfile(db, userId, { topics, interactionWeights });
|
|
146
147
|
if (opts.json) return console.log(JSON.stringify(result, null, 2));
|
|
147
148
|
if (result.profileId) console.log(`Profile created: ${result.profileId}`);
|
|
@@ -158,8 +159,9 @@ export function registerRecommendCommand(program) {
|
|
|
158
159
|
.action((userId, opts) => {
|
|
159
160
|
const db = _dbFromCtx(rec);
|
|
160
161
|
const params = {};
|
|
161
|
-
if (opts.topics) params.topics =
|
|
162
|
-
if (opts.weights)
|
|
162
|
+
if (opts.topics) params.topics = parseJsonOption(opts.topics, "--topics");
|
|
163
|
+
if (opts.weights)
|
|
164
|
+
params.interactionWeights = parseJsonOption(opts.weights, "--weights");
|
|
163
165
|
if (opts.decay !== undefined) params.decayFactor = opts.decay;
|
|
164
166
|
const result = updateProfile(db, userId, params);
|
|
165
167
|
if (opts.json) return console.log(JSON.stringify(result, null, 2));
|
|
@@ -228,7 +230,7 @@ export function registerRecommendCommand(program) {
|
|
|
228
230
|
if (!opts.pool) {
|
|
229
231
|
return console.log("Provide --pool as JSON array of content items.");
|
|
230
232
|
}
|
|
231
|
-
const pool =
|
|
233
|
+
const pool = parseJsonOption(opts.pool, "--pool");
|
|
232
234
|
const result = generateRecommendations(db, userId, pool, {
|
|
233
235
|
limit: opts.limit,
|
|
234
236
|
minScore: opts.minScore,
|
package/src/commands/scim.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { logger } from "../lib/logger.js";
|
|
8
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
8
9
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
9
10
|
import {
|
|
10
11
|
ensureSCIMTables,
|
|
@@ -348,7 +349,7 @@ export function registerScimCommand(program) {
|
|
|
348
349
|
.requiredOption("-e, --external <id>", "external id")
|
|
349
350
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
350
351
|
.action((id, opts) => {
|
|
351
|
-
const meta =
|
|
352
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
352
353
|
const i = registerIdentityV2(id, {
|
|
353
354
|
connectorId: opts.connector,
|
|
354
355
|
externalId: opts.external,
|
|
@@ -412,7 +413,7 @@ export function registerScimCommand(program) {
|
|
|
412
413
|
.option("-k, --kind <kind>", "job kind", "full")
|
|
413
414
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
414
415
|
.action((id, opts) => {
|
|
415
|
-
const meta =
|
|
416
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
416
417
|
const j = createSyncJobV2(id, {
|
|
417
418
|
connectorId: opts.connector,
|
|
418
419
|
kind: opts.kind,
|
package/src/commands/session.js
CHANGED
|
@@ -7,6 +7,7 @@ import fs from "fs";
|
|
|
7
7
|
import path from "path";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import { logger } from "../lib/logger.js";
|
|
10
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
10
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
12
|
import {
|
|
12
13
|
listSessions,
|
|
@@ -288,7 +289,10 @@ export function registerSessionCommand(program) {
|
|
|
288
289
|
.description(
|
|
289
290
|
"Export a session as Markdown (chat-DB session, or JSONL agent session fallback)",
|
|
290
291
|
)
|
|
291
|
-
.argument(
|
|
292
|
+
.argument(
|
|
293
|
+
"<id>",
|
|
294
|
+
"Session ID (or prefix; `last` = most recent agent session)",
|
|
295
|
+
)
|
|
292
296
|
.option("-o, --output <file>", "Output file path")
|
|
293
297
|
.action(async (id, options) => {
|
|
294
298
|
try {
|
|
@@ -315,9 +319,8 @@ export function registerSessionCommand(program) {
|
|
|
315
319
|
const store = await import("../harness/jsonl-session-store.js");
|
|
316
320
|
const sid = id === "last" ? store.getLastSessionId() : id;
|
|
317
321
|
if (sid && store.sessionExists(sid)) {
|
|
318
|
-
const { renderAgentSessionMarkdown } =
|
|
319
|
-
"../lib/agent-session-export.js"
|
|
320
|
-
);
|
|
322
|
+
const { renderAgentSessionMarkdown } =
|
|
323
|
+
await import("../lib/agent-session-export.js");
|
|
321
324
|
markdown = renderAgentSessionMarkdown(sid, store.readEvents(sid), {
|
|
322
325
|
exportedAt: new Date().toISOString(),
|
|
323
326
|
});
|
|
@@ -1026,7 +1029,7 @@ export function registerSessionCommand(program) {
|
|
|
1026
1029
|
.requiredOption("-m, --model <model>", "model")
|
|
1027
1030
|
.option("--metadata <json>", "metadata JSON", "{}")
|
|
1028
1031
|
.action((id, opts) => {
|
|
1029
|
-
const meta =
|
|
1032
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
1030
1033
|
const c = registerConversationV2(id, {
|
|
1031
1034
|
userId: opts.user,
|
|
1032
1035
|
model: opts.model,
|
|
@@ -1092,7 +1095,7 @@ export function registerSessionCommand(program) {
|
|
|
1092
1095
|
.option("-r, --role <role>", "role (user/assistant)", "user")
|
|
1093
1096
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
1094
1097
|
.action((id, opts) => {
|
|
1095
|
-
const meta =
|
|
1098
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
1096
1099
|
const t = createTurnV2(id, {
|
|
1097
1100
|
conversationId: opts.conversation,
|
|
1098
1101
|
role: opts.role,
|
package/src/commands/social.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { logger } from "../lib/logger.js";
|
|
8
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
8
9
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
9
10
|
import {
|
|
10
11
|
ensureSocialTables,
|
|
@@ -642,7 +643,7 @@ export function registerSocialCommand(program) {
|
|
|
642
643
|
ensureGraphTables(db);
|
|
643
644
|
graphLoadFromDb(db);
|
|
644
645
|
|
|
645
|
-
const metadata = options.metadata
|
|
646
|
+
const metadata = parseJsonOption(options.metadata, "--metadata", null);
|
|
646
647
|
const result = graphAddEdge(db, source, target, options.type, {
|
|
647
648
|
weight: Number(options.weight) || 1.0,
|
|
648
649
|
metadata,
|
|
@@ -1206,7 +1207,7 @@ export function registerSocialCommand(program) {
|
|
|
1206
1207
|
.requiredOption("-p, --peer <peerId>", "peer id")
|
|
1207
1208
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
1208
1209
|
.action((id, opts) => {
|
|
1209
|
-
const meta =
|
|
1210
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
1210
1211
|
const r = registerRelationshipV2(id, {
|
|
1211
1212
|
userId: opts.user,
|
|
1212
1213
|
peerId: opts.peer,
|
|
@@ -1272,7 +1273,7 @@ export function registerSocialCommand(program) {
|
|
|
1272
1273
|
.requiredOption("-t, --topic <topic>", "topic")
|
|
1273
1274
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
1274
1275
|
.action((id, opts) => {
|
|
1275
|
-
const meta =
|
|
1276
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
1276
1277
|
const t = createThreadV2(id, {
|
|
1277
1278
|
userId: opts.user,
|
|
1278
1279
|
topic: opts.topic,
|
package/src/commands/sync.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { logger } from "../lib/logger.js";
|
|
8
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
8
9
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
9
10
|
import {
|
|
10
11
|
getSyncStatus,
|
|
@@ -373,7 +374,7 @@ export function registerSyncCommand(program) {
|
|
|
373
374
|
.requiredOption("-k, --kind <kind>", "kind (file/note/...)")
|
|
374
375
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
375
376
|
.action((id, opts) => {
|
|
376
|
-
const meta =
|
|
377
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
377
378
|
const r = registerResourceV2(id, {
|
|
378
379
|
owner: opts.owner,
|
|
379
380
|
kind: opts.kind,
|
|
@@ -437,7 +438,7 @@ export function registerSyncCommand(program) {
|
|
|
437
438
|
.option("-k, --kind <kind>", "run kind", "push")
|
|
438
439
|
.option("-m, --metadata <json>", "metadata JSON", "{}")
|
|
439
440
|
.action((id, opts) => {
|
|
440
|
-
const meta =
|
|
441
|
+
const meta = parseJsonOption(opts.metadata, "--metadata", {});
|
|
441
442
|
const j = createSyncRunV2(id, {
|
|
442
443
|
resourceId: opts.resource,
|
|
443
444
|
kind: opts.kind,
|
package/src/commands/tenant.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import fs from "fs";
|
|
9
9
|
import chalk from "chalk";
|
|
10
10
|
import { logger } from "../lib/logger.js";
|
|
11
|
+
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
11
12
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
12
13
|
import {
|
|
13
14
|
ensureTenantTables,
|
|
@@ -170,7 +171,7 @@ export function registerTenantCommand(program) {
|
|
|
170
171
|
try {
|
|
171
172
|
const ctx = await bootstrap({ verbose: program.opts().verbose });
|
|
172
173
|
const db = _dbFromCtx(ctx);
|
|
173
|
-
const config = options.config
|
|
174
|
+
const config = parseJsonOption(options.config, "--config", null);
|
|
174
175
|
const t = createTenant(db, {
|
|
175
176
|
name,
|
|
176
177
|
slug,
|
|
@@ -205,7 +206,7 @@ export function registerTenantCommand(program) {
|
|
|
205
206
|
const db = _dbFromCtx(ctx);
|
|
206
207
|
const updates = {};
|
|
207
208
|
if (options.config !== undefined) {
|
|
208
|
-
updates.config =
|
|
209
|
+
updates.config = parseJsonOption(options.config, "--config");
|
|
209
210
|
}
|
|
210
211
|
if (options.plan !== undefined) updates.plan = options.plan;
|
|
211
212
|
if (options.status !== undefined) updates.status = options.status;
|
|
@@ -720,7 +721,8 @@ export function registerTenantCommand(program) {
|
|
|
720
721
|
const config = { tenantId, plan: opts.plan };
|
|
721
722
|
if (opts.owner) config.ownerId = opts.owner;
|
|
722
723
|
if (opts.initialStatus) config.initialStatus = opts.initialStatus;
|
|
723
|
-
if (opts.metadata)
|
|
724
|
+
if (opts.metadata)
|
|
725
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
724
726
|
console.log(JSON.stringify(registerTenantV2(null, config), null, 2));
|
|
725
727
|
});
|
|
726
728
|
|
|
@@ -740,7 +742,8 @@ export function registerTenantCommand(program) {
|
|
|
740
742
|
.action((tenantId, status, opts) => {
|
|
741
743
|
const patch = {};
|
|
742
744
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
743
|
-
if (opts.metadata)
|
|
745
|
+
if (opts.metadata)
|
|
746
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
744
747
|
console.log(
|
|
745
748
|
JSON.stringify(
|
|
746
749
|
setTenantMaturityV2(null, tenantId, status, patch),
|
|
@@ -811,7 +814,8 @@ export function registerTenantCommand(program) {
|
|
|
811
814
|
plan: opts.plan,
|
|
812
815
|
};
|
|
813
816
|
if (opts.expiresAt) config.expiresAt = Number(opts.expiresAt);
|
|
814
|
-
if (opts.metadata)
|
|
817
|
+
if (opts.metadata)
|
|
818
|
+
config.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
815
819
|
console.log(
|
|
816
820
|
JSON.stringify(registerSubscriptionV2(null, config), null, 2),
|
|
817
821
|
);
|
|
@@ -833,7 +837,8 @@ export function registerTenantCommand(program) {
|
|
|
833
837
|
.action((subscriptionId, status, opts) => {
|
|
834
838
|
const patch = {};
|
|
835
839
|
if (opts.reason !== undefined) patch.reason = opts.reason;
|
|
836
|
-
if (opts.metadata)
|
|
840
|
+
if (opts.metadata)
|
|
841
|
+
patch.metadata = parseJsonOption(opts.metadata, "--metadata");
|
|
837
842
|
console.log(
|
|
838
843
|
JSON.stringify(
|
|
839
844
|
setSubscriptionStatusV2(null, subscriptionId, status, patch),
|