@mushi-mushi/cli 0.30.2 → 0.30.3
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/{chunk-AJ6TRLJX.js → chunk-LBVNX3PN.js} +1 -1
- package/dist/chunk-VJZVFEMZ.js +10 -0
- package/dist/chunk-ZQFQRBNL.js +8 -0
- package/dist/{chunk-AHDD44WU.js → chunk-ZRDGR4TV.js} +1 -1
- package/dist/{connect-MJFNVD6I.js → connect-RZUYFR66.js} +2 -2
- package/dist/{connect-4TSPUKYX.js → connect-Y77XNVUP.js} +2 -2
- package/dist/index.js +94 -84
- package/dist/init.js +3 -3
- package/dist/{version-5BNKTJFR.js → version-HJSICWYN.js} +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-P7JI5H57.js +0 -8
- package/dist/chunk-X67SYMCO.js +0 -10
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveSdkEnvKey,
|
|
4
4
|
runConnect
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-ZRDGR4TV.js";
|
|
6
|
+
import "./chunk-VJZVFEMZ.js";
|
|
7
7
|
import "./chunk-KOBEOGNF.js";
|
|
8
8
|
import "./chunk-LDPFTQLE.js";
|
|
9
9
|
import "./chunk-PDX44BCA.js";
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
saveConfig,
|
|
7
7
|
savedSdkKeyFor,
|
|
8
8
|
waitForIngestReady
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-LBVNX3PN.js";
|
|
10
10
|
import {
|
|
11
11
|
MUSHI_MCP_PIN_SPEC
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZQFQRBNL.js";
|
|
13
13
|
import {
|
|
14
14
|
detectFramework,
|
|
15
15
|
envVarsToWrite,
|
package/dist/index.js
CHANGED
|
@@ -53,11 +53,11 @@ import {
|
|
|
53
53
|
setGlobalOutputFormat,
|
|
54
54
|
trySaveKeyToKeychain,
|
|
55
55
|
writeMcpServerEntry
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-ZRDGR4TV.js";
|
|
57
57
|
import {
|
|
58
58
|
MUSHI_CLI_VERSION,
|
|
59
59
|
MUSHI_MCP_PIN_SPEC
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-VJZVFEMZ.js";
|
|
61
61
|
import {
|
|
62
62
|
FRAMEWORKS,
|
|
63
63
|
detectFramework,
|
|
@@ -225,15 +225,15 @@ var DeviceAuthRequestError = class extends Error {
|
|
|
225
225
|
this.retryable = status === void 0 || status >= 500 || status === 408;
|
|
226
226
|
}
|
|
227
227
|
};
|
|
228
|
-
async function withOneRetry(
|
|
228
|
+
async function withOneRetry(run) {
|
|
229
229
|
try {
|
|
230
|
-
return await
|
|
230
|
+
return await run();
|
|
231
231
|
} catch (err) {
|
|
232
232
|
if (err instanceof DeviceAuthRequestError && err.retryable) {
|
|
233
233
|
if (deviceAuthRetryDelayMs > 0) {
|
|
234
234
|
await defaultSleep(deviceAuthRetryDelayMs);
|
|
235
235
|
}
|
|
236
|
-
return
|
|
236
|
+
return run();
|
|
237
237
|
}
|
|
238
238
|
throw err;
|
|
239
239
|
}
|
|
@@ -1524,7 +1524,7 @@ async function checkOnboardingStatus(config, _consoleBase, cwd, doFetch = global
|
|
|
1524
1524
|
}
|
|
1525
1525
|
async function checkVersionDrift(cwd, doFetch) {
|
|
1526
1526
|
const checks = [];
|
|
1527
|
-
const { MUSHI_CLI_VERSION: MUSHI_CLI_VERSION2 } = await import("./version-
|
|
1527
|
+
const { MUSHI_CLI_VERSION: MUSHI_CLI_VERSION2 } = await import("./version-HJSICWYN.js");
|
|
1528
1528
|
if (MUSHI_CLI_VERSION2 === "0.0.0-dev") return checks;
|
|
1529
1529
|
const parse2 = (v) => {
|
|
1530
1530
|
const m = v.replace(/^[~^]/, "").match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
@@ -2448,7 +2448,7 @@ async function maybeOfferConnect(credentials, options, _consoleBase) {
|
|
|
2448
2448
|
if (p.isCancel(answer) || !answer) return;
|
|
2449
2449
|
const endpoint = resolveCloudEndpoint(options.endpoint);
|
|
2450
2450
|
try {
|
|
2451
|
-
const { runConnect: runConnect2 } = await import("./connect-
|
|
2451
|
+
const { runConnect: runConnect2 } = await import("./connect-RZUYFR66.js");
|
|
2452
2452
|
const saved = loadConfig();
|
|
2453
2453
|
const result = await runConnect2(
|
|
2454
2454
|
{
|
|
@@ -5169,18 +5169,18 @@ function registerTddCommands(program2) {
|
|
|
5169
5169
|
config
|
|
5170
5170
|
);
|
|
5171
5171
|
if (!runsRes.ok) break;
|
|
5172
|
-
const
|
|
5173
|
-
if (!
|
|
5174
|
-
if (
|
|
5172
|
+
const run = runsRes.data.runs.find((r) => r.id === res.data.runId);
|
|
5173
|
+
if (!run) break;
|
|
5174
|
+
if (run.status === "completed") {
|
|
5175
5175
|
console.log(`
|
|
5176
|
-
\u2713 Done! ${
|
|
5177
|
-
if (
|
|
5176
|
+
\u2713 Done! ${run.pages_crawled ?? 0} pages crawled.`);
|
|
5177
|
+
if (run.proposal_id) console.log(` Proposal id: ${run.proposal_id}`);
|
|
5178
5178
|
console.log(` Review in the console: Inventory \u2192 Discovery \u2192 Past proposals`);
|
|
5179
5179
|
break;
|
|
5180
5180
|
}
|
|
5181
|
-
if (
|
|
5181
|
+
if (run.status === "failed") {
|
|
5182
5182
|
console.error(`
|
|
5183
|
-
\u2717 Crawl failed: ${
|
|
5183
|
+
\u2717 Crawl failed: ${run.error_message ?? "unknown"}`);
|
|
5184
5184
|
process.exit(1);
|
|
5185
5185
|
}
|
|
5186
5186
|
process.stdout.write(".");
|
|
@@ -5940,9 +5940,9 @@ Examples:
|
|
|
5940
5940
|
}
|
|
5941
5941
|
if (data.gate_runs.length > 0) {
|
|
5942
5942
|
console.log("\nGate Results:");
|
|
5943
|
-
for (const
|
|
5944
|
-
const g =
|
|
5945
|
-
console.log(` ${g} ${
|
|
5943
|
+
for (const run of data.gate_runs) {
|
|
5944
|
+
const g = run.status === "pass" ? "OK" : run.status === "fail" ? "FAIL" : "SKIP";
|
|
5945
|
+
console.log(` ${g} ${run.gate.padEnd(22)} ${run.status} (${run.findings_count} finding${run.findings_count !== 1 ? "s" : ""})`);
|
|
5946
5946
|
}
|
|
5947
5947
|
}
|
|
5948
5948
|
const refresh = data.gate_refresh;
|
|
@@ -6225,25 +6225,25 @@ Pipeline started!
|
|
|
6225
6225
|
console.log(JSON.stringify(result.data, null, 2));
|
|
6226
6226
|
return;
|
|
6227
6227
|
}
|
|
6228
|
-
const
|
|
6229
|
-
const statusIcon =
|
|
6228
|
+
const run = result.data;
|
|
6229
|
+
const statusIcon = run.status === "completed" ? "\u2705" : run.status === "failed" ? "\u274C" : run.status === "running" ? "\u23F3" : "\u26AA";
|
|
6230
6230
|
console.log(`
|
|
6231
|
-
${statusIcon} Pipeline ${runId.slice(0, 8)} \xB7 ${
|
|
6231
|
+
${statusIcon} Pipeline ${runId.slice(0, 8)} \xB7 ${run.root_skill_slug} \xB7 ${run.mode}
|
|
6232
6232
|
`);
|
|
6233
|
-
const steps =
|
|
6233
|
+
const steps = run.steps ?? [];
|
|
6234
6234
|
for (const step of steps) {
|
|
6235
6235
|
const icon = step.status === "passed" ? "\u2705" : step.status === "failed" ? "\u274C" : step.status === "running" ? "\u23F3" : "\u26AA";
|
|
6236
6236
|
const pr = step.pr_url ? ` \u2192 ${step.pr_url}` : "";
|
|
6237
6237
|
console.log(` ${icon} Step ${step.step_index + 1}: ${step.skill_slug}${pr}`);
|
|
6238
6238
|
if (step.notes) console.log(` ${step.notes}`);
|
|
6239
6239
|
}
|
|
6240
|
-
if (
|
|
6240
|
+
if (run.context_packet) {
|
|
6241
6241
|
console.log(`
|
|
6242
6242
|
${"\u2500".repeat(60)}`);
|
|
6243
6243
|
console.log(`Context Packet (paste into your Cursor agent):
|
|
6244
6244
|
`);
|
|
6245
|
-
console.log(
|
|
6246
|
-
if (
|
|
6245
|
+
console.log(run.context_packet.slice(0, 6e3));
|
|
6246
|
+
if (run.context_packet.length > 6e3) console.log("\n\u2026 [truncated \u2014 full packet via --json]");
|
|
6247
6247
|
}
|
|
6248
6248
|
console.log();
|
|
6249
6249
|
});
|
|
@@ -6505,7 +6505,7 @@ Examples:
|
|
|
6505
6505
|
}
|
|
6506
6506
|
|
|
6507
6507
|
// src/commands/selfhost.ts
|
|
6508
|
-
import {
|
|
6508
|
+
import { spawnSync } from "child_process";
|
|
6509
6509
|
import { randomBytes } from "crypto";
|
|
6510
6510
|
function hasSupabaseCli() {
|
|
6511
6511
|
try {
|
|
@@ -6515,28 +6515,28 @@ function hasSupabaseCli() {
|
|
|
6515
6515
|
return false;
|
|
6516
6516
|
}
|
|
6517
6517
|
}
|
|
6518
|
-
function
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
|
|
6522
|
-
}
|
|
6523
|
-
const
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
6531
|
-
});
|
|
6532
|
-
process.stdout.write("\u2713\n");
|
|
6533
|
-
return { ok: true, stdout: out, stderr: "" };
|
|
6534
|
-
} catch (err) {
|
|
6518
|
+
function selfhostStepCommand(step) {
|
|
6519
|
+
return `supabase ${step.args.join(" ")}${step.mayFail ? " || true" : ""}`;
|
|
6520
|
+
}
|
|
6521
|
+
function runSupabase(args, opts) {
|
|
6522
|
+
process.stdout.write(` \u203A ${opts.label} \u2026 `);
|
|
6523
|
+
const r = spawnSync("supabase", args, {
|
|
6524
|
+
cwd: opts.cwd,
|
|
6525
|
+
encoding: "utf8",
|
|
6526
|
+
timeout: 3e5,
|
|
6527
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
6528
|
+
});
|
|
6529
|
+
if (r.error || r.status !== 0) {
|
|
6535
6530
|
process.stdout.write("\u2717\n");
|
|
6536
|
-
const
|
|
6537
|
-
|
|
6538
|
-
|
|
6531
|
+
const stderr = (r.stderr ?? "").trim();
|
|
6532
|
+
return {
|
|
6533
|
+
ok: false,
|
|
6534
|
+
stdout: r.stdout ?? "",
|
|
6535
|
+
stderr: stderr || r.error?.message || `exited with ${r.status ?? r.signal}`
|
|
6536
|
+
};
|
|
6539
6537
|
}
|
|
6538
|
+
process.stdout.write("\u2713\n");
|
|
6539
|
+
return { ok: true, stdout: r.stdout, stderr: "" };
|
|
6540
6540
|
}
|
|
6541
6541
|
var REQUIRED_FUNCTIONS = [
|
|
6542
6542
|
"api",
|
|
@@ -6546,55 +6546,43 @@ var REQUIRED_FUNCTIONS = [
|
|
|
6546
6546
|
"fix-worker",
|
|
6547
6547
|
"webhooks-github-indexer"
|
|
6548
6548
|
];
|
|
6549
|
-
|
|
6550
|
-
const supabaseDir = opts.cwd ? `${opts.cwd}/packages/server/supabase` : "packages/server/supabase";
|
|
6551
|
-
const printOnly = !!(opts.printCommands || !hasSupabaseCli());
|
|
6552
|
-
if (printOnly) {
|
|
6553
|
-
console.log("");
|
|
6554
|
-
console.log("supabase CLI not found (or --print-commands was passed).");
|
|
6555
|
-
console.log("Run the following commands manually:\n");
|
|
6556
|
-
} else {
|
|
6557
|
-
console.log("");
|
|
6558
|
-
console.log("mushi selfhost up \u2014 deploying self-hosted Mushi Mushi\n");
|
|
6559
|
-
}
|
|
6549
|
+
function buildSelfhostSteps(opts, printOnly, internalToken) {
|
|
6560
6550
|
const steps = [];
|
|
6561
6551
|
if (opts.projectRef && !/^[a-z0-9-]+$/i.test(opts.projectRef)) {
|
|
6562
|
-
|
|
6563
|
-
`);
|
|
6564
|
-
process.exit(1);
|
|
6552
|
+
return { ok: false, error: `--project-ref must be alphanumeric (got: ${opts.projectRef}).` };
|
|
6565
6553
|
}
|
|
6566
6554
|
if (opts.projectRef) {
|
|
6567
6555
|
steps.push({
|
|
6568
6556
|
label: `link to Supabase project ${opts.projectRef}`,
|
|
6569
|
-
|
|
6557
|
+
args: ["link", "--project-ref", opts.projectRef],
|
|
6570
6558
|
critical: true
|
|
6571
6559
|
});
|
|
6572
6560
|
}
|
|
6573
6561
|
steps.push({
|
|
6574
6562
|
label: "apply database migrations",
|
|
6575
|
-
|
|
6563
|
+
args: ["db", "push"],
|
|
6576
6564
|
critical: true
|
|
6577
6565
|
});
|
|
6578
6566
|
if (opts.anthropicKey && printOnly) {
|
|
6579
6567
|
steps.push({
|
|
6580
6568
|
label: "set ANTHROPIC_API_KEY secret",
|
|
6581
|
-
|
|
6569
|
+
args: ["secrets", "set", "ANTHROPIC_API_KEY=sk-ant-..."]
|
|
6582
6570
|
});
|
|
6583
6571
|
} else if (opts.anthropicKey) {
|
|
6584
6572
|
if (!/^[A-Za-z0-9_-]+$/.test(opts.anthropicKey)) {
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
|
|
6573
|
+
return {
|
|
6574
|
+
ok: false,
|
|
6575
|
+
error: "--anthropic-key does not look like an API key (letters, digits, - and _ only).\n Set it manually instead: supabase secrets set ANTHROPIC_API_KEY=<your key>"
|
|
6576
|
+
};
|
|
6589
6577
|
}
|
|
6590
6578
|
steps.push({
|
|
6591
6579
|
label: "set ANTHROPIC_API_KEY secret",
|
|
6592
|
-
|
|
6580
|
+
args: ["secrets", "set", `ANTHROPIC_API_KEY=${opts.anthropicKey}`]
|
|
6593
6581
|
});
|
|
6594
6582
|
} else if (printOnly) {
|
|
6595
6583
|
steps.push({
|
|
6596
6584
|
label: "set ANTHROPIC_API_KEY secret",
|
|
6597
|
-
|
|
6585
|
+
args: ["secrets", "set", "ANTHROPIC_API_KEY=sk-ant-..."]
|
|
6598
6586
|
});
|
|
6599
6587
|
}
|
|
6600
6588
|
if (opts.adminBaseUrl) {
|
|
@@ -6606,43 +6594,65 @@ async function runSelfhostUp(opts) {
|
|
|
6606
6594
|
adminUrlOk = false;
|
|
6607
6595
|
}
|
|
6608
6596
|
if (!adminUrlOk) {
|
|
6609
|
-
|
|
6610
|
-
`\u2717 --admin-base-url must be a plain http(s) URL (got: ${opts.adminBaseUrl}).
|
|
6611
|
-
`
|
|
6612
|
-
);
|
|
6613
|
-
process.exit(1);
|
|
6597
|
+
return { ok: false, error: `--admin-base-url must be a plain http(s) URL (got: ${opts.adminBaseUrl}).` };
|
|
6614
6598
|
}
|
|
6615
6599
|
steps.push({
|
|
6616
6600
|
label: "set ADMIN_BASE_URL secret",
|
|
6617
|
-
|
|
6601
|
+
args: ["secrets", "set", `ADMIN_BASE_URL=${opts.adminBaseUrl}`]
|
|
6618
6602
|
});
|
|
6619
6603
|
}
|
|
6620
|
-
const internalToken = randomBytes(32).toString("hex");
|
|
6621
6604
|
steps.push({
|
|
6622
6605
|
label: "set MUSHI_INTERNAL_CALLER_SECRET (recovery cron auth)",
|
|
6623
|
-
|
|
6606
|
+
args: [
|
|
6607
|
+
"secrets",
|
|
6608
|
+
"set",
|
|
6609
|
+
`MUSHI_INTERNAL_CALLER_SECRET=${printOnly ? "<openssl rand -hex 32>" : internalToken}`
|
|
6610
|
+
]
|
|
6624
6611
|
});
|
|
6625
6612
|
if (!opts.skipDeploy) {
|
|
6626
6613
|
for (const fn of REQUIRED_FUNCTIONS) {
|
|
6627
6614
|
steps.push({
|
|
6628
6615
|
label: `deploy edge function: ${fn}`,
|
|
6629
|
-
|
|
6616
|
+
args: ["functions", "deploy", fn, "--no-verify-jwt"]
|
|
6630
6617
|
});
|
|
6631
6618
|
}
|
|
6632
6619
|
}
|
|
6633
6620
|
steps.push({
|
|
6634
6621
|
label: "create screenshots storage bucket",
|
|
6635
|
-
|
|
6622
|
+
args: ["storage", "create", "screenshots", "--public"],
|
|
6623
|
+
mayFail: true
|
|
6636
6624
|
});
|
|
6625
|
+
return { ok: true, steps };
|
|
6626
|
+
}
|
|
6627
|
+
async function runSelfhostUp(opts) {
|
|
6628
|
+
const supabaseDir = opts.cwd ? `${opts.cwd}/packages/server/supabase` : "packages/server/supabase";
|
|
6629
|
+
const printOnly = !!(opts.printCommands || !hasSupabaseCli());
|
|
6630
|
+
if (printOnly) {
|
|
6631
|
+
console.log("");
|
|
6632
|
+
console.log("supabase CLI not found (or --print-commands was passed).");
|
|
6633
|
+
console.log("Run the following commands manually:\n");
|
|
6634
|
+
} else {
|
|
6635
|
+
console.log("");
|
|
6636
|
+
console.log("mushi selfhost up \u2014 deploying self-hosted Mushi Mushi\n");
|
|
6637
|
+
}
|
|
6638
|
+
const built = buildSelfhostSteps(opts, printOnly, randomBytes(32).toString("hex"));
|
|
6639
|
+
if (!built.ok) {
|
|
6640
|
+
process.stderr.write(`\u2717 ${built.error}
|
|
6641
|
+
`);
|
|
6642
|
+
process.exit(1);
|
|
6643
|
+
}
|
|
6637
6644
|
let aborted = false;
|
|
6638
|
-
for (const step of steps) {
|
|
6645
|
+
for (const step of built.steps) {
|
|
6639
6646
|
if (printOnly) {
|
|
6640
6647
|
console.log(`# ${step.label}`);
|
|
6641
|
-
|
|
6648
|
+
console.log(` $ ${selfhostStepCommand(step)}`);
|
|
6642
6649
|
console.log("");
|
|
6643
6650
|
} else {
|
|
6644
|
-
const result =
|
|
6645
|
-
if (!result.ok) {
|
|
6651
|
+
const result = runSupabase(step.args, { label: step.label, cwd: supabaseDir });
|
|
6652
|
+
if (!result.ok && step.mayFail) {
|
|
6653
|
+
process.stdout.write(` (fine if it already exists) ${result.stderr.split("\n")[0]}
|
|
6654
|
+
`);
|
|
6655
|
+
} else if (!result.ok) {
|
|
6646
6656
|
if (result.stderr) {
|
|
6647
6657
|
process.stderr.write(` ${result.stderr.split("\n")[0]}
|
|
6648
6658
|
`);
|
|
@@ -10685,8 +10695,8 @@ function registerUxRunsCommands(program2) {
|
|
|
10685
10695
|
console.log(JSON.stringify(result.data, null, 2));
|
|
10686
10696
|
return;
|
|
10687
10697
|
}
|
|
10688
|
-
const { run
|
|
10689
|
-
if (
|
|
10698
|
+
const { run, surfaces } = result.data;
|
|
10699
|
+
if (run.branch) console.log(`Kept changes: ${run.branch}
|
|
10690
10700
|
`);
|
|
10691
10701
|
const order = ["regressed", "reverted", "blocked", "iterating", "baseline", "accepted", "skipped", "pending"];
|
|
10692
10702
|
for (const s of [...surfaces].sort((a, b) => order.indexOf(a.status) - order.indexOf(b.status))) {
|
package/dist/init.js
CHANGED
|
@@ -25,10 +25,10 @@ import {
|
|
|
25
25
|
saveConfig,
|
|
26
26
|
savedSdkKeyFor,
|
|
27
27
|
trySaveKeyToKeychain
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-LBVNX3PN.js";
|
|
29
29
|
import {
|
|
30
30
|
MUSHI_CLI_VERSION
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-ZQFQRBNL.js";
|
|
32
32
|
import {
|
|
33
33
|
FRAMEWORKS,
|
|
34
34
|
detectFramework,
|
|
@@ -2037,7 +2037,7 @@ async function maybeOfferConnect(credentials, options, _consoleBase) {
|
|
|
2037
2037
|
if (p.isCancel(answer) || !answer) return;
|
|
2038
2038
|
const endpoint = resolveCloudEndpoint(options.endpoint);
|
|
2039
2039
|
try {
|
|
2040
|
-
const { runConnect } = await import("./connect-
|
|
2040
|
+
const { runConnect } = await import("./connect-Y77XNVUP.js");
|
|
2041
2041
|
const saved = loadConfig();
|
|
2042
2042
|
const result = await runConnect(
|
|
2043
2043
|
{
|
package/dist/version.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ declare const MUSHI_CLI_VERSION: string;
|
|
|
14
14
|
* setup refreshes the pin. Synced to packages/mcp/package.json by
|
|
15
15
|
* `scripts/sync-mcp-pin.mjs` — never hand-edit the version.
|
|
16
16
|
*/
|
|
17
|
-
declare const MUSHI_MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.
|
|
17
|
+
declare const MUSHI_MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.6";
|
|
18
18
|
|
|
19
19
|
export { MUSHI_CLI_VERSION, MUSHI_MCP_PIN_SPEC };
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
package/dist/chunk-P7JI5H57.js
DELETED