@kingslanding/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/commands/compose-down.d.ts +3 -0
  2. package/dist/commands/compose-down.d.ts.map +1 -0
  3. package/dist/commands/compose-down.js +56 -0
  4. package/dist/commands/compose-down.js.map +1 -0
  5. package/dist/commands/compose-logs.d.ts +3 -0
  6. package/dist/commands/compose-logs.d.ts.map +1 -0
  7. package/dist/commands/compose-logs.js +33 -0
  8. package/dist/commands/compose-logs.js.map +1 -0
  9. package/dist/commands/compose-ps.d.ts +3 -0
  10. package/dist/commands/compose-ps.d.ts.map +1 -0
  11. package/dist/commands/compose-ps.js +27 -0
  12. package/dist/commands/compose-ps.js.map +1 -0
  13. package/dist/commands/compose-run.d.ts +3 -0
  14. package/dist/commands/compose-run.d.ts.map +1 -0
  15. package/dist/commands/compose-run.js +30 -0
  16. package/dist/commands/compose-run.js.map +1 -0
  17. package/dist/commands/deploy-key.d.ts.map +1 -1
  18. package/dist/commands/deploy-key.js +21 -31
  19. package/dist/commands/deploy-key.js.map +1 -1
  20. package/dist/commands/deploy.d.ts.map +1 -1
  21. package/dist/commands/deploy.js +83 -23
  22. package/dist/commands/deploy.js.map +1 -1
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +3 -34
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/projects.d.ts.map +1 -1
  27. package/dist/commands/projects.js +33 -15
  28. package/dist/commands/projects.js.map +1 -1
  29. package/dist/commands/whoami.d.ts.map +1 -1
  30. package/dist/commands/whoami.js +11 -1
  31. package/dist/commands/whoami.js.map +1 -1
  32. package/dist/index.js +8 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/lib/api.d.ts +8 -5
  35. package/dist/lib/api.d.ts.map +1 -1
  36. package/dist/lib/api.js +11 -20
  37. package/dist/lib/api.js.map +1 -1
  38. package/dist/lib/config.d.ts +6 -2
  39. package/dist/lib/config.d.ts.map +1 -1
  40. package/dist/lib/config.js +31 -4
  41. package/dist/lib/config.js.map +1 -1
  42. package/dist/services/compute-service.d.ts +28 -0
  43. package/dist/services/compute-service.d.ts.map +1 -0
  44. package/dist/services/compute-service.js +77 -0
  45. package/dist/services/compute-service.js.map +1 -0
  46. package/dist/services/deploy-key-service.d.ts +3 -3
  47. package/dist/services/deploy-key-service.d.ts.map +1 -1
  48. package/dist/services/deploy-key-service.js +6 -6
  49. package/dist/services/deploy-key-service.js.map +1 -1
  50. package/dist/services/deploy-service.d.ts +7 -2
  51. package/dist/services/deploy-service.d.ts.map +1 -1
  52. package/dist/services/deploy-service.js +4 -3
  53. package/dist/services/deploy-service.js.map +1 -1
  54. package/dist/services/project-service.d.ts +5 -0
  55. package/dist/services/project-service.d.ts.map +1 -1
  56. package/dist/services/project-service.js +21 -3
  57. package/dist/services/project-service.js.map +1 -1
  58. package/package.json +7 -2
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerComposeDownCommand(program: Command): void;
3
+ //# sourceMappingURL=compose-down.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-down.d.ts","sourceRoot":"","sources":["../../src/commands/compose-down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyDjE"}
@@ -0,0 +1,56 @@
1
+ import { confirm } from "@inquirer/prompts";
2
+ import { ComputeService } from "../services/compute-service.js";
3
+ import { resolveApiUrl, getComputeUrl, loadProjectConfig } from "../lib/config.js";
4
+ import { getAuthHeader } from "../lib/auth.js";
5
+ import { createSpinner } from "../lib/output.js";
6
+ import { CLIError, AuthError } from "../lib/errors.js";
7
+ export function registerComposeDownCommand(program) {
8
+ program
9
+ .command("down")
10
+ .description("Delete the current project and all its containers")
11
+ .option("-y, --yes", "Skip confirmation prompt")
12
+ .action(async (options) => {
13
+ const cwd = process.cwd();
14
+ const config = loadProjectConfig(cwd);
15
+ const projectId = config?.project;
16
+ if (!projectId) {
17
+ throw new CLIError("No project name. Run `kl init` or create a kl.json with a project field.");
18
+ }
19
+ if (!options.yes) {
20
+ const isTTY = process.stdout.isTTY;
21
+ if (isTTY) {
22
+ const confirmed = await confirm({
23
+ message: 'Delete project "' +
24
+ projectId +
25
+ '" and all its containers? This cannot be undone.',
26
+ default: false,
27
+ });
28
+ if (!confirmed) {
29
+ throw new CLIError("Aborted.");
30
+ }
31
+ }
32
+ else {
33
+ throw new CLIError("Use --yes to confirm deletion in non-interactive mode.");
34
+ }
35
+ }
36
+ const apiUrl = resolveApiUrl(cwd);
37
+ const authHeader = getAuthHeader(apiUrl);
38
+ if (!authHeader) {
39
+ throw new AuthError("Not logged in. Run `kl login` first.");
40
+ }
41
+ const computeApiUrl = await getComputeUrl();
42
+ const computeService = new ComputeService(computeApiUrl, authHeader);
43
+ const spinner = createSpinner("Deleting project...");
44
+ spinner.start();
45
+ try {
46
+ await computeService.deleteProject(projectId);
47
+ spinner.stop();
48
+ console.log('Project "' + projectId + '" deleted.');
49
+ }
50
+ catch (err) {
51
+ spinner.stop();
52
+ throw err;
53
+ }
54
+ });
55
+ }
56
+ //# sourceMappingURL=compose-down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-down.js","sourceRoot":"","sources":["../../src/commands/compose-down.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;oBAC9B,OAAO,EACL,kBAAkB;wBAClB,SAAS;wBACT,kDAAkD;oBACpD,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAChB,wDAAwD,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,aAAa,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerComposeLogsCommand(program: Command): void;
3
+ //# sourceMappingURL=compose-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-logs.d.ts","sourceRoot":"","sources":["../../src/commands/compose-logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiCjE"}
@@ -0,0 +1,33 @@
1
+ import { ComputeService } from "../services/compute-service.js";
2
+ import { resolveApiUrl, getComputeUrl, loadProjectConfig } from "../lib/config.js";
3
+ import { getAuthHeader } from "../lib/auth.js";
4
+ import { CLIError, AuthError } from "../lib/errors.js";
5
+ export function registerComposeLogsCommand(program) {
6
+ program
7
+ .command("logs")
8
+ .description("Fetch logs from the current project")
9
+ .argument("[service]", "Service name to filter logs")
10
+ .option("--tail <n>", "Number of lines to show from the end", "100")
11
+ .action(async (service, options) => {
12
+ const cwd = process.cwd();
13
+ const config = loadProjectConfig(cwd);
14
+ const projectId = config?.project;
15
+ if (!projectId) {
16
+ throw new CLIError("No project name. Run `kl init` or create a kl.json with a project field.");
17
+ }
18
+ const tail = parseInt(options.tail, 10);
19
+ if (isNaN(tail) || tail < 1) {
20
+ throw new CLIError("--tail must be a positive integer.");
21
+ }
22
+ const apiUrl = resolveApiUrl(cwd);
23
+ const authHeader = getAuthHeader(apiUrl);
24
+ if (!authHeader) {
25
+ throw new AuthError("Not logged in. Run `kl login` first.");
26
+ }
27
+ const computeApiUrl = await getComputeUrl();
28
+ const computeService = new ComputeService(computeApiUrl, authHeader);
29
+ const output = await computeService.getLogs(projectId, service, tail);
30
+ process.stdout.write(output);
31
+ });
32
+ }
33
+ //# sourceMappingURL=compose-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-logs.js","sourceRoot":"","sources":["../../src/commands/compose-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC;SACpD,MAAM,CAAC,YAAY,EAAE,sCAAsC,EAAE,KAAK,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAyB,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,QAAQ,CAAC,oCAAoC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,aAAa,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerComposePsCommand(program: Command): void;
3
+ //# sourceMappingURL=compose-ps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-ps.d.ts","sourceRoot":"","sources":["../../src/commands/compose-ps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0B/D"}
@@ -0,0 +1,27 @@
1
+ import { ComputeService } from "../services/compute-service.js";
2
+ import { resolveApiUrl, getComputeUrl, loadProjectConfig } from "../lib/config.js";
3
+ import { getAuthHeader } from "../lib/auth.js";
4
+ import { CLIError, AuthError } from "../lib/errors.js";
5
+ export function registerComposePsCommand(program) {
6
+ program
7
+ .command("ps")
8
+ .description("Show running containers for the current project")
9
+ .action(async () => {
10
+ const cwd = process.cwd();
11
+ const config = loadProjectConfig(cwd);
12
+ const projectId = config?.project;
13
+ if (!projectId) {
14
+ throw new CLIError("No project name. Run `kl init` or create a kl.json with a project field.");
15
+ }
16
+ const apiUrl = resolveApiUrl(cwd);
17
+ const authHeader = getAuthHeader(apiUrl);
18
+ if (!authHeader) {
19
+ throw new AuthError("Not logged in. Run `kl login` first.");
20
+ }
21
+ const computeApiUrl = await getComputeUrl();
22
+ const computeService = new ComputeService(computeApiUrl, authHeader);
23
+ const output = await computeService.getPs(projectId);
24
+ process.stdout.write(output);
25
+ });
26
+ }
27
+ //# sourceMappingURL=compose-ps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-ps.js","sourceRoot":"","sources":["../../src/commands/compose-ps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,aAAa,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerComposeRunCommand(program: Command): void;
3
+ //# sourceMappingURL=compose-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-run.d.ts","sourceRoot":"","sources":["../../src/commands/compose-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkChE"}
@@ -0,0 +1,30 @@
1
+ import { ComputeService } from "../services/compute-service.js";
2
+ import { resolveApiUrl, getComputeUrl, loadProjectConfig } from "../lib/config.js";
3
+ import { getAuthHeader } from "../lib/auth.js";
4
+ import { CLIError, AuthError } from "../lib/errors.js";
5
+ export function registerComposeRunCommand(program) {
6
+ program
7
+ .command("run")
8
+ .description("Run a one-off command in a project service container")
9
+ .argument("<service>", "Service name to run the command in")
10
+ .argument("<command...>", "Command and arguments to run")
11
+ .action(async (service, command) => {
12
+ const cwd = process.cwd();
13
+ const config = loadProjectConfig(cwd);
14
+ const projectId = config?.project;
15
+ if (!projectId) {
16
+ throw new CLIError("No project name. Run `kl init` or create a kl.json with a project field.");
17
+ }
18
+ const apiUrl = resolveApiUrl(cwd);
19
+ const authHeader = getAuthHeader(apiUrl);
20
+ if (!authHeader) {
21
+ throw new AuthError("Not logged in. Run `kl login` first.");
22
+ }
23
+ const computeApiUrl = await getComputeUrl();
24
+ const computeService = new ComputeService(computeApiUrl, authHeader);
25
+ const result = await computeService.execCommand(projectId, service, command);
26
+ process.stdout.write(result.output);
27
+ process.exit(result.returncode);
28
+ });
29
+ }
30
+ //# sourceMappingURL=compose-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-run.js","sourceRoot":"","sources":["../../src/commands/compose-run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,sDAAsD,CAAC;SACnE,QAAQ,CAAC,WAAW,EAAE,oCAAoC,CAAC;SAC3D,QAAQ,CAAC,cAAc,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAiB,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,aAAa,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,CAC7C,SAAS,EACT,OAAO,EACP,OAAO,CACR,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-key.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsH/D"}
1
+ {"version":3,"file":"deploy-key.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgG/D"}
@@ -4,15 +4,19 @@ import { resolveApiUrl, loadProjectConfig } from "../lib/config.js";
4
4
  import { getAuthHeader } from "../lib/auth.js";
