chainlesschain 0.162.70 → 0.162.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -3
- package/src/assets/web-panel/assets/{AIOps-CnHIXe2L.js → AIOps-1bl50Cen.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CzDyhTAp.js → ActionButton-Bw4kAx-1.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-rwvDMCd-.js → Analytics-junq7r42.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-D-Q1M-5V.js → AppLayout-vf1TVGeu.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-BIFSGnAE.js → Audit-CBzpgcL9.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CbUdiVeS.js → Backup-ChwGPeP4.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D3P_pICH.js → BaseInput-2G2KGE6M.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DRrX7vVB.js → Chat-Cr9NwfDA.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-DTC1ElV-.js → ChatBubbleRenderer-CJvlo_ay.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Dpq9X8Xd.js → Checkbox-DN_5PBT7.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-yQQOSuHA.js → Codegen-D4bluAgT.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DLFLDxar.js → Col-DBP3UjYW.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DYbdX-GB.js → Community-ge-SvR3c.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-Dclrp1HE.js → Compact-DGXvlGNv.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-C9EQMgoP.js → Compliance-Cn7nBsFQ.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-B9IMFsMk.js → Cowork-DgHEO2de.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-V6TlbDey.js → Cron-DUbYxPs0.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-Cl_vG8R_.js → Crosschain-3J0MWPQq.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DoUUF9cz.js → DID-BR_Jpkh4.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DcA8WmrS.js → Dashboard-ffykLkAJ.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-wyGMYzw9.js → Dropdown-DaI38dXT.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-B1T3ziIH.js → EmailListRenderer-CnIzkUVG.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CW4CwYbZ.js → FamilyGuardDashboard-BxrgAAZg.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-9tEiw0KA.js → Federation-BuS_FRh3.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DbocfnNQ.js → FormItemContext-DBG-8g1w.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CGNsG2qI.js → GenericCardRenderer-CmEc8RgH.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BxA3dgT8.js → Git-CK10BYwY.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DqnhaC7n.js → Governance-C8cABM_I.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-D6Ll4t9c.js → Inference-Dr4_DIw3.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Bb8IXGl7.js → KnowledgeGraph-0_bLuvvb.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DRUUVMdc.js → Logs-PVGZxt9z.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-BYRM186w.js → Marketplace-BtVnS4HW.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DLbh7uS8.js → McpTools-BVulusCC.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-D2_uZEOI.js → Memory-DEMtNbJ9.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CXVJoMKk.js → MobileBridge-5QL654FQ.js} +3 -3
- package/src/assets/web-panel/assets/{MobileProjects-QRZYgIME.js → MobileProjects-G5Du9Thr.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-D3mv30gW.js → Mtc-CNFPJej0.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-__QPus22.js → MtcAudit-DAJ81Cej.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-Bu5gaTn6.js → Multisig-Cwj8tXfT.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-SjaViyfR.js → NLProgramming-Di0ptaL6.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-feXsl0dN.js → Notes-Cse_4Ox6.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-BtVFokbM.js → NotificationSettings-ntpoi5ec.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CbKsOM0D.js +1 -0
- package/src/assets/web-panel/assets/{Organization-CewL60Rd.js → Organization-Bhjya5h9.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-2ZRChJ7E.js → Overflow-C0u3aive.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DuMr6G9y.js → P2P-BWrTwf_a.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BMOcHCWd.js → PdhVaultBrowser-pld2Qlqk.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-Cj94ql75.js → Permissions-CW5FG3mE.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BYK4mlk7.js → PersonalDataHub-BuBmqfDa.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-maRvdrbO.js → Pipeline-nZr06BNO.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CKb2zZJz.js → Privacy-B_XvMHYv.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-C2pfXv4l.js → ProjectInit-CbRHJy85.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DGeNwq0h.js → ProjectSettings-CCH8SpEa.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BRypTQUV.js → Projects-D5Min2Fu.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DYwMPXEO.js → Providers-DgCY5A8A.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DE6isYZV.js → QuickAsk-DEcKTiTV.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Rc-AE6y9.js → Recommend-BRaq2oKc.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DDQ8_kmM.js → Reputation-DzdbBdVv.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Do5iQUFj.js → Row-Ds2JNh7c.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-cxG0ulSw.js → RssFeed-Bk1-t4Ie.js} +3 -3
- package/src/assets/web-panel/assets/{Search-D3-8EdNk.js → Search-DaVhRwoq.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DtBfws1D.js → Security-D9mXjPSu.js} +3 -3
- package/src/assets/web-panel/assets/{Services-DzeN8HsG.js → Services-D8sukL97.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BQCVeTUf.js → Skeleton-COCJt30X.js} +1 -1
- package/src/assets/web-panel/assets/Skills-DtFPSPSc.js +1 -0
- package/src/assets/web-panel/assets/{Sla-d2IOd-AA.js → Sla-DIab-wjR.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BjfopwT6.js → SpeechSettings-xxIH9hgB.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D5_c1_rI.js → SyncSettings-DrpxzJOH.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-maiJ3jAT.js +1 -0
- package/src/assets/web-panel/assets/{Templates-CCXFgNy3.js → Templates-COE-dSks.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-Duz6eEK3.js → Tenant-CLGObu4M.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-Buc6UbYo.js → Terminal-Bw8WBvW3.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Du5jKHJz.js → TimelineRenderer-D4gdk3Qb.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-B12vLtQm.js → Tokens-CSoL_uAw.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-s_pHOerx.js → Trigger-BCRcowFi.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-4sDhbAls.js → Trust-D5QPZ198.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-UeyFknip.js → UkeySign-C7SsMqfZ.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DsopM2S5.js → VideoEditing-CDQ4HNZL.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CreLjC5U.js → Wallet-VmG4P_Fm.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-CBuMMZbK.js → WebAuthn-qtC0dZxA.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-DWhHHSFW.js → WorkflowEditor-C_CSdk3l.js} +1 -1
- package/src/assets/web-panel/assets/{chat-Iurq_BMY.js → chat-BGm8YCIo.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BIOTIa89.js → colors-BScOmAwk.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-B7lPu9pO.js → compact-item-HDwaT31n.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Bzzk7mrh.js → createContext-CheSjPm8.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CjO6o19j.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-B11xqp5O.js → hasIn-C1_NbX0O.js} +1 -1
- package/src/assets/web-panel/assets/index--jhpSxS1.js +1 -0
- package/src/assets/web-panel/assets/{index-vZCGFSJN.js → index-6C8mxO8j.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLhpFnSR.js → index-B94_DZF-.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlR8YVlt.js → index-BGROuzQG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CxDOX4g6.js → index-BKQordyU.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMrzHgE6.js → index-BMxPL1oG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DsoyfOzW.js → index-Bd2zS3jK.js} +1 -1
- package/src/assets/web-panel/assets/{index-3LgeP4ij.js → index-ByoUjX8f.js} +1 -1
- package/src/assets/web-panel/assets/{index-Y4gmywZo.js → index-C4FSaMAu.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCxGEK8b.js → index-C6WXnaG4.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-lwsB2F.js → index-C71Z__li.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4wV32Dn.js → index-CSaztnyZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiXNVmcx.js → index-CYkezxqK.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6q-fkXs.js → index-Clqj2JTi.js} +1 -1
- package/src/assets/web-panel/assets/{index-R-YSpvg4.js → index-Cm55PcYG.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dn_Ht3v2.js → index-CxoOEb-l.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEKeoJ6I.js → index-D2gy4IX0.js} +1 -1
- package/src/assets/web-panel/assets/{index-AmHa_sOB.js → index-D8xpncJ0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CULCwI_H.js → index-DB6gbgU2.js} +1 -1
- package/src/assets/web-panel/assets/{index-tub9w6us.js → index-DDk0s3nO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CzY2mdiR.js → index-DQ01dBAS.js} +1 -1
- package/src/assets/web-panel/assets/{index-5BkUKVyj.js → index-DSuWcpsv.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8tm9JnQ.js → index-DVyL9jbT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLREN4NE.js → index-DaATJtzu.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEKRqrI-.js → index-DbfAaBxL.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVIXYV1R.js → index-DhTELUKN.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgmBZgU9.js → index-Dk2N6hxE.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4rXFIOG.js → index-DkiIxTIS.js} +1 -1
- package/src/assets/web-panel/assets/{index-CA-GPOd9.js → index-DoZwBGUX.js} +1 -1
- package/src/assets/web-panel/assets/{index-6QGNBg3m.js → index-DppSbT8L.js} +3 -3
- package/src/assets/web-panel/assets/{index-DwGVPCZb.js → index-DzE-95XH.js} +1 -1
- package/src/assets/web-panel/assets/index-J4Rzclyc.js +1 -0
- package/src/assets/web-panel/assets/{index-BIFscFlm.js → index-KG9xVANC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyV9331f.js → index-KXrUKw1h.js} +1 -1
- package/src/assets/web-panel/assets/{index-D25-u3Q2.js → index-eSBoP6E_.js} +1 -1
- package/src/assets/web-panel/assets/{index-B93pM-xx.js → index-ggl9cj35.js} +1 -1
- package/src/assets/web-panel/assets/{index-htxy7qDG.js → index-i-xYmSsZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CS2UWrIt.js → index-lB5kN9Yc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DX7HGwP_.js → index-yKmudyK7.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-Bl6klCzd.js → initDefaultProps-D7Q7zDzP.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B9IxS1-S.js → motion-B4DcaqPb.js} +1 -1
- package/src/assets/web-panel/assets/{move-NJ5XDNQe.js → move-CYxmYrFY.js} +1 -1
- package/src/assets/web-panel/assets/{omit-ByO8GI_H.js → omit-ze_9dKw3.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-W6iTcLuH.js → pickAttrs-D24HrRSv.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-JMndCFEP.js → placementArrow-BWJZVYyS.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DHV7-FuY.js → responsiveObserve-CseJia_L.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DioRUeNF.js → slide-CBWNEpey.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DMp2b9Ze.js → statusUtils-f4e6p7yd.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DamP5BTS.js → styleChecker-DZmfWZ8G.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-D338iARz.js → useFlexGapSupport-4RBaBnVI.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DE_HJgk6.js → useFs-Cv6bNoEA.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-914YxO9q.js → usePersonalDataHub-DOTETJIA.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CY39Ky7P.js → vnode-DqS1K6-J.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BEghlCth.js → zoom-C1MYzIJG.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/cowork.js +8 -0
- package/src/commands/crosschain.js +32 -4
- package/src/commands/init.js +10 -10
- package/src/commands/loop.js +9 -3
- package/src/commands/memory.js +6 -4
- package/src/commands/orchestrate.js +5 -2
- package/src/commands/video.js +5 -1
- package/src/lib/cowork-workflow.js +664 -129
- package/src/lib/hook-manager.js +3 -2
- package/src/lib/micro-compact.js +52 -0
- package/src/lib/permission-rules.cjs +39 -0
- package/src/lib/skill-loader.js +62 -43
- package/src/lib/workflow-state-reader.js +10 -1
- package/src/repl/agent-repl.js +228 -20
- package/src/repl/chat-repl.js +4 -2
- package/src/repl/permission-tier.js +60 -0
- package/src/repl/stream-decision.js +16 -0
- package/src/repl/think-command.js +36 -0
- package/src/runtime/agent-core.js +42 -6
- package/src/runtime/file-ref-expander.js +209 -18
- package/src/runtime/headless-runner.js +3 -3
- package/src/runtime/headless-stream.js +16 -3
- package/src/assets/web-panel/assets/OrderTableRenderer-CJJ2GWDf.js +0 -1
- package/src/assets/web-panel/assets/Skills-D6mCVKt7.js +0 -1
- package/src/assets/web-panel/assets/Tasks-BCmxDMZx.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CuIq7zBB.js +0 -1
- package/src/assets/web-panel/assets/index-BRsns-SP.js +0 -1
- package/src/assets/web-panel/assets/index-QTuoOvJA.js +0 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Injected by web-ui-server.js at serve time
|
|
9
9
|
window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
|
|
10
10
|
</script>
|
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-DppSbT8L.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-BvqAck49.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/icons-DP3uiYxy.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
|
package/src/commands/cowork.js
CHANGED
|
@@ -817,6 +817,11 @@ export function registerCoworkCommand(program) {
|
|
|
817
817
|
.description("Execute a saved workflow end-to-end")
|
|
818
818
|
.option("--continue-on-error", "Keep running after a step fails", false)
|
|
819
819
|
.option("--max-parallel <n>", "Max parallel steps per batch", "4")
|
|
820
|
+
.option(
|
|
821
|
+
"--pipeline",
|
|
822
|
+
"No-barrier scheduling: start each step as soon as its own deps finish",
|
|
823
|
+
false,
|
|
824
|
+
)
|
|
820
825
|
.action(async (id, options) => {
|
|
821
826
|
const [
|
|
822
827
|
{ getWorkflow, executeWorkflow, _deps: wfDeps },
|
|
@@ -843,6 +848,9 @@ export function registerCoworkCommand(program) {
|
|
|
843
848
|
cwd: process.cwd(),
|
|
844
849
|
maxParallel: parseInt(options.maxParallel, 10) || 4,
|
|
845
850
|
continueOnError: !!options.continueOnError,
|
|
851
|
+
// undefined (not false) when the flag is absent, so a workflow-level
|
|
852
|
+
// `pipeline: true` in the JSON definition still takes effect.
|
|
853
|
+
pipeline: options.pipeline ? true : undefined,
|
|
846
854
|
onStepStart: ({ stepId }) =>
|
|
847
855
|
logger.log(chalk.gray(` → step ${stepId} ...`)),
|
|
848
856
|
onStepComplete: (out) => {
|
|
@@ -1143,6 +1143,34 @@ function _resolveBridgeMtcDir(opts) {
|
|
|
1143
1143
|
return getCrossChainMtcDir(home);
|
|
1144
1144
|
}
|
|
1145
1145
|
|
|
1146
|
+
/**
|
|
1147
|
+
* Read + JSON.parse a user-supplied file path with clean, specific errors
|
|
1148
|
+
* instead of a raw Node stack trace. Distinguishes "cannot read file" (e.g.
|
|
1149
|
+
* missing path) from "invalid JSON", and exits 2 (matching the other input
|
|
1150
|
+
* errors in this command group).
|
|
1151
|
+
*/
|
|
1152
|
+
function _readJsonFileArg(filePath, label) {
|
|
1153
|
+
let raw;
|
|
1154
|
+
try {
|
|
1155
|
+
raw = fs.readFileSync(filePath, "utf-8");
|
|
1156
|
+
} catch (err) {
|
|
1157
|
+
console.error(
|
|
1158
|
+
`Error: cannot read ${label} file '${filePath}': ${
|
|
1159
|
+
err.code === "ENOENT" ? "no such file" : err.message
|
|
1160
|
+
}`,
|
|
1161
|
+
);
|
|
1162
|
+
process.exit(2);
|
|
1163
|
+
}
|
|
1164
|
+
try {
|
|
1165
|
+
return JSON.parse(raw);
|
|
1166
|
+
} catch (err) {
|
|
1167
|
+
console.error(
|
|
1168
|
+
`Error: ${label} file '${filePath}' is not valid JSON: ${err.message}`,
|
|
1169
|
+
);
|
|
1170
|
+
process.exit(2);
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1146
1174
|
function registerCrossChainMtcSubcommands(cc) {
|
|
1147
1175
|
cc.command("mtc-status")
|
|
1148
1176
|
.description("Show cross-chain bridge MTC config + trust anchors + batches")
|
|
@@ -1275,7 +1303,7 @@ function registerCrossChainMtcSubcommands(cc) {
|
|
|
1275
1303
|
.action((opts) => {
|
|
1276
1304
|
const dir = _resolveBridgeMtcDir(opts);
|
|
1277
1305
|
const cfg = loadCrossChainMtcConfig(dir);
|
|
1278
|
-
const ops =
|
|
1306
|
+
const ops = _readJsonFileArg(opts.input, "input");
|
|
1279
1307
|
if (!Array.isArray(ops)) {
|
|
1280
1308
|
console.error("Input file must contain a JSON array of bridge ops.");
|
|
1281
1309
|
process.exit(2);
|
|
@@ -1302,8 +1330,8 @@ function registerCrossChainMtcSubcommands(cc) {
|
|
|
1302
1330
|
.description("Verify a bridge MTC envelope against a landmark file")
|
|
1303
1331
|
.option("--json", "JSON output")
|
|
1304
1332
|
.action((envPath, lmPath, opts) => {
|
|
1305
|
-
const envelope =
|
|
1306
|
-
const landmark =
|
|
1333
|
+
const envelope = _readJsonFileArg(envPath, "envelope");
|
|
1334
|
+
const landmark = _readJsonFileArg(lmPath, "landmark");
|
|
1307
1335
|
const cache = new mtcLib.LandmarkCache({
|
|
1308
1336
|
signatureVerifier: mtcLib.alwaysAcceptSignatureVerifier,
|
|
1309
1337
|
});
|
|
@@ -1489,7 +1517,7 @@ function registerCrossChainMtcSubcommands(cc) {
|
|
|
1489
1517
|
const dir = _resolveBridgeMtcDir(opts);
|
|
1490
1518
|
let pubkeyJwk = null;
|
|
1491
1519
|
if (opts.jwk) {
|
|
1492
|
-
pubkeyJwk =
|
|
1520
|
+
pubkeyJwk = _readJsonFileArg(opts.jwk, "jwk");
|
|
1493
1521
|
}
|
|
1494
1522
|
const r = addTrustAnchor(dir, chain, {
|
|
1495
1523
|
pubkey_id: pubkeyId,
|
package/src/commands/init.js
CHANGED
|
@@ -113,9 +113,10 @@ function httpRequest(urlStr, options = {}, body = null) {
|
|
|
113
113
|
headers: options.headers || {},
|
|
114
114
|
};
|
|
115
115
|
const req = lib.request(reqOpts, (res) => {
|
|
116
|
-
|
|
117
|
-
res.on("data", (chunk) => (
|
|
116
|
+
const dataChunks = [];
|
|
117
|
+
res.on("data", (chunk) => dataChunks.push(chunk));
|
|
118
118
|
res.on("end", () => {
|
|
119
|
+
const data = Buffer.concat(dataChunks).toString("utf8");
|
|
119
120
|
try {
|
|
120
121
|
resolve({ status: res.statusCode, body: JSON.parse(data) });
|
|
121
122
|
} catch {
|
|
@@ -387,9 +388,10 @@ function httpRequest(urlStr, options = {}, body = null) {
|
|
|
387
388
|
headers: options.headers || {},
|
|
388
389
|
};
|
|
389
390
|
const req = lib.request(reqOpts, (res) => {
|
|
390
|
-
|
|
391
|
-
res.on("data", (chunk) => (
|
|
391
|
+
const dataChunks = [];
|
|
392
|
+
res.on("data", (chunk) => dataChunks.push(chunk));
|
|
392
393
|
res.on("end", () => {
|
|
394
|
+
const data = Buffer.concat(dataChunks).toString("utf8");
|
|
393
395
|
try {
|
|
394
396
|
resolve({ status: res.statusCode, body: JSON.parse(data) });
|
|
395
397
|
} catch {
|
|
@@ -2443,9 +2445,8 @@ export function registerInitCommand(program) {
|
|
|
2443
2445
|
command?.getOptionValueSource?.("template") === "cli" ||
|
|
2444
2446
|
Boolean(options.bare);
|
|
2445
2447
|
if (options.memory || !templateRequested) {
|
|
2446
|
-
const { inventoryProject, renderMemoryFile } =
|
|
2447
|
-
"../lib/project-inventory.js"
|
|
2448
|
-
);
|
|
2448
|
+
const { inventoryProject, renderMemoryFile } =
|
|
2449
|
+
await import("../lib/project-inventory.js");
|
|
2449
2450
|
const target = path.join(cwd, "cc.md");
|
|
2450
2451
|
if (fs.existsSync(target) && !options.force) {
|
|
2451
2452
|
logger.error(
|
|
@@ -2512,9 +2513,8 @@ export function registerInitCommand(program) {
|
|
|
2512
2513
|
if (options.ai) {
|
|
2513
2514
|
logger.info(" Running AI refine pass (bounded headless agent)…");
|
|
2514
2515
|
try {
|
|
2515
|
-
const { aiRefineMemoryFile } =
|
|
2516
|
-
"../lib/init-ai-refine.js"
|
|
2517
|
-
);
|
|
2516
|
+
const { aiRefineMemoryFile } =
|
|
2517
|
+
await import("../lib/init-ai-refine.js");
|
|
2518
2518
|
const res = await aiRefineMemoryFile({
|
|
2519
2519
|
cwd,
|
|
2520
2520
|
provider: options.provider,
|
package/src/commands/loop.js
CHANGED
|
@@ -73,20 +73,26 @@ function spawnIteration(cmd, args, { shell, onChild, capture }) {
|
|
|
73
73
|
});
|
|
74
74
|
if (onChild) onChild(child);
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
const outChunks = [];
|
|
77
77
|
if (capture) {
|
|
78
78
|
child.stdout?.on("data", (d) => {
|
|
79
|
-
|
|
79
|
+
outChunks.push(d);
|
|
80
80
|
process.stdout.write(d);
|
|
81
81
|
});
|
|
82
82
|
child.stderr?.on("data", (d) => {
|
|
83
|
-
|
|
83
|
+
outChunks.push(d);
|
|
84
84
|
process.stderr.write(d);
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
// `close` (not `exit`) so piped stdio is fully drained before we resolve.
|
|
89
89
|
child.on("close", (code, signal) => {
|
|
90
|
+
// Decode the captured bytes once, at the end. Accumulating with
|
|
91
|
+
// `output += chunk` would decode each stdout chunk independently, so a
|
|
92
|
+
// multi-byte UTF-8 character split across a chunk boundary corrupts the
|
|
93
|
+
// captured string that `--until <regex>` / `--dynamic` directive parsing
|
|
94
|
+
// reads. (The raw passthrough writes above are unaffected.)
|
|
95
|
+
const output = Buffer.concat(outChunks).toString("utf-8");
|
|
90
96
|
resolve({ exitCode: code == null ? null : code, output, signal });
|
|
91
97
|
});
|
|
92
98
|
child.on("error", (err) => {
|
package/src/commands/memory.js
CHANGED
|
@@ -63,9 +63,8 @@ export function registerMemoryCommand(program) {
|
|
|
63
63
|
.option("--json", "Output as JSON")
|
|
64
64
|
.action(async (options) => {
|
|
65
65
|
try {
|
|
66
|
-
const { loadProjectInstructions } =
|
|
67
|
-
"../lib/project-instructions.js"
|
|
68
|
-
);
|
|
66
|
+
const { loadProjectInstructions } =
|
|
67
|
+
await import("../lib/project-instructions.js");
|
|
69
68
|
const cwd = options.cwd || process.cwd();
|
|
70
69
|
const loaded = loadProjectInstructions({ cwd });
|
|
71
70
|
if (options.json) {
|
|
@@ -519,7 +518,10 @@ export function registerMemoryCommand(program) {
|
|
|
519
518
|
|
|
520
519
|
if (options.edit) {
|
|
521
520
|
const { execSync } = await import("child_process");
|
|
522
|
-
const editor =
|
|
521
|
+
const editor =
|
|
522
|
+
process.env.EDITOR ||
|
|
523
|
+
process.env.VISUAL ||
|
|
524
|
+
(process.platform === "win32" ? "notepad" : "nano");
|
|
523
525
|
const filePath = `${memoryDir}/MEMORY.md`;
|
|
524
526
|
try {
|
|
525
527
|
execSync(`${editor} "${filePath}"`, { stdio: "inherit" });
|
|
@@ -521,9 +521,12 @@ async function _webhookMode(cwd, options) {
|
|
|
521
521
|
return;
|
|
522
522
|
}
|
|
523
523
|
|
|
524
|
-
|
|
525
|
-
req.on("data", (chunk) => (
|
|
524
|
+
const bodyChunks = [];
|
|
525
|
+
req.on("data", (chunk) => bodyChunks.push(chunk));
|
|
526
526
|
req.on("end", async () => {
|
|
527
|
+
// Decode once: per-chunk toString() would corrupt a multi-byte UTF-8
|
|
528
|
+
// char (e.g. Chinese IM webhook text) split across a chunk boundary.
|
|
529
|
+
const body = Buffer.concat(bodyChunks).toString("utf-8");
|
|
527
530
|
let taskText = null;
|
|
528
531
|
let source = TASK_SOURCE.CLI;
|
|
529
532
|
|
package/src/commands/video.js
CHANGED
|
@@ -281,6 +281,7 @@ export function registerVideoCommand(program) {
|
|
|
281
281
|
.action(async (action, options) => {
|
|
282
282
|
const { promises: fs } = await import("fs");
|
|
283
283
|
const pathMod = await import("path");
|
|
284
|
+
const osMod = await import("os");
|
|
284
285
|
|
|
285
286
|
const base = process.env.APPDATA
|
|
286
287
|
? pathMod.join(
|
|
@@ -290,7 +291,10 @@ export function registerVideoCommand(program) {
|
|
|
290
291
|
"video-editing",
|
|
291
292
|
)
|
|
292
293
|
: pathMod.join(
|
|
293
|
-
|
|
294
|
+
// os.homedir() resolves the real home on every platform; the old
|
|
295
|
+
// `process.env.HOME || "~"` left a literal "~" on Windows (HOME
|
|
296
|
+
// often unset there) which fs can't resolve.
|
|
297
|
+
osMod.homedir(),
|
|
294
298
|
".chainlesschain",
|
|
295
299
|
"video-editing",
|
|
296
300
|
);
|