terse-cli 0.1.35 → 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 (92) hide show
  1. package/README.md +1 -1
  2. package/dist/api.d.ts +1 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +10 -10
  5. package/dist/api.js.map +1 -1
  6. package/dist/assertProjectRoot.d.ts +1 -1
  7. package/dist/assertProjectRoot.d.ts.map +1 -1
  8. package/dist/assertProjectRoot.js +5 -4
  9. package/dist/assertProjectRoot.js.map +1 -1
  10. package/dist/cliError.d.ts +22 -0
  11. package/dist/cliError.d.ts.map +1 -0
  12. package/dist/cliError.js +67 -0
  13. package/dist/cliError.js.map +1 -0
  14. package/dist/cliHelpers.d.ts +20 -0
  15. package/dist/cliHelpers.d.ts.map +1 -0
  16. package/dist/cliHelpers.js +69 -0
  17. package/dist/cliHelpers.js.map +1 -0
  18. package/dist/commands/attach.d.ts +2 -1
  19. package/dist/commands/attach.d.ts.map +1 -1
  20. package/dist/commands/attach.js +7 -5
  21. package/dist/commands/attach.js.map +1 -1
  22. package/dist/commands/auth.d.ts +2 -1
  23. package/dist/commands/auth.d.ts.map +1 -1
  24. package/dist/commands/auth.js +20 -1
  25. package/dist/commands/auth.js.map +1 -1
  26. package/dist/commands/deploy.d.ts.map +1 -1
  27. package/dist/commands/deploy.js +14 -14
  28. package/dist/commands/deploy.js.map +1 -1
  29. package/dist/commands/generate.d.ts +1 -5
  30. package/dist/commands/generate.d.ts.map +1 -1
  31. package/dist/commands/generate.js +13 -16
  32. package/dist/commands/generate.js.map +1 -1
  33. package/dist/commands/history.d.ts +1 -1
  34. package/dist/commands/history.d.ts.map +1 -1
  35. package/dist/commands/history.js +4 -3
  36. package/dist/commands/history.js.map +1 -1
  37. package/dist/commands/init.d.ts +2 -1
  38. package/dist/commands/init.d.ts.map +1 -1
  39. package/dist/commands/init.js +11 -10
  40. package/dist/commands/init.js.map +1 -1
  41. package/dist/commands/integrate.d.ts +32 -2
  42. package/dist/commands/integrate.d.ts.map +1 -1
  43. package/dist/commands/integrate.js +424 -64
  44. package/dist/commands/integrate.js.map +1 -1
  45. package/dist/commands/replay.d.ts.map +1 -1
  46. package/dist/commands/replay.js +5 -6
  47. package/dist/commands/replay.js.map +1 -1
  48. package/dist/commands/run.d.ts.map +1 -1
  49. package/dist/commands/run.js +14 -17
  50. package/dist/commands/run.js.map +1 -1
  51. package/dist/commands/test.d.ts +47 -0
  52. package/dist/commands/test.d.ts.map +1 -1
  53. package/dist/commands/test.js +268 -48
  54. package/dist/commands/test.js.map +1 -1
  55. package/dist/index.js +161 -14
  56. package/dist/index.js.map +1 -1
  57. package/dist/integrationApi.d.ts +5 -2
  58. package/dist/integrationApi.d.ts.map +1 -1
  59. package/dist/integrationApi.js +8 -4
  60. package/dist/integrationApi.js.map +1 -1
  61. package/dist/loadJob.d.ts +2 -1
  62. package/dist/loadJob.d.ts.map +1 -1
  63. package/dist/loadJob.js +16 -13
  64. package/dist/loadJob.js.map +1 -1
  65. package/dist/nonInteractive.d.ts +20 -0
  66. package/dist/nonInteractive.d.ts.map +1 -0
  67. package/dist/nonInteractive.js +60 -0
  68. package/dist/nonInteractive.js.map +1 -0
  69. package/dist/projectConfig.d.ts.map +1 -1
  70. package/dist/projectConfig.js +17 -10
  71. package/dist/projectConfig.js.map +1 -1
  72. package/dist/providers/python/PythonProvider.d.ts.map +1 -1
  73. package/dist/providers/python/PythonProvider.js +24 -14
  74. package/dist/providers/python/PythonProvider.js.map +1 -1
  75. package/dist/providers/resolveProvider.d.ts.map +1 -1
  76. package/dist/providers/resolveProvider.js +7 -9
  77. package/dist/providers/resolveProvider.js.map +1 -1
  78. package/dist/providers/shared/entryFileGuidance.d.ts.map +1 -1
  79. package/dist/providers/shared/entryFileGuidance.js +7 -12
  80. package/dist/providers/shared/entryFileGuidance.js.map +1 -1
  81. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  82. package/dist/providers/typescript/TypeScriptProvider.js +30 -27
  83. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  84. package/dist/sampleEventCache.d.ts +9 -0
  85. package/dist/sampleEventCache.d.ts.map +1 -0
  86. package/dist/sampleEventCache.js +47 -0
  87. package/dist/sampleEventCache.js.map +1 -0
  88. package/dist/sampleEventId.d.ts +9 -0
  89. package/dist/sampleEventId.d.ts.map +1 -0
  90. package/dist/sampleEventId.js +16 -0
  91. package/dist/sampleEventId.js.map +1 -0
  92. package/package.json +3 -3
