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/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import chalk from "chalk";
3
3
  import { Command } from "commander";
4
+ import { CliError, emitCliError, isCliError, setErrorOutputJson } from "./cliError.js";
5
+ import { collectKeyValue, parseIntFlag } from "./cliHelpers.js";
4
6
  import { getCliVersion } from "./cliVersion.js";
5
7
  import { attach } from "./commands/attach.js";
6
8
  import { loginAndPersist, logout } from "./commands/auth.js";
@@ -10,54 +12,195 @@ import { openDocs } from "./commands/docs.js";
10
12
  import { generate } from "./commands/generate.js";
11
13
  import { history } from "./commands/history.js";
12
14
  import { init } from "./commands/init.js";
13
- import { integrate } from "./commands/integrate.js";
15
+ import { integrate, integrateConnect, integrateDescribe, integrateDisconnect, integrateList, integrateWait } from "./commands/integrate.js";
14
16
  import { replay } from "./commands/replay.js";
15
17
  import { run } from "./commands/run.js";
16
- import { test } from "./commands/test.js";
18
+ import { test, testList, testRun, testShow } from "./commands/test.js";
17
19
  import { isCliRunCommandEnabled } from "./env.js";
18
20
  import { isPromptCancellationError } from "./promptErrors.js";
19
21
  import { resolveProvider } from "./providers/resolveProvider.js";
20
22
  const program = new Command();
23
+ const NON_INTERACTIVE_OPTION = ["-y, --non-interactive", "Run non-interactively; fail fast if authentication or choices are required"];
24
+ const ENTRY_FILE_OPTION = ["--entry-file <path>", "Path to the job entry file (overrides default)"];
25
+ function syncJsonErrorOutput(command) {
26
+ const { json } = command.opts();
27
+ setErrorOutputJson(Boolean(json));
28
+ }
21
29
  program.name("terse").description("The Terse CLI — create and manage Terse projects").version(getCliVersion());
30
+ program.hook("preAction", (_thisCommand, actionCommand) => {
31
+ syncJsonErrorOutput(actionCommand);
32
+ });
22
33
  program.commandsGroup("Getting started:");
23
34
  program
24
35
  .command("init")
25
36
  .description("Create a new Terse project")
26
37
  .argument("[project-name]", "Name for the project directory")
