kandev 0.16.0 → 0.17.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/args.js +115 -0
- package/dist/cli.js +48 -78
- package/dist/constants.js +1 -2
- package/dist/dev.js +2 -2
- package/dist/run.js +1 -3
- package/dist/shared.js +5 -7
- package/dist/start.js +1 -1
- package/package.json +1 -1
package/dist/args.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParseError = void 0;
|
|
4
|
+
exports.parseArgs = parseArgs;
|
|
5
|
+
exports.resolvePorts = resolvePorts;
|
|
6
|
+
class ParseError extends Error {
|
|
7
|
+
}
|
|
8
|
+
exports.ParseError = ParseError;
|
|
9
|
+
function parseArgs(argv) {
|
|
10
|
+
const opts = { command: "run" };
|
|
11
|
+
let showHelp = false;
|
|
12
|
+
const deprecatedFlags = [];
|
|
13
|
+
const noteDeprecated = (flag) => {
|
|
14
|
+
if (!deprecatedFlags.includes(flag))
|
|
15
|
+
deprecatedFlags.push(flag);
|
|
16
|
+
};
|
|
17
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
18
|
+
const arg = argv[i];
|
|
19
|
+
if (arg === "--help" || arg === "-h") {
|
|
20
|
+
showHelp = true;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (arg === "dev" || arg === "run" || arg === "start") {
|
|
24
|
+
opts.command = arg;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (arg === "--version") {
|
|
28
|
+
opts.version = takeValue(argv, i, "--version");
|
|
29
|
+
i += 1;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (arg.startsWith("--version=")) {
|
|
33
|
+
const value = arg.slice("--version=".length);
|
|
34
|
+
if (value.length === 0)
|
|
35
|
+
throw new ParseError("--version requires a value");
|
|
36
|
+
opts.version = value;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (arg === "--dev") {
|
|
40
|
+
opts.command = "dev";
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
// --port is an alias for --backend-port (the user-facing port in run/start).
|
|
44
|
+
if (arg === "--port" || arg === "--backend-port") {
|
|
45
|
+
opts.backendPort = parsePort(takeValue(argv, i, arg), arg);
|
|
46
|
+
i += 1;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (arg.startsWith("--port=") || arg.startsWith("--backend-port=")) {
|
|
50
|
+
const flag = arg.startsWith("--port=") ? "--port" : "--backend-port";
|
|
51
|
+
opts.backendPort = parsePort(arg.slice(flag.length + 1), flag);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (arg === "--web-internal-port") {
|
|
55
|
+
opts.webPort = parsePort(takeValue(argv, i, "--web-internal-port"), "--web-internal-port");
|
|
56
|
+
i += 1;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (arg.startsWith("--web-internal-port=")) {
|
|
60
|
+
opts.webPort = parsePort(arg.slice("--web-internal-port=".length), "--web-internal-port");
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (arg === "--web-port") {
|
|
64
|
+
opts.webPort = parsePort(takeValue(argv, i, "--web-port"), "--web-port");
|
|
65
|
+
noteDeprecated("--web-port");
|
|
66
|
+
i += 1;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (arg.startsWith("--web-port=")) {
|
|
70
|
+
opts.webPort = parsePort(arg.slice("--web-port=".length), "--web-port");
|
|
71
|
+
noteDeprecated("--web-port");
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (arg === "--verbose" || arg === "-v") {
|
|
75
|
+
opts.verbose = true;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (arg === "--debug") {
|
|
79
|
+
opts.debug = true;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { options: opts, showHelp, deprecatedFlags };
|
|
84
|
+
}
|
|
85
|
+
function takeValue(argv, i, flag) {
|
|
86
|
+
const v = argv[i + 1];
|
|
87
|
+
if (v === undefined || v.startsWith("-")) {
|
|
88
|
+
throw new ParseError(`${flag} requires a value`);
|
|
89
|
+
}
|
|
90
|
+
return v;
|
|
91
|
+
}
|
|
92
|
+
function parsePort(raw, flag) {
|
|
93
|
+
const n = Number(raw);
|
|
94
|
+
if (raw === "" || !Number.isInteger(n) || n < 1 || n > 65535) {
|
|
95
|
+
throw new ParseError(`${flag} value must be an integer between 1 and 65535, got "${raw}"`);
|
|
96
|
+
}
|
|
97
|
+
return n;
|
|
98
|
+
}
|
|
99
|
+
// CLI flags beat env vars; KANDEV_PORT is an alias for KANDEV_BACKEND_PORT.
|
|
100
|
+
function resolvePorts(options, env) {
|
|
101
|
+
return {
|
|
102
|
+
backendPort: options.backendPort ?? envPort(env, "KANDEV_BACKEND_PORT") ?? envPort(env, "KANDEV_PORT"),
|
|
103
|
+
webPort: options.webPort ?? envPort(env, "KANDEV_WEB_PORT"),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function envPort(env, name) {
|
|
107
|
+
const val = env[name];
|
|
108
|
+
if (val === undefined)
|
|
109
|
+
return undefined;
|
|
110
|
+
const n = Number(val);
|
|
111
|
+
if (val === "" || !Number.isInteger(n) || n < 1 || n > 65535) {
|
|
112
|
+
throw new ParseError(`${name} must be an integer between 1 and 65535, got "${val}"`);
|
|
113
|
+
}
|
|
114
|
+
return n;
|
|
115
|
+
}
|
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const node_path_1 = __importDefault(require("node:path"));
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
9
|
+
const args_1 = require("./args");
|
|
9
10
|
const dev_1 = require("./dev");
|
|
10
11
|
const run_1 = require("./run");
|
|
11
12
|
const start_1 = require("./start");
|
|
@@ -15,11 +16,11 @@ function printHelp() {
|
|
|
15
16
|
console.log(`kandev launcher
|
|
16
17
|
|
|
17
18
|
Usage:
|
|
18
|
-
kandev run [--version <tag>] [--
|
|
19
|
-
kandev dev [--
|
|
20
|
-
kandev start [--
|
|
21
|
-
kandev [--version <tag>] [--
|
|
22
|
-
kandev --dev [--
|
|
19
|
+
kandev run [--version <tag>] [--port <port>] [--verbose] [--debug]
|
|
20
|
+
kandev dev [--port <port>]
|
|
21
|
+
kandev start [--port <port>] [--verbose] [--debug]
|
|
22
|
+
kandev [--version <tag>] [--port <port>] [--verbose] [--debug]
|
|
23
|
+
kandev --dev [--port <port>]
|
|
23
24
|
|
|
24
25
|
Examples:
|
|
25
26
|
kandev
|
|
@@ -28,80 +29,30 @@ Examples:
|
|
|
28
29
|
kandev dev
|
|
29
30
|
kandev start
|
|
30
31
|
kandev --version v0.1.0
|
|
31
|
-
kandev --
|
|
32
|
+
kandev --port 3000
|
|
32
33
|
kandev --debug
|
|
33
34
|
|
|
34
35
|
Options:
|
|
35
|
-
dev
|
|
36
|
-
start
|
|
37
|
-
run
|
|
36
|
+
dev Use local repo for dev (make dev + next dev) if available.
|
|
37
|
+
start Use local production build (make build + next start).
|
|
38
|
+
run Use release bundles (default).
|
|
38
39
|
--dev Alias for "dev".
|
|
39
40
|
--version Release tag to install (default: latest).
|
|
40
|
-
--
|
|
41
|
-
|
|
41
|
+
--port Port for the Go backend (the URL kandev opens on in
|
|
42
|
+
start/run). Alias for --backend-port. Also reads
|
|
43
|
+
KANDEV_PORT or KANDEV_BACKEND_PORT.
|
|
42
44
|
--verbose, -v Show info logs from backend + web.
|
|
43
45
|
--debug Show debug logs + agent message dumps.
|
|
44
46
|
--help, -h Show help.
|
|
47
|
+
|
|
48
|
+
Advanced:
|
|
49
|
+
--backend-port Same as --port.
|
|
50
|
+
--web-internal-port Override the internal Next.js port. The Go backend
|
|
51
|
+
reverse-proxies to it; users hit the backend port.
|
|
52
|
+
Also reads KANDEV_WEB_PORT.
|
|
53
|
+
--web-port Deprecated alias for --web-internal-port.
|
|
45
54
|
`);
|
|
46
55
|
}
|
|
47
|
-
function parseArgs(argv) {
|
|
48
|
-
const opts = { command: "run" };
|
|
49
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
50
|
-
const arg = argv[i];
|
|
51
|
-
if (arg === "--help" || arg === "-h") {
|
|
52
|
-
printHelp();
|
|
53
|
-
process.exit(0);
|
|
54
|
-
}
|
|
55
|
-
if (arg === "dev" || arg === "run" || arg === "start") {
|
|
56
|
-
opts.command = arg;
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
if (arg === "--version") {
|
|
60
|
-
opts.version = argv[i + 1];
|
|
61
|
-
i += 1;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
if (arg.startsWith("--version=")) {
|
|
65
|
-
opts.version = arg.split("=")[1];
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
if (arg === "--dev") {
|
|
69
|
-
opts.command = "dev";
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
if (arg === "--backend-port") {
|
|
73
|
-
opts.backendPort = Number(argv[i + 1]);
|
|
74
|
-
i += 1;
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
if (arg.startsWith("--backend-port=")) {
|
|
78
|
-
opts.backendPort = Number(arg.split("=")[1]);
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
if (arg === "--web-port") {
|
|
82
|
-
opts.webPort = Number(argv[i + 1]);
|
|
83
|
-
i += 1;
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (arg.startsWith("--web-port=")) {
|
|
87
|
-
opts.webPort = Number(arg.split("=")[1]);
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (arg === "--verbose" || arg === "-v") {
|
|
91
|
-
opts.verbose = true;
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
if (arg === "--debug") {
|
|
95
|
-
opts.debug = true;
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return opts;
|
|
100
|
-
}
|
|
101
|
-
function envPort(name) {
|
|
102
|
-
const val = process.env[name];
|
|
103
|
-
return val ? Number(val) : undefined;
|
|
104
|
-
}
|
|
105
56
|
function findRepoRoot(startDir) {
|
|
106
57
|
let current = node_path_1.default.resolve(startDir);
|
|
107
58
|
while (true) {
|
|
@@ -125,10 +76,18 @@ function findRepoRoot(startDir) {
|
|
|
125
76
|
}
|
|
126
77
|
}
|
|
127
78
|
async function main() {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
79
|
+
const { options, showHelp, deprecatedFlags } = (0, args_1.parseArgs)(process.argv.slice(2));
|
|
80
|
+
if (showHelp) {
|
|
81
|
+
printHelp();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
for (const flag of deprecatedFlags) {
|
|
85
|
+
process.stderr.write(`[kandev] ${flag} is deprecated; use --web-internal-port\n`);
|
|
86
|
+
}
|
|
87
|
+
const resolved = (0, args_1.resolvePorts)(options, process.env);
|
|
88
|
+
const backendPort = (0, ports_1.ensureValidPort)(resolved.backendPort, "backend port");
|
|
89
|
+
const webPort = (0, ports_1.ensureValidPort)(resolved.webPort, "web port");
|
|
90
|
+
if (options.command === "dev") {
|
|
132
91
|
const repoRoot = findRepoRoot(process.cwd());
|
|
133
92
|
if (!repoRoot) {
|
|
134
93
|
throw new Error("Unable to locate repo root for dev. Run from the repo.");
|
|
@@ -136,24 +95,35 @@ async function main() {
|
|
|
136
95
|
await (0, dev_1.runDev)({ repoRoot, backendPort, webPort });
|
|
137
96
|
return;
|
|
138
97
|
}
|
|
139
|
-
if (
|
|
98
|
+
if (options.command === "start") {
|
|
140
99
|
const repoRoot = findRepoRoot(process.cwd());
|
|
141
100
|
if (!repoRoot) {
|
|
142
101
|
throw new Error("Unable to locate repo root for start. Run from the repo.");
|
|
143
102
|
}
|
|
144
|
-
await (0, start_1.runStart)({
|
|
103
|
+
await (0, start_1.runStart)({
|
|
104
|
+
repoRoot,
|
|
105
|
+
backendPort,
|
|
106
|
+
webPort,
|
|
107
|
+
verbose: options.verbose,
|
|
108
|
+
debug: options.debug,
|
|
109
|
+
});
|
|
145
110
|
return;
|
|
146
111
|
}
|
|
147
112
|
await (0, update_1.maybePromptForUpdate)(package_json_1.default.version, process.argv.slice(2));
|
|
148
113
|
await (0, run_1.runRelease)({
|
|
149
|
-
version:
|
|
114
|
+
version: options.version,
|
|
150
115
|
backendPort,
|
|
151
116
|
webPort,
|
|
152
|
-
verbose:
|
|
153
|
-
debug:
|
|
117
|
+
verbose: options.verbose,
|
|
118
|
+
debug: options.debug,
|
|
154
119
|
});
|
|
155
120
|
}
|
|
156
121
|
main().catch((err) => {
|
|
122
|
+
if (err instanceof args_1.ParseError) {
|
|
123
|
+
console.error(`[kandev] ${err.message}`);
|
|
124
|
+
console.error("[kandev] run --help for usage");
|
|
125
|
+
process.exit(2);
|
|
126
|
+
}
|
|
157
127
|
console.error(`[kandev] ${err instanceof Error ? err.message : String(err)}`);
|
|
158
128
|
process.exit(1);
|
|
159
129
|
});
|
package/dist/constants.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DEV_KANDEV_DOTDIR = exports.DATA_DIR = exports.CACHE_DIR = exports.KANDEV_TASKS_DIR = exports.KANDEV_HOME_DIR = exports.KANDEV_DOTDIR = exports.HEALTH_TIMEOUT_MS_DEV = exports.HEALTH_TIMEOUT_MS_RELEASE = exports.RANDOM_PORT_RETRIES = exports.RANDOM_PORT_MAX = exports.RANDOM_PORT_MIN = exports.
|
|
6
|
+
exports.DEV_KANDEV_DOTDIR = exports.DATA_DIR = exports.CACHE_DIR = exports.KANDEV_TASKS_DIR = exports.KANDEV_HOME_DIR = exports.KANDEV_DOTDIR = exports.HEALTH_TIMEOUT_MS_DEV = exports.HEALTH_TIMEOUT_MS_RELEASE = exports.RANDOM_PORT_RETRIES = exports.RANDOM_PORT_MAX = exports.RANDOM_PORT_MIN = exports.DEFAULT_AGENTCTL_PORT = exports.DEFAULT_WEB_PORT = exports.DEFAULT_BACKEND_PORT = void 0;
|
|
7
7
|
exports.devKandevHome = devKandevHome;
|
|
8
8
|
const node_os_1 = __importDefault(require("node:os"));
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
@@ -13,7 +13,6 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
13
13
|
exports.DEFAULT_BACKEND_PORT = 38429;
|
|
14
14
|
exports.DEFAULT_WEB_PORT = 37429;
|
|
15
15
|
exports.DEFAULT_AGENTCTL_PORT = 39429;
|
|
16
|
-
exports.DEFAULT_MCP_PORT = 40429;
|
|
17
16
|
// Random fallback range for port selection.
|
|
18
17
|
exports.RANDOM_PORT_MIN = 10000;
|
|
19
18
|
exports.RANDOM_PORT_MAX = 60000;
|
package/dist/dev.js
CHANGED
|
@@ -19,6 +19,7 @@ async function runDev({ repoRoot, backendPort, webPort }) {
|
|
|
19
19
|
const backendEnv = (0, shared_1.buildBackendEnv)({ ports, extra });
|
|
20
20
|
const webEnv = (0, shared_1.buildWebEnv)({ ports, debug: true });
|
|
21
21
|
const logLevel = process.env.KANDEV_LOGGING_LEVEL?.trim() || process.env.KANDEV_LOG_LEVEL?.trim() || "info";
|
|
22
|
+
const webUrl = `http://localhost:${ports.webPort}`;
|
|
22
23
|
(0, shared_1.logStartupInfo)({
|
|
23
24
|
header: "dev mode: using local repo",
|
|
24
25
|
ports,
|
|
@@ -38,7 +39,6 @@ async function runDev({ repoRoot, backendPort, webPort }) {
|
|
|
38
39
|
console.log("[kandev] starting backend...");
|
|
39
40
|
await (0, health_1.waitForHealth)(ports.backendUrl, backendProc, healthTimeoutMs);
|
|
40
41
|
console.log(`[kandev] backend ready at ${ports.backendUrl}`);
|
|
41
|
-
const webUrl = `http://localhost:${ports.webPort}`;
|
|
42
42
|
console.log("[kandev] starting web...");
|
|
43
43
|
const webProc = (0, web_1.launchWebApp)({
|
|
44
44
|
command: "pnpm",
|
|
@@ -49,7 +49,7 @@ async function runDev({ repoRoot, backendPort, webPort }) {
|
|
|
49
49
|
label: "web",
|
|
50
50
|
});
|
|
51
51
|
await (0, health_1.waitForUrlReady)(webUrl, webProc, healthTimeoutMs);
|
|
52
|
-
console.log(`[kandev]
|
|
52
|
+
console.log(`[kandev] open: ${webUrl}`);
|
|
53
53
|
(0, web_1.openBrowser)(webUrl);
|
|
54
54
|
}
|
|
55
55
|
// Computes the dev-mode backend env. Dev mode always roots kandev under
|
package/dist/run.js
CHANGED
|
@@ -189,9 +189,7 @@ function launchReleaseApps(prepared) {
|
|
|
189
189
|
backendPort: Number(prepared.backendEnv.KANDEV_SERVER_PORT),
|
|
190
190
|
webPort: prepared.webPort,
|
|
191
191
|
agentctlPort: prepared.agentctlPort,
|
|
192
|
-
mcpPort: 0,
|
|
193
192
|
backendUrl: prepared.backendUrl,
|
|
194
|
-
mcpUrl: "",
|
|
195
193
|
},
|
|
196
194
|
dbPath: prepared.dbPath,
|
|
197
195
|
logLevel: prepared.logLevel,
|
|
@@ -247,6 +245,6 @@ async function runRelease({ version, backendPort, webPort, verbose = false, debu
|
|
|
247
245
|
quiet: !prepared.showOutput,
|
|
248
246
|
});
|
|
249
247
|
await (0, health_1.waitForUrlReady)(webUrl, webProc, healthTimeoutMs);
|
|
250
|
-
console.log("[kandev]
|
|
248
|
+
console.log("[kandev] open: " + prepared.backendUrl);
|
|
251
249
|
(0, web_1.openBrowser)(prepared.backendUrl);
|
|
252
250
|
}
|
package/dist/shared.js
CHANGED
|
@@ -24,14 +24,11 @@ async function pickPorts(backendPort, webPort) {
|
|
|
24
24
|
const resolvedBackendPort = backendPort ?? (await (0, ports_1.pickAvailablePort)(constants_1.DEFAULT_BACKEND_PORT));
|
|
25
25
|
const resolvedWebPort = webPort ?? (await (0, ports_1.pickAvailablePort)(constants_1.DEFAULT_WEB_PORT));
|
|
26
26
|
const agentctlPort = await (0, ports_1.pickAvailablePort)(constants_1.DEFAULT_AGENTCTL_PORT);
|
|
27
|
-
const mcpPort = await (0, ports_1.pickAvailablePort)(constants_1.DEFAULT_MCP_PORT);
|
|
28
27
|
return {
|
|
29
28
|
backendPort: resolvedBackendPort,
|
|
30
29
|
webPort: resolvedWebPort,
|
|
31
30
|
agentctlPort,
|
|
32
|
-
mcpPort,
|
|
33
31
|
backendUrl: `http://localhost:${resolvedBackendPort}`,
|
|
34
|
-
mcpUrl: `http://localhost:${mcpPort}/sse`,
|
|
35
32
|
};
|
|
36
33
|
}
|
|
37
34
|
/**
|
|
@@ -47,7 +44,6 @@ function buildBackendEnv(options) {
|
|
|
47
44
|
KANDEV_SERVER_PORT: String(ports.backendPort),
|
|
48
45
|
KANDEV_WEB_INTERNAL_URL: `http://localhost:${ports.webPort}`,
|
|
49
46
|
KANDEV_AGENT_STANDALONE_PORT: String(ports.agentctlPort),
|
|
50
|
-
KANDEV_AGENT_MCP_SERVER_PORT: String(ports.mcpPort),
|
|
51
47
|
...(logLevel ? { KANDEV_LOG_LEVEL: logLevel } : {}),
|
|
52
48
|
...extra,
|
|
53
49
|
};
|
|
@@ -85,11 +81,13 @@ function buildWebEnv(options) {
|
|
|
85
81
|
*/
|
|
86
82
|
function logStartupInfo(options) {
|
|
87
83
|
const { header, ports, dbPath, logLevel } = options;
|
|
84
|
+
const backendUrl = ports.backendUrl;
|
|
85
|
+
const webUrl = `http://localhost:${ports.webPort}`;
|
|
88
86
|
console.log(`[kandev] ${header}`);
|
|
89
|
-
console.log("[kandev]
|
|
87
|
+
console.log("[kandev] backend:", backendUrl);
|
|
88
|
+
console.log("[kandev] web:", webUrl);
|
|
90
89
|
console.log("[kandev] agentctl port:", ports.agentctlPort);
|
|
91
|
-
console.log("[kandev] mcp
|
|
92
|
-
console.log("[kandev] mcp url:", ports.mcpUrl);
|
|
90
|
+
console.log("[kandev] mcp url:", `${backendUrl}/mcp`);
|
|
93
91
|
if (dbPath) {
|
|
94
92
|
console.log("[kandev] db path:", dbPath);
|
|
95
93
|
}
|
package/dist/start.js
CHANGED
|
@@ -171,6 +171,6 @@ async function runStart({ repoRoot, backendPort, webPort, verbose = false, debug
|
|
|
171
171
|
quiet: !showOutput,
|
|
172
172
|
});
|
|
173
173
|
await (0, health_1.waitForUrlReady)(webUrl, webProc, healthTimeoutMs);
|
|
174
|
-
console.log("[kandev]
|
|
174
|
+
console.log("[kandev] open: " + ports.backendUrl);
|
|
175
175
|
(0, web_1.openBrowser)(ports.backendUrl);
|
|
176
176
|
}
|