package/README.md CHANGED
@@ -35,7 +35,7 @@ Generate TypeScript types for your connected integrations (creates `terse.genera
35
35
 
36
36
  ### `terse integrate`
37
37
 
38
- Open the integrations page in the Terse Web UI to connect services like GitHub, Slack, Linear, etc.
38
+ Manage integrations from the CLI, including connect, switch, disconnect, and permission refresh flows.
39
39
 
40
40
  ### `terse test [job-name]`
41
41
 
package/dist/api.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare function readApiKeyOrBail(options?: {
14
14
  detail?: string;
15
15
  }): string;
16
16
  export declare function readRunId(): string | null;
17
- type AuthenticatedRequestMethod = "GET" | "POST";
17
+ type AuthenticatedRequestMethod = "GET" | "POST" | "DELETE";
18
18
  export declare function fetchWithAuthAndSession<T>(urlPath: string, apiKey: string, sessionId: string, params?: Record<string, unknown>, type?: AuthenticatedRequestMethod): Promise<T>;
19
19
  export declare function fetchWithAuth<T>(urlPath: string, apiKey: string, params?: Record<string, unknown>, type?: AuthenticatedRequestMethod): Promise<T>;
20
20
  export declare function resolveAgentIdByJobName(jobName: string, apiKey: string): Promise<string | null>;
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,0BAA0B,EAAmB,MAAM,aAAa,CAAA;AAKhK,iIAAiI;AACjI,qBAAa,QAAS,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAD7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAK7C;AAaD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK1E;AAED,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAa1C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAWtF;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED,KAAK,0BAA0B,GAAG,KAAK,GAAG,MAAM,CAAA;AA+BhD,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,IAAI,GAAE,0BAAkC,GAAG,OAAO,CAAC,CAAC,CAAC,CAc/L;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,IAAI,GAAE,0BAAkC,GAAG,OAAO,CAAC,CAAC,CAAC,CAclK;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKrG;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAavI;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,uBAAuB,EAAE,OAAO,CAAA;CACnC,CAAA;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAEhG;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAajI"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,0BAA0B,EAAmB,MAAM,aAAa,CAAA;AAMhK,iIAAiI;AACjI,qBAAa,QAAS,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAD7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAK7C;AAaD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK1E;AAED,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAa1C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAStF;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED,KAAK,0BAA0B,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;AA+B3D,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,IAAI,GAAE,0BAAkC,GAAG,OAAO,CAAC,CAAC,CAAC,CAc/L;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,IAAI,GAAE,0BAAkC,GAAG,OAAO,CAAC,CAAC,CAAC,CAclK;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKrG;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAavI;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,uBAAuB,EAAE,OAAO,CAAA;CACnC,CAAA;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAEhG;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAajI"}
package/dist/api.js CHANGED
@@ -1,8 +1,8 @@
1
- import chalk from "chalk";
2
1
  import dotenv from "dotenv";
3
2
  import fs from "node:fs";
4
3
  import path from "node:path";
5
4
  import { ApiRoutes, buildRoute, sdkRunTriggerEventResponseSchema } from "terse-types";
5
+ import { CliError, ErrorCode } from "./cliError.js";
6
6
  import { BACKEND_URL } from "./config.js";
7
7
  import { getStoredApiKey } from "./userConfig.js";
8
8
  /** Thrown by `fetchWithAuth` on any non-2xx. Exposes `status` and the parsed body so callers can branch on specific failures. */
@@ -56,11 +56,11 @@ export function readApiKeyOrBail(options) {
56
56
  const apiKey = readApiKey();
57
57
  if (apiKey)
58
58
  return apiKey;
59
- console.error(options?.title ? chalk.red(options.title) : chalk.red("\n Not authenticated. Run `terse login` first.\n"));
60
- if (options?.detail) {
61
- console.error(chalk.dim(options.detail));
62
- }
63
- process.exit(1);
59
+ throw new CliError("not_authenticated", options?.title?.trim() || "Not authenticated. Run `terse login` first.", {
60
+ detail: options?.detail?.trim() || "Run `terse login` to authenticate, or set TERSE_API_KEY in your environment.",
61
+ actionRequired: true,
62
+ exitCode: ErrorCode.BAD_ARGUMENTS
63
+ });
64
64
  }
65
65
  export function readRunId() {
66
66
  return readEnvVar("TERSE_RUN_ID");
@@ -76,7 +76,7 @@ async function fetchRawWithAuth(urlPath, apiKey, options = {}) {
76
76
  "Content-Type": "application/json",
77
77
  ...(sessionId ? { "x-terse-session-id": sessionId } : {})
78
78
  },
79
- body: type === "POST" ? JSON.stringify(params) : undefined
79
+ body: type === "GET" || type === "DELETE" ? undefined : JSON.stringify(params)
80
80
  });
81
81
  }
82
82
  catch (err) {
@@ -145,9 +145,9 @@ export async function resolveEventFromRunId(runId, apiKey) {
145
145
  return sdkRunTriggerEventResponseSchema.parse(response);
146
146
  }
147
147
  catch (error) {
148
- console.error(chalk.red(`Error: Could not fetch the trigger event for run ${runId}.`));
149
- console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
150
- process.exit(1);
148
+ throw new CliError("run_trigger_event_fetch_failed", `Could not fetch the trigger event for run ${runId}.`, {
149
+ detail: error instanceof Error ? error.message : String(error)
150
+ });
151
151
  }
152
152
  }
153
153
  //# sourceMappingURL=api.js.map
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAGrF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,iIAAiI;AACjI,MAAM,OAAO,QAAS,SAAQ,KAAK;IAElB;IACA;IAFb,YACa,MAAc,EACd,IAA6B;QAEtC,KAAK,CAAC,QAAQ,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAHtD,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAyB;QAGtC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IAC1B,CAAC;CACJ;AAED,IAAI,eAAe,GAAkB,IAAI,CAAA;AAEzC,SAAS,kBAAkB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,IAAI,eAAe,KAAK,GAAG;QAAE,OAAM;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IACD,eAAe,GAAG,GAAG,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,kBAAkB,EAAE,CAAA;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,kBAAkB,EAAE,CAAA;IAEpB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;IAChD,IAAI,cAAc;QAAE,OAAO,cAAc,CAAA;IAEzC,MAAM,cAAc,GAAG,eAAe,EAAE,CAAA;IACxC,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAA;QAC1C,OAAO,cAAc,CAAA;IACzB,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,OAAO,iBAAiB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA6C;IAC1E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;IAEzH,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAA;AACrC,CAAC;AAID,KAAK,UAAU,gBAAgB,CAC3B,OAAe,EACf,MAAc,EACd,UAII,EAAE;IAEN,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAExD,IAAI,GAAa,CAAA;IACjB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,OAAO,EAAE,EAAE;YAC1C,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D;YACD,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7D,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACtG,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAI,OAAe,EAAE,MAAc,EAAE,SAAiB,EAAE,SAAkC,EAAE,EAAE,OAAmC,KAAK;IAC/K,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAEhF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IACzD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,YAAY,WAAW,IAAI,sBAAsB,UAAU,GAAG,CAAC,MAAM,MAAM,GAAG,qCAAqC,WAAW,GAAG,CAAC,CAAA;IACnL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAA;QAC5E,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAA;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,OAAe,EAAE,MAAc,EAAE,SAAkC,EAAE,EAAE,OAAmC,KAAK;IAClJ,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IACzD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,YAAY,WAAW,IAAI,sBAAsB,UAAU,GAAG,CAAC,MAAM,MAAM,GAAG,qCAAqC,WAAW,GAAG,CAAC,CAAA;IACnL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAA;QAC5E,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAA;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe,EAAE,MAAc;IACzE,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,MAAM,eAAe,EAAE,MAAM,CAAC,CAAA;IACtH,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACnE,OAAO,KAAK,EAAE,EAAE,IAAI,IAAI,CAAA;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,MAAc,EAAE,SAA8B,EAAE;IACnG,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,IAAI,MAAM,CAAC,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,MAAM,CAAC,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,MAAM,CAAC,GAAG;QAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM;QAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACrE,IAAI,MAAM,CAAC,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,IAAI,MAAM,CAAC,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEjE,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IACvE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAwB,GAAG,EAAE,MAAM,CAAC,CAAA;IACtE,OAAO,MAAM,CAAA;AACjB,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAc;IACnE,OAAO,aAAa,CAAiB,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;AAC7G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAoB,EAAE,MAAc;IAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAA6B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QAChI,OAAO,gCAAgC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,KAAK,GAAG,CAAC,CAAC,CAAA;QACtF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
2
  /**
3
3
  * Verify the CWD is the root of a Terse project for the active language provider.
4
- * Exits with a clear error message if not.
4
+ * Throws a CliError with guidance if not.
5
5
  */
6
6
  export declare function assertProjectRoot(provider: LanguageProvider, markers?: {
7
7
  requiredFiles: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"assertProjectRoot.d.ts","sourceRoot":"","sources":["../src/assertProjectRoot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,GAAE;IAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAA4B,GAAG,IAAI,CAQvJ"}
1
+ {"version":3,"file":"assertProjectRoot.d.ts","sourceRoot":"","sources":["../src/assertProjectRoot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,GAAE;IAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAA4B,GAAG,IAAI,CASvJ"}
@@ -1,16 +1,17 @@
1
- import chalk from "chalk";
2
1
  import fs from "node:fs";
3
2
  import path from "node:path";
3
+ import { CliError } from "./cliError.js";
4
4
  /**
5
5
  * Verify the CWD is the root of a Terse project for the active language provider.
6
- * Exits with a clear error message if not.
6
+ * Throws a CliError with guidance if not.
7
7
  */
8
8
  export function assertProjectRoot(provider, markers = provider.projectMarkers) {
9
9
  const cwd = process.cwd();
10
10
  const missingFiles = markers.requiredFiles.filter(relativePath => !fs.existsSync(path.join(cwd, relativePath)));
11
11
  if (missingFiles.length > 0) {
12
- console.error(chalk.red(`Error: Current directory is not a ${markers.description}. Missing: ${missingFiles.join(", ")}.`));
13
- process.exit(1);
12
+ throw new CliError("not_project_root", `Current directory is not a ${markers.description}.`, {
13
+ detail: `Missing: ${missingFiles.join(", ")}.`
14
+ });
14
15
  }
15
16
  }
16
17
  //# sourceMappingURL=assertProjectRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertProjectRoot.js","sourceRoot":"","sources":["../src/assertProjectRoot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE,UAA4D,QAAQ,CAAC,cAAc;IAC7I,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IAE/G,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,WAAW,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"assertProjectRoot.js","sourceRoot":"","sources":["../src/assertProjectRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE,UAA4D,QAAQ,CAAC,cAAc;IAC7I,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IAE/G,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,OAAO,CAAC,WAAW,GAAG,EAAE;YACzF,MAAM,EAAE,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACjD,CAAC,CAAA;IACN,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare class CliError extends Error {
2
+ readonly code: string;
3
+ readonly opts: CliErrorOpts;
4
+ constructor(code: string, message: string, opts?: CliErrorOpts);
5
+ get exitCode(): ErrorCode;
6
+ }
7
+ export type CliErrorOpts = {
8
+ exitCode?: ErrorCode;
9
+ actionRequired?: boolean;
10
+ url?: string;
11
+ detail?: string;
12
+ };
13
+ export declare enum ErrorCode {
14
+ GENERIC_ERROR = 1,
15
+ BAD_ARGUMENTS = 2
16
+ }
17
+ export declare function isCliError(err: unknown): err is CliError;
18
+ export declare function formatCliErrorText(err: CliError): string;
19
+ export declare function formatCliErrorJson(err: CliError): string;
20
+ export declare function setErrorOutputJson(enabled: boolean): void;
21
+ export declare function emitCliError(err: CliError): void;
22
+ //# sourceMappingURL=cliError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliError.d.ts","sourceRoot":"","sources":["../src/cliError.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;gBAEf,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB;IAOlE,IAAI,QAAQ,IAAI,SAAS,CAExB;CACJ;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oBAAY,SAAS;IACjB,aAAa,IAAI;IACjB,aAAa,IAAI;CACpB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAExD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAUxD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAsBxD;AAQD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAMhD"}
@@ -0,0 +1,67 @@
1
+ import chalk from "chalk";
2
+ export class CliError extends Error {
3
+ code;
4
+ opts;
5
+ constructor(code, message, opts = {}) {
6
+ super(message);
7
+ this.name = "CliError";
8
+ this.code = code;
9
+ this.opts = opts;
10
+ }
11
+ get exitCode() {
12
+ return this.opts.exitCode ?? (this.opts.actionRequired ? ErrorCode.BAD_ARGUMENTS : ErrorCode.GENERIC_ERROR);
13
+ }
14
+ }
15
+ export var ErrorCode;
16
+ (function (ErrorCode) {
17
+ ErrorCode[ErrorCode["GENERIC_ERROR"] = 1] = "GENERIC_ERROR";
18
+ ErrorCode[ErrorCode["BAD_ARGUMENTS"] = 2] = "BAD_ARGUMENTS";
19
+ })(ErrorCode || (ErrorCode = {}));
20
+ export function isCliError(err) {
21
+ return err instanceof CliError || (typeof err === "object" && err !== null && err.name === "CliError");
22
+ }
23
+ export function formatCliErrorText(err) {
24
+ const lines = [];
25
+ if (err.opts.actionRequired) {
26
+ lines.push(chalk.yellow(`ACTION REQUIRED: ${err.message}`));
27
+ }
28
+ else {
29
+ lines.push(chalk.red(`Error: ${err.message}`));
30
+ }
31
+ if (err.opts.url)
32
+ lines.push(chalk.cyan(` ${err.opts.url}`));
33
+ if (err.opts.detail)
34
+ lines.push(chalk.dim(` ${err.opts.detail}`));
35
+ return lines.join("\n") + "\n";
36
+ }
37
+ export function formatCliErrorJson(err) {
38
+ const error = {
39
+ code: err.code,
40
+ message: err.message,
41
+ actionRequired: Boolean(err.opts.actionRequired)
42
+ };
43
+ if (err.opts.url) {
44
+ error.url = err.opts.url;
45
+ }
46
+ if (err.opts.detail) {
47
+ error.detail = err.opts.detail;
48
+ }
49
+ return JSON.stringify({ error }) + "\n";
50
+ }
51
+ /**
52
+ * Set via index.ts when the invoked subcommand is in JSON output mode so the
53
+ * top-level error handler can emit a structured envelope instead of prose.
54
+ */
55
+ let jsonMode = false;
56
+ export function setErrorOutputJson(enabled) {
57
+ jsonMode = enabled;
58
+ }
59
+ export function emitCliError(err) {
60
+ if (jsonMode) {
61
+ process.stdout.write(formatCliErrorJson(err));
62
+ }
63
+ else {
64
+ process.stderr.write(formatCliErrorText(err));
65
+ }
66
+ }
67
+ //# sourceMappingURL=cliError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliError.js","sourceRoot":"","sources":["../src/cliError.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type NonInteractiveOpts = {
2
+ nonInteractive?: boolean;
3
+ };
4
+ /**
5
+ * True when the CLI should avoid any interactive prompt.
6
+ */
7
+ export declare function isNonInteractive(opts?: NonInteractiveOpts): boolean;
8
+ /**
9
+ * Supports parsing a series of key=value flags from the CLI.
10
+ */
11
+ export declare function parseKeyValueFlags(values: string[] | undefined): Record<string, string>;
12
+ /**
13
+ * Read a JSON object from stdin and return it as a string map. Used by
14
+ * `terse integrate connect --fields-stdin` so passwords and tokens never touch
15
+ * argv.
16
+ */
17
+ export declare function readFieldsFromStdin(): Promise<Record<string, string>>;
18
+ export declare function collectKeyValue(value: string, previous: string[]): string[];
19
+ export declare function parseIntFlag(value: string): number;
20
+ //# sourceMappingURL=cliHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliHelpers.d.ts","sourceRoot":"","sources":["../src/cliHelpers.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;GAEG;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;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE3E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD"}
@@ -0,0 +1,69 @@
1
+ import { InvalidArgumentError } from "commander";
2
+ import { CliError } from "./cliError.js";
3
+ /**
4
+ * True when the CLI should avoid any interactive prompt.
5
+ */
6
+ export function isNonInteractive(opts) {
7
+ if (opts?.nonInteractive)
8
+ return true;
9
+ return !process.stdin.isTTY || !process.stdout.isTTY;
10
+ }
11
+ /**
12
+ * Supports parsing a series of key=value flags from the CLI.
13
+ */
14
+ export function parseKeyValueFlags(values) {
15
+ const out = {};
16
+ values?.forEach(raw => {
17
+ const eq = raw.indexOf("=");
18
+ if (eq <= 0) {
19
+ throw new CliError("invalid_field", `Invalid --field value "${raw}"`, { detail: "Expected key=value" });
20
+ }
21
+ out[raw.slice(0, eq)] = raw.slice(eq + 1);
22
+ });
23
+ return out;
24
+ }
25
+ /**
26
+ * Read a JSON object from stdin and return it as a string map. Used by
27
+ * `terse integrate connect --fields-stdin` so passwords and tokens never touch
28
+ * argv.
29
+ */
30
+ export async function readFieldsFromStdin() {
31
+ const chunks = [];
32
+ for await (const chunk of process.stdin) {
33
+ chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
34
+ }
35
+ const raw = Buffer.concat(chunks).toString("utf-8").trim();
36
+ if (!raw)
37
+ return {};
38
+ let parsed;
39
+ try {
40
+ parsed = JSON.parse(raw);
41
+ }
42
+ catch (err) {
43
+ throw new CliError("invalid_fields_stdin", "Could not parse JSON from stdin", {
44
+ detail: err instanceof Error ? err.message : String(err)
45
+ });
46
+ }
47
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
48
+ throw new CliError("invalid_fields_stdin", "Expected a JSON object on stdin", { detail: 'Example: {"password":"..."}' });
49
+ }
50
+ const out = {};
51
+ for (const [k, v] of Object.entries(parsed)) {
52
+ if (typeof v !== "string") {
53
+ throw new CliError("invalid_fields_stdin", `Field "${k}" must be a string`);
54
+ }
55
+ out[k] = v;
56
+ }
57
+ return out;
58
+ }
59
+ export function collectKeyValue(value, previous) {
60
+ return [...previous, value];
61
+ }
62
+ export function parseIntFlag(value) {
63
+ const n = Number.parseInt(value, 10);
64
+ if (!Number.isFinite(n) || n <= 0) {
65
+ throw new InvalidArgumentError(`Expected a positive integer, got "${value}".`);
66
+ }
67
+ return n;
68
+ }
69
+ //# sourceMappingURL=cliHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliHelpers.js","sourceRoot":"","sources":["../src/cliHelpers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type NonInteractiveOpts } from "../cliHelpers.js";
1
2
  import type { LanguageProvider } from "../providers/LanguageProvider.js";
2
- export declare function attach(provider?: LanguageProvider): Promise<void>;
3
+ export declare function attach(provider?: LanguageProvider, opts?: NonInteractiveOpts): Promise<void>;
3
4
  //# sourceMappingURL=attach.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAQxE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1F"}
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAQxE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ErH"}
@@ -2,14 +2,16 @@ import { intro, log, outro } from "@clack/prompts";
2
2
  import chalk from "chalk";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
+ import { isNonInteractive } from "../cliHelpers.js";
5
6
  import { createSpinner, logNextSteps } from "../cliUi.js";
6
7
  import { PROJECT_CONFIG_FILENAME, createRemoteProject, readProjectConfig, writeProjectConfig } from "../projectConfig.js";
7
8
  import { resolveProvider } from "../providers/resolveProvider.js";
8
9
  import { setStoredApiKey } from "../userConfig.js";
9
- import { getProjectAttachedUserName, login } from "./auth.js";
10
+ import { getProjectAttachedUserName, loginAndPersist } from "./auth.js";
10
11
  import { generate } from "./generate.js";
11
12
  import { listAndPromptIntegrations } from "./integrate.js";
12
- export async function attach(provider = resolveProvider()) {
13
+ export async function attach(provider = resolveProvider(), opts) {
14
+ const nonInteractive = isNonInteractive(opts);
13
15
  intro("terse attach");
14
16
  const cwd = process.cwd();
15
17
  const projectName = path.basename(cwd);
@@ -27,7 +29,7 @@ export async function attach(provider = resolveProvider()) {
27
29
  }
28
30
  log.info(`Attaching Terse to existing project ${chalk.bold(projectName)}`);
29
31
  log.info("Self-hosted mode keeps your jobs on your own infrastructure via TERSE_REMOTE_SERVER_URL. No source code is uploaded to Terse.");
30
- const result = await login();
32
+ const result = await loginAndPersist(opts);
31
33
  if (result?.apiKey) {
32
34
  setStoredApiKey(result.apiKey);
33
35
  log.info(`Add ${chalk.cyan("TERSE_API_KEY")} to your server environment so your app can authenticate at runtime.`);
@@ -53,12 +55,12 @@ export async function attach(provider = resolveProvider()) {
53
55
  }
54
56
  }
55
57
  log.info("Reviewing integrations");
56
- await listAndPromptIntegrations({ showLifecycle: false });
58
+ await listAndPromptIntegrations({ showLifecycle: false, nonInteractive });
57
59
  if (canGenerateFromCurrentDirectory(provider, cwd)) {
58
60
  const s = createSpinner();
59
61
  s.start("Generating code");
60
62
  try {
61
- await generate(provider, { showLifecycle: false });
63
+ await generate(provider);
62
64
  s.stop("Generated code");
63
65
  }
64
66
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
+ import { type NonInteractiveOpts } from "../cliHelpers.js";
1
2
  export declare function login(): Promise<{
2
3
  apiKey: string;
3
4
  displayName: string | null;
4
5
  } | null>;
5
- export declare function loginAndPersist(): Promise<{
6
+ export declare function loginAndPersist(opts?: NonInteractiveOpts): Promise<{
6
7
  apiKey: string;
7
8
  displayName: string | null;
8
9
  } | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AA8GA,wBAAsB,KAAK,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAuC5F;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAyBtG;AAED,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI/E;AAED,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAWD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI1F"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;AAqF5E,wBAAsB,KAAK,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAuC5F;AAED,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAyC/H;AAED,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI/E;AAED,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAWD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI1F"}
@@ -2,6 +2,8 @@ import { log } from "@clack/prompts";
2
2
  import { confirm } from "@inquirer/prompts";
3
3
  import chalk from "chalk";
4
4
  import { fetchWithAuth, readApiKeyFromDir } from "../api.js";
5
+ import { CliError, ErrorCode } from "../cliError.js";
6
+ import { isNonInteractive } from "../cliHelpers.js";
5
7
  import { createSpinner } from "../cliUi.js";
6
8
  import { BACKEND_URL, WORKOS_CLIENT_ID } from "../config.js";
7
9
  import { openUrlInBrowser } from "../openBrowser.js";
@@ -108,7 +110,8 @@ export async function login() {
108
110
  return null;
109
111
  }
110
112
  }
111
- export async function loginAndPersist() {
113
+ export async function loginAndPersist(opts) {
114
+ const nonInteractive = isNonInteractive(opts);
112
115
  const stored = getStoredApiKey();
113
116
  if (stored) {
114
117
  const s = createSpinner();
@@ -116,14 +119,30 @@ export async function loginAndPersist() {
116
119
  const existingName = await fetchDisplayNameForKey(stored);
117
120
  if (existingName) {
118
121
  s.stop(`Already logged in as ${existingName}`);
122
+ if (nonInteractive)
123
+ return { apiKey: stored, displayName: existingName };
119
124
  const shouldContinue = await confirm({ message: "Log in again with a different account?", default: false });
120
125
  if (!shouldContinue)
121
126
  return { apiKey: stored, displayName: existingName };
122
127
  }
123
128
  else {
124
129
  s.stop("Existing API key is invalid or expired");
130
+ if (nonInteractive) {
131
+ throw new CliError("not_authenticated", "Stored credentials are invalid or expired.", {
132
+ detail: 'Run "terse login" to refresh them.',
133
+ actionRequired: true,
134
+ exitCode: ErrorCode.BAD_ARGUMENTS
135
+ });
136
+ }
125
137
  }
126
138
  }
139
+ else if (nonInteractive) {
140
+ throw new CliError("not_authenticated", "Not authenticated.", {
141
+ detail: 'Run "terse login" first, then retry.',
142
+ actionRequired: true,
143
+ exitCode: ErrorCode.BAD_ARGUMENTS
144
+ });
145
+ }
127
146
  const result = await login();
128
147
  if (!result?.apiKey) {
129
148
  log.info("You can run `terse login` later to authenticate.");
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvG,MAAM,eAAe,GAAG,yDAAyD,CAAA;AACjF,MAAM,SAAS,GAAG,qDAAqD,CAAA;AACvE,MAAM,sBAAsB,GAAG,8CAA8C,CAAA;AAsB7E,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC5B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;KAC7D,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAiC,CAAA;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAE,QAAgB;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAA;IAC9C,IAAI,YAAY,GAAG,QAAQ,CAAA;IAE3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;QAEhC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,eAAe,CAAC;gBACtB,UAAU,EAAE,sBAAsB;gBAClC,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,gBAAgB;aAC9B,CAAC;SACL,CAAC,CAAA;QAEF,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACT,OAAO,GAAG,CAAC,IAAI,EAA4B,CAAA;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAA;QAErD,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,uBAAuB;gBACxB,MAAK;YACT,KAAK,WAAW;gBACZ,YAAY,IAAI,CAAC,CAAA;gBACjB,MAAK;YACT,KAAK,eAAe;gBAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC/C,KAAK,eAAe;gBAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC/D;gBACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;AACjE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAChD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,iCAAiC,EAAE;QACrE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;KACxC,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAA;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,0BAA0B,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAA0C,CAAA;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK;IACvB,MAAM,CAAC,GAAG,aAAa,EAAE,CAAA;IACzB,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEhC,IAAI,UAA8B,CAAA;IAClC,IAAI,CAAC;QACD,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;QACtC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;IACf,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;IACpF,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAClH,gBAAgB,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IAEtD,CAAC,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAEhD,IAAI,SAAwB,CAAA;IAC5B,IAAI,CAAC;QACD,SAAS,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;QACnG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACpE,CAAC,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAClF,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IACtF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,aAAa,EAAE,CAAA;QACzB,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QACpC,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,YAAY,EAAE,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAA;YAC9C,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3G,IAAI,CAAC,cAAc;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;QAC7E,CAAC;aAAM,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACpD,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAA;IACf,CAAC;IAED,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,eAAe,EAAE,EAAE,CAAC,CAAC,CAAA;IAEhE,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC;IAClD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,MAAM;IAClB,OAAO,iBAAiB,EAAE,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,MAAc;IAChD,IAAI,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,aAAa,CAAoF,SAAS,EAAE,MAAM,CAAC,CAAA;QACpI,OAAO,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,IAAI,cAAc,CAAA;IACvE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAC9D,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAIxE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ,iBA2HlH"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAIxE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ,iBA4HlH"}
@@ -6,6 +6,7 @@ import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import { ApiRoutes, sdkDeployRequestBodySchema } from "terse-types";
8
8
  import { ApiError, fetchWithAuthAndSession, readApiKeyOrBail } from "../api.js";
9
+ import { CliError } from "../cliError.js";
9
10
  import { getCliVersion } from "../cliVersion.js";
10
11
  import { FRONTEND_URL } from "../config.js";
11
12
  import { loadJobRegistry } from "../loadJob.js";
@@ -24,16 +25,9 @@ export async function deploy(provider = resolveProvider(), entryFile, hasRetried
24
25
  // Self-hosted mode is driven entirely by terse.config.json (selfHosted + remoteServerUrl).
25
26
  const remoteServerUrl = config.remoteServerUrl?.trim() || undefined;
26
27
  if (config.selfHosted && !remoteServerUrl) {
27
- console.error(chalk.red(`\n Error: Self-hosted mode is enabled but no server URL is configured.`));
28
- console.error(chalk.dim(` Set ${chalk.cyan("remoteServerUrl")} in ${chalk.cyan(PROJECT_CONFIG_FILENAME)} to the URL where your Terse SDK is running.\n`));
29
- console.error(` Example:`);
30
- console.error(chalk.dim(` {`));
31
- console.error(chalk.dim(` "projectId": "${projectId}",`));
32
- console.error(chalk.dim(` "name": "${config.name}",`));
33
- console.error(chalk.dim(` "selfHosted": true,`));
34
- console.error(chalk.dim(` "remoteServerUrl": "https://your-app.example.com"`));
35
- console.error(chalk.dim(` }\n`));
36
- process.exit(1);
28
+ throw new CliError("remote_server_url_missing", "Self-hosted mode is enabled but no server URL is configured.", {
29
+ detail: `Set \`remoteServerUrl\` in \`${PROJECT_CONFIG_FILENAME}\` to the URL where your Terse SDK is running.\n\nExample:\n {\n "projectId": "${projectId}",\n "name": "${config.name}",\n "selfHosted": true,\n "remoteServerUrl": "https://your-app.example.com"\n }`
30
+ });
37
31
  }
