terse-cli 0.1.36 → 0.1.37

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 (86) hide show
  1. package/dist/api.d.ts.map +1 -1
  2. package/dist/api.js +9 -9
  3. package/dist/api.js.map +1 -1
  4. package/dist/assertProjectRoot.d.ts +1 -1
  5. package/dist/assertProjectRoot.d.ts.map +1 -1
  6. package/dist/assertProjectRoot.js +5 -4
  7. package/dist/assertProjectRoot.js.map +1 -1
  8. package/dist/cliError.d.ts +22 -0
  9. package/dist/cliError.d.ts.map +1 -0
  10. package/dist/cliError.js +67 -0
  11. package/dist/cliError.js.map +1 -0
  12. package/dist/cliHelpers.d.ts +20 -0
  13. package/dist/cliHelpers.d.ts.map +1 -0
  14. package/dist/cliHelpers.js +69 -0
  15. package/dist/cliHelpers.js.map +1 -0
  16. package/dist/commands/attach.d.ts +2 -1
  17. package/dist/commands/attach.d.ts.map +1 -1
  18. package/dist/commands/attach.js +7 -5
  19. package/dist/commands/attach.js.map +1 -1
  20. package/dist/commands/auth.d.ts +2 -1
  21. package/dist/commands/auth.d.ts.map +1 -1
  22. package/dist/commands/auth.js +20 -1
  23. package/dist/commands/auth.js.map +1 -1
  24. package/dist/commands/deploy.d.ts.map +1 -1
  25. package/dist/commands/deploy.js +14 -14
  26. package/dist/commands/deploy.js.map +1 -1
  27. package/dist/commands/generate.d.ts +1 -5
  28. package/dist/commands/generate.d.ts.map +1 -1
  29. package/dist/commands/generate.js +13 -16
  30. package/dist/commands/generate.js.map +1 -1
  31. package/dist/commands/history.d.ts +1 -1
  32. package/dist/commands/history.d.ts.map +1 -1
  33. package/dist/commands/history.js +4 -3
  34. package/dist/commands/history.js.map +1 -1
  35. package/dist/commands/init.d.ts +2 -1
  36. package/dist/commands/init.d.ts.map +1 -1
  37. package/dist/commands/init.js +11 -10
  38. package/dist/commands/init.js.map +1 -1
  39. package/dist/commands/integrate.d.ts +32 -2
  40. package/dist/commands/integrate.d.ts.map +1 -1
  41. package/dist/commands/integrate.js +228 -5
  42. package/dist/commands/integrate.js.map +1 -1
  43. package/dist/commands/replay.d.ts.map +1 -1
  44. package/dist/commands/replay.js +5 -6
  45. package/dist/commands/replay.js.map +1 -1
  46. package/dist/commands/run.d.ts.map +1 -1
  47. package/dist/commands/run.js +14 -17
  48. package/dist/commands/run.js.map +1 -1
  49. package/dist/commands/test.d.ts +47 -0
  50. package/dist/commands/test.d.ts.map +1 -1
  51. package/dist/commands/test.js +214 -58
  52. package/dist/commands/test.js.map +1 -1
  53. package/dist/index.js +161 -14
  54. package/dist/index.js.map +1 -1
  55. package/dist/loadJob.d.ts +2 -1
  56. package/dist/loadJob.d.ts.map +1 -1
  57. package/dist/loadJob.js +16 -13
  58. package/dist/loadJob.js.map +1 -1
  59. package/dist/nonInteractive.d.ts +20 -0
  60. package/dist/nonInteractive.d.ts.map +1 -0
  61. package/dist/nonInteractive.js +60 -0
  62. package/dist/nonInteractive.js.map +1 -0
  63. package/dist/projectConfig.d.ts.map +1 -1
  64. package/dist/projectConfig.js +17 -10
  65. package/dist/projectConfig.js.map +1 -1
  66. package/dist/providers/python/PythonProvider.d.ts.map +1 -1
  67. package/dist/providers/python/PythonProvider.js +24 -14
  68. package/dist/providers/python/PythonProvider.js.map +1 -1
  69. package/dist/providers/resolveProvider.d.ts.map +1 -1
  70. package/dist/providers/resolveProvider.js +7 -9
  71. package/dist/providers/resolveProvider.js.map +1 -1
  72. package/dist/providers/shared/entryFileGuidance.d.ts.map +1 -1
  73. package/dist/providers/shared/entryFileGuidance.js +7 -12
  74. package/dist/providers/shared/entryFileGuidance.js.map +1 -1
  75. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  76. package/dist/providers/typescript/TypeScriptProvider.js +30 -27
  77. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  78. package/dist/sampleEventCache.d.ts +9 -0
  79. package/dist/sampleEventCache.d.ts.map +1 -0
  80. package/dist/sampleEventCache.js +47 -0
  81. package/dist/sampleEventCache.js.map +1 -0
  82. package/dist/sampleEventId.d.ts +9 -0
  83. package/dist/sampleEventId.d.ts.map +1 -0
  84. package/dist/sampleEventId.js +16 -0
  85. package/dist/sampleEventId.js.map +1 -0
  86. package/package.json +2 -2
