@wirecat/zoom-cli 0.60.0 → 0.60.1
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 +4 -3
- package/dist/bin/main.js +1 -0
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/zm.js +2 -2
- package/dist/bundle/{all-profiles-7OZPJY76.js → all-profiles-E6KXASLY.js} +5 -5
- package/dist/bundle/{answer-policy-PVWMA2QC.js → answer-policy-YWCC55NB.js} +49 -49
- package/dist/bundle/{anthropic-TT2XV74T.js → anthropic-CSLAACWX.js} +3 -3
- package/dist/bundle/{app-server-POMYD6QV.js → app-server-RYYXX6QV.js} +43 -43
- package/dist/bundle/{bun-sqlite-BBOPAQVG.js → bun-sqlite-B5CZHAV4.js} +2 -2
- package/dist/bundle/{chunk-AJA5ZAV6.js → chunk-3LBA63D5.js} +3 -3
- package/dist/bundle/{chunk-PUOBYJFI.js → chunk-3R437ICM.js} +2 -2
- package/dist/bundle/{chunk-D6L35XQS.js → chunk-43BX56ZI.js} +3 -3
- package/dist/bundle/{chunk-VYUSEJE4.js → chunk-46R2JTGO.js} +2 -2
- package/dist/bundle/{chunk-SKENSSY2.js → chunk-4TCQT57W.js} +10 -10
- package/dist/bundle/{chunk-GNRYFESK.js → chunk-6BJQBVMN.js} +12 -12
- package/dist/bundle/{chunk-AQDWGJZT.js → chunk-7IDNHVJS.js} +39 -2
- package/dist/bundle/{chunk-NKFRV2LB.js → chunk-AOZGGGUK.js} +1 -1
- package/dist/bundle/{chunk-KUBWRI5E.js → chunk-AZZPMHP2.js} +1 -1
- package/dist/bundle/{chunk-72A7CIPL.js → chunk-BO7J5Z3T.js} +6 -6
- package/dist/bundle/{chunk-ODFIV4OS.js → chunk-CGCJ6P3A.js} +12 -12
- package/dist/bundle/{chunk-57LT4A2E.js → chunk-DBSWVZES.js} +1 -1
- package/dist/bundle/{chunk-DAQXO6SM.js → chunk-EN5DBDKW.js} +1 -1
- package/dist/bundle/{chunk-EXFAA4N3.js → chunk-ES6UWVTM.js} +1 -1
- package/dist/bundle/{chunk-MGYFSXI5.js → chunk-EUHQ5D4K.js} +12 -12
- package/dist/bundle/{chunk-E3AMUYNB.js → chunk-FWJ3Q7NO.js} +2 -2
- package/dist/bundle/{chunk-V2QOLHPM.js → chunk-FZMRHNOP.js} +2 -2
- package/dist/bundle/{chunk-J3N2LL37.js → chunk-GEVHI226.js} +2 -2
- package/dist/bundle/{chunk-RSLXLUTS.js → chunk-HAUAEGGI.js} +6 -6
- package/dist/bundle/{chunk-TAQKNWCD.js → chunk-HYZ545ON.js} +1 -1
- package/dist/bundle/{chunk-EH6G2LEU.js → chunk-INARC5O7.js} +7 -7
- package/dist/bundle/{chunk-EOZWDEJL.js → chunk-IQENQXUJ.js} +1 -1
- package/dist/bundle/{chunk-QJCVOVNR.js → chunk-IQSBMAYB.js} +1 -1
- package/dist/bundle/{chunk-4HZRZDMC.js → chunk-IRX2YVAH.js} +3 -3
- package/dist/bundle/{chunk-SG3WSP7Y.js → chunk-K6NPOZUP.js} +1 -1
- package/dist/bundle/{chunk-KVPYI52N.js → chunk-KNAS4VEA.js} +1 -1
- package/dist/bundle/{chunk-KUBCUE6T.js → chunk-KXEC5FVT.js} +1 -1
- package/dist/bundle/{chunk-3P4LUGXI.js → chunk-KYUIU5UR.js} +1 -1
- package/dist/bundle/{chunk-J5ZVGKSZ.js → chunk-LPDYI5GR.js} +1 -1
- package/dist/bundle/{chunk-RNX73QCL.js → chunk-LPY2ISJK.js} +2 -2
- package/dist/bundle/{chunk-UOFOMU3T.js → chunk-LVHZQCP4.js} +1 -1
- package/dist/bundle/{chunk-3UMXCNDI.js → chunk-N27LOY3D.js} +3 -3
- package/dist/bundle/{chunk-4FTPE5SB.js → chunk-OBUKZ2ZM.js} +24 -24
- package/dist/bundle/{chunk-4MC4Z45G.js → chunk-OEEMCNAO.js} +4 -4
- package/dist/bundle/{chunk-7T3BUWJK.js → chunk-PAEBFJUC.js} +7 -7
- package/dist/bundle/{chunk-TB72GE55.js → chunk-PATM7JGR.js} +1 -1
- package/dist/bundle/{chunk-7PQY4ISY.js → chunk-PEMLI3T7.js} +2 -2
- package/dist/bundle/{chunk-RH5YXXAB.js → chunk-PPHUBORC.js} +21 -21
- package/dist/bundle/{chunk-UOL4ILXT.js → chunk-Q7U627RY.js} +2 -2
- package/dist/bundle/{chunk-7GVNQOV6.js → chunk-QKSCDALS.js} +1 -1
- package/dist/bundle/{chunk-YIMI6O7R.js → chunk-R4SRXI7M.js} +111 -111
- package/dist/bundle/{chunk-DP5DX45H.js → chunk-RACSKYNX.js} +1 -1
- package/dist/bundle/{chunk-2EVRKK75.js → chunk-REC3AZP6.js} +1 -1
- package/dist/bundle/{chunk-24DLFGES.js → chunk-RUEPZTNA.js} +2 -2
- package/dist/bundle/{chunk-M5WLBRL7.js → chunk-TY5PBEH2.js} +10 -10
- package/dist/bundle/{chunk-EROQ5SC7.js → chunk-UWVNY5CA.js} +1 -1
- package/dist/bundle/{chunk-DKIIKMSE.js → chunk-V53IB5AU.js} +20 -20
- package/dist/bundle/{chunk-YSZQ5SZK.js → chunk-VJBVNDFR.js} +2 -2
- package/dist/bundle/{chunk-LZBWU2IA.js → chunk-VKUS2V4L.js} +2 -2
- package/dist/bundle/{chunk-LKV3NRCJ.js → chunk-VLE3FWE3.js} +11 -11
- package/dist/bundle/{chunk-LYZNVNJA.js → chunk-VVKHF6VJ.js} +1 -1
- package/dist/bundle/{chunk-I45V6AFG.js → chunk-WB7MQHUI.js} +1 -1
- package/dist/bundle/{chunk-YZZ6NBXC.js → chunk-WEUXLXOZ.js} +5 -5
- package/dist/bundle/{chunk-Q4NDCDFG.js → chunk-WFT2GGFH.js} +7 -7
- package/dist/bundle/{chunk-IFXPNXAH.js → chunk-WWNZS7ZY.js} +1 -1
- package/dist/bundle/{chunk-XMCVB4Q4.js → chunk-WYRYLBST.js} +4 -4
- package/dist/bundle/{chunk-GXACHTB2.js → chunk-X7YPTYM4.js} +2 -2
- package/dist/bundle/{chunk-HWZXQLR5.js → chunk-XNUFDYR6.js} +3 -3
- package/dist/bundle/{chunk-PU4FKK5T.js → chunk-XS72YFPV.js} +1 -1
- package/dist/bundle/{chunk-22UBF6U6.js → chunk-XX7KVQIG.js} +1 -1
- package/dist/bundle/{chunk-G3MXAGF2.js → chunk-Y3YURIZF.js} +12 -12
- package/dist/bundle/{chunk-DN7VHENQ.js → chunk-YEZQ7SD7.js} +5 -5
- package/dist/bundle/{chunk-WVXAQVLG.js → chunk-YLATWUE7.js} +3 -3
- package/dist/bundle/{chunk-JBGYI5BY.js → chunk-Z4D6M62I.js} +1 -1
- package/dist/bundle/{chunk-XAF2LHZG.js → chunk-Z5H47R4G.js} +25 -25
- package/dist/bundle/{chunk-SK3K2VHF.js → chunk-ZDRDCANC.js} +51 -51
- package/dist/bundle/{chunk-2TV7UTHK.js → chunk-ZXQCA3ZW.js} +1 -1
- package/dist/bundle/{cli-WIMAOCXF.js → cli-CYKEKT5P.js} +47 -47
- package/dist/bundle/command-contract-P45QCCXM.js +38 -0
- package/dist/bundle/config-JYKTLEA3.js +79 -0
- package/dist/bundle/{decode-UBPIHVNG.js → decode-CTQJQYNU.js} +2 -2
- package/dist/bundle/{dist-YYDTME5J.js → dist-YLSQKPPY.js} +13 -13
- package/dist/bundle/{embed-7JHEPBFD.js → embed-P2BKRRJD.js} +4 -4
- package/dist/bundle/{embedder-HTRPWR6T.js → embedder-HC6ZARP5.js} +4 -4
- package/dist/bundle/{first-run-I52ADRJ2.js → first-run-UERFFXBV.js} +7 -7
- package/dist/bundle/first-screen-VFIS7FX3.js +36 -0
- package/dist/bundle/{folders-5ZBUQHAM.js → folders-RSLPTZLJ.js} +2 -2
- package/dist/bundle/{main-64VVZ5QG.js → main-2T6D77JC.js} +17 -16
- package/dist/bundle/mcp-4VHVUMCR.js +92 -0
- package/dist/bundle/{mcp-ZMIPDB4R.js → mcp-6CLW2IZM.js} +56 -56
- package/dist/bundle/{meetings-RD3NU6NN.js → meetings-ZIDSQZBJ.js} +3 -3
- package/dist/bundle/{node-sqlite-DGEEDBXV.js → node-sqlite-7CGHAHIS.js} +2 -2
- package/dist/bundle/{oauth-NRZMCFH3.js → oauth-UBCYXTWV.js} +4 -4
- package/dist/bundle/{open-SUGCOCAU.js → open-AWUB4Q7Z.js} +2 -2
- package/dist/bundle/{output-file-SXV2ANW7.js → output-file-SN22HAVL.js} +3 -3
- package/dist/bundle/{program-WGNTV7NS.js → program-STYPTNT3.js} +67 -63
- package/dist/bundle/{prompt-NICXDWN3.js → prompt-MAYUHEGN.js} +3 -3
- package/dist/bundle/{recognize-6DAHO6X6.js → recognize-FVTNXRTF.js} +2 -2
- package/dist/bundle/{remote-JZ3TXP6I.js → remote-WCPRU73L.js} +5 -5
- package/dist/bundle/{rerank-YSXWCAGZ.js → rerank-6CBLZBCV.js} +4 -4
- package/dist/bundle/{run-log-APHZZWC7.js → run-log-G4WZTOBW.js} +47 -47
- package/dist/bundle/{serve-7VWL475U.js → serve-3IDUVTZL.js} +5 -5
- package/dist/bundle/server-7GU36TER.js +66 -0
- package/dist/bundle/server-VHRS5UAL.js +53 -0
- package/dist/bundle/{services-D64U72OE.js → services-326Z3TNE.js} +23 -23
- package/dist/bundle/{speech-QLCQAT4O.js → speech-KSZ7RKM3.js} +4 -4
- package/dist/bundle/{state-KAD3R27T.js → state-EPB3L2JM.js} +3 -3
- package/dist/bundle/{store-2BHHS77S.js → store-7WX7SW2R.js} +13 -13
- package/dist/bundle/{store-7UNPRLZ3.js → store-KO242JBK.js} +11 -11
- package/dist/bundle/store-connection-K3MNDCQQ.js +76 -0
- package/dist/bundle/store-maintenance-command-GJDJYI2U.js +54 -0
- package/dist/bundle/{streaming-AK6Q2ZGQ.js → streaming-M6VDKBBH.js} +4 -4
- package/dist/bundle/{tokens-CCM3D4ZT.js → tokens-BTNXHR7T.js} +4 -4
- package/dist/bundle/zm.js +1 -1
- package/dist/login.d.ts +1 -0
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +1 -1
- package/dist/login.js.map +1 -1
- package/dist/recording-schedule-setup.d.ts.map +1 -1
- package/dist/recording-schedule-setup.js +1 -0
- package/dist/recording-schedule-setup.js.map +1 -1
- package/dist/setup-commands.d.ts.map +1 -1
- package/dist/setup-commands.js +6 -1
- package/dist/setup-commands.js.map +1 -1
- package/dist/tokens.d.ts +15 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +40 -1
- package/dist/tokens.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/bundle/command-contract-J7PDZQMC.js +0 -38
- package/dist/bundle/config-G62PBNZF.js +0 -79
- package/dist/bundle/first-screen-XNCFWOLC.js +0 -36
- package/dist/bundle/mcp-5SJXWEJW.js +0 -92
- package/dist/bundle/server-7LABFAA5.js +0 -53
- package/dist/bundle/server-VFXB5WRG.js +0 -66
- package/dist/bundle/store-connection-QTMLZ7LR.js +0 -76
- package/dist/bundle/store-maintenance-command-ND6PQCVZ.js +0 -54
|
@@ -4531,6 +4531,115 @@ var systemKeyring = {
|
|
|
4531
4531
|
delete: /* @__PURE__ */ __name((service, account) => entry(service, account).deletePassword(), "delete")
|
|
4532
4532
|
};
|
|
4533
4533
|
|
|
4534
|
+
// node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/credentials.js
|
|
4535
|
+
import { readFileSync as readFileSync2 } from "node:fs";
|
|
4536
|
+
import { join as join2 } from "node:path";
|
|
4537
|
+
var keyringService = /* @__PURE__ */ __name((service, configDir, isolated = false) => isolated ? `${service}:${configDir}` : service, "keyringService");
|
|
4538
|
+
var Credentials = class {
|
|
4539
|
+
static {
|
|
4540
|
+
__name(this, "Credentials");
|
|
4541
|
+
}
|
|
4542
|
+
#configDir;
|
|
4543
|
+
#storage;
|
|
4544
|
+
#keyring;
|
|
4545
|
+
#env;
|
|
4546
|
+
#service;
|
|
4547
|
+
#envVar;
|
|
4548
|
+
#fileName;
|
|
4549
|
+
#warn;
|
|
4550
|
+
#warned = false;
|
|
4551
|
+
constructor(options) {
|
|
4552
|
+
this.#configDir = options.configDir;
|
|
4553
|
+
this.#storage = options.storage ?? "auto";
|
|
4554
|
+
this.#keyring = options.keyring ?? systemKeyring;
|
|
4555
|
+
this.#env = options.env ?? process.env;
|
|
4556
|
+
this.#envVar = options.envVar;
|
|
4557
|
+
this.#fileName = options.fileName ?? "credentials.json";
|
|
4558
|
+
this.#warn = options.warn ?? ((message) => process.stderr.write(`${message}
|
|
4559
|
+
`));
|
|
4560
|
+
this.#service = keyringService(options.service, options.configDir, options.isolated);
|
|
4561
|
+
}
|
|
4562
|
+
read(account) {
|
|
4563
|
+
const fromEnv = this.#envVar ? this.#env[this.#envVar]?.trim() : void 0;
|
|
4564
|
+
if (fromEnv)
|
|
4565
|
+
return { secret: fromEnv, source: "environment" };
|
|
4566
|
+
if (this.#storage !== "file") {
|
|
4567
|
+
const fromKeyring = this.#tryKeyring(() => this.#keyring.get(this.#service, account));
|
|
4568
|
+
if (fromKeyring)
|
|
4569
|
+
return { secret: fromKeyring, source: "keyring" };
|
|
4570
|
+
}
|
|
4571
|
+
const fromFile = this.#readFile()?.[account]?.secret;
|
|
4572
|
+
return fromFile ? { secret: fromFile, source: "file" } : void 0;
|
|
4573
|
+
}
|
|
4574
|
+
write(account, secret) {
|
|
4575
|
+
if (this.#storage !== "file") {
|
|
4576
|
+
const stored = this.#tryKeyring(() => {
|
|
4577
|
+
this.#keyring.set(this.#service, account, secret);
|
|
4578
|
+
return true;
|
|
4579
|
+
});
|
|
4580
|
+
if (stored)
|
|
4581
|
+
return "keyring";
|
|
4582
|
+
}
|
|
4583
|
+
const store2 = this.#readFile();
|
|
4584
|
+
if (!store2) {
|
|
4585
|
+
throw new CliError("configuration_error", `${this.#path()} cannot be read as a credentials file; storing now would replace every secret in it. Fix the file or move it aside, then try again.`);
|
|
4586
|
+
}
|
|
4587
|
+
store2[account] = { secret };
|
|
4588
|
+
this.#writeFile(store2);
|
|
4589
|
+
return "file";
|
|
4590
|
+
}
|
|
4591
|
+
remove(account) {
|
|
4592
|
+
const removed = [];
|
|
4593
|
+
if (this.#storage !== "file" && this.#tryKeyring(() => this.#keyring.delete(this.#service, account))) {
|
|
4594
|
+
removed.push("keyring");
|
|
4595
|
+
}
|
|
4596
|
+
const store2 = this.#readFile();
|
|
4597
|
+
if (store2?.[account] !== void 0) {
|
|
4598
|
+
delete store2[account];
|
|
4599
|
+
this.#writeFile(store2);
|
|
4600
|
+
removed.push("file");
|
|
4601
|
+
}
|
|
4602
|
+
return removed;
|
|
4603
|
+
}
|
|
4604
|
+
#path() {
|
|
4605
|
+
return join2(this.#configDir, this.#fileName);
|
|
4606
|
+
}
|
|
4607
|
+
/** `undefined` when the file exists but is not a store: writing would replace what it holds. */
|
|
4608
|
+
#readFile() {
|
|
4609
|
+
let text2;
|
|
4610
|
+
try {
|
|
4611
|
+
text2 = readFileSync2(this.#path(), "utf8");
|
|
4612
|
+
} catch (error) {
|
|
4613
|
+
if (error.code === "ENOENT")
|
|
4614
|
+
return {};
|
|
4615
|
+
return void 0;
|
|
4616
|
+
}
|
|
4617
|
+
try {
|
|
4618
|
+
const parsed = JSON.parse(text2);
|
|
4619
|
+
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : void 0;
|
|
4620
|
+
} catch {
|
|
4621
|
+
return void 0;
|
|
4622
|
+
}
|
|
4623
|
+
}
|
|
4624
|
+
#writeFile(store2) {
|
|
4625
|
+
writeSecurely(this.#path(), `${JSON.stringify(store2, null, 2)}
|
|
4626
|
+
`, 384);
|
|
4627
|
+
}
|
|
4628
|
+
#tryKeyring(operation) {
|
|
4629
|
+
if (this.#storage === "keyring")
|
|
4630
|
+
return operation();
|
|
4631
|
+
try {
|
|
4632
|
+
return operation();
|
|
4633
|
+
} catch (error) {
|
|
4634
|
+
if (!this.#warned) {
|
|
4635
|
+
this.#warned = true;
|
|
4636
|
+
this.#warn(`could not reach the OS keyring \u2014 it may be locked, or no keyring service is running (${error instanceof Error ? error.message : String(error)}); using ${this.#path()} instead, readable only by you`);
|
|
4637
|
+
}
|
|
4638
|
+
return void 0;
|
|
4639
|
+
}
|
|
4640
|
+
}
|
|
4641
|
+
};
|
|
4642
|
+
|
|
4534
4643
|
// node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/logging.js
|
|
4535
4644
|
import { appendFileSync } from "node:fs";
|
|
4536
4645
|
|
|
@@ -4769,7 +4878,7 @@ var createOutputBuffer = /* @__PURE__ */ __name(({ maxOutputBytes = 4 * 1024 * 1
|
|
|
4769
4878
|
|
|
4770
4879
|
// node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/paths.js
|
|
4771
4880
|
import { homedir } from "node:os";
|
|
4772
|
-
import { join as
|
|
4881
|
+
import { join as join3, posix, win32 } from "node:path";
|
|
4773
4882
|
var PATH_KINDS = ["config", "state", "cache"];
|
|
4774
4883
|
var OVERRIDES = { config: "CONFIG_DIR", state: "STATE_DIR", cache: "CACHE_DIR" };
|
|
4775
4884
|
var overrideName = /* @__PURE__ */ __name((appName, prefix, kind) => `${prefix ?? appName.toUpperCase().replace(/[^A-Z0-9]/g, "_")}_${OVERRIDES[kind]}`, "overrideName");
|
|
@@ -4801,116 +4910,7 @@ var resolvePaths = /* @__PURE__ */ __name((options) => {
|
|
|
4801
4910
|
};
|
|
4802
4911
|
}, "resolvePaths");
|
|
4803
4912
|
var pathsAreOverridden = /* @__PURE__ */ __name(({ appName, prefix, env = process.env }) => PATH_KINDS.some((kind) => env[overrideName(appName, prefix, kind)] !== void 0), "pathsAreOverridden");
|
|
4804
|
-
var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") =>
|
|
4805
|
-
|
|
4806
|
-
// node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/credentials.js
|
|
4807
|
-
import { readFileSync as readFileSync2 } from "node:fs";
|
|
4808
|
-
import { join as join3 } from "node:path";
|
|
4809
|
-
var keyringService = /* @__PURE__ */ __name((service, configDir, isolated = false) => isolated ? `${service}:${configDir}` : service, "keyringService");
|
|
4810
|
-
var Credentials = class {
|
|
4811
|
-
static {
|
|
4812
|
-
__name(this, "Credentials");
|
|
4813
|
-
}
|
|
4814
|
-
#configDir;
|
|
4815
|
-
#storage;
|
|
4816
|
-
#keyring;
|
|
4817
|
-
#env;
|
|
4818
|
-
#service;
|
|
4819
|
-
#envVar;
|
|
4820
|
-
#fileName;
|
|
4821
|
-
#warn;
|
|
4822
|
-
#warned = false;
|
|
4823
|
-
constructor(options) {
|
|
4824
|
-
this.#configDir = options.configDir;
|
|
4825
|
-
this.#storage = options.storage ?? "auto";
|
|
4826
|
-
this.#keyring = options.keyring ?? systemKeyring;
|
|
4827
|
-
this.#env = options.env ?? process.env;
|
|
4828
|
-
this.#envVar = options.envVar;
|
|
4829
|
-
this.#fileName = options.fileName ?? "credentials.json";
|
|
4830
|
-
this.#warn = options.warn ?? ((message) => process.stderr.write(`${message}
|
|
4831
|
-
`));
|
|
4832
|
-
this.#service = keyringService(options.service, options.configDir, options.isolated);
|
|
4833
|
-
}
|
|
4834
|
-
read(account) {
|
|
4835
|
-
const fromEnv = this.#envVar ? this.#env[this.#envVar]?.trim() : void 0;
|
|
4836
|
-
if (fromEnv)
|
|
4837
|
-
return { secret: fromEnv, source: "environment" };
|
|
4838
|
-
if (this.#storage !== "file") {
|
|
4839
|
-
const fromKeyring = this.#tryKeyring(() => this.#keyring.get(this.#service, account));
|
|
4840
|
-
if (fromKeyring)
|
|
4841
|
-
return { secret: fromKeyring, source: "keyring" };
|
|
4842
|
-
}
|
|
4843
|
-
const fromFile = this.#readFile()?.[account]?.secret;
|
|
4844
|
-
return fromFile ? { secret: fromFile, source: "file" } : void 0;
|
|
4845
|
-
}
|
|
4846
|
-
write(account, secret) {
|
|
4847
|
-
if (this.#storage !== "file") {
|
|
4848
|
-
const stored = this.#tryKeyring(() => {
|
|
4849
|
-
this.#keyring.set(this.#service, account, secret);
|
|
4850
|
-
return true;
|
|
4851
|
-
});
|
|
4852
|
-
if (stored)
|
|
4853
|
-
return "keyring";
|
|
4854
|
-
}
|
|
4855
|
-
const store2 = this.#readFile();
|
|
4856
|
-
if (!store2) {
|
|
4857
|
-
throw new CliError("configuration_error", `${this.#path()} cannot be read as a credentials file; storing now would replace every secret in it. Fix the file or move it aside, then try again.`);
|
|
4858
|
-
}
|
|
4859
|
-
store2[account] = { secret };
|
|
4860
|
-
this.#writeFile(store2);
|
|
4861
|
-
return "file";
|
|
4862
|
-
}
|
|
4863
|
-
remove(account) {
|
|
4864
|
-
const removed = [];
|
|
4865
|
-
if (this.#storage !== "file" && this.#tryKeyring(() => this.#keyring.delete(this.#service, account))) {
|
|
4866
|
-
removed.push("keyring");
|
|
4867
|
-
}
|
|
4868
|
-
const store2 = this.#readFile();
|
|
4869
|
-
if (store2?.[account] !== void 0) {
|
|
4870
|
-
delete store2[account];
|
|
4871
|
-
this.#writeFile(store2);
|
|
4872
|
-
removed.push("file");
|
|
4873
|
-
}
|
|
4874
|
-
return removed;
|
|
4875
|
-
}
|
|
4876
|
-
#path() {
|
|
4877
|
-
return join3(this.#configDir, this.#fileName);
|
|
4878
|
-
}
|
|
4879
|
-
/** `undefined` when the file exists but is not a store: writing would replace what it holds. */
|
|
4880
|
-
#readFile() {
|
|
4881
|
-
let text2;
|
|
4882
|
-
try {
|
|
4883
|
-
text2 = readFileSync2(this.#path(), "utf8");
|
|
4884
|
-
} catch (error) {
|
|
4885
|
-
if (error.code === "ENOENT")
|
|
4886
|
-
return {};
|
|
4887
|
-
return void 0;
|
|
4888
|
-
}
|
|
4889
|
-
try {
|
|
4890
|
-
const parsed = JSON.parse(text2);
|
|
4891
|
-
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : void 0;
|
|
4892
|
-
} catch {
|
|
4893
|
-
return void 0;
|
|
4894
|
-
}
|
|
4895
|
-
}
|
|
4896
|
-
#writeFile(store2) {
|
|
4897
|
-
writeSecurely(this.#path(), `${JSON.stringify(store2, null, 2)}
|
|
4898
|
-
`, 384);
|
|
4899
|
-
}
|
|
4900
|
-
#tryKeyring(operation) {
|
|
4901
|
-
if (this.#storage === "keyring")
|
|
4902
|
-
return operation();
|
|
4903
|
-
try {
|
|
4904
|
-
return operation();
|
|
4905
|
-
} catch (error) {
|
|
4906
|
-
if (!this.#warned) {
|
|
4907
|
-
this.#warned = true;
|
|
4908
|
-
this.#warn(`could not reach the OS keyring \u2014 it may be locked, or no keyring service is running (${error instanceof Error ? error.message : String(error)}); using ${this.#path()} instead, readable only by you`);
|
|
4909
|
-
}
|
|
4910
|
-
return void 0;
|
|
4911
|
-
}
|
|
4912
|
-
}
|
|
4913
|
-
};
|
|
4913
|
+
var configFilePath = /* @__PURE__ */ __name((configDir, fileName = "config.json") => join3(configDir, fileName), "configFilePath");
|
|
4914
4914
|
|
|
4915
4915
|
// node_modules/.pnpm/@wirecat+cli-base@0.65.0_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/time.js
|
|
4916
4916
|
var abortError = /* @__PURE__ */ __name(() => new DOMException("The operation was aborted.", "AbortError"), "abortError");
|
|
@@ -2,11 +2,11 @@ import { createRequire as __bundleRequire } from "node:module";
|
|
|
2
2
|
const require = __bundleRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
checkCancelled
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-46R2JTGO.js";
|
|
6
6
|
import {
|
|
7
7
|
CliError,
|
|
8
8
|
createOutputBuffer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-R4SRXI7M.js";
|
|
10
10
|
import {
|
|
11
11
|
__name
|
|
12
12
|
} from "./chunk-ZVVMGPBJ.js";
|
|
@@ -3,23 +3,23 @@ const require = __bundleRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
installerOf,
|
|
5
5
|
updateCommand
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RACSKYNX.js";
|
|
7
7
|
import {
|
|
8
8
|
QUESTIONS,
|
|
9
9
|
readSetupAnswers,
|
|
10
10
|
unanswered,
|
|
11
11
|
writeSetupAnswers
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-IRX2YVAH.js";
|
|
13
13
|
import {
|
|
14
14
|
DEFAULT_STEMMERS,
|
|
15
15
|
LANGUAGES
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-ZXQCA3ZW.js";
|
|
17
17
|
import {
|
|
18
18
|
sharedConfigPath
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-FWJ3Q7NO.js";
|
|
20
20
|
import {
|
|
21
21
|
storePath
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KXEC5FVT.js";
|
|
23
23
|
import {
|
|
24
24
|
__name
|
|
25
25
|
} from "./chunk-ZVVMGPBJ.js";
|
|
@@ -82,7 +82,7 @@ var suggested = /* @__PURE__ */ __name((env, contentLanguages) => {
|
|
|
82
82
|
return (own.length ? own : LANGUAGES.filter(({ code }) => code === "en" || code === system)).map(({ name }) => name);
|
|
83
83
|
}, "suggested");
|
|
84
84
|
var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLanguages }) => {
|
|
85
|
-
const { openStore } = await import("./store-
|
|
85
|
+
const { openStore } = await import("./store-KO242JBK.js");
|
|
86
86
|
const store = await openStore({ env });
|
|
87
87
|
let rebuild = false;
|
|
88
88
|
try {
|
|
@@ -111,8 +111,8 @@ var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLang
|
|
|
111
111
|
if (!rebuild)
|
|
112
112
|
return;
|
|
113
113
|
const [{ openCache }, { buildStems }] = await Promise.all([
|
|
114
|
-
import("./open-
|
|
115
|
-
import("./store-maintenance-command-
|
|
114
|
+
import("./open-AWUB4Q7Z.js"),
|
|
115
|
+
import("./store-maintenance-command-GJDJYI2U.js")
|
|
116
116
|
]);
|
|
117
117
|
const database = await openCache(storePath(env));
|
|
118
118
|
try {
|
|
@@ -124,7 +124,7 @@ var askLanguages = /* @__PURE__ */ __name(async ({ command, env, io, contentLang
|
|
|
124
124
|
var askTools = /* @__PURE__ */ __name(async (run) => {
|
|
125
125
|
const { command, env, io } = run;
|
|
126
126
|
const installed = run.installed ?? ((name) => onPath(name, env));
|
|
127
|
-
const { WIRECAT_TOOLS } = await import("./first-screen-
|
|
127
|
+
const { WIRECAT_TOOLS } = await import("./first-screen-VFIS7FX3.js");
|
|
128
128
|
const others = WIRECAT_TOOLS.filter((tool) => tool.command !== command);
|
|
129
129
|
const missing = others.filter((tool) => !installed(tool.command));
|
|
130
130
|
io.say("Other WireCat tools \u2014 they share this store, so one search finds everything:");
|
|
@@ -197,7 +197,7 @@ var setupAtStart = /* @__PURE__ */ __name(async (start) => {
|
|
|
197
197
|
contentLanguages: start.contentLanguages,
|
|
198
198
|
all: start.path[0] === "setup",
|
|
199
199
|
io: {
|
|
200
|
-
ask: /* @__PURE__ */ __name(async (prompt) => (await import("./prompt-
|
|
200
|
+
ask: /* @__PURE__ */ __name(async (prompt) => (await import("./prompt-MAYUHEGN.js")).readSecret(prompt, { input, echo: true }), "ask"),
|
|
201
201
|
say: /* @__PURE__ */ __name((text) => process.stderr.write(`${text}
|
|
202
202
|
`), "say")
|
|
203
203
|
}
|
|
@@ -3,7 +3,7 @@ const require = __bundleRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
answerOf,
|
|
5
5
|
messengerContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EUHQ5D4K.js";
|
|
7
7
|
import {
|
|
8
8
|
chatEventAnswer,
|
|
9
9
|
memberAnswer,
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
serveRelay,
|
|
13
13
|
typedQuery,
|
|
14
14
|
withQuery
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WFT2GGFH.js";
|
|
16
16
|
import {
|
|
17
17
|
holdLock,
|
|
18
18
|
lockPath,
|
|
19
19
|
releaseLock,
|
|
20
20
|
servingProfiles,
|
|
21
21
|
takeLock
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-IQSBMAYB.js";
|
|
23
23
|
import {
|
|
24
24
|
RULES_VERSION,
|
|
25
25
|
applyTaskRulesOnArrival,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
senderIsMe,
|
|
30
30
|
servicesFor,
|
|
31
31
|
syncsOneChat
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-Z5H47R4G.js";
|
|
33
33
|
import {
|
|
34
34
|
Command,
|
|
35
35
|
LOCAL_READ,
|
|
@@ -53,38 +53,38 @@ import {
|
|
|
53
53
|
snakeKeys,
|
|
54
54
|
storeTable,
|
|
55
55
|
withoutProviderRefs
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-Y3YURIZF.js";
|
|
57
57
|
import {
|
|
58
58
|
envName
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-KYUIU5UR.js";
|
|
60
60
|
import {
|
|
61
61
|
holdersOf
|
|
62
62
|
} from "./chunk-W5EUHV3J.js";
|
|
63
63
|
import {
|
|
64
64
|
codeOf,
|
|
65
65
|
currentRun
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-WEUXLXOZ.js";
|
|
67
67
|
import {
|
|
68
68
|
failureKey
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-IQENQXUJ.js";
|
|
70
70
|
import {
|
|
71
71
|
renderMessages
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-HYZ545ON.js";
|
|
73
73
|
import {
|
|
74
74
|
levelFor
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-AOZGGGUK.js";
|
|
76
76
|
import {
|
|
77
77
|
readSecret
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-VJBVNDFR.js";
|
|
79
79
|
import {
|
|
80
80
|
checkedOptions,
|
|
81
81
|
range
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-REC3AZP6.js";
|
|
83
83
|
import {
|
|
84
84
|
messagesFor,
|
|
85
85
|
systemFor,
|
|
86
86
|
validateImages
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-WB7MQHUI.js";
|
|
88
88
|
import {
|
|
89
89
|
MIGRATIONS,
|
|
90
90
|
drainNoteIndex,
|
|
@@ -111,20 +111,20 @@ import {
|
|
|
111
111
|
storeClients,
|
|
112
112
|
storeContents,
|
|
113
113
|
vectorIndexCounts
|
|
114
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-CGCJ6P3A.js";
|
|
115
115
|
import {
|
|
116
116
|
formatLocator,
|
|
117
117
|
parseLocator
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-ES6UWVTM.js";
|
|
119
119
|
import {
|
|
120
120
|
storePath
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-KXEC5FVT.js";
|
|
122
122
|
import {
|
|
123
123
|
openCache
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-YLATWUE7.js";
|
|
125
125
|
import {
|
|
126
126
|
queryFieldsOf
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-LVHZQCP4.js";
|
|
128
128
|
import {
|
|
129
129
|
CliError,
|
|
130
130
|
Credentials,
|
|
@@ -153,7 +153,7 @@ import {
|
|
|
153
153
|
trim,
|
|
154
154
|
union,
|
|
155
155
|
writeSecurely
|
|
156
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-R4SRXI7M.js";
|
|
157
157
|
import {
|
|
158
158
|
__commonJS,
|
|
159
159
|
__name,
|
|
@@ -6648,7 +6648,7 @@ var modelGateway = /* @__PURE__ */ __name((deps) => ({
|
|
|
6648
6648
|
if (!adapter && target.provider === "openai")
|
|
6649
6649
|
adapter = openai;
|
|
6650
6650
|
if (!adapter && target.provider === "anthropic")
|
|
6651
|
-
adapter = (await import("./anthropic-
|
|
6651
|
+
adapter = (await import("./anthropic-CSLAACWX.js")).anthropic;
|
|
6652
6652
|
if (!adapter)
|
|
6653
6653
|
throw new CliError("validation_error", `no model adapter for ${target.provider}`);
|
|
6654
6654
|
if (request.images !== void 0 && adapter.images !== true)
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
MAX_SECRET_INPUT,
|
|
5
5
|
bufferedInput,
|
|
6
6
|
inputPolicy
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AZZPMHP2.js";
|
|
8
8
|
import {
|
|
9
9
|
CliError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R4SRXI7M.js";
|
|
11
11
|
import {
|
|
12
12
|
__name
|
|
13
13
|
} from "./chunk-ZVVMGPBJ.js";
|
|
@@ -2,10 +2,10 @@ import { createRequire as __bundleRequire } from "node:module";
|
|
|
2
2
|
const require = __bundleRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
isCliFailure
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IQENQXUJ.js";
|
|
6
6
|
import {
|
|
7
7
|
isContentKey
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-R4SRXI7M.js";
|
|
9
9
|
import {
|
|
10
10
|
__name
|
|
11
11
|
} from "./chunk-ZVVMGPBJ.js";
|
|
@@ -7,22 +7,22 @@ import {
|
|
|
7
7
|
refuseLocalWrite,
|
|
8
8
|
refuseUnknownPermissionKeys,
|
|
9
9
|
sendsPathFor
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EUHQ5D4K.js";
|
|
11
11
|
import {
|
|
12
12
|
chatRef,
|
|
13
13
|
contactRef,
|
|
14
14
|
positiveCount
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WFT2GGFH.js";
|
|
16
16
|
import {
|
|
17
17
|
MAX_SEARCH_OFFSET,
|
|
18
18
|
excerpt,
|
|
19
19
|
newOperationId,
|
|
20
20
|
refreshedFiles,
|
|
21
21
|
senderIsMe
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-Z5H47R4G.js";
|
|
23
23
|
import {
|
|
24
24
|
commandPathOf
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-OEEMCNAO.js";
|
|
26
26
|
import {
|
|
27
27
|
NONE_NAMED,
|
|
28
28
|
changesMessenger,
|
|
@@ -33,29 +33,29 @@ import {
|
|
|
33
33
|
nextStep,
|
|
34
34
|
recalledAccount,
|
|
35
35
|
settingsFor
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-Y3YURIZF.js";
|
|
37
37
|
import {
|
|
38
38
|
MESSENGER_CHANGE_REFUSAL,
|
|
39
39
|
readOnlyLockOf,
|
|
40
40
|
readOnlyRefusal
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-KYUIU5UR.js";
|
|
42
42
|
import {
|
|
43
43
|
DEFAULT_TEXT_MODEL,
|
|
44
44
|
parseDuration
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-WEUXLXOZ.js";
|
|
46
46
|
import {
|
|
47
47
|
CEILING_KEY,
|
|
48
48
|
keyForCommand,
|
|
49
49
|
levelFor,
|
|
50
50
|
writeOfKey
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-AOZGGGUK.js";
|
|
52
52
|
import {
|
|
53
53
|
openStore
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-CGCJ6P3A.js";
|
|
55
55
|
import {
|
|
56
56
|
formatLocator,
|
|
57
57
|
parseLocator
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-ES6UWVTM.js";
|
|
59
59
|
import {
|
|
60
60
|
CliError,
|
|
61
61
|
description,
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
toStandardJsonSchema,
|
|
67
67
|
visibleControls,
|
|
68
68
|
writes
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-R4SRXI7M.js";
|
|
70
70
|
import {
|
|
71
71
|
importFrom
|
|
72
72
|
} from "./chunk-Y5E2WNWB.js";
|
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
id,
|
|
6
6
|
text,
|
|
7
7
|
time
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WWNZS7ZY.js";
|
|
9
9
|
import {
|
|
10
10
|
filesPresent,
|
|
11
11
|
sharedModelsDirectory
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PEMLI3T7.js";
|
|
13
13
|
import {
|
|
14
14
|
TASK_ORIGINS,
|
|
15
15
|
TASK_STATES,
|
|
16
16
|
TASK_TYPES
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-K6NPOZUP.js";
|
|
18
18
|
import {
|
|
19
19
|
TAG_TYPES
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-Z4D6M62I.js";
|
|
21
21
|
import {
|
|
22
22
|
CliError,
|
|
23
23
|
array,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
strictObject,
|
|
34
34
|
traceIdOf,
|
|
35
35
|
writeSecurely
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-R4SRXI7M.js";
|
|
37
37
|
import {
|
|
38
38
|
__name
|
|
39
39
|
} from "./chunk-ZVVMGPBJ.js";
|
|
@@ -3,7 +3,7 @@ const require = __bundleRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
AUDIT_MIN_SCORE,
|
|
5
5
|
throughWrapper
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Z5H47R4G.js";
|
|
7
7
|
import {
|
|
8
8
|
Command,
|
|
9
9
|
InvalidArgumentError,
|
|
@@ -16,13 +16,13 @@ import {
|
|
|
16
16
|
renderAnswer,
|
|
17
17
|
sharedCommand,
|
|
18
18
|
snakeKeys
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-Y3YURIZF.js";
|
|
20
20
|
import {
|
|
21
21
|
readOnlyLockOf
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KYUIU5UR.js";
|
|
23
23
|
import {
|
|
24
24
|
formatReference
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-ES6UWVTM.js";
|
|
26
26
|
import {
|
|
27
27
|
EVENT_QUERY,
|
|
28
28
|
MEETING_PROJECT_EVIDENCE_QUERY,
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
readMeetingProjectEvidence,
|
|
46
46
|
validateMeetingHitSearch,
|
|
47
47
|
validateMeetingPassage
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-Q7U627RY.js";
|
|
49
49
|
import {
|
|
50
50
|
OPERATORS_BY_TYPE,
|
|
51
51
|
QUERY_LIMITS,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
timezoneOf,
|
|
60
60
|
validateQuery,
|
|
61
61
|
zonedMoment
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-LVHZQCP4.js";
|
|
63
63
|
import {
|
|
64
64
|
CliError,
|
|
65
65
|
array,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
safeParse,
|
|
74
74
|
strictObject,
|
|
75
75
|
string
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-R4SRXI7M.js";
|
|
77
77
|
import {
|
|
78
78
|
__name
|
|
79
79
|
} from "./chunk-ZVVMGPBJ.js";
|