terse-cli 0.1.32 → 0.1.34
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.
- package/dist/cliUi.d.ts +4 -0
- package/dist/cliUi.d.ts.map +1 -0
- package/dist/cliUi.js +21 -0
- package/dist/cliUi.js.map +1 -0
- package/dist/commands/attach.d.ts.map +1 -1
- package/dist/commands/attach.js +41 -40
- package/dist/commands/attach.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +23 -29
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/generate.d.ts +5 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +57 -82
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +33 -40
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrate.d.ts +7 -2
- package/dist/commands/integrate.d.ts.map +1 -1
- package/dist/commands/integrate.js +53 -56
- package/dist/commands/integrate.js.map +1 -1
- package/dist/jsonOutput.d.ts +19 -0
- package/dist/jsonOutput.d.ts.map +1 -0
- package/dist/jsonOutput.js +25 -0
- package/dist/jsonOutput.js.map +1 -0
- package/dist/providers/typescript/TypeScriptProvider.d.ts +1 -1
- package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.js +4 -20
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
- package/dist/replay.d.ts +3 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +20 -0
- package/dist/replay.js.map +1 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +12 -36
- package/dist/run.js.map +1 -1
- package/dist/shared/ToolDisplayUtils.js +1 -1
- package/dist/shared/ToolDisplayUtils.js.map +1 -1
- package/dist/urls.d.ts +3 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.js +27 -0
- package/dist/urls.js.map +1 -0
- package/package.json +3 -3
- package/templates/typescript/init/src/terse.jobs.ts.hbs +2 -4
- package/dist/commands/deployTheme.d.ts +0 -28
- package/dist/commands/deployTheme.d.ts.map +0 -1
- package/dist/commands/deployTheme.js +0 -68
- package/dist/commands/deployTheme.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -3
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -47
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -1
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -2
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/terseCliTheme.d.ts +0 -28
- package/dist/commands/terseCliTheme.d.ts.map +0 -1
- package/dist/commands/terseCliTheme.js +0 -68
- package/dist/commands/terseCliTheme.js.map +0 -1
- package/dist/perf.d.ts +0 -9
- package/dist/perf.d.ts.map +0 -1
- package/dist/perf.js +0 -59
- package/dist/perf.js.map +0 -1
- package/dist/providers/codegen.test.d.ts +0 -2
- package/dist/providers/codegen.test.d.ts.map +0 -1
- package/dist/providers/codegen.test.js +0 -45
- package/dist/providers/codegen.test.js.map +0 -1
- package/dist/providers/python/PythonProvider.test.d.ts +0 -2
- package/dist/providers/python/PythonProvider.test.d.ts.map +0 -1
- package/dist/providers/python/PythonProvider.test.js +0 -169
- package/dist/providers/python/PythonProvider.test.js.map +0 -1
- package/dist/providers/typescript/prepareCodegenData.test.d.ts +0 -2
- package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +0 -1
- package/dist/providers/typescript/prepareCodegenData.test.js +0 -54
- package/dist/providers/typescript/prepareCodegenData.test.js.map +0 -1
|
@@ -1,70 +1,78 @@
|
|
|
1
|
+
import { intro, log, outro } from "@clack/prompts";
|
|
1
2
|
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
2
3
|
import chalk from "chalk";
|
|
3
|
-
import ora from "ora";
|
|
4
4
|
import { INTEGRATION_METADATA, IntegrationType } from "terse-types";
|
|
5
5
|
import { readApiKey, readApiKeyOrBail } from "../api.js";
|
|
6
|
+
import { createSpinner, formatSummaryList } from "../cliUi.js";
|
|
6
7
|
import { fetchInstallationUrl, fetchIntegrationFields, fetchIntegrations, pollForConnection, submitIntegrationForm } from "../integrationApi.js";
|
|
7
8
|
import { openUrlInBrowser } from "../openBrowser.js";
|
|
8
9
|
import { generate } from "./generate.js";
|
|
9
|
-
export async function integrate() {
|
|
10
|
+
export async function integrate(options = {}) {
|
|
11
|
+
const showLifecycle = options.showLifecycle ?? true;
|
|
12
|
+
const runGenerateAfterChange = options.runGenerateAfterChange ?? true;
|
|
13
|
+
if (showLifecycle) {
|
|
14
|
+
intro("terse integrate");
|
|
15
|
+
}
|
|
10
16
|
const apiKey = readApiKeyOrBail();
|
|
11
17
|
let didChangeAnyIntegration = false;
|
|
12
18
|
let continueLoop = true;
|
|
13
19
|
while (continueLoop) {
|
|
14
20
|
const result = await connectOneIntegration(apiKey);
|
|
15
21
|
didChangeAnyIntegration = didChangeAnyIntegration || result.status !== "unchanged";
|
|
16
|
-
console.log("");
|
|
17
22
|
continueLoop = await confirm({ message: "Connect another integration?", default: false });
|
|
18
23
|
}
|
|
19
|
-
if (didChangeAnyIntegration) {
|
|
20
|
-
await generate();
|
|
24
|
+
if (didChangeAnyIntegration && runGenerateAfterChange) {
|
|
25
|
+
await generate(undefined, { showLifecycle: false });
|
|
26
|
+
}
|
|
27
|
+
if (showLifecycle) {
|
|
28
|
+
outro("Done");
|
|
21
29
|
}
|
|
22
30
|
}
|
|
23
|
-
export async function listAndPromptIntegrations() {
|
|
31
|
+
export async function listAndPromptIntegrations(options = {}) {
|
|
24
32
|
const apiKey = readApiKey();
|
|
25
33
|
if (!apiKey)
|
|
26
34
|
return;
|
|
35
|
+
const s = createSpinner();
|
|
36
|
+
s.start("Fetching integrations");
|
|
27
37
|
let integrations;
|
|
28
38
|
try {
|
|
29
39
|
integrations = await fetchIntegrations(apiKey);
|
|
40
|
+
s.stop("Fetched integrations");
|
|
30
41
|
}
|
|
31
42
|
catch {
|
|
43
|
+
s.stop("Failed to fetch integrations");
|
|
32
44
|
console.error(chalk.red("Failed to fetch integrations"));
|
|
33
45
|
return;
|
|
34
46
|
}
|
|
35
47
|
const active = integrations.filter(i => i.isActive && i.integrationType !== IntegrationType.TERSE && i.integrationType !== IntegrationType.CRON_JOB);
|
|
36
48
|
if (active.length > 0) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const meta = INTEGRATION_METADATA[i.integrationType];
|
|
40
|
-
console.log(` ${chalk.green("✓")} ${meta?.name || i.integrationType}`);
|
|
41
|
-
}
|
|
42
|
-
console.log("");
|
|
49
|
+
const names = active.map(i => INTEGRATION_METADATA[i.integrationType]?.name || i.integrationType);
|
|
50
|
+
console.log(chalk.dim(`Connected integrations (${active.length}): ${formatSummaryList(names)}`));
|
|
43
51
|
const addMore = await confirm({ message: "Connect another integration?", default: false });
|
|
44
52
|
if (addMore)
|
|
45
|
-
await integrate();
|
|
53
|
+
await integrate({ showLifecycle: false, runGenerateAfterChange: options.runGenerateAfterChange });
|
|
46
54
|
}
|
|
47
55
|
else {
|
|
48
|
-
console.log(chalk.dim("
|
|
49
|
-
await integrate();
|
|
56
|
+
console.log(chalk.dim("No integrated tools yet."));
|
|
57
|
+
await integrate({ showLifecycle: false, runGenerateAfterChange: options.runGenerateAfterChange });
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
60
|
async function connectOneIntegration(apiKey) {
|
|
53
|
-
const
|
|
61
|
+
const s = createSpinner();
|
|
62
|
+
s.start("Fetching integrations");
|
|
54
63
|
let integrations;
|
|
55
64
|
try {
|
|
56
65
|
integrations = await fetchIntegrations(apiKey);
|
|
57
|
-
|
|
66
|
+
s.stop("Fetched integrations");
|
|
58
67
|
}
|
|
59
68
|
catch (err) {
|
|
60
|
-
|
|
69
|
+
s.stop("Failed to fetch integrations");
|
|
61
70
|
console.error(chalk.red(` ${err.message}`));
|
|
62
71
|
process.exit(1);
|
|
63
72
|
}
|
|
64
|
-
// Filter out system integrations
|
|
65
73
|
const userFacing = integrations.filter(i => i.integrationType !== IntegrationType.TERSE && i.integrationType !== IntegrationType.CRON_JOB && i.integrationType !== IntegrationType.WEBMONITOR);
|
|
66
74
|
if (userFacing.length === 0) {
|
|
67
|
-
|
|
75
|
+
log.warn("No integrations available.");
|
|
68
76
|
return { status: "unchanged" };
|
|
69
77
|
}
|
|
70
78
|
const selected = await select({
|
|
@@ -72,7 +80,7 @@ async function connectOneIntegration(apiKey) {
|
|
|
72
80
|
choices: userFacing.map(i => {
|
|
73
81
|
const meta = INTEGRATION_METADATA[i.integrationType];
|
|
74
82
|
const name = meta?.name || i.integrationType;
|
|
75
|
-
const status = i.isActive ? chalk.green("
|
|
83
|
+
const status = i.isActive ? chalk.green(" connected") : chalk.dim(" not connected");
|
|
76
84
|
return {
|
|
77
85
|
name: `${name}${status}`,
|
|
78
86
|
value: i.integrationType,
|
|
@@ -81,15 +89,14 @@ async function connectOneIntegration(apiKey) {
|
|
|
81
89
|
})
|
|
82
90
|
});
|
|
83
91
|
const selectedIntegration = userFacing.find(i => i.integrationType === selected);
|
|
84
|
-
|
|
85
|
-
const fieldsSpinner = ora("Loading integration details").start();
|
|
92
|
+
s.start("Loading integration details");
|
|
86
93
|
let fieldsResponse;
|
|
87
94
|
try {
|
|
88
95
|
fieldsResponse = await fetchIntegrationFields(apiKey, selected);
|
|
89
|
-
|
|
96
|
+
s.stop("Loaded integration details");
|
|
90
97
|
}
|
|
91
98
|
catch (err) {
|
|
92
|
-
|
|
99
|
+
s.stop("Failed to load integration details");
|
|
93
100
|
console.error(chalk.red(` ${err.message}`));
|
|
94
101
|
process.exit(1);
|
|
95
102
|
}
|
|
@@ -100,24 +107,20 @@ async function connectOneIntegration(apiKey) {
|
|
|
100
107
|
integrationType: selected
|
|
101
108
|
};
|
|
102
109
|
}
|
|
103
|
-
|
|
110
|
+
if (fieldsResponse.installationType === "oauth") {
|
|
104
111
|
const didUpdate = await handleOAuthIntegration(apiKey, selected, fieldsResponse.fields);
|
|
105
112
|
return {
|
|
106
113
|
status: didUpdate ? (selectedIntegration?.isActive ? "modified" : "added") : "unchanged",
|
|
107
114
|
integrationType: selected
|
|
108
115
|
};
|
|
109
116
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
+
log.warn(`Integration '${selected}' has an unsupported installation type.`);
|
|
118
|
+
return {
|
|
119
|
+
status: "unchanged",
|
|
120
|
+
integrationType: selected
|
|
121
|
+
};
|
|
117
122
|
}
|
|
118
|
-
// ─── Form-based integrations (Datadog, PostHog, Snowflake, etc.) ─────────────
|
|
119
123
|
async function handleFormIntegration(apiKey, integrationType, fields) {
|
|
120
|
-
console.log("");
|
|
121
124
|
const formValues = {};
|
|
122
125
|
for (const field of fields) {
|
|
123
126
|
const hint = field.hint ? chalk.dim(` (${field.hint})`) : "";
|
|
@@ -135,30 +138,26 @@ async function handleFormIntegration(apiKey, integrationType, fields) {
|
|
|
135
138
|
});
|
|
136
139
|
}
|
|
137
140
|
}
|
|
138
|
-
const
|
|
141
|
+
const s = createSpinner();
|
|
142
|
+
s.start("Connecting integration");
|
|
139
143
|
try {
|
|
140
144
|
const result = await submitIntegrationForm(apiKey, integrationType, formValues);
|
|
141
145
|
if (result.success) {
|
|
142
|
-
|
|
146
|
+
s.stop("Integration connected successfully");
|
|
143
147
|
return true;
|
|
144
148
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
+
s.stop(`Failed to connect: ${result.error || "Unknown error"}`);
|
|
150
|
+
return false;
|
|
149
151
|
}
|
|
150
152
|
catch (err) {
|
|
151
|
-
|
|
153
|
+
s.stop("Failed to connect integration");
|
|
152
154
|
console.error(chalk.red(` ${err.message}`));
|
|
153
155
|
return false;
|
|
154
156
|
}
|
|
155
157
|
}
|
|
156
|
-
// ─── OAuth-based integrations (Slack, GitHub, Gmail, etc.) ───────────────────
|
|
157
158
|
async function handleOAuthIntegration(apiKey, integrationType, configFields) {
|
|
158
|
-
// Prompt for configuration fields if any (e.g. Slack's bot vs user choice)
|
|
159
159
|
let options;
|
|
160
160
|
if (configFields.length > 0) {
|
|
161
|
-
console.log("");
|
|
162
161
|
options = {};
|
|
163
162
|
for (const field of configFields) {
|
|
164
163
|
const value = await select({
|
|
@@ -168,29 +167,27 @@ async function handleOAuthIntegration(apiKey, integrationType, configFields) {
|
|
|
168
167
|
options[field.name] = value;
|
|
169
168
|
}
|
|
170
169
|
}
|
|
171
|
-
const
|
|
170
|
+
const s = createSpinner();
|
|
171
|
+
s.start("Getting authorization URL");
|
|
172
172
|
let installationDetails;
|
|
173
173
|
try {
|
|
174
174
|
installationDetails = await fetchInstallationUrl(apiKey, integrationType, options);
|
|
175
|
-
|
|
175
|
+
s.stop("Authorization URL ready");
|
|
176
176
|
}
|
|
177
177
|
catch (err) {
|
|
178
|
-
|
|
178
|
+
s.stop("Failed to get authorization URL");
|
|
179
179
|
console.error(chalk.red(` ${err.message}`));
|
|
180
180
|
return false;
|
|
181
181
|
}
|
|
182
|
-
|
|
183
|
-
console.log(` ${chalk.cyan(installationDetails.oauthUrl)}\n`);
|
|
182
|
+
log.info(`Complete authorization in your browser: ${chalk.cyan(installationDetails.oauthUrl)}`);
|
|
184
183
|
openUrlInBrowser(installationDetails.oauthUrl);
|
|
185
|
-
|
|
184
|
+
s.start("Waiting for authorization to complete");
|
|
186
185
|
const connected = await pollForConnection(apiKey, integrationType);
|
|
187
186
|
if (connected) {
|
|
188
|
-
|
|
187
|
+
s.stop("Integration connected successfully");
|
|
189
188
|
return true;
|
|
190
189
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
190
|
+
s.stop("Authorization timed out — please try again");
|
|
191
|
+
return false;
|
|
195
192
|
}
|
|
196
193
|
//# sourceMappingURL=integrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Ora } from "ora";
|
|
2
|
+
export type JsonErrorPayload = {
|
|
3
|
+
error: {
|
|
4
|
+
code: string;
|
|
5
|
+
message: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export declare function emitJsonError(code: string, message: string, details?: Record<string, unknown>): void;
|
|
10
|
+
export declare function bailJsonError(code: string, message: string, details?: Record<string, unknown>, exitCode?: number): never;
|
|
11
|
+
export type GuardOptions = {
|
|
12
|
+
spinner?: Ora | null;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
failMessage: string;
|
|
15
|
+
code: string;
|
|
16
|
+
details?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
export declare function withJsonError<T>(fn: () => Promise<T>, opts: GuardOptions): Promise<T>;
|
|
19
|
+
//# sourceMappingURL=jsonOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonOutput.d.ts","sourceRoot":"","sources":["../src/jsonOutput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK9B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACzB,CAAA;CACJ,CAAA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAGxG;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,KAAK,CAG/H;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAKD,wBAAsB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAU3F"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
export function emitJsonError(code, message, details = {}) {
|
|
3
|
+
const payload = { error: { code, message, ...details } };
|
|
4
|
+
process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
|
|
5
|
+
}
|
|
6
|
+
export function bailJsonError(code, message, details = {}, exitCode = 1) {
|
|
7
|
+
emitJsonError(code, message, details);
|
|
8
|
+
process.exit(exitCode);
|
|
9
|
+
}
|
|
10
|
+
// Wraps an async call so that failures (a) stop the spinner with a red label in TTY mode,
|
|
11
|
+
// (b) emit a structured JSON error and exit 1 in --json mode, and (c) re-throw otherwise so
|
|
12
|
+
// the top-level error handler can surface the trace.
|
|
13
|
+
export async function withJsonError(fn, opts) {
|
|
14
|
+
try {
|
|
15
|
+
return await fn();
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
opts.spinner?.fail(chalk.red(opts.failMessage));
|
|
19
|
+
if (opts.json) {
|
|
20
|
+
bailJsonError(opts.code, error instanceof Error ? error.message : String(error), opts.details);
|
|
21
|
+
}
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=jsonOutput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonOutput.js","sourceRoot":"","sources":["../src/jsonOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmC,EAAE;IAC9F,MAAM,OAAO,GAAqB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAA;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmC,EAAE,EAAE,WAAmB,CAAC;IACpH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC1B,CAAC;AAUD,0FAA0F;AAC1F,4FAA4F;AAC5F,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,EAAoB,EAAE,IAAkB;IAC3E,IAAI,CAAC;QACD,OAAO,MAAM,EAAE,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClG,CAAC;QACD,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC"}
|
|
@@ -24,7 +24,7 @@ export declare class TypeScriptProvider implements LanguageProvider {
|
|
|
24
24
|
output: string;
|
|
25
25
|
}>;
|
|
26
26
|
buildInitTemplateContext(projectName: string, sdkVersion: string): Record<string, unknown>;
|
|
27
|
-
getPostInitSteps(
|
|
27
|
+
getPostInitSteps(_packageManager: string): string[];
|
|
28
28
|
detectPackageManager(): string;
|
|
29
29
|
installDependencies(targetDir: string): Promise<void>;
|
|
30
30
|
resolveGeneratedCodePath(cwd: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAStD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAS;IACzC,QAAQ,CAAC,WAAW,gBAAe;IACnC,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,uBAAsB;IACxC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1F,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"TypeScriptProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAStD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAS;IACzC,QAAQ,CAAC,WAAW,gBAAe;IACnC,QAAQ,CAAC,gBAAgB;;;MAGxB;IACD,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,uBAAsB;IACxC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1F,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD,oBAAoB,IAAI,MAAM;IASxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAI1C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAuD9E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC5J;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAA"}
|
|
@@ -4,7 +4,7 @@ import fs from "node:fs";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
|
-
import {
|
|
7
|
+
import { __resetRegisteredTerseInstances, createSDKTrigger, fetchRegisteredJobs, runWithJobContext } from "terse-sdk";
|
|
8
8
|
import { tsImport } from "tsx/esm/api";
|
|
9
9
|
import { readApiKey } from "../../api.js";
|
|
10
10
|
import { BACKEND_URL } from "../../config.js";
|
|
@@ -43,8 +43,8 @@ export class TypeScriptProvider {
|
|
|
43
43
|
buildInitTemplateContext(projectName, sdkVersion) {
|
|
44
44
|
return { projectName, sdkVersion };
|
|
45
45
|
}
|
|
46
|
-
getPostInitSteps(
|
|
47
|
-
return [
|
|
46
|
+
getPostInitSteps(_packageManager) {
|
|
47
|
+
return ["terse test Run a sample event locally", "terse deploy Deploy the project"];
|
|
48
48
|
}
|
|
49
49
|
detectPackageManager() {
|
|
50
50
|
try {
|
|
@@ -107,23 +107,7 @@ export class TypeScriptProvider {
|
|
|
107
107
|
}
|
|
108
108
|
process.exit(1);
|
|
109
109
|
}
|
|
110
|
-
const
|
|
111
|
-
if (instances.length === 0) {
|
|
112
|
-
console.error(chalk.red(`No Terse instances were constructed after importing ${resolvedEntryFile}.`));
|
|
113
|
-
console.error(chalk.dim("Make sure this file, or something it imports, creates a Terse instance (e.g. `const terse = new Terse()`)."));
|
|
114
|
-
process.exit(1);
|
|
115
|
-
}
|
|
116
|
-
const registry = new Map();
|
|
117
|
-
for (const terse of instances) {
|
|
118
|
-
for (const [name, job] of terse.jobs) {
|
|
119
|
-
if (registry.has(name)) {
|
|
120
|
-
console.error(chalk.red(`Job "${name}" is registered on more than one Terse instance.`));
|
|
121
|
-
console.error(chalk.dim("Job names must be unique across all Terse instances in a project."));
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
124
|
-
registry.set(name, job);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
110
|
+
const registry = fetchRegisteredJobs();
|
|
127
111
|
if (registry.size === 0) {
|
|
128
112
|
console.error(chalk.red(`No jobs found after importing ${resolvedEntryFile}.`));
|
|
129
113
|
console.error(chalk.dim("Make sure you call `createJob()` on a Terse instance."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptProvider.js","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"TypeScriptProvider.js","sourceRoot":"","sources":["../../../src/providers/typescript/TypeScriptProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/replay.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG"}
|
package/dist/replay.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { readApiKeyOrBail, resolveEventFromRunId } from "./api.js";
|
|
3
|
+
import { loadJob } from "./loadJob.js";
|
|
4
|
+
import { resolveProvider } from "./providers/resolveProvider.js";
|
|
5
|
+
export async function replay(runId, provider = resolveProvider()) {
|
|
6
|
+
const apiKey = readApiKeyOrBail();
|
|
7
|
+
if (!runId) {
|
|
8
|
+
console.error(chalk.red("Error: --run-id is required.\n"));
|
|
9
|
+
console.error(chalk.dim(" Usage: terse replay --run-id <run-id>"));
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const runHistoryRecord = await resolveEventFromRunId(runId, apiKey);
|
|
13
|
+
if (!runHistoryRecord) {
|
|
14
|
+
console.error(chalk.red("Error: Could not fetch the trigger event for run ${runId}.\n"));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const { job } = await loadJob(provider, runHistoryRecord.agentName);
|
|
18
|
+
await provider.executeJob(job, null, runHistoryRecord.event, { verbose: true });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,WAA6B,eAAe,EAAE;IACtF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEnE,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACnF,CAAC"}
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CrK"}
|
package/dist/run.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import fs from "fs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { serializedEventSchema } from "terse-types";
|
|
4
|
+
import { readApiKey } from "./api.js";
|
|
5
5
|
import { loadJob } from "./loadJob.js";
|
|
6
6
|
import { resolveProvider } from "./providers/resolveProvider.js";
|
|
7
7
|
export async function run(jobName, eventJson, eventFile, provider = resolveProvider(), entryFile) {
|
|
@@ -15,58 +15,34 @@ export async function run(jobName, eventJson, eventFile, provider = resolveProvi
|
|
|
15
15
|
process.exit(1);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
let rawEvent;
|
|
20
|
-
if (eventJson) {
|
|
21
|
-
try {
|
|
22
|
-
rawEvent = JSON.parse(eventJson);
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
console.error(chalk.red("Error: --event must be valid JSON."));
|
|
26
|
-
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
rawEvent = await resolveEventFromRunId();
|
|
32
|
-
}
|
|
33
|
-
if (!rawEvent) {
|
|
18
|
+
if (!eventJson) {
|
|
34
19
|
console.error(chalk.red("Error: --event <json> or --event-file <path> is required.\n"));
|
|
35
20
|
console.error(chalk.dim(' Usage: terse run --event \'{"integrationType":"...","eventType":"...","formattedContent":"...","debugLog":"...","data":{...}}\''));
|
|
36
21
|
console.error(chalk.dim(" terse run --event-file ./event.json"));
|
|
37
22
|
console.error(chalk.dim(" Tip: Use `terse test` to interactively pick a sample event.\n"));
|
|
38
23
|
process.exit(1);
|
|
39
24
|
}
|
|
25
|
+
readApiKey();
|
|
40
26
|
const { job } = await loadJob(provider, jobName, entryFile);
|
|
41
|
-
|
|
27
|
+
console.log(chalk.cyan(`\n Running job: ${job.name}\n`));
|
|
28
|
+
let rawEvent;
|
|
42
29
|
try {
|
|
43
|
-
|
|
30
|
+
rawEvent = JSON.parse(eventJson);
|
|
44
31
|
}
|
|
45
32
|
catch (error) {
|
|
46
|
-
console.error(chalk.red("Error: --event
|
|
33
|
+
console.error(chalk.red("Error: --event must be valid JSON."));
|
|
47
34
|
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
48
35
|
process.exit(1);
|
|
49
36
|
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
async function resolveEventFromRunId() {
|
|
53
|
-
const runId = process.env.TERSE_RUN_ID?.trim();
|
|
54
|
-
if (!runId) {
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
const apiKey = process.env.TERSE_API_KEY ?? null;
|
|
58
|
-
if (!apiKey) {
|
|
59
|
-
console.error(chalk.red(`Error: TERSE_RUN_ID is set but TERSE_API_KEY is missing, so the trigger event for run ${runId} cannot be fetched.`));
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
37
|
+
let parsed;
|
|
62
38
|
try {
|
|
63
|
-
|
|
64
|
-
return sdkRunTriggerEventResponseSchema.parse(response).event;
|
|
39
|
+
parsed = serializedEventSchema.parse(rawEvent);
|
|
65
40
|
}
|
|
66
41
|
catch (error) {
|
|
67
|
-
console.error(chalk.red(
|
|
42
|
+
console.error(chalk.red("Error: --event does not match the canonical Trigger schema."));
|
|
68
43
|
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
69
44
|
process.exit(1);
|
|
70
45
|
}
|
|
46
|
+
await provider.executeJob(job, parsed, { entryFile });
|
|
71
47
|
}
|
|
72
48
|
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|