@kimchi-dev/kimchictl 0.0.3 → 0.0.5
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/auth/auth-file.d.ts +8 -8
- package/dist/auth/auth-file.d.ts.map +1 -1
- package/dist/auth/auth-file.js +37 -34
- package/dist/auth/auth-file.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 +7 -0
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +8 -0
- package/dist/commands/workspace.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -3
- package/src/auth/auth-file.ts +37 -33
- package/src/commands/ssh.ts +4 -0
- package/src/commands/workspace.test.ts +9 -1
- package/src/commands/workspace.ts +9 -0
- package/src/version.ts +1 -1
package/dist/auth/auth-file.d.ts
CHANGED
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
*
|
|
6
6
|
* { "<providerId>": { "type": "api_key", "key": "…" }, … }
|
|
7
7
|
*
|
|
8
|
-
* written pretty-printed (2-space indent, trailing newline), mode 0600
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* written pretty-printed (2-space indent, trailing newline), mode 0600.
|
|
9
|
+
* kimchictl must stay byte-compatible: the harness reads the entries this
|
|
10
|
+
* writes, and vice versa.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* Locking: the harness uses proper-lockfile for the same file. kimchictl
|
|
13
|
+
* writes atomically via temp-file-and-rename (POSIX atomic) instead —
|
|
14
|
+
* zero transitive dependencies, which matters because this module runs
|
|
15
|
+
* inside the harness's dynamically-imported package tree where CJS
|
|
16
|
+
* transitive deps (graceful-fs) don't always resolve.
|
|
17
17
|
*/
|
|
18
18
|
/** Read the raw auth.json map. Returns {} when the file is absent or blank. */
|
|
19
19
|
export declare function readAuthJson(authPath: string): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-file.d.ts","sourceRoot":"../src/","sources":["auth/auth-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-file.d.ts","sourceRoot":"../src/","sources":["auth/auth-file.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AAEH,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGtE;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMpE;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCpH;AAED,qFAAqF;AACrF,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,iGAAiG;AACjG,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAa5E"}
|
package/dist/auth/auth-file.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { dirname } from "node:path";
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
3
|
import { isDeepStrictEqual } from "node:util";
|
|
4
|
-
import { lock } from "proper-lockfile";
|
|
5
4
|
import { isKimchiProvider } from "./provider-ids.js";
|
|
6
5
|
/**
|
|
7
6
|
* Shared auth.json access — a port of the kimchi harness's `syncPiAuth`
|
|
@@ -10,15 +9,15 @@ import { isKimchiProvider } from "./provider-ids.js";
|
|
|
10
9
|
*
|
|
11
10
|
* { "<providerId>": { "type": "api_key", "key": "…" }, … }
|
|
12
11
|
*
|
|
13
|
-
* written pretty-printed (2-space indent, trailing newline), mode 0600
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* written pretty-printed (2-space indent, trailing newline), mode 0600.
|
|
13
|
+
* kimchictl must stay byte-compatible: the harness reads the entries this
|
|
14
|
+
* writes, and vice versa.
|
|
16
15
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
16
|
+
* Locking: the harness uses proper-lockfile for the same file. kimchictl
|
|
17
|
+
* writes atomically via temp-file-and-rename (POSIX atomic) instead —
|
|
18
|
+
* zero transitive dependencies, which matters because this module runs
|
|
19
|
+
* inside the harness's dynamically-imported package tree where CJS
|
|
20
|
+
* transitive deps (graceful-fs) don't always resolve.
|
|
22
21
|
*/
|
|
23
22
|
/** Read the raw auth.json map. Returns {} when the file is absent or blank. */
|
|
24
23
|
export function readAuthJson(authPath) {
|
|
@@ -46,33 +45,37 @@ export function readSavedApiKey(authPath) {
|
|
|
46
45
|
*/
|
|
47
46
|
export async function syncSharedAuth(authPath, apiKey, providerIds) {
|
|
48
47
|
mkdirSync(dirname(authPath), { recursive: true, mode: 0o700 });
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (isKimchiProvider(providerId)) {
|
|
58
|
-
delete nextCredentials[providerId];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (apiKey) {
|
|
62
|
-
const ids = new Set([...providerIds.filter(isKimchiProvider), "kimchi-dev"]);
|
|
63
|
-
for (const providerId of ids) {
|
|
64
|
-
nextCredentials[providerId] = { type: "api_key", key: apiKey };
|
|
65
|
-
}
|
|
48
|
+
const authExists = existsSync(authPath);
|
|
49
|
+
if (!apiKey && !authExists)
|
|
50
|
+
return;
|
|
51
|
+
const credentials = authExists ? readAuthJson(authPath) : {};
|
|
52
|
+
const nextCredentials = { ...credentials };
|
|
53
|
+
for (const providerId of Object.keys(nextCredentials)) {
|
|
54
|
+
if (isKimchiProvider(providerId)) {
|
|
55
|
+
delete nextCredentials[providerId];
|
|
66
56
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
}
|
|
58
|
+
if (apiKey) {
|
|
59
|
+
const ids = new Set([...providerIds.filter(isKimchiProvider), "kimchi-dev"]);
|
|
60
|
+
for (const providerId of ids) {
|
|
61
|
+
nextCredentials[providerId] = { type: "api_key", key: apiKey };
|
|
70
62
|
}
|
|
71
|
-
|
|
63
|
+
}
|
|
64
|
+
if (authExists && isDeepStrictEqual(credentials, nextCredentials)) {
|
|
65
|
+
chmodSync(authPath, 0o600);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Atomic write: temp file + rename (POSIX), so the harness never sees a
|
|
69
|
+
// partially-written auth.json. The temp file is cleaned up on failure.
|
|
70
|
+
const tempPath = join(dirname(authPath), `.${basename(authPath)}.tmp-${process.pid}`);
|
|
71
|
+
try {
|
|
72
|
+
writeFileSync(tempPath, `${JSON.stringify(nextCredentials, null, 2)}\n`, { encoding: "utf-8", mode: 0o600 });
|
|
73
|
+
renameSync(tempPath, authPath);
|
|
72
74
|
chmodSync(authPath, 0o600);
|
|
73
75
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
catch (err) {
|
|
77
|
+
rmSync(tempPath, { force: true });
|
|
78
|
+
throw err;
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
/** Remove all Kimchi credentials from auth.json (logout path). No-op when absent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-file.js","sourceRoot":"../src/","sources":["auth/auth-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"auth-file.js","sourceRoot":"../src/","sources":["auth/auth-file.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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"}
|
|
@@ -14,4 +14,11 @@ export interface WorkspaceDeps {
|
|
|
14
14
|
}
|
|
15
15
|
/** `kimchictl workspace <verb> …` — group command; also mounted as hidden alias `ws`. */
|
|
16
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>;
|
|
17
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"}
|
|
@@ -6,6 +6,7 @@ import { createWorkspace, deleteWorkspace, listWorkspaces } from "../api/workspa
|
|
|
6
6
|
import { requireApiKey } from "../auth/resolve.js";
|
|
7
7
|
import { resolveSshDomain } from "../ssh/config.js";
|
|
8
8
|
import { parseFlags, UsageError } from "./flags.js";
|
|
9
|
+
import { guardCommand } from "./guard.js";
|
|
9
10
|
import { confirm, isInteractive } from "./prompt.js";
|
|
10
11
|
import { formatTable } from "./table.js";
|
|
11
12
|
const GROUP_USAGE = `Usage:
|
|
@@ -249,4 +250,11 @@ function serializeWorkspace(w) {
|
|
|
249
250
|
},
|
|
250
251
|
};
|
|
251
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);
|
|
252
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/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.5",
|
|
6
6
|
"description": "Create and connect to kimchi remote workspaces from the terminal.",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"kimchi",
|
|
@@ -75,14 +75,12 @@
|
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@biomejs/biome": "^2.5.6",
|
|
77
77
|
"@types/node": "^22.19.18",
|
|
78
|
-
"@types/proper-lockfile": "^4.1.4",
|
|
79
78
|
"@types/ws": "^8.18.1",
|
|
80
79
|
"typescript": "^5.9.3",
|
|
81
80
|
"vitest": "^3.2.4"
|
|
82
81
|
},
|
|
83
82
|
"dependencies": {
|
|
84
83
|
"open": "^11.0.4",
|
|
85
|
-
"proper-lockfile": "^4.1.2",
|
|
86
84
|
"ws": "^8.21.3"
|
|
87
85
|
}
|
|
88
86
|
}
|
package/src/auth/auth-file.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"
|
|
2
|
-
import { dirname } from "node:path"
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs"
|
|
2
|
+
import { basename, dirname, join } from "node:path"
|
|
3
3
|
import { isDeepStrictEqual } from "node:util"
|
|
4
|
-
import { lock } from "proper-lockfile"
|
|
5
4
|
import { isKimchiProvider } from "./provider-ids.js"
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -11,15 +10,15 @@ import { isKimchiProvider } from "./provider-ids.js"
|
|
|
11
10
|
*
|
|
12
11
|
* { "<providerId>": { "type": "api_key", "key": "…" }, … }
|
|
13
12
|
*
|
|
14
|
-
* written pretty-printed (2-space indent, trailing newline), mode 0600
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* written pretty-printed (2-space indent, trailing newline), mode 0600.
|
|
14
|
+
* kimchictl must stay byte-compatible: the harness reads the entries this
|
|
15
|
+
* writes, and vice versa.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
17
|
+
* Locking: the harness uses proper-lockfile for the same file. kimchictl
|
|
18
|
+
* writes atomically via temp-file-and-rename (POSIX atomic) instead —
|
|
19
|
+
* zero transitive dependencies, which matters because this module runs
|
|
20
|
+
* inside the harness's dynamically-imported package tree where CJS
|
|
21
|
+
* transitive deps (graceful-fs) don't always resolve.
|
|
23
22
|
*/
|
|
24
23
|
|
|
25
24
|
/** Read the raw auth.json map. Returns {} when the file is absent or blank. */
|
|
@@ -49,35 +48,40 @@ export function readSavedApiKey(authPath: string): string | undefined {
|
|
|
49
48
|
*/
|
|
50
49
|
export async function syncSharedAuth(authPath: string, apiKey: string, providerIds: readonly string[]): Promise<void> {
|
|
51
50
|
mkdirSync(dirname(authPath), { recursive: true, mode: 0o700 })
|
|
52
|
-
const release = await lock(authPath, { realpath: false, retries: 10 })
|
|
53
|
-
try {
|
|
54
|
-
const authExists = existsSync(authPath)
|
|
55
|
-
if (!apiKey && !authExists) return
|
|
56
51
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
for (const providerId of Object.keys(nextCredentials)) {
|
|
60
|
-
if (isKimchiProvider(providerId)) {
|
|
61
|
-
delete nextCredentials[providerId]
|
|
62
|
-
}
|
|
63
|
-
}
|
|
52
|
+
const authExists = existsSync(authPath)
|
|
53
|
+
if (!apiKey && !authExists) return
|
|
64
54
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
const credentials = authExists ? readAuthJson(authPath) : {}
|
|
56
|
+
const nextCredentials = { ...credentials }
|
|
57
|
+
for (const providerId of Object.keys(nextCredentials)) {
|
|
58
|
+
if (isKimchiProvider(providerId)) {
|
|
59
|
+
delete nextCredentials[providerId]
|
|
70
60
|
}
|
|
61
|
+
}
|
|
71
62
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
if (apiKey) {
|
|
64
|
+
const ids = new Set([...providerIds.filter(isKimchiProvider), "kimchi-dev"])
|
|
65
|
+
for (const providerId of ids) {
|
|
66
|
+
nextCredentials[providerId] = { type: "api_key", key: apiKey }
|
|
75
67
|
}
|
|
68
|
+
}
|
|
76
69
|
|
|
77
|
-
|
|
70
|
+
if (authExists && isDeepStrictEqual(credentials, nextCredentials)) {
|
|
71
|
+
chmodSync(authPath, 0o600)
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Atomic write: temp file + rename (POSIX), so the harness never sees a
|
|
76
|
+
// partially-written auth.json. The temp file is cleaned up on failure.
|
|
77
|
+
const tempPath = join(dirname(authPath), `.${basename(authPath)}.tmp-${process.pid}`)
|
|
78
|
+
try {
|
|
79
|
+
writeFileSync(tempPath, `${JSON.stringify(nextCredentials, null, 2)}\n`, { encoding: "utf-8", mode: 0o600 })
|
|
80
|
+
renameSync(tempPath, authPath)
|
|
78
81
|
chmodSync(authPath, 0o600)
|
|
79
|
-
}
|
|
80
|
-
|
|
82
|
+
} catch (err) {
|
|
83
|
+
rmSync(tempPath, { force: true })
|
|
84
|
+
throw err
|
|
81
85
|
}
|
|
82
86
|
}
|
|
83
87
|
|
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(() => {
|
|
@@ -340,6 +342,12 @@ describe("kimchictl workspace get", () => {
|
|
|
340
342
|
expect((await run(["get"], apiFetch([]))).code).toBe(2)
|
|
341
343
|
expect((await run(["get", "a", "b"], apiFetch([]))).code).toBe(2)
|
|
342
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
|
+
})
|
|
343
351
|
})
|
|
344
352
|
|
|
345
353
|
// ---------------------------------------------------------------- delete
|
|
@@ -6,6 +6,7 @@ import { createWorkspace, deleteWorkspace, listWorkspaces, type Workspace } from
|
|
|
6
6
|
import { requireApiKey } from "../auth/resolve.js"
|
|
7
7
|
import { resolveSshDomain } from "../ssh/config.js"
|
|
8
8
|
import { parseFlags, UsageError } from "./flags.js"
|
|
9
|
+
import { guardCommand } from "./guard.js"
|
|
9
10
|
import { confirm, isInteractive } from "./prompt.js"
|
|
10
11
|
import { formatTable } from "./table.js"
|
|
11
12
|
|
|
@@ -311,3 +312,11 @@ function serializeWorkspace(w: Workspace): Record<string, unknown> {
|
|
|
311
312
|
},
|
|
312
313
|
}
|
|
313
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/version.ts
CHANGED