5
5
  import { CLIError, AuthError } from "../lib/errors.js";
6
6
  import { DeployKeyService } from "../services/deploy-key-service.js";
7
- import { ProjectService } from "../services/project-service.js";
8
- function resolveProjectAndTeam(options) {
7
+ function resolveProject(options) {
9
8
  const config = loadProjectConfig(process.cwd());
10
9
  const projectName = options.project ?? config?.project;
11
10
  if (!projectName) {
12
11
  throw new CLIError("No project name. Use --project <name> or run `kl init`.");
13
12
  }
14
- const teamSlug = options.team ?? config?.team ?? undefined;
15
- return { projectName, teamSlug };
13
+ return projectName;
14
+ }
15
+ function warnTeamDeprecation(team) {
16
+ if (team) {
17
+ console.warn("Warning: --team is no longer needed and will be removed in a future version. " +
18
+ "The server now resolves project ownership automatically.");
19
+ }
16
20
  }
17
21
  export function registerDeployKeyCommand(program) {
18
22
  const cmd = program
@@ -22,22 +26,18 @@ export function registerDeployKeyCommand(program) {
22
26
  .command("create")
23
27
  .description("Create a deploy key for a project")
24
28
  .option("-p, --project <name>", "Project name")
25
- .option("-t, --team <slug>", "Team slug")
29
+ .option("-t, --team <slug>", "Team slug (deprecated, ignored)")
26
30
  .action(async (options) => {
31
+ warnTeamDeprecation(options.team);
27
32
  const apiUrl = resolveApiUrl();
28
33
  const authHeader = getAuthHeader(apiUrl);
29
34
  if (!authHeader) {
30
35
  throw new AuthError("Not logged in. Run `kl login` first.");
31
36
  }
32
- const { projectName, teamSlug } = resolveProjectAndTeam(options);
37
+ const projectName = resolveProject(options);
33
38
  const api = new ApiClient(apiUrl, authHeader);
34
- let teamId;
35
- if (teamSlug) {
36
- const projectService = new ProjectService(api);
37
- teamId = await projectService.resolveTeamId(teamSlug);
38
- }
39
39
  const deployKeyService = new DeployKeyService(api);
40
- const result = await deployKeyService.create(projectName, teamId);
40
+ const result = await deployKeyService.create(projectName);
41
41
  console.log();
42
42
  console.log("Deploy key created for " + projectName + ":");
43
43
  console.log();
@@ -50,18 +50,17 @@ export function registerDeployKeyCommand(program) {
50
50
  .command("revoke")
51
51
  .description("Revoke the deploy key for a project")
52
52
  .option("-p, --project <name>", "Project name")
53
- .option("-t, --team <slug>", "Team slug")
53
+ .option("-t, --team <slug>", "Team slug (deprecated, ignored)")
54
54
  .action(async (options) => {
55
+ warnTeamDeprecation(options.team);
55
56
  const apiUrl = resolveApiUrl();
56
57
  const authHeader = getAuthHeader(apiUrl);
57
58
  if (!authHeader) {
58
59
  throw new AuthError("Not logged in. Run `kl login` first.");
59
60
  }
60
- const { projectName, teamSlug } = resolveProjectAndTeam(options);
61
+ const projectName = resolveProject(options);
61
62
  const shouldRevoke = await confirm({
62
- message: "Revoke the deploy key for " +
63
- projectName +
64
- "? This cannot be undone.",
63
+ message: "Revoke the deploy key for " + projectName + "? This cannot be undone.",
65
64
  default: false,
66
65
  });
67
66
  if (!shouldRevoke) {
@@ -69,35 +68,26 @@ export function registerDeployKeyCommand(program) {
69
68
  return;
70
69
  }
71
70
  const api = new ApiClient(apiUrl, authHeader);
72
- let teamId;
73
- if (teamSlug) {
74
- const projectService = new ProjectService(api);
75
- teamId = await projectService.resolveTeamId(teamSlug);
76
- }
77
71
  const deployKeyService = new DeployKeyService(api);
78
- await deployKeyService.revoke(projectName, teamId);
72
+ await deployKeyService.revoke(projectName);
79
73
  console.log("Deploy key revoked for " + projectName + ".");
80
74
  });
81
75
  cmd
82
76
  .command("status")
83
77
  .description("Check deploy key status for a project")
84
78
  .option("-p, --project <name>", "Project name")
85
- .option("-t, --team <slug>", "Team slug")
79
+ .option("-t, --team <slug>", "Team slug (deprecated, ignored)")
86
80
  .action(async (options) => {
81
+ warnTeamDeprecation(options.team);
87
82
  const apiUrl = resolveApiUrl();
88
83
  const authHeader = getAuthHeader(apiUrl);
89
84
  if (!authHeader) {
90
85
  throw new AuthError("Not logged in. Run `kl login` first.");
91
86
  }
92
- const { projectName, teamSlug } = resolveProjectAndTeam(options);
87
+ const projectName = resolveProject(options);
93
88
  const api = new ApiClient(apiUrl, authHeader);
94
- let teamId;
95
- if (teamSlug) {
96
- const projectService = new ProjectService(api);
97
- teamId = await projectService.resolveTeamId(teamSlug);
98
- }
99
89
  const deployKeyService = new DeployKeyService(api);
100
- const result = await deployKeyService.status(projectName, teamId);
90
+ const result = await deployKeyService.status(projectName);
101
91
  if (result.exists) {
102
92
  console.log("Deploy key active for " + projectName);
103
93
  console.log(" Prefix: " + result.key_prefix);
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-key.js","sourceRoot":"","sources":["../../src/commands/deploy-key.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-key.js","sourceRoot":"","sources":["../../src/commands/deploy-key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,SAAS,cAAc,CAAC,OAA6B;IACnD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAChB,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACnD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CACV,+EAA+E;YAC/E,0DAA0D,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,8BAA8B,CAAC,CAAC;IAE/C,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;YACjC,OAAO,EAAE,4BAA4B,GAAG,WAAW,GAAG,0BAA0B;YAChF,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,WAAW,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+J5D"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgN5D"}
@@ -1,14 +1,34 @@
1
+ import * as fs from "node:fs";
1
2
  import * as path from "node:path";
2
3
  import { confirm } from "@inquirer/prompts";
3
4
  import { ApiClient } from "../lib/api.js";
4
- import { resolveApiUrl, loadProjectConfig } from "../lib/config.js";
5
+ import { resolveApiUrl, getComputeUrl, loadProjectConfig } from "../lib/config.js";
5
6
  import { getAuthHeader, loadCredentials, isDeployKeyAuth } from "../lib/auth.js";
6
7
  import { buildFileManifest } from "../lib/files.js";
7
8
  import { createSpinner, formatBytes } from "../lib/output.js";
8
9
  import { CLIError, ApiError, AuthError } from "../lib/errors.js";
9
10
  import { AuthService } from "../services/auth-service.js";
10
11
  import { DeployService, defaultReadFile } from "../services/deploy-service.js";
11
- import { ProjectService } from "../services/project-service.js";
12
+ import { ComputeService } from "../services/compute-service.js";
13
+ const COMPOSE_FILE_NAMES = [
14
+ "docker-compose.yml",
15
+ "docker-compose.yaml",
16
+ "compose.yml",
17
+ "compose.yaml",
18
+ ];
19
+ function findComposeFile(dir, explicitFile) {
20
+ if (explicitFile) {
21
+ const resolved = path.resolve(dir, explicitFile);
22
+ return fs.existsSync(resolved) ? resolved : null;
23
+ }
24
+ for (const name of COMPOSE_FILE_NAMES) {
25
+ const candidate = path.join(dir, name);
26
+ if (fs.existsSync(candidate)) {
27
+ return candidate;
28
+ }
29
+ }
30
+ return null;
31
+ }
12
32
  export function registerDeployCommand(program) {
13
33
  program
14
34
  .command("deploy")
@@ -18,21 +38,51 @@ export function registerDeployCommand(program) {
18
38
  .option("-t, --team <slug>", "Team slug")
19
39
  .option("--create", "Create project if it does not exist")
20
40
  .option("-v, --verbose", "Show detailed output")
41
+ .option("-f, --file <path>", "Path to compose file (compose deploy only)")
42
+ .option("--json", "Output deployment result as JSON")
21
43
  .action(async (dirArg, options) => {
22
44
  const cwd = process.cwd();
23
45
  const config = loadProjectConfig(cwd);
24
46
  const apiUrl = resolveApiUrl(cwd);
47
+ // Resolve deploy directory early so compose detection uses the right path
48
+ const relativeDir = dirArg ?? config?.directory ?? ".";
49
+ const deployDir = path.resolve(cwd, relativeDir);
50
+ // Auto-detect compose deploy
51
+ const composePath = findComposeFile(deployDir, options.file);
52
+ if (composePath) {
53
+ const projectName = options.project ?? config?.project;
54
+ if (!projectName) {
55
+ throw new CLIError("No project name. Use --project <name> or run `kl init`.");
56
+ }
57
+ const authHeader = getAuthHeader(apiUrl);
58
+ if (!authHeader) {
59
+ throw new AuthError("Not logged in. Run `kl login` first.");
60
+ }
61
+ const computeApiUrl = await getComputeUrl();
62
+ const composeYaml = fs.readFileSync(composePath, "utf-8");
63
+ const computeService = new ComputeService(computeApiUrl, authHeader);
64
+ const spinner = createSpinner("Deploying...");
65
+ spinner.start();
66
+ try {
67
+ const result = await computeService.deploy(projectName, composeYaml);
68
+ spinner.stop();
69
+ console.log("Live at " + result.url);
70
+ }
71
+ catch (err) {
72
+ spinner.stop();
73
+ throw err;
74
+ }
75
+ return;
76
+ }
25
77
  // Resolve project name
26
78
  const projectName = options.project ?? config?.project;
27
79
  if (!projectName) {
28
80
  throw new CLIError("No project name. Use --project <name> or run `kl init`.");
29
81
  }
30
- // Resolve deploy directory
31
- const relativeDir = dirArg ?? config?.directory ?? ".";
32
- const deployDir = path.resolve(cwd, relativeDir);
33
- // Resolve team
34
- let teamId;
35
- const teamSlug = options.team ?? config?.team;
82
+ // Deprecation warning for --team without --create
83
+ if (options.team && !options.create) {
84
+ console.warn("Warning: --team is no longer needed for deploys to existing projects and will be removed in a future version.");
85
+ }
36
86
  // Ensure auth
37
87
  let authHeader = getAuthHeader(apiUrl);
38
88
  if (!authHeader) {
@@ -52,11 +102,6 @@ export function registerDeployCommand(program) {
52
102
  }
53
103
  }
54
104
  }
55
- // Resolve team slug to ID
56
- if (teamSlug) {
57
- const projectService = new ProjectService(api);
58
- teamId = await projectService.resolveTeamId(teamSlug);
59
- }
60
105
  // Build manifest
61
106
  const files = buildFileManifest(deployDir, cwd);
62
107
  if (options.verbose) {
@@ -80,7 +125,6 @@ export function registerDeployCommand(program) {
80
125
  spinner.text = "Uploading " + completed + "/" + total + " files...";
81
126
  },
82
127
  create,
83
- teamId,
84
128
  });
85
129
  };
86
130
  try {
@@ -119,16 +163,32 @@ export function registerDeployCommand(program) {
119
163
  }
120
164
  spinner.stop();
121
165
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
122
- if (options.verbose) {
123
- console.log("Deployed " +
124
- result.files +
125
- " files (" +
126
- formatBytes(result.total_size) +
127
- ") in " +
128
- elapsed +
129
- "s");
166
+ if (options.json) {
167
+ console.log(JSON.stringify({
168
+ deployment_id: result.deployment_id,
169
+ project_url: result.url,
170
+ files: result.files,
171
+ total_size: result.total_size,
172
+ }));
173
+ }
174
+ else {
175
+ if (options.verbose && result.owner) {
176
+ const ownerLabel = result.owner.type === "team" && result.owner.slug
177
+ ? result.owner.slug
178
+ : "personal";
179
+ console.log("Deploying to " + projectName + " (owner: " + ownerLabel + ")");
180
+ }
181
+ if (options.verbose) {
182
+ console.log("Deployed " +
183
+ result.files +
184
+ " files (" +
185
+ formatBytes(result.total_size) +
186
+ ") in " +
187
+ elapsed +
188
+ "s");
189
+ }
190
+ console.log("Done. " + result.url);
130
191
  }
131
- console.log("Done. " + result.url);
132
192
  }
133
193
  catch (err) {
134
194
  spinner.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6D1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+B1D"}
@@ -1,9 +1,6 @@
1
- import { input, select } from "@inquirer/prompts";
2
- import { ApiClient } from "../lib/api.js";
3
- import { resolveApiUrl, loadProjectConfig, writeProjectConfig, } from "../lib/config.js";
4
- import { getAuthHeader } from "../lib/auth.js";
1
+ import { input } from "@inquirer/prompts";
2
+ import { loadProjectConfig, writeProjectConfig } from "../lib/config.js";
5
3
  import { CLIError } from "../lib/errors.js";
6
- import { ProjectService } from "../services/project-service.js";
7
4
  const PROJECT_NAME_REGEX = /^[a-z0-9][a-z0-9-]{2,61}[a-z0-9]$/;
8
5
  export function registerInitCommand(program) {
9
6
  program
@@ -28,35 +25,7 @@ export function registerInitCommand(program) {
28
25
  message: "Deploy directory",
29
26
  default: ".",
30
27
  });
31
- let team = null;
32
- const apiUrl = resolveApiUrl(cwd);
33
- const authHeader = getAuthHeader(apiUrl);
34
- if (authHeader) {
35
- try {
36
- const api = new ApiClient(apiUrl, authHeader);
37
- const projectService = new ProjectService(api);
38
- const teams = await projectService.getUserTeams();
39
- if (teams.length > 0) {
40
- const choices = [
41
- { name: "Personal (no team)", value: "" },
42
- ...teams.map((t) => ({
43
- name: t.team.name + " (" + t.team.slug + ")",
44
- value: t.team.slug,
45
- })),
46
- ];
47
- const selected = await select({
48
- message: "Team",
49
- choices,
50
- });
51
- if (selected)
52
- team = selected;
53
- }
54
- }
55
- catch {
56
- // If we can't fetch teams (not logged in, etc.), skip the prompt
57
- }
58
- }
59
- writeProjectConfig(cwd, { project, directory, team });
28
+ writeProjectConfig(cwd, { project, directory });
60
29
  console.log("Created kl.json");
61
30
  });
62
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAChB,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,2FAA2F,CAAC;gBACrG,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC;YAC5B,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,GAAG;SACb,CAAC,CAAC;QAEH,IAAI,IAAI,GAAkB,IAAI,CAAC;QAE/B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC;gBAElD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG;wBACd,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,EAAE;wBACzC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG;4BAC5C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;yBACnB,CAAC,CAAC;qBACJ,CAAC;oBAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;wBAC5B,OAAO,EAAE,MAAM;wBACf,OAAO;qBACR,CAAC,CAAC;oBACH,IAAI,QAAQ;wBAAE,IAAI,GAAG,QAAQ,CAAC;gBAChC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QAED,kBAAkB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAChB,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,2FAA2F,CAAC;gBACrG,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC;YAC5B,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,GAAG;SACb,CAAC,CAAC;QAEH,kBAAkB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C9D"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C9D"}