package/dist/loadJob.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { CreateJobParameters } from "terse-sdk";
2
+ import { type NonInteractiveOpts } from "./cliHelpers.js";
2
3
  import type { LanguageProvider } from "./providers/LanguageProvider.js";
3
4
  /**
4
5
  * Imports the user's entry file and returns the full job registry.
5
6
  * Each createJob() call populates this map.
6
7
  */
7
8
  export declare function loadJobRegistry(provider: LanguageProvider, entryFile?: string): Promise<Map<string, CreateJobParameters>>;
8
- export declare function loadJob(provider: LanguageProvider, jobName?: string, entryFile?: string): Promise<{
9
+ export declare function loadJob(provider: LanguageProvider, jobName?: string, entryFile?: string, opts?: NonInteractiveOpts): Promise<{
9
10
  job: CreateJobParameters;
10
11
  }>;
11
12
  //# sourceMappingURL=loadJob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadJob.d.ts","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAG/H;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAiCrI"}
1
+ {"version":3,"file":"loadJob.d.ts","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAI/C,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAG/H;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAkChK"}
package/dist/loadJob.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { select } from "@inquirer/prompts";
2
- import chalk from "chalk";
3
2
  import { assertProjectRoot } from "./assertProjectRoot.js";
3
+ import { CliError } from "./cliError.js";
4
+ import { isNonInteractive } from "./cliHelpers.js";
4
5
  /**
5
6
  * Imports the user's entry file and returns the full job registry.
6
7
  * Each createJob() call populates this map.
@@ -9,30 +10,32 @@ export async function loadJobRegistry(provider, entryFile) {
9
10
  assertProjectRoot(provider, provider.detectionMarkers);
10
11
  return provider.loadJobRegistry(entryFile);
11
12
  }
12
- export async function loadJob(provider, jobName, entryFile) {
13
+ export async function loadJob(provider, jobName, entryFile, opts) {
13
14
  const registry = await loadJobRegistry(provider, entryFile);
14
15
  if (registry.size === 0) {
15
- console.error(chalk.red("No jobs found."));
16
- console.log(`\nMake sure ${provider.entryFile} registers at least one job.`);
17
- console.log(`Check that your ${provider.detectionMarkers.requiredFiles.join(" and ")} are configured correctly.`);
18
- process.exit(1);
16
+ throw new CliError("no_jobs_found", "No jobs found.", {
17
+ detail: `Make sure ${provider.entryFile} registers at least one job.`
18
+ });
19
19
  }
20
- // Resolve which job to run
21
20
  let resolvedName;
22
21
  if (jobName) {
23
22
  if (!registry.has(jobName)) {
24
- console.error(chalk.red(`Job "${jobName}" not found.`));
25
- console.log("\nAvailable jobs:");
26
- for (const name of registry.keys()) {
27
- console.log(` - ${name}`);
28
- }
29
- process.exit(1);
23
+ const available = [...registry.keys()].join(", ");
24
+ throw new CliError("job_not_found", `Job "${jobName}" not found.`, {
25
+ detail: `Available jobs: ${available}`
26
+ });
30
27
  }
31
28
  resolvedName = jobName;
32
29
  }
33
30
  else if (registry.size === 1) {
34
31
  resolvedName = registry.keys().next().value;
35
32
  }
33
+ else if (isNonInteractive(opts)) {
34
+ const available = [...registry.keys()].join(", ");
35
+ throw new CliError("job_selection_required", "Multiple jobs found — specify which one to use.", {
36
+ detail: `Available jobs: ${available}. Pass the job name as an argument.`
37
+ });
38
+ }
36
39
  else {
37
40
  resolvedName = await select({
38
41
  message: "Multiple jobs found. Which one?",
@@ -1 +1 @@
1
- {"version":3,"file":"loadJob.js","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAA0B,EAAE,SAAkB;IAChF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACtD,OAAO,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAA0B,EAAE,OAAgB,EAAE,SAAkB;IAC1F,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE3D,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,SAAS,8BAA8B,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;QACjH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAoB,CAAA;IAExB,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,OAAO,cAAc,CAAC,CAAC,CAAA;YACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YAC9B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,YAAY,GAAG,OAAO,CAAA;IAC1B,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAA;IAChD,CAAC;SAAM,CAAC;QACJ,YAAY,GAAG,MAAM,MAAM,CAAS;YAChC,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACrE,CAAC,CAAA;IACN,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,EAAE,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"loadJob.js","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAA2B,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAG3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAA0B,EAAE,SAAkB;IAChF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACtD,OAAO,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAA0B,EAAE,OAAgB,EAAE,SAAkB,EAAE,IAAyB;IACrH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE3D,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,gBAAgB,EAAE;YAClD,MAAM,EAAE,aAAa,QAAQ,CAAC,SAAS,8BAA8B;SACxE,CAAC,CAAA;IACN,CAAC;IAED,IAAI,YAAoB,CAAA;IAExB,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjD,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,QAAQ,OAAO,cAAc,EAAE;gBAC/D,MAAM,EAAE,mBAAmB,SAAS,EAAE;aACzC,CAAC,CAAA;QACN,CAAC;QACD,YAAY,GAAG,OAAO,CAAA;IAC1B,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAA;IAChD,CAAC;SAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjD,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,iDAAiD,EAAE;YAC5F,MAAM,EAAE,mBAAmB,SAAS,qCAAqC;SAC5E,CAAC,CAAA;IACN,CAAC;SAAM,CAAC;QACJ,YAAY,GAAG,MAAM,MAAM,CAAS;YAChC,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACrE,CAAC,CAAA;IACN,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,EAAE,CAAA;AAC/C,CAAC"}
@@ -0,0 +1,20 @@
1
+ export type NonInteractiveOpts = {
2
+ nonInteractive?: boolean;
3
+ };
4
+ /**
5
+ * True when the CLI should avoid any interactive prompt. Honors the explicit
6
+ * flag first, falls back to TTY detection so subprocess / piped invocations
7
+ * behave non-interactively without the caller needing to pass `--non-interactive`.
8
+ */
9
+ export declare function isNonInteractive(opts?: NonInteractiveOpts): boolean;
10
+ /**
11
+ * Supports parsing a series of key=value flags from the CLI.
12
+ */
13
+ export declare function parseKeyValueFlags(values: string[] | undefined): Record<string, string>;
14
+ /**
15
+ * Read a JSON object from stdin and return it as a string map. Used by
16
+ * `terse integrate connect --fields-stdin` so passwords and tokens never touch
17
+ * argv.
18
+ */
19
+ export declare function readFieldsFromStdin(): Promise<Record<string, string>>;
20
+ //# sourceMappingURL=nonInteractive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonInteractive.d.ts","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUvF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B3E"}
@@ -0,0 +1,60 @@
1
+ import { CliError } from "./cliError.js";
2
+ /**
3
+ * True when the CLI should avoid any interactive prompt. Honors the explicit
4
+ * flag first, falls back to TTY detection so subprocess / piped invocations
5
+ * behave non-interactively without the caller needing to pass `--non-interactive`.
6
+ */
7
+ export function isNonInteractive(opts) {
8
+ if (opts?.nonInteractive)
9
+ return true;
10
+ return !process.stdin.isTTY || !process.stdout.isTTY;
11
+ }
12
+ /**
13
+ * Supports parsing a series of key=value flags from the CLI.
14
+ */
15
+ export function parseKeyValueFlags(values) {
16
+ const out = {};
17
+ for (const raw of values ?? []) {
18
+ const eq = raw.indexOf("=");
19
+ if (eq <= 0) {
20
+ throw new CliError("invalid_field", `Invalid --field value "${raw}"`, { detail: "Expected key=value" });
21
+ }
22
+ out[raw.slice(0, eq)] = raw.slice(eq + 1);
23
+ }
24
+ return out;
25
+ }
26
+ /**
27
+ * Read a JSON object from stdin and return it as a string map. Used by
28
+ * `terse integrate connect --fields-stdin` so passwords and tokens never touch
29
+ * argv.
30
+ */
31
+ export async function readFieldsFromStdin() {
32
+ const chunks = [];
33
+ for await (const chunk of process.stdin) {
34
+ chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
35
+ }
36
+ const raw = Buffer.concat(chunks).toString("utf-8").trim();
37
+ if (!raw)
38
+ return {};
39
+ let parsed;
40
+ try {
41
+ parsed = JSON.parse(raw);
42
+ }
43
+ catch (err) {
44
+ throw new CliError("invalid_fields_stdin", "Could not parse JSON from stdin", {
45
+ detail: err instanceof Error ? err.message : String(err)
46
+ });
47
+ }
48
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
49
+ throw new CliError("invalid_fields_stdin", "Expected a JSON object on stdin", { detail: 'Example: {"password":"..."}' });
50
+ }
51
+ const out = {};
52
+ for (const [k, v] of Object.entries(parsed)) {
53
+ if (typeof v !== "string") {
54
+ throw new CliError("invalid_fields_stdin", `Field "${k}" must be a string`);
55
+ }
56
+ out[k] = v;
57
+ }
58
+ return out;
59
+ }
60
+ //# sourceMappingURL=nonInteractive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonInteractive.js","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACtD,IAAI,IAAI,EAAE,cAAc;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAC3D,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,0BAA0B,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE;YAC1E,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC3D,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAA;IAC5H,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;QAC/E,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIrD,eAAO,MAAM,uBAAuB,sBAAsB,CAAA;AAE1D,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAErE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,GAAG,IAAI,CAaxF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CASvF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAIhF;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAInG"}
1
+ {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAKrD,eAAO,MAAM,uBAAuB,sBAAsB,CAAA;AAE1D,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAErE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,GAAG,IAAI,CAsBxF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CAOvF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAIhF;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAInG"}
@@ -1,8 +1,8 @@
1
- import chalk from "chalk";
2
1
  import fs from "node:fs";
3
2
  import path from "node:path";
4
3
  import { ApiRoutes, sdkCreateProjectResponseBodySchema, terseProjectConfigSchema } from "terse-types";
5
4
  import { fetchWithAuth } from "./api.js";
5
+ import { CliError } from "./cliError.js";
6
6
  export const PROJECT_CONFIG_FILENAME = "terse.config.json";
7
7
  export function projectConfigPath(cwd = process.cwd()) {
8
8
  return path.join(cwd, PROJECT_CONFIG_FILENAME);
@@ -12,11 +12,20 @@ export function readProjectConfig(cwd = process.cwd()) {
12
12
  if (!fs.existsSync(filePath))
13
13
  return null;
14
14
  const raw = fs.readFileSync(filePath, "utf8");
15
- const parsed = terseProjectConfigSchema.safeParse(JSON.parse(raw));
15
+ let parsedJson;
16
+ try {
17
+ parsedJson = JSON.parse(raw);
18
+ }
19
+ catch (error) {
20
+ throw new CliError("project_config_malformed", `${PROJECT_CONFIG_FILENAME} is malformed.`, {
21
+ detail: error instanceof Error ? error.message : String(error)
22
+ });
23
+ }
24
+ const parsed = terseProjectConfigSchema.safeParse(parsedJson);
16
25
  if (!parsed.success) {
17
- console.error(chalk.red(`Error: ${PROJECT_CONFIG_FILENAME} is malformed.`));
18
- console.error(chalk.dim(parsed.error.issues.map(issue => ` - ${issue.path.join(".") || "(root)"}: ${issue.message}`).join("\n")));
19
- process.exit(1);
26
+ throw new CliError("project_config_malformed", `${PROJECT_CONFIG_FILENAME} is malformed.`, {
27
+ detail: parsed.error.issues.map(issue => `${issue.path.join(".") || "(root)"}: ${issue.message}`).join("\n")
28
+ });
20
29
  }
21
30
  return parsed.data;
22
31
  }
@@ -24,11 +33,9 @@ export function readProjectConfigOrBail(cwd = process.cwd()) {
24
33
  const config = readProjectConfig(cwd);
25
34
  if (config)
26
35
  return config;
27
- console.error(chalk.red(`\n Error: No ${PROJECT_CONFIG_FILENAME} found in ${cwd}.`));
28
- console.error(chalk.dim(` This project isn't linked to a Terse project yet.\n`));
29
- console.error(` For a new project, run ${chalk.cyan("terse init")}.`);
30
- console.error(` For an existing repo, run ${chalk.cyan("terse attach")}.\n`);
31
- process.exit(1);
36
+ throw new CliError("project_not_attached", `No ${PROJECT_CONFIG_FILENAME} found in ${cwd}.`, {
37
+ detail: `This project isn't linked to a Terse project yet.\n\nFor a new project, run \`terse init\`.\nFor an existing repo, run \`terse attach\`.`
38
+ });
32
39
  }
33
40
  export function writeProjectConfig(cwd, config) {
34
41
  const filePath = projectConfigPath(cwd);
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PythonProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,WAAW,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AA+BtD,qBAAa,cAAe,YAAW,gBAAgB;IACnD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAS;IACrC,QAAQ,CAAC,WAAW,YAAW;IAC/B,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,iBAAgB;IAClC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO1F,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD,oBAAoB,IAAI,MAAM;IAIxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAM1C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA0C9E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCzJ,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU;cAexC,aAAa,CACzB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;QACF,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAC1B,GACF,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;cAI9B,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;cAI3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,SAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5D,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAG7D;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
1
+ {"version":3,"file":"PythonProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,WAAW,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AA+BtD,qBAAa,cAAe,YAAW,gBAAgB;IACnD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAS;IACrC,QAAQ,CAAC,WAAW,YAAW;IAC/B,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,iBAAgB;IAClC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO1F,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD,oBAAoB,IAAI,MAAM;IAIxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAM1C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA+C9E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCzJ,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU;cAexC,aAAa,CACzB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;QACF,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAC1B,GACF,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;cAI9B,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;cAI3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,SAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5D,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAG7D;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
@@ -4,6 +4,7 @@ import fs from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { readApiKey } from "../../api.js";
7
+ import { CliError } from "../../cliError.js";
7
8
  import { printMissingEntryFileGuidance } from "../shared/entryFileGuidance.js";
8
9
  import { openSessionStream, promptForToolApproval, submitApprovalDecision } from "../shared/sessionStream.js";
9
10
  import { ensureUvAvailable, execUv, loadDotenv, withTempScript } from "../shared/shellUtils.js";
@@ -86,16 +87,20 @@ export class PythonProvider {
86
87
  registry.set(name, createJobParametersFromPython(data));
87
88
  }
88
89
  if (registry.size === 0) {
89
- console.error(chalk.red(`No jobs found. Make sure your ${resolvedEntryFile} registers at least one job with @app.job(...).`));
90
- process.exit(1);
90
+ throw new CliError("no_jobs_found", "No jobs found.", {
91
+ detail: `Make sure your ${resolvedEntryFile} registers at least one job with @app.job(...).`
92
+ });
91
93
  }
92
94
  return registry;
93
95
  });
94
96
  }
95
97
  catch (error) {
96
- console.error(chalk.red(`Error importing ${resolvedEntryFile}:\n`));
97
- printPythonCommandError(error);
98
- process.exit(1);
98
+ if (error instanceof CliError) {
99
+ throw error;
100
+ }
101
+ throw new CliError("entry_import_failed", `Could not import ${resolvedEntryFile}.`, {
102
+ detail: formatPythonCommandErrorDetail(error)
103
+ });
99
104
  }
100
105
  }
