localant 1.0.1 → 1.1.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/README.ja.md +185 -0
- package/README.md +137 -20
- package/SECURITY.md +63 -8
- package/assets/hero.png +0 -0
- package/assets/localant-icon.png +0 -0
- package/examples/skills/article-publisher/README.md +41 -0
- package/examples/skills/article-publisher/package.json +9 -0
- package/examples/skills/article-publisher/skill.json +134 -0
- package/examples/skills/article-publisher/src/index.ts +186 -0
- package/examples/skills/article-publisher/tests/skill.test.ts +72 -0
- package/package.json +26 -6
- package/packages/cli/dist/autostart.d.ts +14 -0
- package/packages/cli/dist/autostart.d.ts.map +1 -0
- package/packages/cli/dist/autostart.js +98 -0
- package/packages/cli/dist/autostart.js.map +1 -0
- package/packages/cli/dist/bin.js +214 -2
- package/packages/cli/dist/bin.js.map +1 -1
- package/packages/cli/dist/runtime.d.ts.map +1 -1
- package/packages/cli/dist/runtime.js +56 -8
- package/packages/cli/dist/runtime.js.map +1 -1
- package/packages/cli/dist/serveo-setup.d.ts +37 -0
- package/packages/cli/dist/serveo-setup.d.ts.map +1 -0
- package/packages/cli/dist/serveo-setup.js +168 -0
- package/packages/cli/dist/serveo-setup.js.map +1 -0
- package/packages/cli/dist/util.d.ts +6 -0
- package/packages/cli/dist/util.d.ts.map +1 -1
- package/packages/cli/dist/util.js +20 -0
- package/packages/cli/dist/util.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/dashboard/dist/index.d.ts +5 -4
- package/packages/dashboard/dist/index.d.ts.map +1 -1
- package/packages/dashboard/dist/index.js +781 -44
- package/packages/dashboard/dist/index.js.map +1 -1
- package/packages/gateway/dist/gateway.d.ts +14 -1
- package/packages/gateway/dist/gateway.d.ts.map +1 -1
- package/packages/gateway/dist/gateway.js +59 -6
- package/packages/gateway/dist/gateway.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +3 -0
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +3 -0
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts +14 -0
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/coding-agent-manager.js +21 -2
- package/packages/gateway/dist/managers/coding-agent-manager.js.map +1 -1
- package/packages/gateway/dist/managers/fs-manager.d.ts +73 -0
- package/packages/gateway/dist/managers/fs-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/fs-manager.js +290 -6
- package/packages/gateway/dist/managers/fs-manager.js.map +1 -1
- package/packages/gateway/dist/managers/git-manager.d.ts +6 -0
- package/packages/gateway/dist/managers/git-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/git-manager.js +24 -0
- package/packages/gateway/dist/managers/git-manager.js.map +1 -1
- package/packages/gateway/dist/managers/lsp-service.d.ts +88 -0
- package/packages/gateway/dist/managers/lsp-service.d.ts.map +1 -0
- package/packages/gateway/dist/managers/lsp-service.js +249 -0
- package/packages/gateway/dist/managers/lsp-service.js.map +1 -0
- package/packages/gateway/dist/managers/mcp-bridge.d.ts +2 -1
- package/packages/gateway/dist/managers/mcp-bridge.d.ts.map +1 -1
- package/packages/gateway/dist/managers/mcp-bridge.js +23 -2
- package/packages/gateway/dist/managers/mcp-bridge.js.map +1 -1
- package/packages/gateway/dist/managers/shell-manager.d.ts +19 -0
- package/packages/gateway/dist/managers/shell-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/shell-manager.js +28 -0
- package/packages/gateway/dist/managers/shell-manager.js.map +1 -1
- package/packages/gateway/dist/managers/skill-runtime.d.ts +8 -0
- package/packages/gateway/dist/managers/skill-runtime.d.ts.map +1 -1
- package/packages/gateway/dist/managers/skill-runtime.js +15 -0
- package/packages/gateway/dist/managers/skill-runtime.js.map +1 -1
- package/packages/gateway/dist/managers/tunnel-manager.d.ts +19 -1
- package/packages/gateway/dist/managers/tunnel-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/tunnel-manager.js +289 -8
- package/packages/gateway/dist/managers/tunnel-manager.js.map +1 -1
- package/packages/gateway/dist/security/command-guard.d.ts +3 -0
- package/packages/gateway/dist/security/command-guard.d.ts.map +1 -1
- package/packages/gateway/dist/security/command-guard.js +15 -7
- package/packages/gateway/dist/security/command-guard.js.map +1 -1
- package/packages/gateway/dist/security/path-guard.d.ts +3 -0
- package/packages/gateway/dist/security/path-guard.d.ts.map +1 -1
- package/packages/gateway/dist/security/path-guard.js +8 -2
- package/packages/gateway/dist/security/path-guard.js.map +1 -1
- package/packages/gateway/dist/stores/config-store.d.ts +10 -0
- package/packages/gateway/dist/stores/config-store.d.ts.map +1 -1
- package/packages/gateway/dist/stores/config-store.js +47 -3
- package/packages/gateway/dist/stores/config-store.js.map +1 -1
- package/packages/gateway/dist/stores/secret-vault.d.ts +19 -3
- package/packages/gateway/dist/stores/secret-vault.d.ts.map +1 -1
- package/packages/gateway/dist/stores/secret-vault.js +47 -6
- package/packages/gateway/dist/stores/secret-vault.js.map +1 -1
- package/packages/gateway/dist/tools/adapters.d.ts.map +1 -1
- package/packages/gateway/dist/tools/adapters.js +198 -7
- package/packages/gateway/dist/tools/adapters.js.map +1 -1
- package/packages/gateway/dist/tools/adb.d.ts.map +1 -1
- package/packages/gateway/dist/tools/adb.js +42 -0
- package/packages/gateway/dist/tools/adb.js.map +1 -1
- package/packages/gateway/dist/tools/agent.d.ts +10 -0
- package/packages/gateway/dist/tools/agent.d.ts.map +1 -0
- package/packages/gateway/dist/tools/agent.js +35 -0
- package/packages/gateway/dist/tools/agent.js.map +1 -0
- package/packages/gateway/dist/tools/aliases.d.ts +7 -0
- package/packages/gateway/dist/tools/aliases.d.ts.map +1 -0
- package/packages/gateway/dist/tools/aliases.js +64 -0
- package/packages/gateway/dist/tools/aliases.js.map +1 -0
- package/packages/gateway/dist/tools/bash.d.ts +10 -0
- package/packages/gateway/dist/tools/bash.d.ts.map +1 -0
- package/packages/gateway/dist/tools/bash.js +67 -0
- package/packages/gateway/dist/tools/bash.js.map +1 -0
- package/packages/gateway/dist/tools/browser.d.ts.map +1 -1
- package/packages/gateway/dist/tools/browser.js +9 -0
- package/packages/gateway/dist/tools/browser.js.map +1 -1
- package/packages/gateway/dist/tools/control.d.ts +8 -0
- package/packages/gateway/dist/tools/control.d.ts.map +1 -0
- package/packages/gateway/dist/tools/control.js +134 -0
- package/packages/gateway/dist/tools/control.js.map +1 -0
- package/packages/gateway/dist/tools/editing.d.ts +8 -0
- package/packages/gateway/dist/tools/editing.d.ts.map +1 -0
- package/packages/gateway/dist/tools/editing.js +102 -0
- package/packages/gateway/dist/tools/editing.js.map +1 -0
- package/packages/gateway/dist/tools/git.d.ts.map +1 -1
- package/packages/gateway/dist/tools/git.js +67 -0
- package/packages/gateway/dist/tools/git.js.map +1 -1
- package/packages/gateway/dist/tools/index.d.ts.map +1 -1
- package/packages/gateway/dist/tools/index.js +17 -2
- package/packages/gateway/dist/tools/index.js.map +1 -1
- package/packages/gateway/dist/tools/lsp.d.ts +10 -0
- package/packages/gateway/dist/tools/lsp.d.ts.map +1 -0
- package/packages/gateway/dist/tools/lsp.js +111 -0
- package/packages/gateway/dist/tools/lsp.js.map +1 -0
- package/packages/gateway/dist/tools/question.d.ts +10 -0
- package/packages/gateway/dist/tools/question.d.ts.map +1 -0
- package/packages/gateway/dist/tools/question.js +30 -0
- package/packages/gateway/dist/tools/question.js.map +1 -0
- package/packages/gateway/dist/tools/shell.d.ts +1 -1
- package/packages/gateway/dist/tools/shell.d.ts.map +1 -1
- package/packages/gateway/dist/tools/shell.js +15 -0
- package/packages/gateway/dist/tools/shell.js.map +1 -1
- package/packages/gateway/dist/tools/skill.d.ts.map +1 -1
- package/packages/gateway/dist/tools/skill.js +2 -7
- package/packages/gateway/dist/tools/skill.js.map +1 -1
- package/packages/gateway/dist/tools/system.js +2 -2
- package/packages/gateway/dist/tools/system.js.map +1 -1
- package/packages/gateway/dist/tools/validation.d.ts +3 -0
- package/packages/gateway/dist/tools/validation.d.ts.map +1 -0
- package/packages/gateway/dist/tools/validation.js +120 -0
- package/packages/gateway/dist/tools/validation.js.map +1 -0
- package/packages/mcp/dist/http-server.d.ts +1 -1
- package/packages/mcp/dist/http-server.d.ts.map +1 -1
- package/packages/mcp/dist/http-server.js +544 -20
- package/packages/mcp/dist/http-server.js.map +1 -1
- package/packages/mcp/dist/mcp-server.d.ts.map +1 -1
- package/packages/mcp/dist/mcp-server.js +5 -1
- package/packages/mcp/dist/mcp-server.js.map +1 -1
- package/packages/shared/dist/config.d.ts +146 -16
- package/packages/shared/dist/config.d.ts.map +1 -1
- package/packages/shared/dist/config.js +93 -7
- package/packages/shared/dist/config.js.map +1 -1
- package/packages/shared/dist/index.d.ts +2 -0
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +2 -0
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/paths.d.ts +19 -2
- package/packages/shared/dist/paths.d.ts.map +1 -1
- package/packages/shared/dist/paths.js +50 -3
- package/packages/shared/dist/paths.js.map +1 -1
- package/packages/shared/dist/tool-profiles.d.ts +34 -0
- package/packages/shared/dist/tool-profiles.d.ts.map +1 -0
- package/packages/shared/dist/tool-profiles.js +188 -0
- package/packages/shared/dist/tool-profiles.js.map +1 -0
- package/packages/shared/dist/version.d.ts +9 -0
- package/packages/shared/dist/version.d.ts.map +1 -0
- package/packages/shared/dist/version.js +9 -0
- package/packages/shared/dist/version.js.map +1 -0
- package/scripts/postinstall.mjs +56 -0
- package/assets/icon.svg +0 -25
- package/packages/gateway/dist/tools/article.d.ts +0 -3
- package/packages/gateway/dist/tools/article.d.ts.map +0 -1
- package/packages/gateway/dist/tools/article.js +0 -230
- package/packages/gateway/dist/tools/article.js.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { spawn, execFileSync } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { c, ok, warn, openBrowser } from "./util.js";
|
|
6
|
+
/** Candidate default SSH public keys, in the order ssh itself prefers them. */
|
|
7
|
+
const SSH_PUBKEYS = ["id_ed25519.pub", "id_rsa.pub", "id_ecdsa.pub"];
|
|
8
|
+
function sshDir() {
|
|
9
|
+
return path.join(os.homedir(), ".ssh");
|
|
10
|
+
}
|
|
11
|
+
/** Returns the first existing default SSH public key path, or undefined. */
|
|
12
|
+
function findSshPublicKey() {
|
|
13
|
+
for (const name of SSH_PUBKEYS) {
|
|
14
|
+
const p = path.join(sshDir(), name);
|
|
15
|
+
if (fs.existsSync(p))
|
|
16
|
+
return p;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Ensure an SSH key pair exists. If none is present, generate a passphrase-less
|
|
22
|
+
* ed25519 key non-interactively. Returns the public key path.
|
|
23
|
+
*/
|
|
24
|
+
function ensureSshKey() {
|
|
25
|
+
const existing = findSshPublicKey();
|
|
26
|
+
if (existing)
|
|
27
|
+
return existing;
|
|
28
|
+
const dir = sshDir();
|
|
29
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
30
|
+
const keyPath = path.join(dir, "id_ed25519");
|
|
31
|
+
// -N "" = no passphrase, -q = quiet. execFileSync avoids shell injection.
|
|
32
|
+
execFileSync("ssh-keygen", ["-t", "ed25519", "-N", "", "-f", keyPath, "-q"], { stdio: "ignore" });
|
|
33
|
+
console.log(ok(`Generated SSH key: ${keyPath}.pub`));
|
|
34
|
+
return `${keyPath}.pub`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse accumulated serveo SSH banner output into a registration verdict.
|
|
38
|
+
* Returns null until the decisive "Forwarding HTTP traffic from …" line (always
|
|
39
|
+
* emitted last) has arrived, so callers can keep buffering. Pure + synchronous
|
|
40
|
+
* to keep the spawn logic thin and unit-testable.
|
|
41
|
+
*/
|
|
42
|
+
export function parseServeoBanner(acc, subdomain) {
|
|
43
|
+
const fwd = acc.match(/Forwarding HTTP traffic from (https:\/\/\S+)/i);
|
|
44
|
+
if (!fwd || !fwd[1])
|
|
45
|
+
return null;
|
|
46
|
+
const url = fwd[1];
|
|
47
|
+
const consoleUrl = acc.match(/https:\/\/console\.serveo\.net\/ssh\/keys\?add=\S+/i)?.[0];
|
|
48
|
+
const needsRegistration = /register your SSH public key/i.test(acc);
|
|
49
|
+
const host = url.replace(/^https:\/\//, "");
|
|
50
|
+
const registered = !needsRegistration && host.startsWith(`${subdomain}.`);
|
|
51
|
+
return { registered, consoleUrl, url };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Open a short-lived serveo SSH tunnel and inspect its banner to determine
|
|
55
|
+
* whether the SSH key is registered (fixed subdomain granted) or not. Never
|
|
56
|
+
* leaves a process behind — the child is always killed before resolving.
|
|
57
|
+
*/
|
|
58
|
+
export function checkServeoRegistration(subdomain, port, timeoutMs = 15000) {
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
|
+
const args = [
|
|
61
|
+
"-R",
|
|
62
|
+
`${subdomain}:80:127.0.0.1:${port}`,
|
|
63
|
+
"-o",
|
|
64
|
+
"StrictHostKeyChecking=no",
|
|
65
|
+
"-o",
|
|
66
|
+
"ConnectTimeout=10",
|
|
67
|
+
"serveo.net",
|
|
68
|
+
];
|
|
69
|
+
const child = spawn("ssh", args, { shell: false });
|
|
70
|
+
let acc = "";
|
|
71
|
+
let done = false;
|
|
72
|
+
const finish = (r) => {
|
|
73
|
+
if (done)
|
|
74
|
+
return;
|
|
75
|
+
done = true;
|
|
76
|
+
clearTimeout(timer);
|
|
77
|
+
try {
|
|
78
|
+
child.stdout?.removeAllListeners();
|
|
79
|
+
child.stderr?.removeAllListeners();
|
|
80
|
+
child.removeAllListeners();
|
|
81
|
+
child.kill("SIGTERM");
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
/* ignore */
|
|
85
|
+
}
|
|
86
|
+
resolve(r);
|
|
87
|
+
};
|
|
88
|
+
const onData = (buf) => {
|
|
89
|
+
acc += buf.toString("utf8");
|
|
90
|
+
// The "Forwarding HTTP traffic from …" line is emitted last in both the
|
|
91
|
+
// registered and unregistered cases, so once we see it the accumulated
|
|
92
|
+
// buffer already contains the registration notice + console URL (if any).
|
|
93
|
+
const verdict = parseServeoBanner(acc, subdomain);
|
|
94
|
+
if (verdict)
|
|
95
|
+
finish(verdict);
|
|
96
|
+
};
|
|
97
|
+
child.stdout.on("data", onData);
|
|
98
|
+
child.stderr.on("data", onData);
|
|
99
|
+
child.on("error", () => finish({ registered: false }));
|
|
100
|
+
const timer = setTimeout(() => {
|
|
101
|
+
const consoleUrl = acc.match(/https:\/\/console\.serveo\.net\/ssh\/keys\?add=\S+/i)?.[0];
|
|
102
|
+
finish({ registered: false, consoleUrl });
|
|
103
|
+
}, timeoutMs);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
107
|
+
/**
|
|
108
|
+
* Make sure the user's SSH key is registered with Serveo so the configured
|
|
109
|
+
* fixed subdomain is granted on every restart.
|
|
110
|
+
*
|
|
111
|
+
* - If a key is already registered, returns immediately (no prompts).
|
|
112
|
+
* - Otherwise generates a key if needed, shows it, opens the pre-filled
|
|
113
|
+
* registration page, and polls until the user completes the one-time
|
|
114
|
+
* browser login — then continues automatically.
|
|
115
|
+
*
|
|
116
|
+
* Returns true if registration is confirmed, false if the user should proceed
|
|
117
|
+
* without a guaranteed fixed URL (timeout / opted out).
|
|
118
|
+
*/
|
|
119
|
+
export async function ensureServeoRegistration(subdomain, port, opts = {}) {
|
|
120
|
+
const pubKeyPath = ensureSshKey();
|
|
121
|
+
process.stdout.write(c.gray("Checking Serveo SSH key registration… "));
|
|
122
|
+
const first = await checkServeoRegistration(subdomain, port);
|
|
123
|
+
if (first.registered) {
|
|
124
|
+
process.stdout.write(c.green("already registered\n"));
|
|
125
|
+
console.log(ok(`Fixed URL ready: ${c.cyan(`https://${subdomain}.serveousercontent.com`)}`));
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
process.stdout.write(c.yellow("not registered\n"));
|
|
129
|
+
const consoleUrl = first.consoleUrl ?? "https://console.serveo.net/ssh/keys";
|
|
130
|
+
const pubKey = (() => {
|
|
131
|
+
try {
|
|
132
|
+
return fs.readFileSync(pubKeyPath, "utf8").trim();
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return "(unable to read public key)";
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
console.log("");
|
|
139
|
+
console.log(c.bold("One-time Serveo SSH key registration (needed for a permanent URL):"));
|
|
140
|
+
console.log(` 1. A browser will open ${c.cyan("console.serveo.net")} (your key is pre-filled).`);
|
|
141
|
+
console.log(" 2. Sign in with Google or GitHub and confirm adding the key.");
|
|
142
|
+
console.log(c.gray(" Your public key:"));
|
|
143
|
+
console.log(c.gray(` ${pubKey}`));
|
|
144
|
+
console.log(c.gray(` Registration URL: ${consoleUrl}`));
|
|
145
|
+
console.log("");
|
|
146
|
+
if (!opts.noOpen)
|
|
147
|
+
openBrowser(consoleUrl);
|
|
148
|
+
// Poll until serveo grants the fixed subdomain. ~2 min budget, zero typing.
|
|
149
|
+
const maxAttempts = 24;
|
|
150
|
+
const intervalMs = 5000;
|
|
151
|
+
process.stdout.write(c.gray("Waiting for registration to complete"));
|
|
152
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
153
|
+
await sleep(intervalMs);
|
|
154
|
+
process.stdout.write(c.gray("."));
|
|
155
|
+
const check = await checkServeoRegistration(subdomain, port);
|
|
156
|
+
if (check.registered) {
|
|
157
|
+
process.stdout.write(c.green(" done\n"));
|
|
158
|
+
console.log(ok(`SSH key registered. Fixed URL: ${c.cyan(`https://${subdomain}.serveousercontent.com`)}`));
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
process.stdout.write(c.yellow(" timed out\n"));
|
|
163
|
+
console.log(warn("Registration not detected yet. The tunnel will still start, but the URL may " +
|
|
164
|
+
"change until you finish registering. Re-run `localant setup` after registering, " +
|
|
165
|
+
`or open ${consoleUrl} manually.`));
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=serveo-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serveo-setup.js","sourceRoot":"","sources":["../src/serveo-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ export declare const c: {
|
|
|
9
9
|
export declare const ok: (s: string) => string;
|
|
10
10
|
export declare const warn: (s: string) => string;
|
|
11
11
|
export declare const fail: (s: string) => string;
|
|
12
|
+
/**
|
|
13
|
+
* Ask a yes/no question on the terminal. When stdin is not a TTY (piped,
|
|
14
|
+
* CI, background run) the prompt is skipped and `def` is returned, so
|
|
15
|
+
* non-interactive invocations never hang.
|
|
16
|
+
*/
|
|
17
|
+
export declare function promptYesNo(question: string, def?: boolean): Promise<boolean>;
|
|
12
18
|
/** Copy text to the clipboard using the platform tool. Best-effort. */
|
|
13
19
|
export declare function copyToClipboard(text: string): Promise<boolean>;
|
|
14
20
|
/** Open a URL in the default browser. Best-effort. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,CAAC;eADqB,MAAM;aAAN,MAAM;gBAAN,MAAM;cAAN,MAAM;cAAN,MAAM;cAAN,MAAM;CAQxC,CAAC;AAEF,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,WAA2B,CAAC;AACxD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAA8B,CAAC;AAC7D,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAAyB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAW3E;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe9D;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO7C;AAED,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import readline from "node:readline";
|
|
2
3
|
const useColor = process.stdout.isTTY && !process.env.NO_COLOR;
|
|
3
4
|
const wrap = (code) => (s) => (useColor ? `\x1b[${code}m${s}\x1b[0m` : s);
|
|
4
5
|
export const c = {
|
|
@@ -12,6 +13,25 @@ export const c = {
|
|
|
12
13
|
export const ok = (s) => `${c.green("✅")} ${s}`;
|
|
13
14
|
export const warn = (s) => `${c.yellow("⚠️ ")} ${s}`;
|
|
14
15
|
export const fail = (s) => `${c.red("✖")} ${s}`;
|
|
16
|
+
/**
|
|
17
|
+
* Ask a yes/no question on the terminal. When stdin is not a TTY (piped,
|
|
18
|
+
* CI, background run) the prompt is skipped and `def` is returned, so
|
|
19
|
+
* non-interactive invocations never hang.
|
|
20
|
+
*/
|
|
21
|
+
export function promptYesNo(question, def = false) {
|
|
22
|
+
if (!process.stdin.isTTY)
|
|
23
|
+
return Promise.resolve(def);
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
26
|
+
rl.question(`${question} ${def ? "[Y/n]" : "[y/N]"} `, (answer) => {
|
|
27
|
+
rl.close();
|
|
28
|
+
const a = answer.trim().toLowerCase();
|
|
29
|
+
if (a === "")
|
|
30
|
+
return resolve(def);
|
|
31
|
+
resolve(a === "y" || a === "yes");
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
15
35
|
/** Copy text to the clipboard using the platform tool. Best-effort. */
|
|
16
36
|
export function copyToClipboard(text) {
|
|
17
37
|
return new Promise((resolve) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Self-contained local dashboard. Returns a single HTML document that talks to
|
|
3
3
|
* the gateway's /api/* endpoints on the same origin. Local-only by default.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Dependency-free and build-free by design: this ships as one HTML string so
|
|
6
|
+
* the dashboard works with zero build steps and no CDN requirement. The inner
|
|
7
|
+
* <script> uses string concatenation (no template literals) so it can live
|
|
8
|
+
* inside this outer template literal without escaping collisions.
|
|
8
9
|
*/
|
|
9
|
-
export declare function dashboardHtml(): string;
|
|
10
|
+
export declare function dashboardHtml(token?: string): string;
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,aAAa,CAAC,KAAK,SAAK,GAAG,MAAM,CAw4BhD"}
|