@dotobokuri/fleet-console 1.50.0 → 1.51.0
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/dist/cli.mjs +43 -29
- package/dist/client/assets/{_baseUniq-CXYajthv.js → _baseUniq-DFtleNrY.js} +1 -1
- package/dist/client/assets/{arc-CN2U0RJi.js → arc-CZWcxz4p.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-KMYgwTU-.js → architectureDiagram-Q4EWVU46-CoLGMUbn.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-B2n_Ujhi.js → blockDiagram-DXYQGD6D-d4tcUrvS.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-BmExz-H8.js → c4Diagram-AHTNJAMY-CcDJVtsE.js} +1 -1
- package/dist/client/assets/channel-BkjngaUP.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-WxXjYCDb.js → chunk-4BX2VUAB-BxQcCCSB.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-CoSmkS4d.js → chunk-4TB4RGXK-C1iJwPC-.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-BQ6DMyRz.js → chunk-55IACEB6-Du7lkUwv.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-DEhxxADi.js → chunk-EDXVE4YY-Chblko53.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BUW_vTgY.js → chunk-FMBD7UC4-B4fgWiDf.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-xqJeGGdu.js → chunk-OYMX7WX6-BXyyJDJI.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-DPXuiqFZ.js → chunk-QZHKN3VN-BXAPpxgc.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-CJBloo9Q.js → chunk-YZCP3GAM-BuEMjN4I.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-Bcn4Byd0.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-Bcn4Byd0.js +1 -0
- package/dist/client/assets/clone-HJ2xLTt3.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-C7eVojQK.js → cose-bilkent-S5V4N54A-Bk4ys4DX.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-DYPawRSP.js → dagre-KV5264BT-8e2uOIAZ.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-9nbdU3Kr.js → diagram-5BDNPKRD-BUaee6EH.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-DtSzEakz.js → diagram-G4DWMVQ6-Y0F_eev2.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-2FX1CuCi.js → diagram-MMDJMWI5-DeqlMgQv.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-D1aBD1Sv.js → diagram-TYMM5635-DqtnAuqr.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-AK79bFYW.js → erDiagram-SMLLAGMA-BBGN7fOL.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-C1ApmkLT.js → flowDiagram-DWJPFMVM-C0WwXtcb.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-CQvFUGlj.js → ganttDiagram-T4ZO3ILL-D00_-gLK.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-C-Vh-bKl.js → gitGraphDiagram-UUTBAWPF-D9-J9LVn.js} +1 -1
- package/dist/client/assets/{graph-DeEdzsTp.js → graph-DbpxB806.js} +1 -1
- package/dist/client/assets/index-BhOzl99v.css +1 -0
- package/dist/client/assets/index-Bnx3O7Op.js +482 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-B_0wD24T.js → infoDiagram-42DDH7IO-CoV_lg2_.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-DgGbx2eb.js → ishikawaDiagram-UXIWVN3A-DV9-YHTX.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-BdQqxMsJ.js → journeyDiagram-VCZTEJTY-CFY3HNeL.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-DU8AwVYp.js → kanban-definition-6JOO6SKY-BsN5X8OC.js} +1 -1
- package/dist/client/assets/{layout-BF-OB3sH.js → layout-EvZfc466.js} +1 -1
- package/dist/client/assets/{linear-Cd22n3Ol.js → linear-ConFN_kQ.js} +1 -1
- package/dist/client/assets/{mermaid.core-CV1wZraa.js → mermaid.core-q1Rp6XrX.js} +4 -4
- package/dist/client/assets/{min-Avezts6s.js → min-CgGOD4w3.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-BiYy2OKo.js → mindmap-definition-QFDTVHPH-CLvM_zrO.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-Bg9O56EU.js → pieDiagram-DEJITSTG-Bw7QTbiY.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-B9NeeqFq.js → quadrantDiagram-34T5L4WZ-CJZW6aCq.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-DV1FugSk.js → requirementDiagram-MS252O5E-CMUb9ODK.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-BvIHcJf7.js → sankeyDiagram-XADWPNL6-DnjQJPPQ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-BCQ2xDy1.js → sequenceDiagram-FGHM5R23-BQLWPMCP.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-BpK4LvW_.js → stateDiagram-FHFEXIEX-CYUxN4zL.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BqJUiDHN.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-BEwHf_wL.js → timeline-definition-GMOUNBTQ-DakKVVdc.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-Cd0iA5Vu.js → vennDiagram-DHZGUBPP-CjJALOSl.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-cubfgt6B.js → wardley-RL74JXVD-DNN6iyI_.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-DTdlOJlu.js → wardleyDiagram-NUSXRM2D-CuoFFC8W.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-BguY4oGj.js → xychartDiagram-5P7HB3ND-CLeb77Ra.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/desktop-protocol.mjs +3 -3
- package/dist/fleet-plugins/file-explorer/routes.mjs +4 -4
- package/dist/fleet-plugins/ledger/routes.mjs +48 -50
- package/dist/fleet-plugins/quota/routes.mjs +2601 -2477
- package/dist/fleet-plugins/repository/routes.mjs +44 -43
- package/dist/fleet-plugins/scuttlebutt/routes.mjs +9 -8
- package/dist/fleet-plugins/skills/routes.mjs +44 -45
- package/dist/fleet-plugins/terminal/routes.mjs +6510 -5663
- package/package.json +1 -1
- package/dist/client/assets/channel-7u-T-USm.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-CdK4kqo5.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-CdK4kqo5.js +0 -1
- package/dist/client/assets/clone-BJX0Y00S.js +0 -1
- package/dist/client/assets/index-PYKMOCH4.css +0 -1
- package/dist/client/assets/index-rFuEoKaA.js +0 -482
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CEPxcteM.js +0 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import { execFile, spawn } from 'child_process';
|
|
4
|
-
import
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
7
|
-
import '
|
|
8
|
-
import { existsSync, accessSync, constants } from 'fs';
|
|
9
|
-
import os from 'os';
|
|
2
|
+
import path2 from 'node:path';
|
|
3
|
+
import { execFile, spawn } from 'node:child_process';
|
|
4
|
+
import fs from 'node:fs/promises';
|
|
5
|
+
import 'node:http';
|
|
6
|
+
import { existsSync, accessSync, constants } from 'node:fs';
|
|
7
|
+
import os from 'node:os';
|
|
10
8
|
|
|
11
9
|
var __defProp = Object.defineProperty;
|
|
12
10
|
var __export = (target, all) => {
|
|
@@ -18,12 +16,12 @@ var __export = (target, all) => {
|
|
|
18
16
|
function definePlugin(definition) {
|
|
19
17
|
return definition;
|
|
20
18
|
}
|
|
21
|
-
function registerRouter(ctx,
|
|
22
|
-
ctx.registerRouter(normalizePath(
|
|
19
|
+
function registerRouter(ctx, path4, handler) {
|
|
20
|
+
ctx.registerRouter(normalizePath(path4), handler);
|
|
23
21
|
}
|
|
24
|
-
function normalizePath(
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
22
|
+
function normalizePath(path4) {
|
|
23
|
+
if (path4.length === 0 || path4 === "/") return "/";
|
|
24
|
+
return path4;
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
// ../../node_modules/.pnpm/@agentclientprotocol+sdk@1.2.1_zod@4.4.1/node_modules/@agentclientprotocol/sdk/dist/schema/index.js
|
|
@@ -832,10 +830,10 @@ function mergeDefs(...defs) {
|
|
|
832
830
|
function cloneDef(schema) {
|
|
833
831
|
return mergeDefs(schema._zod.def);
|
|
834
832
|
}
|
|
835
|
-
function getElementAtPath(obj,
|
|
836
|
-
if (!
|
|
833
|
+
function getElementAtPath(obj, path4) {
|
|
834
|
+
if (!path4)
|
|
837
835
|
return obj;
|
|
838
|
-
return
|
|
836
|
+
return path4.reduce((acc, key) => acc?.[key], obj);
|
|
839
837
|
}
|
|
840
838
|
function promiseAllObject(promisesObj) {
|
|
841
839
|
const keys = Object.keys(promisesObj);
|
|
@@ -1244,11 +1242,11 @@ function explicitlyAborted(x, startIndex = 0) {
|
|
|
1244
1242
|
}
|
|
1245
1243
|
return false;
|
|
1246
1244
|
}
|
|
1247
|
-
function prefixIssues(
|
|
1245
|
+
function prefixIssues(path4, issues) {
|
|
1248
1246
|
return issues.map((iss) => {
|
|
1249
1247
|
var _a3;
|
|
1250
1248
|
(_a3 = iss).path ?? (_a3.path = []);
|
|
1251
|
-
iss.path.unshift(
|
|
1249
|
+
iss.path.unshift(path4);
|
|
1252
1250
|
return iss;
|
|
1253
1251
|
});
|
|
1254
1252
|
}
|
|
@@ -1395,16 +1393,16 @@ function flattenError(error51, mapper = (issue2) => issue2.message) {
|
|
|
1395
1393
|
}
|
|
1396
1394
|
function formatError(error51, mapper = (issue2) => issue2.message) {
|
|
1397
1395
|
const fieldErrors = { _errors: [] };
|
|
1398
|
-
const processError = (error52,
|
|
1396
|
+
const processError = (error52, path4 = []) => {
|
|
1399
1397
|
for (const issue2 of error52.issues) {
|
|
1400
1398
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
1401
|
-
issue2.errors.map((issues) => processError({ issues }, [...
|
|
1399
|
+
issue2.errors.map((issues) => processError({ issues }, [...path4, ...issue2.path]));
|
|
1402
1400
|
} else if (issue2.code === "invalid_key") {
|
|
1403
|
-
processError({ issues: issue2.issues }, [...
|
|
1401
|
+
processError({ issues: issue2.issues }, [...path4, ...issue2.path]);
|
|
1404
1402
|
} else if (issue2.code === "invalid_element") {
|
|
1405
|
-
processError({ issues: issue2.issues }, [...
|
|
1403
|
+
processError({ issues: issue2.issues }, [...path4, ...issue2.path]);
|
|
1406
1404
|
} else {
|
|
1407
|
-
const fullpath = [...
|
|
1405
|
+
const fullpath = [...path4, ...issue2.path];
|
|
1408
1406
|
if (fullpath.length === 0) {
|
|
1409
1407
|
fieldErrors._errors.push(mapper(issue2));
|
|
1410
1408
|
} else {
|
|
@@ -1431,17 +1429,17 @@ function formatError(error51, mapper = (issue2) => issue2.message) {
|
|
|
1431
1429
|
}
|
|
1432
1430
|
function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
1433
1431
|
const result = { errors: [] };
|
|
1434
|
-
const processError = (error52,
|
|
1432
|
+
const processError = (error52, path4 = []) => {
|
|
1435
1433
|
var _a3, _b;
|
|
1436
1434
|
for (const issue2 of error52.issues) {
|
|
1437
1435
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
1438
|
-
issue2.errors.map((issues) => processError({ issues }, [...
|
|
1436
|
+
issue2.errors.map((issues) => processError({ issues }, [...path4, ...issue2.path]));
|
|
1439
1437
|
} else if (issue2.code === "invalid_key") {
|
|
1440
|
-
processError({ issues: issue2.issues }, [...
|
|
1438
|
+
processError({ issues: issue2.issues }, [...path4, ...issue2.path]);
|
|
1441
1439
|
} else if (issue2.code === "invalid_element") {
|
|
1442
|
-
processError({ issues: issue2.issues }, [...
|
|
1440
|
+
processError({ issues: issue2.issues }, [...path4, ...issue2.path]);
|
|
1443
1441
|
} else {
|
|
1444
|
-
const fullpath = [...
|
|
1442
|
+
const fullpath = [...path4, ...issue2.path];
|
|
1445
1443
|
if (fullpath.length === 0) {
|
|
1446
1444
|
result.errors.push(mapper(issue2));
|
|
1447
1445
|
continue;
|
|
@@ -1473,8 +1471,8 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
|
1473
1471
|
}
|
|
1474
1472
|
function toDotPath(_path) {
|
|
1475
1473
|
const segs = [];
|
|
1476
|
-
const
|
|
1477
|
-
for (const seg of
|
|
1474
|
+
const path4 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
|
|
1475
|
+
for (const seg of path4) {
|
|
1478
1476
|
if (typeof seg === "number")
|
|
1479
1477
|
segs.push(`[${seg}]`);
|
|
1480
1478
|
else if (typeof seg === "symbol")
|
|
@@ -14138,13 +14136,13 @@ function resolveRef(ref, ctx) {
|
|
|
14138
14136
|
if (!ref.startsWith("#")) {
|
|
14139
14137
|
throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
|
|
14140
14138
|
}
|
|
14141
|
-
const
|
|
14142
|
-
if (
|
|
14139
|
+
const path4 = ref.slice(1).split("/").filter(Boolean);
|
|
14140
|
+
if (path4.length === 0) {
|
|
14143
14141
|
return ctx.rootSchema;
|
|
14144
14142
|
}
|
|
14145
14143
|
const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
|
|
14146
|
-
if (
|
|
14147
|
-
const key =
|
|
14144
|
+
if (path4[0] === defsKey) {
|
|
14145
|
+
const key = path4[1];
|
|
14148
14146
|
if (!key || !ctx.defs[key]) {
|
|
14149
14147
|
throw new Error(`Reference not found: ${ref}`);
|
|
14150
14148
|
}
|
|
@@ -16312,7 +16310,7 @@ function findBinaryPath(command, env, options = {}) {
|
|
|
16312
16310
|
return findOnPath(command, pathValue, pathExts, platform);
|
|
16313
16311
|
}
|
|
16314
16312
|
function wrapWindowsShim(resolved, env, platform) {
|
|
16315
|
-
if (platform !== "win32" || !WINDOWS_SHIM_EXTENSIONS.has(
|
|
16313
|
+
if (platform !== "win32" || !WINDOWS_SHIM_EXTENSIONS.has(path2.extname(resolved).toLowerCase())) {
|
|
16316
16314
|
return { bin: resolved, prefixArgs: [] };
|
|
16317
16315
|
}
|
|
16318
16316
|
rejectCmdExpansionSensitiveShim(resolved);
|
|
@@ -16330,13 +16328,13 @@ function forceWindowsArgQuoting(value) {
|
|
|
16330
16328
|
return `${value} `;
|
|
16331
16329
|
}
|
|
16332
16330
|
function findOnPath(bin, pathValue, pathExts, platform) {
|
|
16333
|
-
const pathSeparator = platform === "win32" ? WINDOWS_PATH_SEPARATOR :
|
|
16334
|
-
if (hasPathSeparator(bin, platform) ||
|
|
16331
|
+
const pathSeparator = platform === "win32" ? WINDOWS_PATH_SEPARATOR : path2.delimiter;
|
|
16332
|
+
if (hasPathSeparator(bin, platform) || path2.isAbsolute(bin)) {
|
|
16335
16333
|
return resolveWithExtensions(bin, pathExts, platform);
|
|
16336
16334
|
}
|
|
16337
16335
|
for (const entry of pathValue.split(pathSeparator)) {
|
|
16338
16336
|
const searchDir = entry.length === 0 ? "." : entry;
|
|
16339
|
-
const candidate = resolveWithExtensions(
|
|
16337
|
+
const candidate = resolveWithExtensions(path2.join(searchDir, bin), pathExts, platform);
|
|
16340
16338
|
if (candidate) {
|
|
16341
16339
|
return candidate;
|
|
16342
16340
|
}
|
|
@@ -16344,7 +16342,7 @@ function findOnPath(bin, pathValue, pathExts, platform) {
|
|
|
16344
16342
|
return void 0;
|
|
16345
16343
|
}
|
|
16346
16344
|
function resolveWithExtensions(candidate, pathExts, platform) {
|
|
16347
|
-
if (platform !== "win32" ||
|
|
16345
|
+
if (platform !== "win32" || path2.extname(candidate).length > 0) {
|
|
16348
16346
|
return isAccessibleExecutable(candidate, platform) ? candidate : void 0;
|
|
16349
16347
|
}
|
|
16350
16348
|
for (const ext of pathExts) {
|
|
@@ -16572,9 +16570,9 @@ function createNpmInstallEnv(cliHome, source = process.env) {
|
|
|
16572
16570
|
if (source[key] !== void 0) env[key] = source[key];
|
|
16573
16571
|
}
|
|
16574
16572
|
env.npm_config_registry = OFFICIAL_NPM_REGISTRY;
|
|
16575
|
-
env.npm_config_userconfig =
|
|
16576
|
-
env.npm_config_globalconfig =
|
|
16577
|
-
env.npm_config_cache =
|
|
16573
|
+
env.npm_config_userconfig = path2.join(cliHome, ".npmrc-disabled-user");
|
|
16574
|
+
env.npm_config_globalconfig = path2.join(cliHome, ".npmrc-disabled-global");
|
|
16575
|
+
env.npm_config_cache = path2.join(cliHome, ".npm-cache");
|
|
16578
16576
|
return env;
|
|
16579
16577
|
}
|
|
16580
16578
|
var defaultInstallExecutor = (file2, args, timeout, env) => new Promise((resolve, reject) => {
|
|
@@ -16586,15 +16584,15 @@ var defaultInstallExecutor = (file2, args, timeout, env) => new Promise((resolve
|
|
|
16586
16584
|
child.on("error", reject);
|
|
16587
16585
|
});
|
|
16588
16586
|
function isContainedPath(parent, candidate) {
|
|
16589
|
-
const relative =
|
|
16590
|
-
return relative === "" || !relative.startsWith(`..${
|
|
16587
|
+
const relative = path2.relative(parent, candidate);
|
|
16588
|
+
return relative === "" || !relative.startsWith(`..${path2.sep}`) && relative !== ".." && !path2.isAbsolute(relative);
|
|
16591
16589
|
}
|
|
16592
16590
|
async function resolveSafeTokscaleBin(cliHome) {
|
|
16593
|
-
const binPath =
|
|
16591
|
+
const binPath = path2.join(cliHome, "node_modules", TOKSCALE_PACKAGE, "bin.js");
|
|
16594
16592
|
try {
|
|
16595
|
-
const stat = await
|
|
16593
|
+
const stat = await fs.lstat(binPath);
|
|
16596
16594
|
if (!stat.isFile()) return null;
|
|
16597
|
-
const [realCliHome, realBinPath] = await Promise.all([
|
|
16595
|
+
const [realCliHome, realBinPath] = await Promise.all([fs.realpath(cliHome), fs.realpath(binPath)]);
|
|
16598
16596
|
return isContainedPath(realCliHome, realBinPath) ? realBinPath : null;
|
|
16599
16597
|
} catch {
|
|
16600
16598
|
return null;
|
|
@@ -16602,7 +16600,7 @@ async function resolveSafeTokscaleBin(cliHome) {
|
|
|
16602
16600
|
}
|
|
16603
16601
|
async function hasPinnedTokscale(cliHome) {
|
|
16604
16602
|
try {
|
|
16605
|
-
const raw = await
|
|
16603
|
+
const raw = await fs.readFile(path2.join(cliHome, "node_modules", TOKSCALE_PACKAGE, "package.json"), "utf8");
|
|
16606
16604
|
const pkg = JSON.parse(raw);
|
|
16607
16605
|
return pkg.version === TOKSCALE_VERSION && await resolveSafeTokscaleBin(cliHome) !== null;
|
|
16608
16606
|
} catch {
|
|
@@ -16623,7 +16621,7 @@ function ensureTokscaleBin(cliHome, installExecutor = defaultInstallExecutor) {
|
|
|
16623
16621
|
if (_bootstrapPromise) return _bootstrapPromise;
|
|
16624
16622
|
_bootstrapPromise = (async () => {
|
|
16625
16623
|
if (!await hasPinnedTokscale(cliHome)) {
|
|
16626
|
-
await
|
|
16624
|
+
await fs.mkdir(cliHome, { recursive: true });
|
|
16627
16625
|
const command = resolveNpmCommand([
|
|
16628
16626
|
"install",
|
|
16629
16627
|
`${TOKSCALE_PACKAGE}@${TOKSCALE_VERSION}`,
|
|
@@ -17106,7 +17104,7 @@ function createLedgerService(deps) {
|
|
|
17106
17104
|
var routes_default = definePlugin({
|
|
17107
17105
|
id: "ledger",
|
|
17108
17106
|
register(ctx) {
|
|
17109
|
-
const cliHome =
|
|
17107
|
+
const cliHome = path2.join(ctx.host.paths.pluginDataDir("ledger"), "cli");
|
|
17110
17108
|
const service = createLedgerService({
|
|
17111
17109
|
cliHome,
|
|
17112
17110
|
executor: createDefaultExecutor(cliHome)
|