@kimchi-dev/kimchictl 0.0.10 → 0.0.11

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.
@@ -41,6 +41,13 @@ export declare class TemplateNotFoundError extends Error {
41
41
  export declare class AmbiguousTemplateError extends Error {
42
42
  constructor(ref: string, candidates: string[]);
43
43
  }
44
+ /** Input shape for creating a template — a subset of WorkspaceTemplate. */
45
+ export interface CreateTemplateInput {
46
+ name: string;
47
+ description?: string;
48
+ spec?: WorkspaceTemplateSpec;
49
+ }
50
+ export declare function createWorkspaceTemplate(apiKey: string, input: CreateTemplateInput, options?: WorkspaceTemplateOptions): Promise<WorkspaceTemplate>;
44
51
  export declare function listWorkspaceTemplates(apiKey: string, options?: WorkspaceTemplateOptions): Promise<WorkspaceTemplate[]>;
45
52
  export declare function getWorkspaceTemplate(apiKey: string, id: string, options?: WorkspaceTemplateOptions): Promise<WorkspaceTemplate>;
46
53
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"../src/","sources":["api/templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C;;;;;;;GAOG;AAEH,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QACd,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,wBAAyB,SAAQ,UAAU;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD,qBAAa,qBAAsB,SAAQ,KAAK;gBACnC,GAAG,EAAE,MAAM;CAIvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACpC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;CAI7C;AAED,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2B9B;AAED,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAiB5B"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"../src/","sources":["api/templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C;;;;;;;GAOG;AAEH,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QACd,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,wBAAyB,SAAQ,UAAU;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD,qBAAa,qBAAsB,SAAQ,KAAK;gBACnC,GAAG,EAAE,MAAM;CAIvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACpC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;CAI7C;AAED,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,qBAAqB,CAAA;CAC5B;AAED,wBAAsB,uBAAuB,CAC5C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;AAED,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2B9B;AAED,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAiB5B"}
@@ -16,6 +16,25 @@ export class AmbiguousTemplateError extends Error {
16
16
  this.name = "AmbiguousTemplateError";
17
17
  }
18
18
  }
19
+ export async function createWorkspaceTemplate(apiKey, input, options) {
20
+ const fetchImpl = options?.fetch ?? globalThis.fetch;
21
+ const endpoint = resolveEndpoint(options);
22
+ const orgId = await resolveOrgId(apiKey, options);
23
+ const body = { name: input.name };
24
+ if (input.description)
25
+ body.description = input.description;
26
+ if (input.spec)
27
+ body.spec = input.spec;
28
+ const url = `${endpoint}/ai-optimizer/v1beta/organizations/${encodeURIComponent(orgId)}/workspace-templates`;
29
+ const resp = await fetchWithTimeout(url, {
30
+ method: "POST",
31
+ headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
32
+ body: JSON.stringify(body),
33
+ }, fetchImpl, 30_000, options?.signal);
34
+ await checkResponse(resp, url);
35
+ const data = await resp.json().catch(() => undefined);
36
+ return mapWorkspaceTemplate(data, endpoint);
37
+ }
19
38
  export async function listWorkspaceTemplates(apiKey, options) {
20
39
  const fetchImpl = options?.fetch ?? globalThis.fetch;
21
40
  const endpoint = resolveEndpoint(options);
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"../src/","sources":["api/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"../src/","sources":["api/templates.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"../src/","sources":["commands/templates.ts"],"names":[],"mappings":"AAaA,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,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAYD,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5F;AAoKD,0FAA0F;AAC1F,eAAO,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAA8B,CAAA"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"../src/","sources":["commands/templates.ts"],"names":[],"mappings":"AAkBA,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,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAoCD,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB5F;AAmSD,0FAA0F;AAC1F,eAAO,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAA8B,CAAA"}
@@ -1,5 +1,7 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
1
3
  import { formatAge, formatBytes, formatMillicores } from "../api/resources.js";
2
- import { AmbiguousTemplateError, getWorkspaceTemplate, listWorkspaceTemplates, TemplateNotFoundError, } from "../api/templates.js";
4
+ import { AmbiguousTemplateError, createWorkspaceTemplate, getWorkspaceTemplate, listWorkspaceTemplates, TemplateNotFoundError, } from "../api/templates.js";
3
5
  import { requireApiKey } from "../auth/resolve.js";
4
6
  import { parseFlags, UsageError } from "./flags.js";
5
7
  import { guardCommand } from "./guard.js";
@@ -8,11 +10,34 @@ const TEMPLATES_USAGE = `Usage:
8
10
  kimchictl templates <verb> [options]
9
11
 
10
12
  Verbs:
11
- list List workspace templates (alias: ls)
12
- get Show template details
13
+ list List workspace templates (alias: ls)
14
+ get Show template details
15
+ create Create a workspace template
13
16
 
14
17
  Options:
15
18
  --help Show this help`;
19
+ const CREATE_USAGE = `Usage:
20
+ kimchictl templates create [options]
21
+
22
+ Create a template from a JSON file or from inline flags (not both).
23
+
24
+ File:
25
+ --file <path> Read the full template from a JSON file
26
+ (same shape as 'templates get --output json')
27
+
28
+ Inline:
29
+ --name <name> Template name (required, immutable, lowercase)
30
+ --desc <text> Description
31
+ --cpu <qty> CPU request (e.g. "500m", "2")
32
+ --memory <qty> Memory request (e.g. "1Gi", "512Mi")
33
+ --storage <qty> PVC size (e.g. "20Gi")
34
+ --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
35
+ --egress-allow <dest> Allow egress destination (repeatable)
36
+ --egress-deny <dest> Deny egress destination (repeatable)
37
+ --egress-default-allow Default-allow egress (instead of deny-by-default)
38
+ --init-script <script> Boot script (or @file to read from file)
39
+
40
+ --help Show this help`;
16
41
  /** `kimchictl templates <verb> …` — read-only browse of workspace templates. */
17
42
  export async function runTemplates(args, deps = {}) {
18
43
  const [verb, ...rest] = args;
@@ -22,6 +47,8 @@ export async function runTemplates(args, deps = {}) {
22
47
  return runTemplatesList(rest, deps);
23
48
  case "get":
24
49
  return runTemplatesGet(rest, deps);
50
+ case "create":
51
+ return runTemplatesCreate(rest, deps);
25
52
  case "help":
26
53
  case "--help":
27
54
  case "-h":
@@ -120,6 +147,120 @@ Options:
120
147
  }
121
148
  return 0;
122
149
  }
150
+ async function runTemplatesCreate(args, deps) {
151
+ const { values, positionals } = parseFlags("templates create", args, {
152
+ file: { type: "string", short: "f" },
153
+ name: { type: "string" },
154
+ desc: { type: "string" },
155
+ cpu: { type: "string" },
156
+ memory: { type: "string" },
157
+ storage: { type: "string" },
158
+ dep: { type: "string", multiple: true },
159
+ "egress-allow": { type: "string", multiple: true },
160
+ "egress-deny": { type: "string", multiple: true },
161
+ "egress-default-allow": { type: "boolean" },
162
+ "init-script": { type: "string" },
163
+ });
164
+ if (values.help) {
165
+ console.log(CREATE_USAGE);
166
+ return 0;
167
+ }
168
+ if (positionals.length > 0) {
169
+ throw new UsageError("kimchictl templates create: unexpected positional argument");
170
+ }
171
+ let input;
172
+ const file = typeof values.file === "string" && values.file.length > 0 ? values.file : undefined;
173
+ if (file) {
174
+ // --file and inline spec flags are mutually exclusive
175
+ const inlineFlags = [
176
+ "cpu",
177
+ "memory",
178
+ "storage",
179
+ "dep",
180
+ "egress-allow",
181
+ "egress-deny",
182
+ "egress-default-allow",
183
+ "init-script",
184
+ ];
185
+ const usedInline = inlineFlags.some((f) => values[f] !== undefined);
186
+ if (usedInline) {
187
+ throw new UsageError("kimchictl templates create: --file and inline spec flags are mutually exclusive — the file carries the full definition");
188
+ }
189
+ if (typeof values.name === "string" && values.name.length > 0) {
190
+ throw new UsageError("kimchictl templates create: --file and --name are mutually exclusive (the file carries the name)");
191
+ }
192
+ try {
193
+ const raw = JSON.parse(readFileSync(resolve(file), "utf-8"));
194
+ if (typeof raw.name !== "string" || raw.name.length === 0) {
195
+ throw new UsageError(`kimchictl templates create: --file: missing required field "name"`);
196
+ }
197
+ input = raw;
198
+ }
199
+ catch (err) {
200
+ if (err instanceof UsageError)
201
+ throw err;
202
+ throw new UsageError(`kimchictl templates create: --file: ${err instanceof Error ? err.message : String(err)}`);
203
+ }
204
+ }
205
+ else {
206
+ // Inline flags
207
+ const name = typeof values.name === "string" && values.name.length > 0 ? values.name : undefined;
208
+ if (!name) {
209
+ throw new UsageError("kimchictl templates create: --name is required (or use --file)");
210
+ }
211
+ const spec = {};
212
+ const resources = {};
213
+ if (typeof values.cpu === "string" && values.cpu.length > 0)
214
+ resources.cpu = values.cpu;
215
+ if (typeof values.memory === "string" && values.memory.length > 0)
216
+ resources.memory = values.memory;
217
+ if (typeof values.storage === "string" && values.storage.length > 0)
218
+ resources.pvcSize = values.storage;
219
+ if (Object.keys(resources).length > 0)
220
+ spec.resources = resources;
221
+ const dependencies = (Array.isArray(values.dep) ? values.dep : []).filter((d) => typeof d === "string" && d.length > 0);
222
+ if (dependencies.length > 0)
223
+ spec.dependencies = dependencies;
224
+ const egressAllowed = (Array.isArray(values["egress-allow"]) ? values["egress-allow"] : []).filter((d) => typeof d === "string" && d.length > 0);
225
+ const egressDenied = (Array.isArray(values["egress-deny"]) ? values["egress-deny"] : []).filter((d) => typeof d === "string" && d.length > 0);
226
+ const egressDefaultAllow = values["egress-default-allow"] === true;
227
+ if (egressAllowed.length > 0 || egressDenied.length > 0 || egressDefaultAllow) {
228
+ spec.egressPolicy = {
229
+ ...(egressDefaultAllow ? { denyByDefault: false } : {}),
230
+ ...(egressAllowed.length > 0 ? { allowed: egressAllowed } : {}),
231
+ ...(egressDenied.length > 0 ? { denied: egressDenied } : {}),
232
+ };
233
+ }
234
+ const initScriptRaw = typeof values["init-script"] === "string" ? values["init-script"] : undefined;
235
+ if (initScriptRaw) {
236
+ if (initScriptRaw.startsWith("@")) {
237
+ const scriptPath = initScriptRaw.slice(1);
238
+ try {
239
+ spec.initScript = readFileSync(resolve(scriptPath), "utf-8");
240
+ }
241
+ catch {
242
+ throw new UsageError(`kimchictl templates create: --init-script: cannot read ${scriptPath}`);
243
+ }
244
+ }
245
+ else {
246
+ spec.initScript = initScriptRaw;
247
+ }
248
+ }
249
+ input = {
250
+ name,
251
+ description: typeof values.desc === "string" && values.desc.length > 0 ? values.desc : undefined,
252
+ spec: Object.keys(spec).length > 0 ? spec : undefined,
253
+ };
254
+ }
255
+ // Validate the name pattern client-side (must match the proto's validation)
256
+ if (!/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/.test(input.name)) {
257
+ throw new UsageError(`kimchictl templates create: name "${input.name}" is invalid — must be lowercase alphanumeric, dots, and dashes (e.g. "rust", "python-django")`);
258
+ }
259
+ const { key } = requireApiKey(deps.env);
260
+ const created = await createWorkspaceTemplate(key, input, { fetch: deps.fetch });
261
+ console.log(`✓ created template ${created.name}`);
262
+ return 0;
263
+ }
123
264
  function renderTemplateCard(template, color, now) {
124
265
  const dimText = (text) => (color ? `\x1b[2m${text}\x1b[0m` : text);
125
266
  const lines = [`${template.name || template.id.slice(0, 12)} ${dimText("template")}`];
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"../src/","sources":["commands/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"../src/","sources":["commands/templates.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ Create options:
23
23
  --desc <text> Description
24
24
  --template <name> Workspace template (conflicts with spec flags)
25
25
  --template-id <uuid> Template ID (alternative to --template)
26
- --cpu <qty> CPU request (e.g. "500m", "2")
26
+ --cpu <qty> CPU request (e.g. "500m", "2")
27
27
  --memory <qty> Memory request (e.g. "1Gi", "512Mi")
28
28
  --storage <qty> PVC size (e.g. "20Gi")
29
29
  --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
@@ -70,7 +70,7 @@ Options:
70
70
  --desc <text> Description
71
71
  --template <name> Workspace template (conflicts with spec flags)
72
72
  --template-id <uuid> Template ID (alternative to --template)
73
- --cpu <qty> CPU request (e.g. "500m", "2")
73
+ --cpu <qty> CPU request (e.g. "500m", "2")
74
74
  --memory <qty> Memory request (e.g. "1Gi", "512Mi")
75
75
  --storage <qty> PVC size (e.g. "20Gi")
76
76
  --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
package/dist/version.d.ts CHANGED
@@ -3,5 +3,5 @@
3
3
  * version over this constant at build time; the committed value stays a
4
4
  * sentinel so source checkouts are recognizable.
5
5
  */
6
- export declare const VERSION = "0.0.10";
6
+ export declare const VERSION = "0.0.11";
7
7
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -3,5 +3,5 @@
3
3
  * version over this constant at build time; the committed value stays a
4
4
  * sentinel so source checkouts are recognizable.
5
5
  */
6
- export const VERSION = "0.0.10";
6
+ export const VERSION = "0.0.11";
7
7
  //# sourceMappingURL=version.js.map
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.10",
5
+ "version": "0.0.11",
6
6
  "description": "Create and connect to kimchi remote workspaces from the terminal.",
7
7
  "keywords": [
8
8
  "kimchi",
@@ -61,6 +61,44 @@ export class AmbiguousTemplateError extends Error {
61
61
  }
62
62
  }
63
63
 
64
+ /** Input shape for creating a template — a subset of WorkspaceTemplate. */
65
+ export interface CreateTemplateInput {
66
+ name: string
67
+ description?: string
68
+ spec?: WorkspaceTemplateSpec
69
+ }
70
+
71
+ export async function createWorkspaceTemplate(
72
+ apiKey: string,
73
+ input: CreateTemplateInput,
74
+ options?: WorkspaceTemplateOptions,
75
+ ): Promise<WorkspaceTemplate> {
76
+ const fetchImpl = options?.fetch ?? globalThis.fetch
77
+ const endpoint = resolveEndpoint(options)
78
+ const orgId = await resolveOrgId(apiKey, options)
79
+
80
+ const body: Record<string, unknown> = { name: input.name }
81
+ if (input.description) body.description = input.description
82
+ if (input.spec) body.spec = input.spec
83
+
84
+ const url = `${endpoint}/ai-optimizer/v1beta/organizations/${encodeURIComponent(orgId)}/workspace-templates`
85
+ const resp = await fetchWithTimeout(
86
+ url,
87
+ {
88
+ method: "POST",
89
+ headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
90
+ body: JSON.stringify(body),
91
+ },
92
+ fetchImpl,
93
+ 30_000,
94
+ options?.signal,
95
+ )
96
+ await checkResponse(resp, url)
97
+
98
+ const data: unknown = await resp.json().catch(() => undefined)
99
+ return mapWorkspaceTemplate(data, endpoint)
100
+ }
101
+
64
102
  export async function listWorkspaceTemplates(
65
103
  apiKey: string,
66
104
  options?: WorkspaceTemplateOptions,
@@ -1,10 +1,15 @@
1
+ import { readFileSync } from "node:fs"
2
+ import { resolve } from "node:path"
1
3
  import { formatAge, formatBytes, formatMillicores } from "../api/resources.js"
2
4
  import {
3
5
  AmbiguousTemplateError,
6
+ type CreateTemplateInput,
7
+ createWorkspaceTemplate,
4
8
  getWorkspaceTemplate,
5
9
  listWorkspaceTemplates,
6
10
  TemplateNotFoundError,
7
11
  type WorkspaceTemplate,
12
+ type WorkspaceTemplateSpec,
8
13
  } from "../api/templates.js"
9
14
  import { requireApiKey } from "../auth/resolve.js"
10
15
  import { parseFlags, UsageError } from "./flags.js"
@@ -26,12 +31,36 @@ const TEMPLATES_USAGE = `Usage:
26
31
  kimchictl templates <verb> [options]
27
32
 
28
33
  Verbs:
29
- list List workspace templates (alias: ls)
30
- get Show template details
34
+ list List workspace templates (alias: ls)
35
+ get Show template details
36
+ create Create a workspace template
31
37
 
32
38
  Options:
33
39
  --help Show this help`
34
40
 
41
+ const CREATE_USAGE = `Usage:
42
+ kimchictl templates create [options]
43
+
44
+ Create a template from a JSON file or from inline flags (not both).
45
+
46
+ File:
47
+ --file <path> Read the full template from a JSON file
48
+ (same shape as 'templates get --output json')
49
+
50
+ Inline:
51
+ --name <name> Template name (required, immutable, lowercase)
52
+ --desc <text> Description
53
+ --cpu <qty> CPU request (e.g. "500m", "2")
54
+ --memory <qty> Memory request (e.g. "1Gi", "512Mi")
55
+ --storage <qty> PVC size (e.g. "20Gi")
56
+ --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
57
+ --egress-allow <dest> Allow egress destination (repeatable)
58
+ --egress-deny <dest> Deny egress destination (repeatable)
59
+ --egress-default-allow Default-allow egress (instead of deny-by-default)
60
+ --init-script <script> Boot script (or @file to read from file)
61
+
62
+ --help Show this help`
63
+
35
64
  /** `kimchictl templates <verb> …` — read-only browse of workspace templates. */
36
65
  export async function runTemplates(args: string[], deps: TemplatesDeps = {}): Promise<number> {
37
66
  const [verb, ...rest] = args
@@ -41,6 +70,8 @@ export async function runTemplates(args: string[], deps: TemplatesDeps = {}): Pr
41
70
  return runTemplatesList(rest, deps)
42
71
  case "get":
43
72
  return runTemplatesGet(rest, deps)
73
+ case "create":
74
+ return runTemplatesCreate(rest, deps)
44
75
  case "help":
45
76
  case "--help":
46
77
  case "-h":
@@ -153,6 +184,133 @@ Options:
153
184
  return 0
154
185
  }
155
186
 
187
+ async function runTemplatesCreate(args: string[], deps: TemplatesDeps): Promise<number> {
188
+ const { values, positionals } = parseFlags("templates create", args, {
189
+ file: { type: "string", short: "f" },
190
+ name: { type: "string" },
191
+ desc: { type: "string" },
192
+ cpu: { type: "string" },
193
+ memory: { type: "string" },
194
+ storage: { type: "string" },
195
+ dep: { type: "string", multiple: true },
196
+ "egress-allow": { type: "string", multiple: true },
197
+ "egress-deny": { type: "string", multiple: true },
198
+ "egress-default-allow": { type: "boolean" },
199
+ "init-script": { type: "string" },
200
+ })
201
+ if (values.help) {
202
+ console.log(CREATE_USAGE)
203
+ return 0
204
+ }
205
+ if (positionals.length > 0) {
206
+ throw new UsageError("kimchictl templates create: unexpected positional argument")
207
+ }
208
+
209
+ let input: CreateTemplateInput
210
+
211
+ const file = typeof values.file === "string" && values.file.length > 0 ? values.file : undefined
212
+ if (file) {
213
+ // --file and inline spec flags are mutually exclusive
214
+ const inlineFlags = [
215
+ "cpu",
216
+ "memory",
217
+ "storage",
218
+ "dep",
219
+ "egress-allow",
220
+ "egress-deny",
221
+ "egress-default-allow",
222
+ "init-script",
223
+ ]
224
+ const usedInline = inlineFlags.some((f) => values[f] !== undefined)
225
+ if (usedInline) {
226
+ throw new UsageError(
227
+ "kimchictl templates create: --file and inline spec flags are mutually exclusive — the file carries the full definition",
228
+ )
229
+ }
230
+ if (typeof values.name === "string" && values.name.length > 0) {
231
+ throw new UsageError(
232
+ "kimchictl templates create: --file and --name are mutually exclusive (the file carries the name)",
233
+ )
234
+ }
235
+ try {
236
+ const raw = JSON.parse(readFileSync(resolve(file), "utf-8")) as CreateTemplateInput
237
+ if (typeof raw.name !== "string" || raw.name.length === 0) {
238
+ throw new UsageError(`kimchictl templates create: --file: missing required field "name"`)
239
+ }
240
+ input = raw
241
+ } catch (err) {
242
+ if (err instanceof UsageError) throw err
243
+ throw new UsageError(`kimchictl templates create: --file: ${err instanceof Error ? err.message : String(err)}`)
244
+ }
245
+ } else {
246
+ // Inline flags
247
+ const name = typeof values.name === "string" && values.name.length > 0 ? values.name : undefined
248
+ if (!name) {
249
+ throw new UsageError("kimchictl templates create: --name is required (or use --file)")
250
+ }
251
+
252
+ const spec: WorkspaceTemplateSpec = {}
253
+
254
+ const resources: { cpu?: string; memory?: string; pvcSize?: string } = {}
255
+ if (typeof values.cpu === "string" && values.cpu.length > 0) resources.cpu = values.cpu
256
+ if (typeof values.memory === "string" && values.memory.length > 0) resources.memory = values.memory
257
+ if (typeof values.storage === "string" && values.storage.length > 0) resources.pvcSize = values.storage
258
+ if (Object.keys(resources).length > 0) spec.resources = resources
259
+
260
+ const dependencies = (Array.isArray(values.dep) ? values.dep : []).filter(
261
+ (d): d is string => typeof d === "string" && d.length > 0,
262
+ )
263
+ if (dependencies.length > 0) spec.dependencies = dependencies
264
+
265
+ const egressAllowed = (Array.isArray(values["egress-allow"]) ? values["egress-allow"] : []).filter(
266
+ (d): d is string => typeof d === "string" && d.length > 0,
267
+ )
268
+ const egressDenied = (Array.isArray(values["egress-deny"]) ? values["egress-deny"] : []).filter(
269
+ (d): d is string => typeof d === "string" && d.length > 0,
270
+ )
271
+ const egressDefaultAllow = values["egress-default-allow"] === true
272
+ if (egressAllowed.length > 0 || egressDenied.length > 0 || egressDefaultAllow) {
273
+ spec.egressPolicy = {
274
+ ...(egressDefaultAllow ? { denyByDefault: false } : {}),
275
+ ...(egressAllowed.length > 0 ? { allowed: egressAllowed } : {}),
276
+ ...(egressDenied.length > 0 ? { denied: egressDenied } : {}),
277
+ }
278
+ }
279
+
280
+ const initScriptRaw = typeof values["init-script"] === "string" ? values["init-script"] : undefined
281
+ if (initScriptRaw) {
282
+ if (initScriptRaw.startsWith("@")) {
283
+ const scriptPath = initScriptRaw.slice(1)
284
+ try {
285
+ spec.initScript = readFileSync(resolve(scriptPath), "utf-8")
286
+ } catch {
287
+ throw new UsageError(`kimchictl templates create: --init-script: cannot read ${scriptPath}`)
288
+ }
289
+ } else {
290
+ spec.initScript = initScriptRaw
291
+ }
292
+ }
293
+
294
+ input = {
295
+ name,
296
+ description: typeof values.desc === "string" && values.desc.length > 0 ? values.desc : undefined,
297
+ spec: Object.keys(spec).length > 0 ? spec : undefined,
298
+ }
299
+ }
300
+
301
+ // Validate the name pattern client-side (must match the proto's validation)
302
+ if (!/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/.test(input.name)) {
303
+ throw new UsageError(
304
+ `kimchictl templates create: name "${input.name}" is invalid — must be lowercase alphanumeric, dots, and dashes (e.g. "rust", "python-django")`,
305
+ )
306
+ }
307
+
308
+ const { key } = requireApiKey(deps.env)
309
+ const created = await createWorkspaceTemplate(key, input, { fetch: deps.fetch })
310
+ console.log(`✓ created template ${created.name}`)
311
+ return 0
312
+ }
313
+
156
314
  function renderTemplateCard(template: WorkspaceTemplate, color: boolean, now: Date): string[] {
157
315
  const dimText = (text: string) => (color ? `\x1b[2m${text}\x1b[0m` : text)
158
316
  const lines: string[] = [`${template.name || template.id.slice(0, 12)} ${dimText("template")}`]
@@ -45,7 +45,7 @@ Create options:
45
45
  --desc <text> Description
46
46
  --template <name> Workspace template (conflicts with spec flags)
47
47
  --template-id <uuid> Template ID (alternative to --template)
48
- --cpu <qty> CPU request (e.g. "500m", "2")
48
+ --cpu <qty> CPU request (e.g. "500m", "2")
49
49
  --memory <qty> Memory request (e.g. "1Gi", "512Mi")
50
50
  --storage <qty> PVC size (e.g. "20Gi")
51
51
  --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
@@ -95,7 +95,7 @@ Options:
95
95
  --desc <text> Description
96
96
  --template <name> Workspace template (conflicts with spec flags)
97
97
  --template-id <uuid> Template ID (alternative to --template)
98
- --cpu <qty> CPU request (e.g. "500m", "2")
98
+ --cpu <qty> CPU request (e.g. "500m", "2")
99
99
  --memory <qty> Memory request (e.g. "1Gi", "512Mi")
100
100
  --storage <qty> PVC size (e.g. "20Gi")
101
101
  --dep <tool> CLI tool to install (repeatable, e.g. --dep jq --dep node@22)
package/src/version.ts CHANGED
@@ -3,4 +3,4 @@
3
3
  * version over this constant at build time; the committed value stays a
4
4
  * sentinel so source checkouts are recognizable.
5
5
  */
6
- export const VERSION = "0.0.10"
6
+ export const VERSION = "0.0.11"