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.
- package/README.md +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +10 -10
- package/dist/api.js.map +1 -1
- package/dist/assertProjectRoot.d.ts +1 -1
- package/dist/assertProjectRoot.d.ts.map +1 -1
- package/dist/assertProjectRoot.js +5 -4
- package/dist/assertProjectRoot.js.map +1 -1
- package/dist/cliError.d.ts +22 -0
- package/dist/cliError.d.ts.map +1 -0
- package/dist/cliError.js +67 -0
- package/dist/cliError.js.map +1 -0
- package/dist/cliHelpers.d.ts +20 -0
- package/dist/cliHelpers.d.ts.map +1 -0
- package/dist/cliHelpers.js +69 -0
- package/dist/cliHelpers.js.map +1 -0
- package/dist/commands/attach.d.ts +2 -1
- package/dist/commands/attach.d.ts.map +1 -1
- package/dist/commands/attach.js +7 -5
- package/dist/commands/attach.js.map +1 -1
- package/dist/commands/auth.d.ts +2 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +20 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +14 -14
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/generate.d.ts +1 -5
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +13 -16
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/history.d.ts +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +4 -3
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts +2 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrate.d.ts +32 -2
- package/dist/commands/integrate.d.ts.map +1 -1
- package/dist/commands/integrate.js +424 -64
- package/dist/commands/integrate.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +5 -6
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +14 -17
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test.d.ts +47 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +268 -48
- package/dist/commands/test.js.map +1 -1
- package/dist/index.js +161 -14
- package/dist/index.js.map +1 -1
- package/dist/integrationApi.d.ts +5 -2
- package/dist/integrationApi.d.ts.map +1 -1
- package/dist/integrationApi.js +8 -4
- package/dist/integrationApi.js.map +1 -1
- package/dist/loadJob.d.ts +2 -1
- package/dist/loadJob.d.ts.map +1 -1
- package/dist/loadJob.js +16 -13
- package/dist/loadJob.js.map +1 -1
- package/dist/nonInteractive.d.ts +20 -0
- package/dist/nonInteractive.d.ts.map +1 -0
- package/dist/nonInteractive.js +60 -0
- package/dist/nonInteractive.js.map +1 -0
- package/dist/projectConfig.d.ts.map +1 -1
- package/dist/projectConfig.js +17 -10
- package/dist/projectConfig.js.map +1 -1
- package/dist/providers/python/PythonProvider.d.ts.map +1 -1
- package/dist/providers/python/PythonProvider.js +24 -14
- package/dist/providers/python/PythonProvider.js.map +1 -1
- package/dist/providers/resolveProvider.d.ts.map +1 -1
- package/dist/providers/resolveProvider.js +7 -9
- package/dist/providers/resolveProvider.js.map +1 -1
- package/dist/providers/shared/entryFileGuidance.d.ts.map +1 -1
- package/dist/providers/shared/entryFileGuidance.js +7 -12
- package/dist/providers/shared/entryFileGuidance.js.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.js +30 -27
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
- package/dist/sampleEventCache.d.ts +9 -0
- package/dist/sampleEventCache.d.ts.map +1 -0
- package/dist/sampleEventCache.js +47 -0
- package/dist/sampleEventCache.js.map +1 -0
- package/dist/sampleEventId.d.ts +9 -0
- package/dist/sampleEventId.d.ts.map +1 -0
- package/dist/sampleEventId.js +16 -0
- package/dist/sampleEventId.js.map +1 -0
- package/package.json +3 -3
package/dist/commands/replay.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import { readApiKeyOrBail, resolveEventFromRunId } from "../api.js";
|
|
2
|
+
import { CliError } from "../cliError.js";
|
|
3
3
|
import { loadJob } from "../loadJob.js";
|
|
4
4
|
import { resolveProvider } from "../providers/resolveProvider.js";
|
|
5
5
|
export async function replay(runId, provider = resolveProvider()) {
|
|
6
6
|
const apiKey = readApiKeyOrBail();
|
|
7
7
|
if (!runId) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
throw new CliError("missing_run_id", "--run-id is required.", {
|
|
9
|
+
detail: "Usage: terse replay --run-id <run-id>"
|
|
10
|
+
});
|
|
11
11
|
}
|
|
12
12
|
const runHistoryRecord = await resolveEventFromRunId(runId, apiKey);
|
|
13
13
|
if (!runHistoryRecord) {
|
|
14
|
-
|
|
15
|
-
process.exit(1);
|
|
14
|
+
throw new CliError("run_trigger_event_missing", `Could not fetch the trigger event for run ${runId}.`);
|
|
16
15
|
}
|
|
17
16
|
const { job } = await loadJob(provider, runHistoryRecord.agentName);
|
|
18
17
|
await provider.executeJob(job, null, runHistoryRecord.event, { verbose: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,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,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,EAAE;YAC1D,MAAM,EAAE,uCAAuC;SAClD,CAAC,CAAA;IACN,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,6CAA6C,KAAK,GAAG,CAAC,CAAA;IAC1G,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,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/commands/run.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,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,CAoDrK"}
|
package/dist/commands/run.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import fs from "fs";
|
|
3
2
|
import { serializedEventSchema } from "terse-types";
|
|
4
3
|
import { readApiKeyOrBail, readRunId, resolveEventFromRunId } from "../api.js";
|
|
4
|
+
import { CliError } from "../cliError.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) {
|
|
@@ -10,9 +10,9 @@ export async function run(jobName, eventJson, eventFile, provider = resolveProvi
|
|
|
10
10
|
eventJson = fs.readFileSync(eventFile, "utf-8");
|
|
11
11
|
}
|
|
12
12
|
catch (err) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
throw new CliError("event_file_unreadable", `Could not read event file: ${eventFile}`, {
|
|
14
|
+
detail: err instanceof Error ? err.message : String(err)
|
|
15
|
+
});
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
const apiKey = readApiKeyOrBail({
|
|
@@ -28,31 +28,28 @@ export async function run(jobName, eventJson, eventFile, provider = resolveProvi
|
|
|
28
28
|
rawEvent = JSON.parse(eventJson);
|
|
29
29
|
}
|
|
30
30
|
catch (error) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
throw new CliError("invalid_event_json", "--event must be valid JSON.", {
|
|
32
|
+
detail: error instanceof Error ? error.message : String(error)
|
|
33
|
+
});
|
|
34
34
|
}
|
|
35
35
|
if (!rawEvent) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
console.error(chalk.dim(" Tip: Use `terse test` to interactively pick a sample event.\n"));
|
|
40
|
-
process.exit(1);
|
|
36
|
+
throw new CliError("missing_event", "Provide --event <json> or --event-file <path>.", {
|
|
37
|
+
detail: 'Usage: terse run --event \'{"integrationType":"...","eventType":"...","formattedContent":"...","debugLog":"...","data":{...}}\'\n terse run --event-file ./event.json\nTip: Use `terse test` to interactively pick a sample event.'
|
|
38
|
+
});
|
|
41
39
|
}
|
|
42
40
|
try {
|
|
43
41
|
parsedEvent = serializedEventSchema.parse(rawEvent);
|
|
44
42
|
}
|
|
45
43
|
catch (error) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
throw new CliError("invalid_event_shape", "--event does not match the canonical Trigger schema.", {
|
|
45
|
+
detail: error instanceof Error ? error.message : String(error)
|
|
46
|
+
});
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
else {
|
|
52
50
|
const resolvedEvent = await resolveEventFromRunId(runId, apiKey);
|
|
53
51
|
if (!resolvedEvent) {
|
|
54
|
-
|
|
55
|
-
process.exit(1);
|
|
52
|
+
throw new CliError("run_trigger_event_missing", "Could not resolve event from run ID.");
|
|
56
53
|
}
|
|
57
54
|
parsedEvent = resolvedEvent.event;
|
|
58
55
|
}
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGnD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAgB,EAAE,SAAkB,EAAE,SAAkB,EAAE,WAA6B,eAAe,EAAE,EAAE,SAAkB;IAClJ,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,SAAS,EAAE,EAAE;gBACnF,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC3D,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,8EAA8E;KACzF,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,SAAS,EAAE,CAAA;IAEzB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IAE3D,IAAI,WAA4B,CAAA;IAChC,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,QAAiB,CAAA;QACrB,IAAI,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,6BAA6B,EAAE;gBACpE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACjE,CAAC,CAAA;QACN,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,gDAAgD,EAAE;gBAClF,MAAM,EAAE,4OAA4O;aACvP,CAAC,CAAA;QACN,CAAC;QAED,IAAI,CAAC;YACD,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,sDAAsD,EAAE;gBAC9F,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACjE,CAAC,CAAA;QACN,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CAAA;QAC3F,CAAC;QACD,WAAW,GAAG,aAAa,CAAC,KAAK,CAAA;IACrC,CAAC;IAED,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;AACrE,CAAC"}
|
package/dist/commands/test.d.ts
CHANGED
|
@@ -1,3 +1,50 @@
|
|
|
1
|
+
import type { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { SerializedEvent } from "terse-types";
|
|
1
3
|
import type { LanguageProvider } from "../providers/LanguageProvider.js";
|
|
2
4
|
export declare function test(jobName?: string, verbose?: boolean, provider?: LanguageProvider, entryFile?: string): Promise<void>;
|
|
5
|
+
export declare function testList(opts?: TestListOpts): Promise<void>;
|
|
6
|
+
export declare function testShow(opts: TestShowOpts): Promise<void>;
|
|
7
|
+
export declare function testRun(opts: TestRunOpts): Promise<void>;
|
|
8
|
+
export declare function fetchSampleEventCandidatesForJob(job: CreateJobParameters, apiKey: string): Promise<SampleEventCandidate[]>;
|
|
9
|
+
export type TestListOpts = {
|
|
10
|
+
jobName?: string;
|
|
11
|
+
json?: boolean;
|
|
12
|
+
entryFile?: string;
|
|
13
|
+
provider?: LanguageProvider;
|
|
14
|
+
};
|
|
15
|
+
export type TestShowOpts = {
|
|
16
|
+
id: string;
|
|
17
|
+
jobName?: string;
|
|
18
|
+
json?: boolean;
|
|
19
|
+
entryFile?: string;
|
|
20
|
+
provider?: LanguageProvider;
|
|
21
|
+
};
|
|
22
|
+
export type TestRunOpts = {
|
|
23
|
+
jobName?: string;
|
|
24
|
+
id?: string;
|
|
25
|
+
eventJson?: string;
|
|
26
|
+
eventFile?: string;
|
|
27
|
+
verbose?: boolean;
|
|
28
|
+
entryFile?: string;
|
|
29
|
+
provider?: LanguageProvider;
|
|
30
|
+
};
|
|
31
|
+
type SampleEventCandidate = {
|
|
32
|
+
id: string;
|
|
33
|
+
kind: "ref";
|
|
34
|
+
integrationType: string;
|
|
35
|
+
eventType: string;
|
|
36
|
+
label: string;
|
|
37
|
+
subtitle: string | null;
|
|
38
|
+
entityType: string;
|
|
39
|
+
entityId: string;
|
|
40
|
+
} | {
|
|
41
|
+
id: string;
|
|
42
|
+
kind: "synthetic";
|
|
43
|
+
integrationType: string;
|
|
44
|
+
eventType: string;
|
|
45
|
+
label: string;
|
|
46
|
+
subtitle: string | null;
|
|
47
|
+
event: SerializedEvent;
|
|
48
|
+
};
|
|
49
|
+
export {};
|
|
3
50
|
//# sourceMappingURL=test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAGpD,OAAO,KAAK,EAAuC,eAAe,EAAW,MAAM,aAAa,CAAA;AAQhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDjJ;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CrE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAchE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB9D;AA8CD,wBAAsB,gCAAgC,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAsDhI;AA0GD,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,KAAK,oBAAoB,GACnB;IACI,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,KAAK,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACnB,GACD;IACI,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,eAAe,CAAA;CACzB,CAAA"}
|
package/dist/commands/test.js
CHANGED
|
@@ -1,76 +1,295 @@
|
|
|
1
|
-
import { select } from "@
|
|
1
|
+
import { cancel, intro, isCancel, log, outro, select } from "@clack/prompts";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
import { IntegrationType } from "terse-sdk";
|
|
5
|
-
import { ApiRoutes, debugTrigger, formatTriggerForAgent } from "terse-types";
|
|
5
|
+
import { ApiRoutes, debugTrigger, displayTrigger, formatTriggerForAgent, serializedEventSchema } from "terse-types";
|
|
6
6
|
import { fetchWithAuth, readApiKeyOrBail } from "../api.js";
|
|
7
7
|
import { assertProjectRoot } from "../assertProjectRoot.js";
|
|
8
|
+
import { CliError } from "../cliError.js";
|
|
9
|
+
import { isNonInteractive } from "../cliHelpers.js";
|
|
10
|
+
import { createSpinner } from "../cliUi.js";
|
|
8
11
|
import { loadJob } from "../loadJob.js";
|
|
9
12
|
import { resolveProvider } from "../providers/resolveProvider.js";
|
|
10
13
|
export async function test(jobName, verbose, provider = resolveProvider(), entryFile) {
|
|
14
|
+
if (isNonInteractive()) {
|
|
15
|
+
throw new CliError("test_requires_interactive", "`terse test` needs a terminal.", {
|
|
16
|
+
detail: "In non-interactive contexts, use `terse test list` to enumerate sample events and `terse test run --id <id>` to execute one."
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
intro("terse test");
|
|
11
20
|
assertProjectRoot(provider);
|
|
12
21
|
const { job } = await loadJob(provider, jobName, entryFile);
|
|
13
|
-
console.log(chalk.cyan(`\n Testing job: ${job.name}\n`));
|
|
14
22
|
const apiKey = readApiKeyOrBail({
|
|
15
23
|
title: "Error: Not authenticated. Unable to fetch sample events.",
|
|
16
24
|
detail: "Run `terse login` to authenticate, or set TERSE_API_KEY in your environment."
|
|
17
25
|
});
|
|
18
|
-
|
|
26
|
+
const spinner = createSpinner();
|
|
27
|
+
spinner.start("Fetching sample events");
|
|
28
|
+
let candidates = [];
|
|
29
|
+
try {
|
|
30
|
+
candidates = await fetchSampleEventCandidatesForJob(job, apiKey);
|
|
31
|
+
spinner.stop(`Fetched ${candidates.length} sample event${candidates.length === 1 ? "" : "s"}`);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
spinner.stop(err instanceof Error ? err.message : "Failed to fetch sample events.");
|
|
35
|
+
}
|
|
36
|
+
if (candidates.length === 0) {
|
|
37
|
+
const webhookHint = hasWebhookTrigger(job);
|
|
38
|
+
throw new CliError("no_sample_events", "No sample events available.", {
|
|
39
|
+
detail: webhookHint
|
|
40
|
+
? "Webhook triggers do not provide sample events yet. Use `--event` / `--event-file` with a concrete payload."
|
|
41
|
+
: "Make sure your triggers are configured and events have been received."
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
log.info(`Testing job ${chalk.cyan(job.name)}`);
|
|
45
|
+
const event = await chooseSampleEvent(candidates, apiKey);
|
|
46
|
+
const runSpinner = createSpinner();
|
|
47
|
+
runSpinner.start(`Running ${formatEventLabel(event)}`);
|
|
48
|
+
try {
|
|
49
|
+
await provider.executeJob(job, null, event, { verbose: !!verbose, entryFile });
|
|
50
|
+
runSpinner.stop("Run completed");
|
|
51
|
+
outro("Done");
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
runSpinner.stop("Run failed");
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export async function testList(opts = {}) {
|
|
59
|
+
const provider = opts.provider ?? resolveProvider();
|
|
60
|
+
assertProjectRoot(provider);
|
|
61
|
+
const { job } = await loadJob(provider, opts.jobName, opts.entryFile, { nonInteractive: true });
|
|
62
|
+
const apiKey = readApiKeyOrBail();
|
|
63
|
+
const candidates = await fetchSampleEventCandidatesForJob(job, apiKey);
|
|
64
|
+
if (opts.json) {
|
|
65
|
+
const payload = {
|
|
66
|
+
job: job.name,
|
|
67
|
+
events: candidates.map(candidate => ({
|
|
68
|
+
id: candidate.id,
|
|
69
|
+
integrationType: candidate.integrationType,
|
|
70
|
+
eventType: candidate.eventType,
|
|
71
|
+
label: candidate.label,
|
|
72
|
+
subtitle: candidate.subtitle,
|
|
73
|
+
entityType: candidate.kind === "ref" ? candidate.entityType : null,
|
|
74
|
+
entityId: candidate.kind === "ref" ? candidate.entityId : null
|
|
75
|
+
}))
|
|
76
|
+
};
|
|
77
|
+
process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (candidates.length === 0) {
|
|
81
|
+
if (hasWebhookTrigger(job)) {
|
|
82
|
+
process.stdout.write("No sample events available. Webhook triggers are not supported for test samples.\n");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
process.stdout.write("No sample events available.\n");
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
process.stdout.write(`Sample events for job ${job.name}:\n\n`);
|
|
90
|
+
for (const candidate of candidates) {
|
|
91
|
+
const subtitle = candidate.subtitle ? ` — ${normalizeSingleLine(candidate.subtitle)}` : "";
|
|
92
|
+
process.stdout.write(` ${chalk.cyan(candidate.id)} ${candidate.integrationType}/${candidate.eventType} ${candidate.label}${chalk.dim(subtitle)}\n`);
|
|
93
|
+
}
|
|
94
|
+
process.stdout.write("\n");
|
|
95
|
+
process.stdout.write(chalk.dim(`Run one with: terse test run --id <id>\n`));
|
|
96
|
+
}
|
|
97
|
+
export async function testShow(opts) {
|
|
98
|
+
const provider = opts.provider ?? resolveProvider();
|
|
99
|
+
assertProjectRoot(provider);
|
|
100
|
+
const event = await resolveEventById(provider, opts.id, opts.jobName, opts.entryFile);
|
|
101
|
+
if (opts.json) {
|
|
102
|
+
process.stdout.write(JSON.stringify({ id: opts.id, event }, null, 2) + "\n");
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
process.stdout.write(`${chalk.bold(formatEventLabel(event))}\n`);
|
|
106
|
+
if (event.display?.subtitle)
|
|
107
|
+
process.stdout.write(chalk.dim(event.display.subtitle) + "\n");
|
|
108
|
+
process.stdout.write(`\n${event.formattedContent}\n`);
|
|
109
|
+
}
|
|
110
|
+
export async function testRun(opts) {
|
|
111
|
+
const provider = opts.provider ?? resolveProvider();
|
|
112
|
+
assertProjectRoot(provider);
|
|
113
|
+
const modeCount = [opts.id, opts.eventJson, opts.eventFile].filter(Boolean).length;
|
|
114
|
+
if (modeCount === 0) {
|
|
115
|
+
throw new CliError("missing_event", "Provide one of --id, --event, or --event-file.", {
|
|
116
|
+
detail: "Run `terse test list --json` to see available sample ids."
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (modeCount > 1) {
|
|
120
|
+
throw new CliError("conflicting_flags", "--id, --event, and --event-file are mutually exclusive.");
|
|
121
|
+
}
|
|
122
|
+
const { job } = await loadJob(provider, opts.jobName, opts.entryFile, { nonInteractive: true });
|
|
123
|
+
let event;
|
|
124
|
+
if (opts.id) {
|
|
125
|
+
event = await resolveEventByIdForJob(job, opts.id);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const rawJson = opts.eventJson ?? readEventFile(opts.eventFile);
|
|
129
|
+
event = parseEventJson(rawJson);
|
|
130
|
+
}
|
|
131
|
+
await provider.executeJob(job, null, event, { verbose: !!opts.verbose, entryFile: opts.entryFile });
|
|
132
|
+
}
|
|
133
|
+
async function resolveEventById(provider, id, jobNameHint, entryFile) {
|
|
134
|
+
const { job } = await loadJob(provider, jobNameHint, entryFile, { nonInteractive: true });
|
|
135
|
+
return resolveEventByIdForJob(job, id);
|
|
136
|
+
}
|
|
137
|
+
async function resolveEventByIdForJob(job, id) {
|
|
138
|
+
const apiKey = readApiKeyOrBail();
|
|
139
|
+
const candidates = await fetchSampleEventCandidatesForJob(job, apiKey);
|
|
140
|
+
const match = candidates.find(candidate => candidate.id === id);
|
|
141
|
+
if (match)
|
|
142
|
+
return hydrateCandidateEvent(match, apiKey);
|
|
143
|
+
throw new CliError("sample_not_found", `No sample event matches id ${id}.`, {
|
|
144
|
+
detail: "Run `terse test list` to refresh — the event may have rotated out of the sample buffer."
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function readEventFile(filePath) {
|
|
148
|
+
try {
|
|
149
|
+
return fs.readFileSync(filePath, "utf-8");
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
throw new CliError("event_file_unreadable", `Could not read event file: ${filePath}`, {
|
|
153
|
+
detail: err instanceof Error ? err.message : String(err)
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function parseEventJson(raw) {
|
|
158
|
+
let parsed;
|
|
159
|
+
try {
|
|
160
|
+
parsed = JSON.parse(raw);
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
throw new CliError("invalid_event_json", "--event / --event-file must be valid JSON.", {
|
|
164
|
+
detail: err instanceof Error ? err.message : String(err)
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
return serializedEventSchema.parse(parsed);
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
throw new CliError("invalid_event_shape", "Event JSON does not match the canonical Trigger schema.", {
|
|
172
|
+
detail: err instanceof Error ? err.message : String(err)
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export async function fetchSampleEventCandidatesForJob(job, apiKey) {
|
|
19
177
|
const timeTriggers = job.triggers.filter(t => t.integrationType === IntegrationType.CRON_JOB);
|
|
20
|
-
const webhookTriggers = job.triggers.filter(t => t.integrationType === IntegrationType.WEBHOOK);
|
|
21
178
|
const integrationTriggers = job.triggers.filter(t => t.integrationType !== IntegrationType.CRON_JOB && t.integrationType !== IntegrationType.WEBHOOK);
|
|
22
|
-
|
|
23
|
-
// Fetch sample events for integration triggers (time triggers have no sample events)
|
|
179
|
+
const candidates = [];
|
|
24
180
|
if (integrationTriggers.length > 0) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
181
|
+
const result = await fetchWithAuth(ApiRoutes.SDK.SAMPLE_EVENTS, apiKey, {
|
|
182
|
+
triggers: integrationTriggers.map(trigger => ({
|
|
183
|
+
triggerId: undefined,
|
|
184
|
+
integrationId: trigger.integrationId,
|
|
185
|
+
integrationType: trigger.integrationType,
|
|
186
|
+
config: trigger
|
|
187
|
+
}))
|
|
188
|
+
}, "POST");
|
|
189
|
+
candidates.push(...result.events.map(event => ({
|
|
190
|
+
id: encodeRefId(event.entity.entityType, event.entity.entityId),
|
|
191
|
+
kind: "ref",
|
|
192
|
+
integrationType: event.serializedEvent.integrationType,
|
|
193
|
+
eventType: event.serializedEvent.eventType,
|
|
194
|
+
label: normalizeSingleLine(event.serializedEvent.display?.title || `${event.serializedEvent.integrationType} / ${event.serializedEvent.eventType}`),
|
|
195
|
+
subtitle: event.serializedEvent.display?.subtitle ?? null,
|
|
196
|
+
entityType: event.entity.entityType,
|
|
197
|
+
entityId: event.entity.entityId
|
|
198
|
+
})));
|
|
41
199
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
events.push(serializeEvent({
|
|
200
|
+
for (const [index, trigger] of timeTriggers.entries()) {
|
|
201
|
+
const event = serializeEvent({
|
|
45
202
|
integrationType: IntegrationType.CRON_JOB,
|
|
46
203
|
eventType: "cron",
|
|
47
204
|
inputId: trigger.integrationId,
|
|
48
205
|
isManualTrigger: true,
|
|
49
|
-
manualContext: `Manual trigger from terse test (schedule: ${trigger.cronExpression
|
|
50
|
-
})
|
|
206
|
+
manualContext: `Manual trigger from terse test (schedule: ${trigger.cronExpression})`
|
|
207
|
+
});
|
|
208
|
+
candidates.push({
|
|
209
|
+
id: `synthetic:cron:${index}`,
|
|
210
|
+
kind: "synthetic",
|
|
211
|
+
integrationType: event.integrationType,
|
|
212
|
+
eventType: event.eventType,
|
|
213
|
+
label: formatEventLabel(event),
|
|
214
|
+
subtitle: event.display?.subtitle ?? null,
|
|
215
|
+
event
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return candidates;
|
|
219
|
+
}
|
|
220
|
+
function formatEventLabel(event) {
|
|
221
|
+
return normalizeSingleLine(event.display?.title || `${event.integrationType} / ${event.eventType}`);
|
|
222
|
+
}
|
|
223
|
+
function formatEventHint(candidate) {
|
|
224
|
+
if (candidate.subtitle)
|
|
225
|
+
return truncate(normalizeSingleLine(candidate.subtitle), 120);
|
|
226
|
+
return candidate.kind === "ref" ? truncate(`${candidate.integrationType}/${candidate.eventType}`, 120) : "Synthetic sample event";
|
|
227
|
+
}
|
|
228
|
+
function truncate(value, maxLength) {
|
|
229
|
+
if (value.length <= maxLength) {
|
|
230
|
+
return value;
|
|
51
231
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
232
|
+
return `${value.slice(0, maxLength - 1)}…`;
|
|
233
|
+
}
|
|
234
|
+
function normalizeSingleLine(value) {
|
|
235
|
+
return value
|
|
236
|
+
.replace(/\s*\n+\s*/g, " ")
|
|
237
|
+
.replace(/\s+/g, " ")
|
|
238
|
+
.trim();
|
|
239
|
+
}
|
|
240
|
+
function abortIfCancelled(value) {
|
|
241
|
+
if (isCancel(value)) {
|
|
242
|
+
cancel("Operation cancelled.");
|
|
243
|
+
process.exit(0);
|
|
244
|
+
}
|
|
245
|
+
return value;
|
|
246
|
+
}
|
|
247
|
+
async function chooseSampleEvent(candidates, apiKey) {
|
|
248
|
+
while (true) {
|
|
249
|
+
const choice = abortIfCancelled(await select({
|
|
250
|
+
message: "Choose a sample event",
|
|
251
|
+
options: candidates.map((candidate, index) => ({
|
|
252
|
+
label: `${candidate.label} ${chalk.dim("›")}`,
|
|
253
|
+
hint: formatEventHint(candidate),
|
|
254
|
+
value: index
|
|
255
|
+
}))
|
|
60
256
|
}));
|
|
257
|
+
const event = await hydrateCandidateEvent(candidates[choice], apiKey);
|
|
258
|
+
const action = await inspectSampleEvent(event);
|
|
259
|
+
if (action === "run") {
|
|
260
|
+
return event;
|
|
261
|
+
}
|
|
61
262
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
263
|
+
}
|
|
264
|
+
async function hydrateCandidateEvent(candidate, apiKey) {
|
|
265
|
+
if (candidate.kind === "synthetic") {
|
|
266
|
+
return candidate.event;
|
|
65
267
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
268
|
+
const payload = await fetchWithAuth(ApiRoutes.SDK.HYDRATE_SAMPLE_EVENT, apiKey, { entityType: candidate.entityType, entityId: candidate.entityId }, "POST");
|
|
269
|
+
return payload.event;
|
|
270
|
+
}
|
|
271
|
+
function encodeRefId(entityType, entityId) {
|
|
272
|
+
const token = Buffer.from(JSON.stringify({ entityType, entityId }), "utf8").toString("base64url");
|
|
273
|
+
return `ref:${token}`;
|
|
274
|
+
}
|
|
275
|
+
function hasWebhookTrigger(job) {
|
|
276
|
+
return job.triggers.some(trigger => trigger.integrationType === IntegrationType.WEBHOOK);
|
|
277
|
+
}
|
|
278
|
+
async function inspectSampleEvent(event) {
|
|
279
|
+
log.info(chalk.bold(formatEventLabel(event)));
|
|
280
|
+
if (event.display?.subtitle) {
|
|
281
|
+
console.log(chalk.dim(event.display.subtitle));
|
|
282
|
+
}
|
|
283
|
+
console.log("");
|
|
284
|
+
console.log(chalk.dim(truncate(normalizeSingleLine(event.formattedContent), 300)));
|
|
285
|
+
console.log("");
|
|
286
|
+
return abortIfCancelled(await select({
|
|
287
|
+
message: "Run this event?",
|
|
288
|
+
options: [
|
|
289
|
+
{ label: "Run this sample event", value: "run" },
|
|
290
|
+
{ label: "Choose another event", value: "back" }
|
|
291
|
+
]
|
|
292
|
+
}));
|
|
74
293
|
}
|
|
75
294
|
function serializeEvent(event) {
|
|
76
295
|
return {
|
|
@@ -78,6 +297,7 @@ function serializeEvent(event) {
|
|
|
78
297
|
eventType: event.eventType,
|
|
79
298
|
formattedContent: formatTriggerForAgent(event),
|
|
80
299
|
debugLog: debugTrigger(event),
|
|
300
|
+
display: displayTrigger(event),
|
|
81
301
|
data: event
|
|
82
302
|
};
|
|
83
303
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|