38
32
  const isUrlMode = !!remoteServerUrl;
39
33
  let sourceZipBase64;
@@ -116,9 +110,16 @@ export async function deploy(provider = resolveProvider(), entryFile, hasRetried
116
110
  return deploy(provider, entryFile, true);
117
111
  }
118
112
  if (isProjectGoneError(error)) {
119
- console.error(chalk.dim(` Run ${chalk.cyan("terse attach")} to link this directory to an existing project.`));
113
+ throw new CliError("project_not_found", `The project linked in ${PROJECT_CONFIG_FILENAME} no longer exists.`, {
114
+ detail: `This usually means it was deleted from the dashboard, or this config came from another machine.\nRun \`terse attach\` to link this directory to an existing project.`
115
+ });
120
116
  }
121
- process.exit(1);
117
+ if (error instanceof CliError) {
118
+ throw error;
119
+ }
120
+ throw new CliError("deploy_failed", "Deploy failed.", {
121
+ detail: error instanceof Error ? error.message : String(error)
122
+ });
122
123
  }
123
124
  finally {
124
125
  session.close();
@@ -168,8 +169,7 @@ function buildZipPayload(provider) {
168
169
  const files = collectFiles(cwd, cwd, provider);
169
170
  const fileCount = Object.keys(files).length;
170
171
  if (fileCount === 0) {
171
- console.error(chalk.red("No files found to deploy"));
172
- process.exit(1);
172
+ throw new CliError("no_files_to_deploy", "No files found to deploy");
173
173
  }
174
174
  const zipData = zipSync(files, { level: 6 });
175
175
  return {