101
106
  async executeJob(job, runId, event, opts) {
@@ -128,9 +133,9 @@ export class PythonProvider {
128
133
  });
129
134
  }
130
135
  catch (error) {
131
- console.error(chalk.red(`\n Job "${job.name}" failed.\n`));
132
- printPythonCommandError(error);
133
- process.exit(1);
136
+ throw new CliError("job_execution_failed", `Job "${job.name}" failed.`, {
137
+ detail: formatPythonCommandErrorDetail(error)
138
+ });
134
139
  }
135
140
  finally {
136
141
  closeSession?.();
@@ -386,18 +391,23 @@ function validatePythonSyntax(code) {
386
391
  }
387
392
  }
388
393
  }
389
- function printPythonCommandError(error) {
394
+ function formatPythonCommandErrorDetail(error) {
390
395
  if (error instanceof Error) {
391
- console.error(error.message);
396
+ const parts = [error.message];
392
397
  const stderr = error.stderr;
393
398
  if (typeof stderr === "string" && stderr.trim()) {
394
- console.error(stderr.trim());
399
+ if (stderr.trim() !== error.message.trim()) {
400
+ parts.push(stderr.trim());
401
+ }
395
402
  }
396
403
  else if (Buffer.isBuffer(stderr) && stderr.toString().trim()) {
397
- console.error(stderr.toString().trim());
404
+ const stderrText = stderr.toString().trim();
405
+ if (stderrText !== error.message.trim()) {
406
+ parts.push(stderrText);
407
+ }
398
408
  }
399
- return;
409
+ return parts.join("\n");
400
410
  }
401
- console.error(String(error));
411
+ return String(error);
402
412
  }
403
413
  //# sourceMappingURL=PythonProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PythonProvider.js","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PythonProvider.js","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveProvider.d.ts","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAa7D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAoB9G;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAc5E"}
1
+ {"version":3,"file":"resolveProvider.d.ts","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAa7D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAmB9G;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAY5E"}
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { CliError } from "../cliError.js";
3
4
  import { pythonProvider } from "./python/PythonProvider.js";
4
5
  import { typeScriptProvider } from "./typescript/TypeScriptProvider.js";
5
6
  const PROVIDERS = [typeScriptProvider, pythonProvider];
@@ -19,23 +20,20 @@ export function resolveProvider(opts) {
19
20
  return matches[0];
20
21
  }
21
22
  if (matches.length > 1) {
22
- console.error("Error: Multiple Terse project setups detected in the current directory.");
23
- process.exit(1);
23
+ throw new CliError("multiple_project_setups", "Multiple Terse project setups detected in the current directory.");
24
24
  }
25
- console.error("Error: Could not detect a supported Terse project in the current directory.");
26
- console.error(" Expected TypeScript project markers: package.json, src/index.ts");
27
- process.exit(1);
25
+ throw new CliError("unsupported_project", "Could not detect a supported Terse project in the current directory.", {
26
+ detail: "Expected TypeScript project markers: package.json, src/index.ts"
27
+ });
28
28
  }
