@kimchi-dev/kimchictl 0.0.2 → 0.0.4
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 +2 -0
- package/dist/api/workspaces.d.ts +5 -1
- package/dist/api/workspaces.d.ts.map +1 -1
- package/dist/api/workspaces.js +7 -1
- package/dist/api/workspaces.js.map +1 -1
- package/dist/commands/ssh.d.ts +2 -0
- package/dist/commands/ssh.d.ts.map +1 -1
- package/dist/commands/ssh.js +3 -0
- package/dist/commands/ssh.js.map +1 -1
- package/dist/commands/workspace.d.ts +9 -0
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +71 -17
- package/dist/commands/workspace.js.map +1 -1
- package/dist/ssh/config.d.ts.map +1 -1
- package/dist/ssh/config.js +6 -0
- package/dist/ssh/config.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +12 -1
- package/src/api/workspaces.ts +12 -2
- package/src/commands/ssh.ts +4 -0
- package/src/commands/workspace.test.ts +70 -22
- package/src/commands/workspace.ts +88 -16
- package/src/ssh/config.test.ts +5 -0
- package/src/ssh/config.ts +6 -0
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -77,6 +77,8 @@ kimchictl version Print the version
|
|
|
77
77
|
|
|
78
78
|
Suspend/resume exposed by the API today: **none**. `workspace suspend` / `workspace resume` land when the endpoints exist.
|
|
79
79
|
|
|
80
|
+
`workspace create` prints progress, the connect commands, and finally the alias as the last stdout line — capture it with `kimchictl workspace create | tail -1`.
|
|
81
|
+
|
|
80
82
|
## Sharing auth with the kimchi agent
|
|
81
83
|
|
|
82
84
|
`kimchictl login` writes the same credential files the kimchi coding agent uses — `~/.config/kimchi/harness/auth.json` (provider `kimchi-dev`) and the `apiKey` field of `~/.config/kimchi/config.json` — so either tool can sign you in and the other is logged in. `KIMCHI_API_KEY` overrides the file-based credentials.
|
package/dist/api/workspaces.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiOptions } from "./types.js";
|
|
2
|
-
export type WorkspaceStatus = "active" | "initializing" | "suspended" | "deleting" | "
|
|
2
|
+
export type WorkspaceStatus = "active" | "initializing" | "suspended" | "deleting" | "terminated";
|
|
3
3
|
export interface Workspace {
|
|
4
4
|
/** Server id — also the command-line identifier (`workspace get <id>`, `ssh <id>`). */
|
|
5
5
|
id: string;
|
|
@@ -10,6 +10,10 @@ export interface Workspace {
|
|
|
10
10
|
uri?: string;
|
|
11
11
|
host?: string;
|
|
12
12
|
createdAt: Date;
|
|
13
|
+
/** Control-plane cluster (e.g. krep-us). */
|
|
14
|
+
cluster: string;
|
|
15
|
+
/** Client that owns the workspace (e.g. harness). */
|
|
16
|
+
clientType: string;
|
|
13
17
|
cpuMillicores?: number;
|
|
14
18
|
ramBytes?: number;
|
|
15
19
|
pvcSizeBytes?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"../src/","sources":["api/workspaces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAe5C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"../src/","sources":["api/workspaces.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAe5C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEjG,MAAM,WAAW,SAAS;IACzB,uFAAuF;IACvF,EAAE,EAAE,MAAM,CAAA;IACV,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,eAAe,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,IAAI,CAAA;IACf,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IAC1D,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAsD5G;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBpH;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,SAAS,CAAC,CAwBpB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAclH;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAmDtE"}
|
package/dist/api/workspaces.js
CHANGED
|
@@ -137,6 +137,8 @@ export function mapWorkspace(raw, endpoint) {
|
|
|
137
137
|
uri,
|
|
138
138
|
host,
|
|
139
139
|
createdAt: createdAt ?? new Date(0),
|
|
140
|
+
cluster: typeof r.cluster === "string" ? r.cluster : "",
|
|
141
|
+
clientType: typeof r.clientType === "string" ? r.clientType : "",
|
|
140
142
|
cpuMillicores: cpuQuantityToMillicores(res?.cpu),
|
|
141
143
|
ramBytes: byteQuantityToBytes(res?.memory),
|
|
142
144
|
pvcSizeBytes: byteQuantityToBytes(res?.pvcSize),
|
|
@@ -152,8 +154,12 @@ function mapWorkspaceStatus(raw) {
|
|
|
152
154
|
return "suspended";
|
|
153
155
|
case "DELETING":
|
|
154
156
|
return "deleting";
|
|
157
|
+
case "TERMINATED":
|
|
158
|
+
return "terminated";
|
|
155
159
|
default:
|
|
156
|
-
|
|
160
|
+
// Unknown statuses read as terminated, not "idle": dead workspaces
|
|
161
|
+
// are the dominant unknown the API reports.
|
|
162
|
+
return "terminated";
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
165
|
//# sourceMappingURL=workspaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.js","sourceRoot":"../src/","sources":["api/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEhE;;;;;;GAMG;AAEH,MAAM,mBAAmB,GAAG,SAAS,CAAA,CAAC,8CAA8C;AACpF,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,6BAA6B,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"../src/","sources":["api/workspaces.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ssh.d.ts
CHANGED
|
@@ -12,4 +12,6 @@ export interface SshDeps {
|
|
|
12
12
|
* and is deliberately absent from help (internal plumbing, not user-facing).
|
|
13
13
|
*/
|
|
14
14
|
export declare function runSsh(args: string[], deps?: SshDeps): Promise<number>;
|
|
15
|
+
/** Canonical harness-package entry (see commands/workspace.ts). */
|
|
16
|
+
export declare const run: (args: string[], deps?: SshDeps) => Promise<number>;
|
|
15
17
|
//# sourceMappingURL=ssh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"../src/","sources":["commands/ssh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"../src/","sources":["commands/ssh.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,OAAO;IACvB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yBAAyB;IACzB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;IACjC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAMD;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhF;AA+DD,mEAAmE;AACnE,eAAO,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAwB,CAAA"}
|
package/dist/commands/ssh.js
CHANGED
|
@@ -5,6 +5,7 @@ import { isSshIntegrationConfigured, resolveSshDomain, resolveSshPaths, setupSsh
|
|
|
5
5
|
import { connectToWorkspace } from "../ssh/connect.js";
|
|
6
6
|
import { resolveTunnel } from "../ssh/tunnel.js";
|
|
7
7
|
import { parseFlags, UsageError } from "./flags.js";
|
|
8
|
+
import { guardCommand } from "./guard.js";
|
|
8
9
|
const GROUP_USAGE = `Usage:
|
|
9
10
|
kimchictl ssh <name> [command...] Connect to a workspace (auto-configures SSH on first use)
|
|
10
11
|
kimchictl ssh setup [--uninstall] Manage the native SSH integration`;
|
|
@@ -87,4 +88,6 @@ async function runProxy(args, deps) {
|
|
|
87
88
|
await bridgeStdioToWebSocket({ wsUrl: creds.wsUrl, token: creds.token });
|
|
88
89
|
return 0;
|
|
89
90
|
}
|
|
91
|
+
/** Canonical harness-package entry (see commands/workspace.ts). */
|
|
92
|
+
export const run = guardCommand(runSsh);
|
|
90
93
|
//# sourceMappingURL=ssh.js.map
|
package/dist/commands/ssh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"../src/","sources":["commands/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EACN,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"../src/","sources":["commands/ssh.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,16 @@ export interface WorkspaceDeps {
|
|
|
9
9
|
now?: () => Date;
|
|
10
10
|
/** Sleep override for the create wait loop (tests). */
|
|
11
11
|
sleep?: (ms: number) => Promise<void>;
|
|
12
|
+
/** ANSI colors on stdout (tests); defaults to stdout being a TTY. */
|
|
13
|
+
color?: boolean;
|
|
12
14
|
}
|
|
13
15
|
/** `kimchictl workspace <verb> …` — group command; also mounted as hidden alias `ws`. */
|
|
14
16
|
export declare function runWorkspace(args: string[], deps?: WorkspaceDeps): Promise<number>;
|
|
17
|
+
/**
|
|
18
|
+
* Canonical harness-package entry: modules listed in the kimchi.commands
|
|
19
|
+
* manifest must export run(args) (kimchi-dev:src/commands/package-commands.ts).
|
|
20
|
+
* guardCommand maps usage/domain errors to exit codes 2/1, matching the
|
|
21
|
+
* CLI registry.
|
|
22
|
+
*/
|
|
23
|
+
export declare const run: (args: string[], deps?: WorkspaceDeps) => Promise<number>;
|
|
15
24
|
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC7B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,uDAAuD;IACvD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAcD,yFAAyF;AACzF,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB5F;AA2PD;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAA8B,CAAA"}
|
|
@@ -4,7 +4,9 @@ import { resolveTemplate } from "../api/templates.js";
|
|
|
4
4
|
import { waitForWorkspaceActive } from "../api/wait.js";
|
|
5
5
|
import { createWorkspace, deleteWorkspace, listWorkspaces } from "../api/workspaces.js";
|
|
6
6
|
import { requireApiKey } from "../auth/resolve.js";
|
|
7
|
+
import { resolveSshDomain } from "../ssh/config.js";
|
|
7
8
|
import { parseFlags, UsageError } from "./flags.js";
|
|
9
|
+
import { guardCommand } from "./guard.js";
|
|
8
10
|
import { confirm, isInteractive } from "./prompt.js";
|
|
9
11
|
import { formatTable } from "./table.js";
|
|
10
12
|
const GROUP_USAGE = `Usage:
|
|
@@ -68,7 +70,10 @@ async function runCreate(args, deps) {
|
|
|
68
70
|
const { key } = requireApiKey(deps.env);
|
|
69
71
|
const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
70
72
|
const created = await createWorkspace(key, { description: desc, fetch: deps.fetch });
|
|
71
|
-
|
|
73
|
+
// Success-path info goes to stdout (terminals that color stderr red made
|
|
74
|
+
// this look like an error); only warnings and the transient progress
|
|
75
|
+
// spinner stay on stderr.
|
|
76
|
+
console.log(`✓ created ${created.alias} (${created.status})`);
|
|
72
77
|
let current = created;
|
|
73
78
|
if (!values["no-wait"]) {
|
|
74
79
|
// kap's create poll: 2s cadence, deadline, progress on stderr.
|
|
@@ -83,9 +88,13 @@ async function runCreate(args, deps) {
|
|
|
83
88
|
console.error(` ⚠ workspace still initializing — check with: kimchictl workspace get ${created.alias}`);
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
|
-
if (current.uri)
|
|
87
|
-
console.
|
|
88
|
-
|
|
91
|
+
if (current.uri) {
|
|
92
|
+
console.log();
|
|
93
|
+
for (const line of connectLines(current, deps.env))
|
|
94
|
+
console.log(line);
|
|
95
|
+
console.log();
|
|
96
|
+
}
|
|
97
|
+
// The alias is the last stdout line: ALIAS=$(kimchictl workspace create | tail -1)
|
|
89
98
|
console.log(current.alias);
|
|
90
99
|
return 0;
|
|
91
100
|
}
|
|
@@ -118,11 +127,14 @@ async function runList(args, deps) {
|
|
|
118
127
|
const rows = workspaces.map((w) => [
|
|
119
128
|
w.alias,
|
|
120
129
|
w.status,
|
|
130
|
+
w.cluster,
|
|
131
|
+
formatAge(w.createdAt, now),
|
|
121
132
|
formatMillicores(w.cpuMillicores),
|
|
122
133
|
formatBytes(w.ramBytes),
|
|
123
|
-
|
|
134
|
+
formatBytes(w.pvcSizeBytes),
|
|
135
|
+
w.uri ?? "",
|
|
124
136
|
]);
|
|
125
|
-
console.log(formatTable(["NAME", "STATUS", "CPU", "
|
|
137
|
+
console.log(formatTable(["NAME", "STATUS", "CLUSTER", "AGE", "CPU", "RAM", "PVC", "URI"], rows));
|
|
126
138
|
return 0;
|
|
127
139
|
}
|
|
128
140
|
// ---------------------------------------------------------------- get
|
|
@@ -143,17 +155,9 @@ async function runGet(args, deps) {
|
|
|
143
155
|
console.log(JSON.stringify(serializeWorkspace(workspace), null, 2));
|
|
144
156
|
return 0;
|
|
145
157
|
}
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
`status: ${workspace.status}`,
|
|
150
|
-
workspace.uri ? `uri: ${workspace.uri}` : undefined,
|
|
151
|
-
`created: ${workspace.createdAt.toISOString()}`,
|
|
152
|
-
`cpu: ${formatMillicores(workspace.cpuMillicores)}`,
|
|
153
|
-
`memory: ${formatBytes(workspace.ramBytes)}`,
|
|
154
|
-
`storage: ${formatBytes(workspace.pvcSizeBytes)}`,
|
|
155
|
-
].filter((line) => line !== undefined);
|
|
156
|
-
for (const line of lines)
|
|
158
|
+
const now = deps.now?.() ?? new Date();
|
|
159
|
+
const color = deps.color ?? process.stdout.isTTY === true;
|
|
160
|
+
for (const line of renderWorkspaceCard(workspace, deps.env, color, now))
|
|
157
161
|
console.log(line);
|
|
158
162
|
return 0;
|
|
159
163
|
}
|
|
@@ -188,12 +192,55 @@ async function runDelete(args, deps) {
|
|
|
188
192
|
return 0;
|
|
189
193
|
}
|
|
190
194
|
// ---------------------------------------------------------------- shared
|
|
195
|
+
/** Tinted status dot: green=active, yellow=transitional/suspended, dim=terminated. */
|
|
196
|
+
function statusDot(status, color) {
|
|
197
|
+
if (!color)
|
|
198
|
+
return `● ${status}`;
|
|
199
|
+
const tint = status === "active" ? "\x1b[32m" : status === "terminated" ? "\x1b[2m" : "\x1b[33m";
|
|
200
|
+
return `${tint}● ${status}\x1b[0m`;
|
|
201
|
+
}
|
|
202
|
+
function dim(text, color) {
|
|
203
|
+
return color ? `\x1b[2m${text}\x1b[0m` : text;
|
|
204
|
+
}
|
|
205
|
+
/** Connect hints shared by `get` and `create`: ssh command + web IDE URL. */
|
|
206
|
+
function connectLines(workspace, env) {
|
|
207
|
+
if (!workspace.uri)
|
|
208
|
+
return [];
|
|
209
|
+
const domain = resolveSshDomain(undefined, env ?? process.env);
|
|
210
|
+
return [" Connect:", ` $ ssh ${workspace.alias}.${domain}`, ` $ https://${workspace.uri}/public/ide/`];
|
|
211
|
+
}
|
|
212
|
+
/** Hero-line card ("Option C"): name+status first, dim metadata, resources, connect block. */
|
|
213
|
+
function renderWorkspaceCard(workspace, env, color, now) {
|
|
214
|
+
const lines = [`${workspace.alias} ${statusDot(workspace.status, color)}`];
|
|
215
|
+
if (workspace.description)
|
|
216
|
+
lines.push(dim(` ${workspace.description}`, color));
|
|
217
|
+
const meta = [
|
|
218
|
+
workspace.cluster ? `cluster ${workspace.cluster}` : "",
|
|
219
|
+
workspace.clientType,
|
|
220
|
+
`created ${formatAge(workspace.createdAt, now)} ago`,
|
|
221
|
+
].filter(Boolean);
|
|
222
|
+
if (meta.length > 0)
|
|
223
|
+
lines.push(dim(` ${meta.join(" · ")}`, color));
|
|
224
|
+
if (workspace.cpuMillicores !== undefined ||
|
|
225
|
+
workspace.ramBytes !== undefined ||
|
|
226
|
+
workspace.pvcSizeBytes !== undefined) {
|
|
227
|
+
lines.push(dim(` ${formatMillicores(workspace.cpuMillicores)} CPU · ${formatBytes(workspace.ramBytes)} memory · ${formatBytes(workspace.pvcSizeBytes)} storage`, color));
|
|
228
|
+
}
|
|
229
|
+
const connect = connectLines(workspace, env);
|
|
230
|
+
if (connect.length > 0) {
|
|
231
|
+
lines.push("");
|
|
232
|
+
lines.push(...connect);
|
|
233
|
+
}
|
|
234
|
+
return lines;
|
|
235
|
+
}
|
|
191
236
|
function serializeWorkspace(w) {
|
|
192
237
|
return {
|
|
193
238
|
id: w.id,
|
|
194
239
|
alias: w.alias,
|
|
195
240
|
...(w.description ? { description: w.description } : {}),
|
|
196
241
|
status: w.status,
|
|
242
|
+
...(w.cluster ? { cluster: w.cluster } : {}),
|
|
243
|
+
...(w.clientType ? { clientType: w.clientType } : {}),
|
|
197
244
|
...(w.uri ? { uri: w.uri } : {}),
|
|
198
245
|
createdAt: w.createdAt.getTime() > 0 ? w.createdAt.toISOString() : undefined,
|
|
199
246
|
resources: {
|
|
@@ -203,4 +250,11 @@ function serializeWorkspace(w) {
|
|
|
203
250
|
},
|
|
204
251
|
};
|
|
205
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Canonical harness-package entry: modules listed in the kimchi.commands
|
|
255
|
+
* manifest must export run(args) (kimchi-dev:src/commands/package-commands.ts).
|
|
256
|
+
* guardCommand maps usage/domain errors to exit codes 2/1, matching the
|
|
257
|
+
* CLI registry.
|
|
258
|
+
*/
|
|
259
|
+
export const run = guardCommand(runWorkspace);
|
|
206
260
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"../src/","sources":["commands/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/ssh/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"../src/","sources":["ssh/config.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,wCAAwC,CAAA;AACtE,eAAO,MAAM,eAAe,wCAAwC,CAAA;AAEpE,MAAM,WAAW,QAAQ;IACxB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,QAAQ,CAU9E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAchG;AAOD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,GAAE,MAAyB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"../src/","sources":["ssh/config.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,iBAAiB,wCAAwC,CAAA;AACtE,eAAO,MAAM,eAAe,wCAAwC,CAAA;AAEpE,MAAM,WAAW,QAAQ;IACxB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,QAAQ,CAU9E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAchG;AAOD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,GAAE,MAAyB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB3G;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAQpG;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;CACf;AAqBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAClD,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,GAAG,OAAO,CAAC,WAAW,CAAC,CAwCvB;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CA2BhG;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC/C,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAGhF"}
|
package/dist/ssh/config.js
CHANGED
|
@@ -67,6 +67,12 @@ export function resolveProxyCommandTarget(execPath = process.execPath, entryScri
|
|
|
67
67
|
if (base === "kimchictl" || base.startsWith("kimchictl-")) {
|
|
68
68
|
return shellQuote(execPath);
|
|
69
69
|
}
|
|
70
|
+
// Running inside the kimchi harness (installed via `kimchi install npm:…`):
|
|
71
|
+
// the ProxyCommand routes through the harness binary, which dispatches
|
|
72
|
+
// `ssh proxy` to this package's exported runner.
|
|
73
|
+
if (base === "kimchi" || base.startsWith("kimchi-")) {
|
|
74
|
+
return shellQuote(execPath);
|
|
75
|
+
}
|
|
70
76
|
const entry = entryScript ?? process.argv[1];
|
|
71
77
|
if (entry) {
|
|
72
78
|
return `${shellQuote(execPath)} ${shellQuote(resolve(entry))}`;
|
package/dist/ssh/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"../src/","sources":["ssh/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"../src/","sources":["ssh/config.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"//name": "Scoped under the kimchi-dev npm org (the GitHub org is getkimchi)",
|
|
3
3
|
"name": "@kimchi-dev/kimchictl",
|
|
4
4
|
"//version": "Placeholder, never bumped: the git tag is the version, stamped by release.yml at publish time",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.4",
|
|
6
6
|
"description": "Create and connect to kimchi remote workspaces from the terminal.",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"kimchi",
|
|
@@ -37,6 +37,13 @@
|
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
|
+
"//kimchi": "Subcommands the harness gains when this package is installed via `kimchi install` — kimchi-dev:src/commands/package-commands.ts reads this map and lazily imports each module (which must export run(args) => Promise<number>, pointing at runnable JS, i.e. dist/).",
|
|
41
|
+
"kimchi": {
|
|
42
|
+
"commands": {
|
|
43
|
+
"workspace": "./dist/commands/workspace.js",
|
|
44
|
+
"ssh": "./dist/commands/ssh.js"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
40
47
|
"exports": {
|
|
41
48
|
".": {
|
|
42
49
|
"types": "./dist/run.d.ts",
|
|
@@ -49,6 +56,10 @@
|
|
|
49
56
|
"./commands/guard": {
|
|
50
57
|
"types": "./dist/commands/guard.d.ts",
|
|
51
58
|
"default": "./dist/commands/guard.js"
|
|
59
|
+
},
|
|
60
|
+
"./commands/ssh": {
|
|
61
|
+
"types": "./dist/commands/ssh.d.ts",
|
|
62
|
+
"default": "./dist/commands/ssh.js"
|
|
52
63
|
}
|
|
53
64
|
},
|
|
54
65
|
"scripts": {
|
package/src/api/workspaces.ts
CHANGED
|
@@ -16,7 +16,7 @@ const HARNESS_CLIENT_TYPE = "harness" // matches kimchi-dev:src/sandbox/constant
|
|
|
16
16
|
const LIST_WORKSPACES_PAGE_LIMIT = 200
|
|
17
17
|
const LIST_WORKSPACES_PAGE_HARD_CAP = 10
|
|
18
18
|
|
|
19
|
-
export type WorkspaceStatus = "active" | "initializing" | "suspended" | "deleting" | "
|
|
19
|
+
export type WorkspaceStatus = "active" | "initializing" | "suspended" | "deleting" | "terminated"
|
|
20
20
|
|
|
21
21
|
export interface Workspace {
|
|
22
22
|
/** Server id — also the command-line identifier (`workspace get <id>`, `ssh <id>`). */
|
|
@@ -28,6 +28,10 @@ export interface Workspace {
|
|
|
28
28
|
uri?: string
|
|
29
29
|
host?: string
|
|
30
30
|
createdAt: Date
|
|
31
|
+
/** Control-plane cluster (e.g. krep-us). */
|
|
32
|
+
cluster: string
|
|
33
|
+
/** Client that owns the workspace (e.g. harness). */
|
|
34
|
+
clientType: string
|
|
31
35
|
cpuMillicores?: number
|
|
32
36
|
ramBytes?: number
|
|
33
37
|
pvcSizeBytes?: number
|
|
@@ -212,6 +216,8 @@ export function mapWorkspace(raw: unknown, endpoint: string): Workspace {
|
|
|
212
216
|
uri,
|
|
213
217
|
host,
|
|
214
218
|
createdAt: createdAt ?? new Date(0),
|
|
219
|
+
cluster: typeof r.cluster === "string" ? r.cluster : "",
|
|
220
|
+
clientType: typeof r.clientType === "string" ? r.clientType : "",
|
|
215
221
|
cpuMillicores: cpuQuantityToMillicores(res?.cpu),
|
|
216
222
|
ramBytes: byteQuantityToBytes(res?.memory),
|
|
217
223
|
pvcSizeBytes: byteQuantityToBytes(res?.pvcSize),
|
|
@@ -228,7 +234,11 @@ function mapWorkspaceStatus(raw: unknown): WorkspaceStatus {
|
|
|
228
234
|
return "suspended"
|
|
229
235
|
case "DELETING":
|
|
230
236
|
return "deleting"
|
|
237
|
+
case "TERMINATED":
|
|
238
|
+
return "terminated"
|
|
231
239
|
default:
|
|
232
|
-
|
|
240
|
+
// Unknown statuses read as terminated, not "idle": dead workspaces
|
|
241
|
+
// are the dominant unknown the API reports.
|
|
242
|
+
return "terminated"
|
|
233
243
|
}
|
|
234
244
|
}
|
package/src/commands/ssh.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { connectToWorkspace } from "../ssh/connect.js"
|
|
12
12
|
import { resolveTunnel } from "../ssh/tunnel.js"
|
|
13
13
|
import { parseFlags, UsageError } from "./flags.js"
|
|
14
|
+
import { guardCommand } from "./guard.js"
|
|
14
15
|
|
|
15
16
|
export interface SshDeps {
|
|
16
17
|
fetch?: typeof globalThis.fetch
|
|
@@ -110,3 +111,6 @@ async function runProxy(args: string[], deps: SshDeps): Promise<number> {
|
|
|
110
111
|
await bridgeStdioToWebSocket({ wsUrl: creds.wsUrl, token: creds.token })
|
|
111
112
|
return 0
|
|
112
113
|
}
|
|
114
|
+
|
|
115
|
+
/** Canonical harness-package entry (see commands/workspace.ts). */
|
|
116
|
+
export const run: (args: string[], deps?: SshDeps) => Promise<number> = guardCommand(runSsh)
|
|
@@ -10,8 +10,10 @@ import {
|
|
|
10
10
|
stubFetch,
|
|
11
11
|
} from "../test-support.js"
|
|
12
12
|
import { guardCommand } from "./guard.js"
|
|
13
|
-
import { runWorkspace, type WorkspaceDeps } from "./workspace.js"
|
|
13
|
+
import { runWorkspace, type WorkspaceDeps, run as workspaceRun } from "./workspace.js"
|
|
14
14
|
|
|
15
|
+
// The harness-package contract: kimchi.commands modules export run(args)
|
|
16
|
+
// with guard exit codes — pinned by the dispatch tests in kimchi-dev.
|
|
15
17
|
const guardedWorkspace = guardCommand(runWorkspace)
|
|
16
18
|
|
|
17
19
|
afterEach(() => {
|
|
@@ -35,6 +37,8 @@ function wsJson(over: WorkspaceOverrides = {}): Record<string, unknown> {
|
|
|
35
37
|
status: "ACTIVE",
|
|
36
38
|
createTime: "2026-01-01T00:00:00Z",
|
|
37
39
|
uri: `${alias}.remote.kimchi.dev`,
|
|
40
|
+
cluster: "krep-us",
|
|
41
|
+
clientType: "harness",
|
|
38
42
|
spec: { resources: { cpu: "2", memory: "4Gi", pvcSize: "20Gi" } },
|
|
39
43
|
...over,
|
|
40
44
|
}
|
|
@@ -78,7 +82,7 @@ async function run(
|
|
|
78
82
|
stubAgentDirEnv(dir)
|
|
79
83
|
writeFileSync(join(dir, "auth.json"), JSON.stringify({ "kimchi-dev": { type: "api_key", key: "key" } }))
|
|
80
84
|
const { lines, errors } = captureConsole()
|
|
81
|
-
const code = await guardedWorkspace(args, { fetch, ...deps })
|
|
85
|
+
const code = await guardedWorkspace(args, { color: false, fetch, ...deps })
|
|
82
86
|
return { code, lines, errors }
|
|
83
87
|
}
|
|
84
88
|
|
|
@@ -128,9 +132,16 @@ describe("kimchictl workspace create", () => {
|
|
|
128
132
|
const { code, lines, errors } = await run(["create", "--desc", "api work"], fetch, { sleep: async () => {} })
|
|
129
133
|
|
|
130
134
|
expect(code).toBe(0)
|
|
131
|
-
expect(lines).toEqual([
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
expect(lines).toEqual([
|
|
136
|
+
"✓ created bright-oak-otter (initializing)",
|
|
137
|
+
"",
|
|
138
|
+
" Connect:",
|
|
139
|
+
" $ ssh bright-oak-otter.remote.kimchi.dev",
|
|
140
|
+
" $ https://bright-oak-otter.remote.kimchi.dev/public/ide/",
|
|
141
|
+
"",
|
|
142
|
+
"bright-oak-otter",
|
|
143
|
+
])
|
|
144
|
+
expect(errors).toEqual([])
|
|
134
145
|
})
|
|
135
146
|
|
|
136
147
|
it("--no-wait returns immediately after create", async () => {
|
|
@@ -145,7 +156,15 @@ describe("kimchictl workspace create", () => {
|
|
|
145
156
|
const { code, lines } = await run(["create", "--no-wait"], fetch)
|
|
146
157
|
|
|
147
158
|
expect(code).toBe(0)
|
|
148
|
-
expect(lines).toEqual([
|
|
159
|
+
expect(lines).toEqual([
|
|
160
|
+
"✓ created bright-oak-otter (initializing)",
|
|
161
|
+
"",
|
|
162
|
+
" Connect:",
|
|
163
|
+
" $ ssh bright-oak-otter.remote.kimchi.dev",
|
|
164
|
+
" $ https://bright-oak-otter.remote.kimchi.dev/public/ide/",
|
|
165
|
+
"",
|
|
166
|
+
"bright-oak-otter",
|
|
167
|
+
])
|
|
149
168
|
})
|
|
150
169
|
|
|
151
170
|
it("warns when the workspace is not ACTIVE at the deadline", async () => {
|
|
@@ -166,7 +185,7 @@ describe("kimchictl workspace create", () => {
|
|
|
166
185
|
const realNow = Date.now
|
|
167
186
|
vi.spyOn(Date, "now").mockImplementation(() => now)
|
|
168
187
|
|
|
169
|
-
const { code, errors } = await run(["create", "--timeout", "1"], fetch, {
|
|
188
|
+
const { code, lines, errors } = await run(["create", "--timeout", "1"], fetch, {
|
|
170
189
|
sleep: async () => {
|
|
171
190
|
now += 2000
|
|
172
191
|
},
|
|
@@ -175,6 +194,8 @@ describe("kimchictl workspace create", () => {
|
|
|
175
194
|
|
|
176
195
|
expect(code).toBe(0)
|
|
177
196
|
expect(errors.some((l) => l.includes("still initializing"))).toBe(true)
|
|
197
|
+
// The alias is still the last stdout line for scripting.
|
|
198
|
+
expect(lines[lines.length - 1]).toBe("bright-oak-otter")
|
|
178
199
|
})
|
|
179
200
|
|
|
180
201
|
it("--template errors gracefully until the templates API lands", async () => {
|
|
@@ -225,9 +246,11 @@ describe("kimchictl workspace list", () => {
|
|
|
225
246
|
expect(code).toBe(0)
|
|
226
247
|
// formatTable prints the whole table as one console call.
|
|
227
248
|
const table = lines[0]?.split("\n") ?? []
|
|
228
|
-
expect(table[0]).
|
|
229
|
-
expect(table[1]).toMatch(
|
|
230
|
-
|
|
249
|
+
expect(table[0]).toMatch(/^NAME\s+STATUS\s+CLUSTER\s+AGE\s+CPU\s+RAM\s+PVC\s+URI$/)
|
|
250
|
+
expect(table[1]).toMatch(
|
|
251
|
+
/^bright-oak-otter\s+active\s+krep-us\s+3h\s+2\s+4Gi\s+20Gi\s+bright-oak-otter\.remote\.kimchi\.dev$/,
|
|
252
|
+
)
|
|
253
|
+
expect(table[2]).toMatch(/^demo\s+suspended\s+krep-us\s+2d\s+-\s+-\s+-\s+demo\.remote\.kimchi\.dev$/)
|
|
231
254
|
expect(table).toHaveLength(3)
|
|
232
255
|
})
|
|
233
256
|
|
|
@@ -238,7 +261,7 @@ describe("kimchictl workspace list", () => {
|
|
|
238
261
|
expect(JSON.parse(jsonRun.lines.join(""))).toEqual([])
|
|
239
262
|
|
|
240
263
|
const tableRun = await run(["list"], fetch)
|
|
241
|
-
expect(tableRun.lines).toEqual(["NAME STATUS CPU
|
|
264
|
+
expect(tableRun.lines).toEqual(["NAME STATUS CLUSTER AGE CPU RAM PVC URI"])
|
|
242
265
|
})
|
|
243
266
|
|
|
244
267
|
it("rejects an unsupported output flavor", async () => {
|
|
@@ -255,18 +278,20 @@ describe("kimchictl workspace get", () => {
|
|
|
255
278
|
{ method: "GET", match: /\?page\.limit=/, respond: () => jsonResponse({ items: [wsJson()] }) },
|
|
256
279
|
])
|
|
257
280
|
|
|
258
|
-
const { code, lines } = await run(["get", "bright-oak-otter"], fetch
|
|
281
|
+
const { code, lines } = await run(["get", "bright-oak-otter"], fetch, {
|
|
282
|
+
now: () => new Date("2026-01-01T03:00:00Z"),
|
|
283
|
+
})
|
|
259
284
|
|
|
260
285
|
expect(code).toBe(0)
|
|
261
286
|
expect(lines).toEqual([
|
|
262
|
-
"
|
|
263
|
-
"
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"
|
|
267
|
-
"
|
|
268
|
-
"
|
|
269
|
-
"
|
|
287
|
+
"bright-oak-otter ● active",
|
|
288
|
+
" api work",
|
|
289
|
+
" cluster krep-us · harness · created 3h ago",
|
|
290
|
+
" 2 CPU · 4Gi memory · 20Gi storage",
|
|
291
|
+
"",
|
|
292
|
+
" Connect:",
|
|
293
|
+
" $ ssh bright-oak-otter.remote.kimchi.dev",
|
|
294
|
+
" $ https://bright-oak-otter.remote.kimchi.dev/public/ide/",
|
|
270
295
|
])
|
|
271
296
|
})
|
|
272
297
|
|
|
@@ -290,16 +315,39 @@ describe("kimchictl workspace get", () => {
|
|
|
290
315
|
},
|
|
291
316
|
])
|
|
292
317
|
|
|
293
|
-
const { code, lines } = await run(["get", "11111111-2222-3333-4444-555555555555"], fetch
|
|
318
|
+
const { code, lines } = await run(["get", "11111111-2222-3333-4444-555555555555"], fetch, {
|
|
319
|
+
now: () => new Date("2026-01-01T03:00:00Z"),
|
|
320
|
+
})
|
|
294
321
|
|
|
295
322
|
expect(code).toBe(0)
|
|
296
|
-
expect(lines[0]).toBe("
|
|
323
|
+
expect(lines[0]).toBe("bright-oak-otter ● active")
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
it("colorizes the status dot and metadata when colors are on", async () => {
|
|
327
|
+
const fetch = apiFetch([
|
|
328
|
+
{ method: "GET", match: /\?page\.limit=/, respond: () => jsonResponse({ items: [wsJson()] }) },
|
|
329
|
+
])
|
|
330
|
+
|
|
331
|
+
const { lines } = await run(["get", "bright-oak-otter"], fetch, {
|
|
332
|
+
color: true,
|
|
333
|
+
now: () => new Date("2026-01-01T03:00:00Z"),
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
const joined = lines.join("\n")
|
|
337
|
+
expect(joined).toContain("\x1b[32m● active\x1b[0m")
|
|
338
|
+
expect(joined).toContain("\x1b[2m cluster krep-us")
|
|
297
339
|
})
|
|
298
340
|
|
|
299
341
|
it("requires exactly one name", async () => {
|
|
300
342
|
expect((await run(["get"], apiFetch([]))).code).toBe(2)
|
|
301
343
|
expect((await run(["get", "a", "b"], apiFetch([]))).code).toBe(2)
|
|
302
344
|
})
|
|
345
|
+
|
|
346
|
+
it("exports the guarded run() entry for the harness package-command contract", async () => {
|
|
347
|
+
// Same function contract, exit codes included: a usage error maps to 2,
|
|
348
|
+
// not a thrown exception — the harness dispatcher returns it verbatim.
|
|
349
|
+
expect(await workspaceRun(["frobnicate"], { color: false })).toBe(2)
|
|
350
|
+
})
|
|
303
351
|
})
|
|
304
352
|
|
|
305
353
|
// ---------------------------------------------------------------- delete
|
|
@@ -4,7 +4,9 @@ import { resolveTemplate } from "../api/templates.js"
|
|
|
4
4
|
import { waitForWorkspaceActive } from "../api/wait.js"
|
|
5
5
|
import { createWorkspace, deleteWorkspace, listWorkspaces, type Workspace } from "../api/workspaces.js"
|
|
6
6
|
import { requireApiKey } from "../auth/resolve.js"
|
|
7
|
+
import { resolveSshDomain } from "../ssh/config.js"
|
|
7
8
|
import { parseFlags, UsageError } from "./flags.js"
|
|
9
|
+
import { guardCommand } from "./guard.js"
|
|
8
10
|
import { confirm, isInteractive } from "./prompt.js"
|
|
9
11
|
import { formatTable } from "./table.js"
|
|
10
12
|
|
|
@@ -19,6 +21,8 @@ export interface WorkspaceDeps {
|
|
|
19
21
|
now?: () => Date
|
|
20
22
|
/** Sleep override for the create wait loop (tests). */
|
|
21
23
|
sleep?: (ms: number) => Promise<void>
|
|
24
|
+
/** ANSI colors on stdout (tests); defaults to stdout being a TTY. */
|
|
25
|
+
color?: boolean
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
const GROUP_USAGE = `Usage:
|
|
@@ -91,7 +95,10 @@ async function runCreate(args: string[], deps: WorkspaceDeps): Promise<number> {
|
|
|
91
95
|
const sleep = deps.sleep ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)))
|
|
92
96
|
|
|
93
97
|
const created = await createWorkspace(key, { description: desc, fetch: deps.fetch })
|
|
94
|
-
|
|
98
|
+
// Success-path info goes to stdout (terminals that color stderr red made
|
|
99
|
+
// this look like an error); only warnings and the transient progress
|
|
100
|
+
// spinner stay on stderr.
|
|
101
|
+
console.log(`✓ created ${created.alias} (${created.status})`)
|
|
95
102
|
|
|
96
103
|
let current = created
|
|
97
104
|
if (!values["no-wait"]) {
|
|
@@ -108,8 +115,12 @@ async function runCreate(args: string[], deps: WorkspaceDeps): Promise<number> {
|
|
|
108
115
|
}
|
|
109
116
|
}
|
|
110
117
|
|
|
111
|
-
if (current.uri)
|
|
112
|
-
|
|
118
|
+
if (current.uri) {
|
|
119
|
+
console.log()
|
|
120
|
+
for (const line of connectLines(current, deps.env)) console.log(line)
|
|
121
|
+
console.log()
|
|
122
|
+
}
|
|
123
|
+
// The alias is the last stdout line: ALIAS=$(kimchictl workspace create | tail -1)
|
|
113
124
|
console.log(current.alias)
|
|
114
125
|
return 0
|
|
115
126
|
}
|
|
@@ -150,11 +161,14 @@ async function runList(args: string[], deps: WorkspaceDeps): Promise<number> {
|
|
|
150
161
|
const rows = workspaces.map((w) => [
|
|
151
162
|
w.alias,
|
|
152
163
|
w.status,
|
|
164
|
+
w.cluster,
|
|
165
|
+
formatAge(w.createdAt, now),
|
|
153
166
|
formatMillicores(w.cpuMillicores),
|
|
154
167
|
formatBytes(w.ramBytes),
|
|
155
|
-
|
|
168
|
+
formatBytes(w.pvcSizeBytes),
|
|
169
|
+
w.uri ?? "",
|
|
156
170
|
])
|
|
157
|
-
console.log(formatTable(["NAME", "STATUS", "CPU", "
|
|
171
|
+
console.log(formatTable(["NAME", "STATUS", "CLUSTER", "AGE", "CPU", "RAM", "PVC", "URI"], rows))
|
|
158
172
|
return 0
|
|
159
173
|
}
|
|
160
174
|
|
|
@@ -182,17 +196,9 @@ async function runGet(args: string[], deps: WorkspaceDeps): Promise<number> {
|
|
|
182
196
|
return 0
|
|
183
197
|
}
|
|
184
198
|
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
`status: ${workspace.status}`,
|
|
189
|
-
workspace.uri ? `uri: ${workspace.uri}` : undefined,
|
|
190
|
-
`created: ${workspace.createdAt.toISOString()}`,
|
|
191
|
-
`cpu: ${formatMillicores(workspace.cpuMillicores)}`,
|
|
192
|
-
`memory: ${formatBytes(workspace.ramBytes)}`,
|
|
193
|
-
`storage: ${formatBytes(workspace.pvcSizeBytes)}`,
|
|
194
|
-
].filter((line): line is string => line !== undefined)
|
|
195
|
-
for (const line of lines) console.log(line)
|
|
199
|
+
const now = deps.now?.() ?? new Date()
|
|
200
|
+
const color = deps.color ?? process.stdout.isTTY === true
|
|
201
|
+
for (const line of renderWorkspaceCard(workspace, deps.env, color, now)) console.log(line)
|
|
196
202
|
return 0
|
|
197
203
|
}
|
|
198
204
|
|
|
@@ -233,12 +239,70 @@ async function runDelete(args: string[], deps: WorkspaceDeps): Promise<number> {
|
|
|
233
239
|
|
|
234
240
|
// ---------------------------------------------------------------- shared
|
|
235
241
|
|
|
242
|
+
/** Tinted status dot: green=active, yellow=transitional/suspended, dim=terminated. */
|
|
243
|
+
function statusDot(status: Workspace["status"], color: boolean): string {
|
|
244
|
+
if (!color) return `● ${status}`
|
|
245
|
+
const tint = status === "active" ? "\x1b[32m" : status === "terminated" ? "\x1b[2m" : "\x1b[33m"
|
|
246
|
+
return `${tint}● ${status}\x1b[0m`
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function dim(text: string, color: boolean): string {
|
|
250
|
+
return color ? `\x1b[2m${text}\x1b[0m` : text
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/** Connect hints shared by `get` and `create`: ssh command + web IDE URL. */
|
|
254
|
+
function connectLines(workspace: Workspace, env?: NodeJS.ProcessEnv): string[] {
|
|
255
|
+
if (!workspace.uri) return []
|
|
256
|
+
const domain = resolveSshDomain(undefined, env ?? process.env)
|
|
257
|
+
return [" Connect:", ` $ ssh ${workspace.alias}.${domain}`, ` $ https://${workspace.uri}/public/ide/`]
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/** Hero-line card ("Option C"): name+status first, dim metadata, resources, connect block. */
|
|
261
|
+
function renderWorkspaceCard(
|
|
262
|
+
workspace: Workspace,
|
|
263
|
+
env: NodeJS.ProcessEnv | undefined,
|
|
264
|
+
color: boolean,
|
|
265
|
+
now: Date,
|
|
266
|
+
): string[] {
|
|
267
|
+
const lines: string[] = [`${workspace.alias} ${statusDot(workspace.status, color)}`]
|
|
268
|
+
if (workspace.description) lines.push(dim(` ${workspace.description}`, color))
|
|
269
|
+
|
|
270
|
+
const meta = [
|
|
271
|
+
workspace.cluster ? `cluster ${workspace.cluster}` : "",
|
|
272
|
+
workspace.clientType,
|
|
273
|
+
`created ${formatAge(workspace.createdAt, now)} ago`,
|
|
274
|
+
].filter(Boolean)
|
|
275
|
+
if (meta.length > 0) lines.push(dim(` ${meta.join(" · ")}`, color))
|
|
276
|
+
|
|
277
|
+
if (
|
|
278
|
+
workspace.cpuMillicores !== undefined ||
|
|
279
|
+
workspace.ramBytes !== undefined ||
|
|
280
|
+
workspace.pvcSizeBytes !== undefined
|
|
281
|
+
) {
|
|
282
|
+
lines.push(
|
|
283
|
+
dim(
|
|
284
|
+
` ${formatMillicores(workspace.cpuMillicores)} CPU · ${formatBytes(workspace.ramBytes)} memory · ${formatBytes(workspace.pvcSizeBytes)} storage`,
|
|
285
|
+
color,
|
|
286
|
+
),
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const connect = connectLines(workspace, env)
|
|
291
|
+
if (connect.length > 0) {
|
|
292
|
+
lines.push("")
|
|
293
|
+
lines.push(...connect)
|
|
294
|
+
}
|
|
295
|
+
return lines
|
|
296
|
+
}
|
|
297
|
+
|
|
236
298
|
function serializeWorkspace(w: Workspace): Record<string, unknown> {
|
|
237
299
|
return {
|
|
238
300
|
id: w.id,
|
|
239
301
|
alias: w.alias,
|
|
240
302
|
...(w.description ? { description: w.description } : {}),
|
|
241
303
|
status: w.status,
|
|
304
|
+
...(w.cluster ? { cluster: w.cluster } : {}),
|
|
305
|
+
...(w.clientType ? { clientType: w.clientType } : {}),
|
|
242
306
|
...(w.uri ? { uri: w.uri } : {}),
|
|
243
307
|
createdAt: w.createdAt.getTime() > 0 ? w.createdAt.toISOString() : undefined,
|
|
244
308
|
resources: {
|
|
@@ -248,3 +312,11 @@ function serializeWorkspace(w: Workspace): Record<string, unknown> {
|
|
|
248
312
|
},
|
|
249
313
|
}
|
|
250
314
|
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Canonical harness-package entry: modules listed in the kimchi.commands
|
|
318
|
+
* manifest must export run(args) (kimchi-dev:src/commands/package-commands.ts).
|
|
319
|
+
* guardCommand maps usage/domain errors to exit codes 2/1, matching the
|
|
320
|
+
* CLI registry.
|
|
321
|
+
*/
|
|
322
|
+
export const run: (args: string[], deps?: WorkspaceDeps) => Promise<number> = guardCommand(runWorkspace)
|
package/src/ssh/config.test.ts
CHANGED
|
@@ -178,6 +178,11 @@ describe("resolveProxyCommandTarget", () => {
|
|
|
178
178
|
expect(resolveProxyCommandTarget("/opt/kimchictl-v1.2.3")).toBe("/opt/kimchictl-v1.2.3")
|
|
179
179
|
})
|
|
180
180
|
|
|
181
|
+
it("pins the kimchi harness binary when running as an installed package", () => {
|
|
182
|
+
expect(resolveProxyCommandTarget("/usr/local/bin/kimchi")).toBe("/usr/local/bin/kimchi")
|
|
183
|
+
expect(resolveProxyCommandTarget("/opt/kimchi-1.2.3")).toBe("/opt/kimchi-1.2.3")
|
|
184
|
+
})
|
|
185
|
+
|
|
181
186
|
it("pins the runtime + absolute entry script under node/bun (no PATH reliance)", () => {
|
|
182
187
|
expect(resolveProxyCommandTarget("/usr/local/bin/node", "/opt/app/dist/cli.js")).toBe(
|
|
183
188
|
"/usr/local/bin/node /opt/app/dist/cli.js",
|
package/src/ssh/config.ts
CHANGED
|
@@ -78,6 +78,12 @@ export function resolveProxyCommandTarget(execPath: string = process.execPath, e
|
|
|
78
78
|
if (base === "kimchictl" || base.startsWith("kimchictl-")) {
|
|
79
79
|
return shellQuote(execPath)
|
|
80
80
|
}
|
|
81
|
+
// Running inside the kimchi harness (installed via `kimchi install npm:…`):
|
|
82
|
+
// the ProxyCommand routes through the harness binary, which dispatches
|
|
83
|
+
// `ssh proxy` to this package's exported runner.
|
|
84
|
+
if (base === "kimchi" || base.startsWith("kimchi-")) {
|
|
85
|
+
return shellQuote(execPath)
|
|
86
|
+
}
|
|
81
87
|
const entry = entryScript ?? process.argv[1]
|
|
82
88
|
if (entry) {
|
|
83
89
|
return `${shellQuote(execPath)} ${shellQuote(resolve(entry))}`
|
package/src/version.ts
CHANGED