27
- .action(async (projectName) => {
38
+ .option(...NON_INTERACTIVE_OPTION)
39
+ .addHelpText("after", `
40
+ Examples:
41
+ $ terse init myproj # interactive scaffold
42
+ $ terse init myproj --non-interactive # non-interactive; requires prior \`terse login\`
43
+ $ terse init myproj < /dev/null # auto non-interactive (no TTY)
44
+ `)
45
+ .action(async (projectName, opts) => {
28
46
  const language = "ts";
29
47
  const provider = resolveProvider({ command: "init", language });
30
- await init(projectName, provider);
48
+ await init(projectName, provider, opts);
31
49
  });
32
50
  program
33
51
  .command("attach")
34
52
  .description("Add Terse to an existing project (self-hosted)")
35
- .action(async () => {
36
- await attach();
53
+ .option(...NON_INTERACTIVE_OPTION)
54
+ .action(async (opts) => {
55
+ await attach(resolveProvider(), opts);
37
56
  });
38
- program
57
+ const testCommand = program
39
58
  .command("test")
40
59
  .description("Fetch sample events and run a job interactively")
41
60
  .argument("[job-name]", "Name of the job to test (auto-selects if only one exists)")
42
61
  .option("-v, --verbose", "Show agent stream output", true)
43
- .option("--entry-file <path>", "Path to the job entry file (overrides default)")
62
+ .option(...ENTRY_FILE_OPTION)
63
+ .addHelpText("after", `
64
+ Examples:
65
+ $ terse test # interactive picker
66
+ $ terse test my-job # test a specific job
67
+
68
+ Non-interactive subcommands (for AI agents and CI):
69
+ $ terse test list --json # enumerate sample events with ids
70
+ $ terse test show <id> # inspect a specific sample
71
+ $ terse test run --id <id> # run a cached sample by content hash
72
+ $ terse test run --event-file sample.json # run a sample event from disk
73
+ `)
44
74
  .action(async (jobName, opts) => {
45
75
  await test(jobName, opts?.verbose, resolveProvider(), opts?.entryFile);
46
76
  });
77
+ testCommand
78
+ .command("list")
79
+ .description("List sample events for a job with content-addressed ids")
80
+ .argument("[job-name]", "Name of the job (auto-selects if only one exists)")
81
+ .option("--json", "Emit JSON with the full event payload for each id")
82
+ .option(...ENTRY_FILE_OPTION)
83
+ .action(async (jobName, opts) => {
84
+ await testList({ jobName, json: opts?.json, entryFile: opts?.entryFile });
85
+ });
86
+ testCommand
87
+ .command("show")
88
+ .description("Show the full contents of a cached sample event")
89
+ .argument("<id>", "Sample event id from `terse test list`")
90
+ .argument("[job-name]", "Name of the job (auto-selects if only one exists)")
91
+ .option("--json", "Emit JSON instead of rendered text")
92
+ .option(...ENTRY_FILE_OPTION)
93
+ .action(async (id, jobName, opts) => {
94
+ await testShow({ id, jobName, json: opts?.json, entryFile: opts?.entryFile });
95
+ });
96
+ testCommand
97
+ .command("run")
98
+ .description("Run a job against a sample event non-interactively")
99
+ .argument("[job-name]", "Name of the job (auto-selects if only one exists)")
100
+ .option("--id <id>", "Sample event id from `terse test list`")
101
+ .option("--event <json>", "Inline serialized event JSON string")
102
+ .option("--event-file <path>", "Path to a JSON file containing the serialized event")
103
+ .option("-v, --verbose", "Show agent stream output", true)
104
+ .option(...ENTRY_FILE_OPTION)
105
+ .addHelpText("after", `
106
+ Examples:
107
+ $ terse test list --json | jq -r '.events[0].id' | xargs -I{} terse test run --id {}
108
+ $ terse test run --event-file fixture.json
109
+ `)
110
+ .action(async (jobName, opts) => {
111
+ await testRun({
112
+ jobName,
113
+ id: opts?.id,
114
+ eventJson: opts?.event,
115
+ eventFile: opts?.eventFile,
116
+ verbose: opts?.verbose,
117
+ entryFile: opts?.entryFile
118
+ });
119
+ });
47
120
  program
48
121
  .command("deploy")
49
122
  .description("Deploy all jobs to Terse (syncs with server — removed jobs are deleted)")
50
- .option("--entry-file <path>", "Path to the job entry file (overrides default)")
123
+ .option(...ENTRY_FILE_OPTION)
51
124
  .action(async (opts) => {
52
125
  await deploy(resolveProvider(), opts?.entryFile);
53
126
  });
54
127
  program.commandsGroup("Build with workspace context:");
55
- program
128
+ const integrateCommand = program
56
129
  .command("integrate")
57
- .description("Open the integrations page in the Terse Web UI")
130
+ .description("Connect and manage integrations")
131
+ .addHelpText("after", `
132
+ Examples:
133
+ $ terse integrate # interactive picker
134
+ $ terse integrate list --json # enumerate integrations
135
+ $ terse integrate describe snowflake --json # see required fields
136
+ $ terse integrate connect snowflake --field account=x --field username=y --fields-stdin <<< '{"password":"'"$PW"'"}'
137
+ $ terse integrate connect slack # OAuth → opens browser, exit 2 (follow up with 'wait')
138
+ $ terse integrate wait slack --timeout 300 # block until OAuth completes
139
+ $ terse integrate disconnect snowflake
140
+ `)
58
141
  .action(async () => {
59
142
  await integrate();
60
143
  });
144
+ integrateCommand
145
+ .command("list")
146
+ .description("List integrations and their connection status")
147
+ .option("--json", "Emit JSON")
148
+ .option("--status <status>", "Filter to `connected` or `disconnected`")
149
+ .action(async (opts) => {
150
+ if (opts.status && opts.status !== "connected" && opts.status !== "disconnected") {
151
+ throw new CliError("invalid_status_filter", `--status must be "connected" or "disconnected", got "${opts.status}".`);
152
+ }
153
+ await integrateList({ json: opts.json, status: opts.status });
154
+ });
155
+ integrateCommand
156
+ .command("describe")
157
+ .description("Show schema and status for an integration type")
158
+ .argument("<type>", "Integration type (e.g. slack, snowflake)")
159
+ .option("--json", "Emit JSON")
160
+ .action(async (type, opts) => {
161
+ await integrateDescribe({ integrationType: type, json: opts.json });
162
+ });
163
+ integrateCommand
164
+ .command("connect")
165
+ .description("Connect (or refresh) an integration. OAuth types open a browser and exit 2 — follow up with `wait` to block.")
166
+ .argument("<type>", "Integration type (e.g. slack, gmail, snowflake)")
167
+ .option("--field <key=value>", "Form field value (repeatable). Never put secrets here — use --fields-stdin.", collectKeyValue, [])
168
+ .option("--fields-stdin", "Read a JSON object of additional fields from stdin (secrets go here)")
169
+ .option("-f, --force", "Re-run the install even if the integration is already connected")
170
+ .option("--json", "Emit JSON")
171
+ .addHelpText("after", `
172
+ Examples:
173
+ $ terse integrate connect snowflake --field account=xyz --field username=foo --fields-stdin <<< '{"password":"'"$PW"'"}'
174
+ $ terse integrate connect slack # OAuth: opens browser, prints URL + wait command, exit 2
175
+ $ terse integrate connect slack --json # OAuth: opens browser, emits handoff JSON, exit 2
176
+ $ terse integrate connect snowflake --force # refresh an existing connection
177
+ `)
178
+ .action(async (type, opts) => {
179
+ await integrateConnect({
180
+ integrationType: type,
181
+ fieldFlags: opts.field,
182
+ fieldsStdin: opts.fieldsStdin,
183
+ force: opts.force,
184
+ json: opts.json
185
+ });
186
+ });
187
+ integrateCommand
188
+ .command("disconnect")
189
+ .description("Disconnect an integration")
190
+ .argument("<type>", "Integration type (e.g. slack, snowflake)")
191
+ .option("--json", "Emit JSON")
192
+ .action(async (type, opts) => {
193
+ await integrateDisconnect({ integrationType: type, json: opts.json });
194
+ });
195
+ integrateCommand
196
+ .command("wait")
197
+ .description("Block until an OAuth integration finishes connecting (run after `connect` emits a handoff)")
198
+ .argument("<type>", "Integration type (e.g. slack, gmail)")
199
+ .option("--timeout <seconds>", "Timeout in seconds (default 300, max 900)", parseIntFlag)
200
+ .option("--json", "Emit JSON")
201
+ .action(async (type, opts) => {
202
+ await integrateWait({ integrationType: type, timeoutSeconds: opts.timeout, json: opts.json });
203
+ });
61
204
  program
62
205
  .command("generate")
63
206
  .description("Autogenerate context from your connected workspaces")
@@ -72,7 +215,7 @@ if (isCliRunCommandEnabled()) {
72
215
  .argument("[job-name]", "Name of the job to run (auto-selects if only one exists)")
73
216
  .option("--event <json>", "Serialized event JSON string")
74
217
  .option("--event-file <path>", "Path to a JSON file containing the serialized event")
75
- .option("--entry-file <path>", "Path to the job entry file (overrides default)")
218
+ .option(...ENTRY_FILE_OPTION)
76
219
  .action(async (jobName, opts) => {
77
220
  await run(jobName, opts?.event, opts?.eventFile, resolveProvider(), opts?.entryFile);
78
221
  });
@@ -90,8 +233,8 @@ program
90
233
  .description("View past run events for a job (use --json to pipe into tooling like the Claude Code /improve skill)")
91
234
  .argument("[job-name]", "Name of the job to view the history of")
92
235
  .option("--json", "Output runs as JSON for machine consumption")
93
- .option("--limit <n>", "Max runs to fetch (default 20, max 100)", v => parseInt(v, 10))
94
- .option("--page <n>", "Page number (1-indexed)", v => parseInt(v, 10))
236
+ .option("--limit <n>", "Max runs to fetch (default 20, max 100)", parseIntFlag)
237
+ .option("--page <n>", "Page number (1-indexed)", parseIntFlag)
95
238
  .option("--status <list>", "Comma-separated statuses (success,failed,cancelled,skipped,in_progress,awaiting_approval)")
96
239
  .option("--since <iso>", "Only include runs at or after this ISO timestamp")
97
240
  .option("--until <iso>", "Only include runs at or before this ISO timestamp")
@@ -145,6 +288,10 @@ catch (error) {
145
288
  console.log(chalk.yellow("\n Cancelled.\n"));
146
289
  process.exit(130);
147
290
  }
291
+ if (isCliError(error)) {
292
+ emitCliError(error);
293
+ process.exit(error.exitCode);
294
+ }
148
295
  throw error;
149
296
  }
150
297
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { IntegrationWithStatus } from "terse-types";
2
- import { ConfigurationFieldDefinition, FormFieldDefinition, IntegrationFieldsResponse, OAuthInstallationDetails } from "terse-types";
1
+ import { ConfigurationFieldDefinition, FormFieldDefinition, IntegrationFieldsResponse, IntegrationType, IntegrationWithStatus, OAuthInstallationDetails } from "terse-types";
3
2
  export type { IntegrationFieldsResponse, FormFieldDefinition, ConfigurationFieldDefinition };
4
3
  export declare function fetchIntegrations(apiKey: string): Promise<IntegrationWithStatus[]>;
5
4
  export declare function fetchIntegrationFields(apiKey: string, integrationType: string): Promise<IntegrationFieldsResponse>;
@@ -8,5 +7,9 @@ export declare function submitIntegrationForm(apiKey: string, integrationType: s
8
7
  error?: string;
9
8
  }>;
10
9
  export declare function fetchInstallationUrl(apiKey: string, integrationType: string, options?: Record<string, string>): Promise<OAuthInstallationDetails>;
10
+ export declare function disconnectIntegration(apiKey: string, integrationType: IntegrationType): Promise<{
11
+ success: boolean;
12
+ error?: string;
13
+ }>;
11
14
  export declare function pollForConnection(apiKey: string, integrationType: string, timeoutMs?: number, intervalMs?: number): Promise<boolean>;
12
15
  //# sourceMappingURL=integrationApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrationApi.d.ts","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAIpI,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,CAAA;AAE5F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAExF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAExH;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAEtK;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAGvJ;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,UAAU,SAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAe1I"}
1
+ {"version":3,"file":"integrationApi.d.ts","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,4BAA4B,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,eAAe,EAAE,qBAAqB,EAAE,wBAAwB,EAAc,MAAM,aAAa,CAAA;AAInM,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,CAAA;AAE5F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAExF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAExH;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAEtK;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAGvJ;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAE3I;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,UAAU,SAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAe1I"}
@@ -1,16 +1,20 @@
1
+ import { ApiRoutes, buildRoute } from "terse-types";
1
2
  import { fetchWithAuth } from "./api.js";
2
3
  export async function fetchIntegrations(apiKey) {
3
- return fetchWithAuth("/integrations", apiKey);
4
+ return fetchWithAuth(ApiRoutes.INTEGRATIONS.LIST, apiKey);
4
5
  }
5
6
  export async function fetchIntegrationFields(apiKey, integrationType) {
6
- return fetchWithAuth(`/sdk/integrations/${integrationType}/fields`, apiKey);
7
+ return fetchWithAuth(buildRoute(ApiRoutes.SDK.INTEGRATION_FIELDS, { integrationType }), apiKey);
7
8
  }
8
9
  export async function submitIntegrationForm(apiKey, integrationType, formValues) {
9
- return fetchWithAuth(`/sdk/integrations/${integrationType}/form-submit`, apiKey, { formValues }, "POST");
10
+ return fetchWithAuth(buildRoute(ApiRoutes.SDK.INTEGRATION_FORM_SUBMIT, { integrationType }), apiKey, { formValues }, "POST");
10
11
  }
11
12
  export async function fetchInstallationUrl(apiKey, integrationType, options) {
12
13
  const optionsParam = options ? `?options=${encodeURIComponent(JSON.stringify(options))}` : "";
13
- return fetchWithAuth(`/integrations/${integrationType}/installation-details${optionsParam}`, apiKey);
14
+ return fetchWithAuth(`${buildRoute(ApiRoutes.INTEGRATIONS.INSTALLATION_DETAILS_BY_TYPE, { integrationType })}${optionsParam}`, apiKey);
15
+ }
16
+ export async function disconnectIntegration(apiKey, integrationType) {
17
+ return fetchWithAuth(buildRoute(ApiRoutes.INTEGRATIONS.DISCONNECT_BY_TYPE, { integrationType }), apiKey, {}, "DELETE");
14
18
  }
15
19
  export async function pollForConnection(apiKey, integrationType, timeoutMs = 120_000, intervalMs = 3_000) {
16
20
  const deadline = Date.now() + timeoutMs;
@@ -1 +1 @@
1
- {"version":3,"file":"integrationApi.js","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAClD,OAAO,aAAa,CAA0B,eAAe,EAAE,MAAM,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,eAAuB;IAChF,OAAO,aAAa,CAA4B,qBAAqB,eAAe,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,eAAuB,EAAE,UAAkC;IACnH,OAAO,aAAa,CAAuC,qBAAqB,eAAe,cAAc,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAA;AAClJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,eAAuB,EAAE,OAAgC;IAChH,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7F,OAAO,aAAa,CAA2B,iBAAiB,eAAe,wBAAwB,YAAY,EAAE,EAAE,MAAM,CAAC,CAAA;AAClI,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,eAAuB,EAAE,SAAS,GAAG,OAAO,EAAE,UAAU,GAAG,KAAK;IACpH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;IAEvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,CAAA;YAC3E,IAAI,KAAK,EAAE,QAAQ;gBAAE,OAAO,IAAI,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,wCAAwC;QAC5C,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"integrationApi.js","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkJ,UAAU,EAAE,MAAM,aAAa,CAAA;AAEnM,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAClD,OAAO,aAAa,CAA0B,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,eAAuB;IAChF,OAAO,aAAa,CAA4B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;AAC9H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,eAAuB,EAAE,UAAkC;IACnH,OAAO,aAAa,CAAuC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAA;AACtK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,eAAuB,EAAE,OAAgC;IAChH,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7F,OAAO,aAAa,CAA2B,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,4BAA4B,EAAE,EAAE,eAAe,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,MAAM,CAAC,CAAA;AACpK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,eAAgC;IACxF,OAAO,aAAa,CAAuC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAChK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,eAAuB,EAAE,SAAS,GAAG,OAAO,EAAE,UAAU,GAAG,KAAK;IACpH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;IAEvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,CAAA;YAC3E,IAAI,KAAK,EAAE,QAAQ;gBAAE,OAAO,IAAI,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,wCAAwC;QAC5C,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
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"}