29
29
  export function resolveProviderByLanguage(language) {
30
30
  const normalized = LANGUAGE_ALIASES[language.toLowerCase()];
31
31
  if (!normalized) {
32
- console.error(`Error: Unsupported init target "${language}". Use ts or typescript.`);
33
- process.exit(1);
32
+ throw new CliError("unsupported_init_language", `Unsupported init target "${language}". Use ts or typescript.`);
34
33
  }
35
34
  const provider = PROVIDERS.find(candidate => candidate.language === normalized);
36
35
  if (!provider) {
37
- console.error(`Error: No provider registered for "${normalized}".`);
38
- process.exit(1);
36
+ throw new CliError("provider_not_registered", `No provider registered for "${normalized}".`);
39
37
  }
40
38
  return provider;
41
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolveProvider.js","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAEvE,MAAM,SAAS,GAAuB,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;AAE1E,MAAM,gBAAgB,GAAiD;IACnE,EAAE,EAAE,YAAY;IAChB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;CACnB,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,IAA4D;IACxF,IAAI,IAAI,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAA;IAC5F,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,QAAQ,0BAA0B,CAAC,CAAA;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;IAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,IAAI,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA0B,EAAE,GAAW;IAClE,OAAO,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACrH,CAAC"}
1
+ {"version":3,"file":"resolveProvider.js","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAEvE,MAAM,SAAS,GAAuB,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;AAE1E,MAAM,gBAAgB,GAAiD;IACnE,EAAE,EAAE,YAAY;IAChB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;CACnB,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,IAA4D;IACxF,IAAI,IAAI,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,kEAAkE,CAAC,CAAA;IACrH,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,sEAAsE,EAAE;QAC9G,MAAM,EAAE,iEAAiE;KAC5E,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,4BAA4B,QAAQ,0BAA0B,CAAC,CAAA;IACnH,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;IAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,+BAA+B,UAAU,IAAI,CAAC,CAAA;IAChG,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA0B,EAAE,GAAW;IAClE,OAAO,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACrH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"entryFileGuidance.d.ts","sourceRoot":"","sources":["../../../src/providers/shared/entryFileGuidance.ts"],"names":[],"mappings":"AAEA,KAAK,+BAA+B,GAAG;IACnC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,+BAA+B,GAAG,KAAK,CAiB7F"}
1
+ {"version":3,"file":"entryFileGuidance.d.ts","sourceRoot":"","sources":["../../../src/providers/shared/entryFileGuidance.ts"],"names":[],"mappings":"AAEA,KAAK,+BAA+B,GAAG;IACnC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,+BAA+B,GAAG,KAAK,CAa7F"}
@@ -1,19 +1,14 @@
1
- import chalk from "chalk";
1
+ import { CliError } from "../../cliError.js";
2
2
  export function printMissingEntryFileGuidance(options) {
3
3
  const requestedEntryFile = options.requestedEntryFile ?? options.defaultEntryFile;
4
4
  const isDefaultEntry = requestedEntryFile === options.defaultEntryFile;
5
5
  if (isDefaultEntry) {
6
- console.error(chalk.red(`Error: Could not find the default ${options.languageDisplayName} Terse entry file at ${options.defaultEntryFile}.`));
7
- console.error(chalk.dim(options.createHint));
8
- console.error(chalk.dim("If your self-hosted or custom layout registers jobs elsewhere, rerun with --entry-file:"));
6
+ throw new CliError(`entry_file_not_found`, `Could not find the default ${options.languageDisplayName} Terse entry file at ${options.defaultEntryFile}.`, {
7
+ detail: `${options.createHint}\nIf your self-hosted or custom layout registers jobs elsewhere, rerun with --entry-file:\n terse test --entry-file ${options.overrideExample}\n terse deploy --entry-file ${options.overrideExample}`
8
+ });
9
9
  }
10
- else {
11
- console.error(chalk.red(`Error: Could not find the specified entry file at ${requestedEntryFile}.`));
12
- console.error(chalk.dim(`The default ${options.languageDisplayName} Terse entry file is ${options.defaultEntryFile}.`));
13
- console.error(chalk.dim("Use a valid --entry-file path, or move your jobs to the default entry file."));
14
- }
15
- console.error(chalk.dim(` terse test --entry-file ${options.overrideExample}`));
16
- console.error(chalk.dim(` terse deploy --entry-file ${options.overrideExample}`));
17
- process.exit(1);
10
+ throw new CliError("entry_file_not_found", `Could not find the specified entry file at ${requestedEntryFile}.`, {
11
+ detail: `The default ${options.languageDisplayName} Terse entry file is ${options.defaultEntryFile}.\nUse a valid --entry-file path, or move your jobs to the default entry file.\n terse test --entry-file ${options.overrideExample}\n terse deploy --entry-file ${options.overrideExample}`
12
+ });
18
13
  }
19
14
  //# sourceMappingURL=entryFileGuidance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entryFileGuidance.js","sourceRoot":"","sources":["../../../src/providers/shared/entryFileGuidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,UAAU,6BAA6B,CAAC,OAAwC;IAClF,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAA;IACjF,MAAM,cAAc,GAAG,kBAAkB,KAAK,OAAO,CAAC,gBAAgB,CAAA;IAEtE,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,mBAAmB,wBAAwB,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;QAC7I,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAA;IACvH,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,kBAAkB,GAAG,CAAC,CAAC,CAAA;QACpG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,mBAAmB,wBAAwB,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;QACvH,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IAChF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"entryFileGuidance.js","sourceRoot":"","sources":["../../../src/providers/shared/entryFileGuidance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAU5C,MAAM,UAAU,6BAA6B,CAAC,OAAwC;IAClF,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAA;IACjF,MAAM,cAAc,GAAG,kBAAkB,KAAK,OAAO,CAAC,gBAAgB,CAAA;IAEtE,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,OAAO,CAAC,mBAAmB,wBAAwB,OAAO,CAAC,gBAAgB,GAAG,EAAE;YACrJ,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,wHAAwH,OAAO,CAAC,eAAe,iCAAiC,OAAO,CAAC,eAAe,EAAE;SACzO,CAAC,CAAA;IACN,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,8CAA8C,kBAAkB,GAAG,EAAE;QAC5G,MAAM,EAAE,eAAe,OAAO,CAAC,mBAAmB,wBAAwB,OAAO,CAAC,gBAAgB,6GAA6G,OAAO,CAAC,eAAe,iCAAiC,OAAO,CAAC,eAAe,EAAE;KACnS,CAAC,CAAA;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TypeScriptProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAStD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAS;IACzC,QAAQ,CAAC,WAAW,gBAAe;IACnC,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,uBAAsB;IACxC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1F,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD,oBAAoB,IAAI,MAAM;IASxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAI1C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAuD9E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC5J;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAA"}
1
+ {"version":3,"file":"TypeScriptProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAMlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAStD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAS;IACzC,QAAQ,CAAC,WAAW,gBAAe;IACnC,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,uBAAsB;IACxC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1F,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD,oBAAoB,IAAI,MAAM;IASxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAI1C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAiD9E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC5J;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAA"}
@@ -6,7 +6,8 @@ import { pathToFileURL } from "node:url";
6
6
  import { promisify } from "node:util";
7
7
  import { __resetRegisteredTerseInstances, createSDKTrigger, fetchRegisteredJobs, runWithJobContext } from "terse-sdk";
8
8
  import { tsImport } from "tsx/esm/api";
9
- import { readApiKey } from "../../api.js";
9
+ import { readApiKeyOrBail } from "../../api.js";
10
+ import { CliError } from "../../cliError.js";
10
11
  import { BACKEND_URL } from "../../config.js";
11
12
  import { printMissingEntryFileGuidance } from "../shared/entryFileGuidance.js";
12
13
  import { openSessionStream } from "../shared/sessionStream.js";
@@ -90,39 +91,29 @@ export class TypeScriptProvider {
90
91
  catch (error) {
91
92
  if (isModuleNotFoundError(error)) {
92
93
  const missingPackage = extractMissingPackage(error);
93
- console.error(chalk.red(`Error: Cannot find package '${missingPackage}' imported from ${resolvedEntryFile}`));
94
- if (missingPackage === "terse-sdk") {
95
- console.error(chalk.dim("\nMake sure terse-sdk is installed in your project:"));
96
- console.error(chalk.dim(" npm install terse-sdk"));
97
- console.error(chalk.dim(" # or, for local SDK development"));
98
- console.error(chalk.dim(" npm link terse-sdk"));
99
- }
100
- else {
101
- console.error(chalk.dim(`\nInstall the missing package: npm install ${missingPackage}`));
102
- }
103
- }
104
- else {
105
- console.error(chalk.red(`Error importing ${resolvedEntryFile}:\n`));
106
- console.error(error);
94
+ throw new CliError("entry_missing_dependency", `Cannot find package '${missingPackage}' imported from ${resolvedEntryFile}.`, {
95
+ detail: formatMissingDependencyDetail(missingPackage)
96
+ });
107
97
  }
108
- process.exit(1);
98
+ throw new CliError("entry_import_failed", `Could not import ${resolvedEntryFile}.`, {
99
+ detail: formatErrorDetail(error)
100
+ });
109
101
  }
110
102
  const registry = fetchRegisteredJobs();
111
103
  if (registry.size === 0) {
112
- console.error(chalk.red(`No jobs found after importing ${resolvedEntryFile}.`));
113
- console.error(chalk.dim("Make sure you call `createJob()` on a Terse instance."));
114
- process.exit(1);
104
+ throw new CliError("no_jobs_found", `No jobs found after importing ${resolvedEntryFile}.`, {
105
+ detail: "Make sure you call `createJob()` on a Terse instance."
106
+ });
115
107
  }
116
108
  return registry;
117
109
  }
118
110
  async executeJob(job, runId, event, opts) {
119
111
  const isVerbose = opts?.verbose ?? false;
120
112
  const serializedEventRuntime = createSDKTrigger(event);
121
- const apiKey = readApiKey();
122
- if (!apiKey) {
123
- console.error(chalk.red("TERSE_API_KEY is not set. Please set it in your environment variables."));
124
- process.exit(1);
125
- }
113
+ const apiKey = readApiKeyOrBail({
114
+ title: "TERSE_API_KEY is not set.",
115
+ detail: "Please set it in your environment variables."
116
+ });
126
117
  const session = await openSessionStream(apiKey, {
127
118
  verbose: true,
128
119
  isPaused: () => sessionPaused
@@ -143,9 +134,9 @@ export class TypeScriptProvider {
143
134
  await job.onTrigger(serializedEventRuntime);
144
135
  }
145
136
  catch (error) {
146
- console.error(chalk.red(`\n Job "${job.name}" threw an error:\n`));
147
- console.error(error);
148
- process.exit(1);
137
+ throw new CliError("job_execution_failed", `Job "${job.name}" threw an error.`, {
138
+ detail: formatErrorDetail(error)
139
+ });
149
140
  }
150
141
  finally {
151
142
  closeSession?.();
@@ -162,6 +153,18 @@ function extractMissingPackage(error) {
162
153
  const match = error.message.match(/Cannot find package '([^']+)'/);
163
154
  return match?.[1] ?? "unknown";
164
155
  }
156
+ function formatMissingDependencyDetail(missingPackage) {
157
+ if (missingPackage === "terse-sdk") {
158
+ return "Make sure terse-sdk is installed in your project:\n npm install terse-sdk\n # or, for local SDK development\n npm link terse-sdk";
159
+ }
160
+ return `Install the missing package: npm install ${missingPackage}`;
161
+ }
162
+ function formatErrorDetail(error) {
163
+ if (error instanceof Error) {
164
+ return error.message;
165
+ }
166
+ return String(error);
167
+ }
165
168
  function resolveTypeScriptEntryFile(cwd) {
166
169
  for (const candidate of ["src/terse.jobs.ts", "src/index.ts"]) {
167
170
  if (fs.existsSync(path.join(cwd, candidate))) {