terse-cli 0.1.68 → 0.1.70
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/api.d.ts +11 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +8 -0
- package/dist/api.js.map +1 -1
- package/dist/codegen.d.ts +0 -15
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +81 -466
- package/dist/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +13 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/history.d.ts +1 -0
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +2 -0
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/historyPrinters.d.ts.map +1 -1
- package/dist/commands/historyPrinters.js +4 -1
- package/dist/commands/historyPrinters.js.map +1 -1
- package/dist/commands/listen.d.ts.map +1 -1
- package/dist/commands/listen.js +2 -1
- package/dist/commands/listen.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +11 -1
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/resume.d.ts +5 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +29 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +14 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +9 -3
- package/dist/commands/test.js.map +1 -1
- package/dist/deploy.d.ts +1 -2
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +38 -61
- package/dist/deploy.js.map +1 -1
- package/dist/generate.d.ts +1 -2
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +69 -67
- package/dist/generate.js.map +1 -1
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +96 -45
- package/dist/init.js.map +1 -1
- package/dist/integrate.d.ts +0 -1
- package/dist/integrate.d.ts.map +1 -1
- package/dist/integrate.js +11 -191
- package/dist/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/nonInteractive.d.ts +2 -4
- package/dist/nonInteractive.d.ts.map +1 -1
- package/dist/nonInteractive.js +2 -5
- package/dist/nonInteractive.js.map +1 -1
- package/dist/providers/LanguageProvider.d.ts +13 -0
- package/dist/providers/LanguageProvider.d.ts.map +1 -1
- package/dist/providers/python/PythonProvider.js +0 -1
- package/dist/providers/python/PythonProvider.js.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.d.ts +13 -0
- package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
- package/dist/providers/typescript/TypeScriptProvider.js +27 -94
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
- package/dist/providers/typescript/durableRuntime.d.ts +19 -0
- package/dist/providers/typescript/durableRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/durableRuntime.js +179 -0
- package/dist/providers/typescript/durableRuntime.js.map +1 -0
- package/dist/providers/typescript/jobMacro.d.ts +12 -0
- package/dist/providers/typescript/jobMacro.d.ts.map +1 -0
- package/dist/providers/typescript/jobMacro.js +116 -0
- package/dist/providers/typescript/jobMacro.js.map +1 -0
- package/dist/providers/typescript/parkSignals.d.ts +7 -0
- package/dist/providers/typescript/parkSignals.d.ts.map +1 -0
- package/dist/providers/typescript/parkSignals.js +45 -0
- package/dist/providers/typescript/parkSignals.js.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
- package/dist/providers/typescript/prepareCodegenData.js +1 -0
- package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
- package/dist/providers/typescript/rewindRun.d.ts +9 -0
- package/dist/providers/typescript/rewindRun.d.ts.map +1 -0
- package/dist/providers/typescript/rewindRun.js +111 -0
- package/dist/providers/typescript/rewindRun.js.map +1 -0
- package/dist/providers/typescript/runtimes/JobRuntime.d.ts +23 -0
- package/dist/providers/typescript/runtimes/JobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/JobRuntime.js +4 -0
- package/dist/providers/typescript/runtimes/JobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.d.ts +3 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.js +50 -0
- package/dist/providers/typescript/runtimes/directJobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts +3 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.js +95 -0
- package/dist/providers/typescript/runtimes/durableJobRuntime.js.map +1 -0
- package/dist/providers/typescript/runtimes/index.d.ts +4 -0
- package/dist/providers/typescript/runtimes/index.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/index.js +3 -0
- package/dist/providers/typescript/runtimes/index.js.map +1 -0
- package/dist/providers/typescript/runtimes/session.d.ts +2 -0
- package/dist/providers/typescript/runtimes/session.d.ts.map +1 -0
- package/dist/providers/typescript/runtimes/session.js +59 -0
- package/dist/providers/typescript/runtimes/session.js.map +1 -0
- package/dist/providers/typescript/terseWorkflowBuilder.d.ts +7 -0
- package/dist/providers/typescript/terseWorkflowBuilder.d.ts.map +1 -0
- package/dist/providers/typescript/terseWorkflowBuilder.js +43 -0
- package/dist/providers/typescript/terseWorkflowBuilder.js.map +1 -0
- 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 +11 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +153 -42
- package/dist/run.js.map +1 -1
- package/dist/runLocalTestJob.d.ts +14 -0
- package/dist/runLocalTestJob.d.ts.map +1 -0
- package/dist/runLocalTestJob.js +26 -0
- package/dist/runLocalTestJob.js.map +1 -0
- package/dist/sampleEventId.d.ts +4 -0
- package/dist/sampleEventId.d.ts.map +1 -1
- package/dist/sampleEventId.js +4 -0
- package/dist/sampleEventId.js.map +1 -1
- package/dist/shared/ApiRoutes.d.ts +0 -19
- package/dist/shared/ApiRoutes.d.ts.map +1 -1
- package/dist/shared/ApiRoutes.js +1 -17
- package/dist/shared/ApiRoutes.js.map +1 -1
- package/dist/shared/Configs.d.ts +2 -24
- package/dist/shared/Configs.d.ts.map +1 -1
- package/dist/shared/Configs.js +2 -32
- package/dist/shared/Configs.js.map +1 -1
- package/dist/shared/Integrations.d.ts +1 -18
- package/dist/shared/Integrations.d.ts.map +1 -1
- package/dist/shared/Integrations.js +1 -10
- package/dist/shared/Integrations.js.map +1 -1
- package/dist/shared/InvalidationKeys.d.ts +0 -1
- package/dist/shared/InvalidationKeys.d.ts.map +1 -1
- package/dist/shared/InvalidationKeys.js +0 -3
- package/dist/shared/InvalidationKeys.js.map +1 -1
- package/dist/shared/ModelEvents.d.ts +0 -9
- package/dist/shared/ModelEvents.d.ts.map +1 -1
- package/dist/shared/ModelEvents.js +0 -15
- package/dist/shared/ModelEvents.js.map +1 -1
- package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
- package/dist/shared/ToolDisplayUtils.js +11 -107
- package/dist/shared/ToolDisplayUtils.js.map +1 -1
- package/dist/shared/types.d.ts +108 -1013
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/terseWorld.d.ts +4 -0
- package/dist/terseWorld.d.ts.map +1 -0
- package/dist/terseWorld.js +46 -0
- package/dist/terseWorld.js.map +1 -0
- package/dist/test.d.ts +1 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +23 -43
- package/dist/test.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/dist/util.d.ts +3 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +3 -3
- package/dist/util.js.map +1 -1
- package/package.json +7 -3
- package/templates/typescript/codegen/partials/skills-section.hbs +4 -0
- 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/fsExec.d.ts +0 -8
- package/dist/commands/fsExec.d.ts.map +0 -1
- package/dist/commands/fsExec.js +0 -46
- package/dist/commands/fsExec.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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { isAgentApprovalHandlingClaimed } from "terse-sdk";
|
|
3
|
+
import { isCliRunCommandEnabled } from "../../../env.js";
|
|
4
|
+
import { openSessionStream, promptForToolApproval, submitApprovalDecision } from "../../shared/sessionStream.js";
|
|
5
|
+
let sessionPaused = false;
|
|
6
|
+
// Holds a session stream open (for tool-approval routing) for the duration of `action`.
|
|
7
|
+
export async function withSession(apiKey, isVerbose, pauseUiAround, action) {
|
|
8
|
+
let latestRunId = null;
|
|
9
|
+
const handleSessionEvent = async (event) => {
|
|
10
|
+
if (event.type === "run_started") {
|
|
11
|
+
latestRunId = event.runId;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (event.type !== "tool_approval_requested")
|
|
15
|
+
return;
|
|
16
|
+
if (isCliRunCommandEnabled())
|
|
17
|
+
return;
|
|
18
|
+
if (isAgentApprovalHandlingClaimed())
|
|
19
|
+
return;
|
|
20
|
+
const runId = latestRunId;
|
|
21
|
+
if (!runId) {
|
|
22
|
+
console.error(chalk.red(" Received approval request before run_started — cannot route decision."));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { toolName, arguments: rawArguments, stepId } = event.toolApprovalRequested;
|
|
26
|
+
if (!process.stdout.isTTY) {
|
|
27
|
+
console.error(chalk.red(` Approval required for "${toolName}" but no TTY is attached — auto-rejecting.`));
|
|
28
|
+
console.error(chalk.dim(" In non-interactive contexts, set TerseAgent.onApprovalRequired in your job code."));
|
|
29
|
+
try {
|
|
30
|
+
await submitApprovalDecision(apiKey, { runId, stepId, approved: false });
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(chalk.red(` Failed to submit auto-reject: ${error.message}`));
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
sessionPaused = true;
|
|
38
|
+
try {
|
|
39
|
+
await pauseUiAround(async () => {
|
|
40
|
+
const approved = await promptForToolApproval(toolName, rawArguments);
|
|
41
|
+
await submitApprovalDecision(apiKey, { runId, stepId, approved });
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(chalk.red(` Failed to submit approval decision: ${error.message}`));
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
sessionPaused = false;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const session = await openSessionStream(apiKey, { verbose: isVerbose, isPaused: () => sessionPaused, onEvent: handleSessionEvent });
|
|
52
|
+
try {
|
|
53
|
+
return await action(session.sessionId);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
session.close?.();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseBuilder } from "@workflow/builders";
|
|
2
|
+
export declare class TerseWorkflowBuilder extends BaseBuilder {
|
|
3
|
+
private readonly outDir;
|
|
4
|
+
constructor(workingDir: string, scanDir: string, outDir: string);
|
|
5
|
+
build(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=terseWorkflowBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terseWorkflowBuilder.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflowBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,oBAAoB,CAAA;AAYzE,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB/B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseBuilder, createBaseBuilderConfig } from "@workflow/builders";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
// Modeled on @workflow/nest's NestLocalBuilder: scan `scanDir` and emit bundles
|
|
5
|
+
// to an out dir OUTSIDE it. The builder globs inputs rooted at `dirs`, so output
|
|
6
|
+
// kept outside `dirs` is never re-globbed as an input — which is what lets
|
|
7
|
+
// re-tests overwrite the bundles cleanly. (StandaloneBuilder forces dirs: ['.'],
|
|
8
|
+
// scanning the whole project, which is why its output collided with itself.)
|
|
9
|
+
// `scanDir` (relative to workingDir) holds the macro-transformed sources, so the
|
|
10
|
+
// builder discovers the `"use workflow"` functions the job macro injected into
|
|
11
|
+
// each createJob's onTrigger.
|
|
12
|
+
export class TerseWorkflowBuilder extends BaseBuilder {
|
|
13
|
+
outDir;
|
|
14
|
+
constructor(workingDir, scanDir, outDir) {
|
|
15
|
+
super({
|
|
16
|
+
...createBaseBuilderConfig({ workingDir, dirs: [scanDir], watch: false }),
|
|
17
|
+
buildTarget: "standalone",
|
|
18
|
+
stepsBundlePath: path.join(outDir, "steps.cjs"),
|
|
19
|
+
workflowsBundlePath: path.join(outDir, "workflows.cjs"),
|
|
20
|
+
webhookBundlePath: path.join(outDir, "webhook.cjs")
|
|
21
|
+
});
|
|
22
|
+
this.outDir = outDir;
|
|
23
|
+
}
|
|
24
|
+
async build() {
|
|
25
|
+
const inputFiles = await this.getInputFiles();
|
|
26
|
+
fs.mkdirSync(this.outDir, { recursive: true });
|
|
27
|
+
const { manifest: workflows } = await this.createWorkflowsBundle({ outfile: path.join(this.outDir, "workflows.cjs"), format: "cjs", inputFiles });
|
|
28
|
+
const { manifest: steps } = await this.createStepsBundle({ outfile: path.join(this.outDir, "steps.cjs"), format: "cjs", inputFiles });
|
|
29
|
+
await this.createWebhookBundle({ outfile: path.join(this.outDir, "webhook.cjs"), bundle: false });
|
|
30
|
+
await this.createManifest({
|
|
31
|
+
workflowBundlePath: path.join(this.outDir, "workflows.cjs"),
|
|
32
|
+
manifestDir: this.outDir,
|
|
33
|
+
manifest: {
|
|
34
|
+
steps: { ...steps.steps, ...workflows.steps },
|
|
35
|
+
workflows: { ...steps.workflows, ...workflows.workflows },
|
|
36
|
+
classes: { ...steps.classes, ...workflows.classes }
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
// generated build output — keep it out of the user's git
|
|
40
|
+
fs.writeFileSync(path.join(this.outDir, ".gitignore"), "*\n");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=terseWorkflowBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terseWorkflowBuilder.js","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflowBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAC3E,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AACjF,+EAA+E;AAC/E,8BAA8B;AAC9B,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAChC,MAAM,CAAQ;IAE/B,YAAY,UAAkB,EAAE,OAAe,EAAE,MAAc;QAC3D,KAAK,CAAC;YACF,GAAG,uBAAuB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACzE,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;YAC/C,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC;YACvD,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;SACtD,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE9C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QACjJ,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QACrI,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAEjG,MAAM,IAAI,CAAC,cAAc,CAAC;YACtB,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC;YAC3D,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE;gBACN,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE;gBAC7C,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE;gBACzD,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;aACtD;SACJ,CAAC,CAAA;QAEF,yDAAyD;QACzD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAA;IACjE,CAAC;CACJ"}
|
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
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { SerializedEvent } from "./shared/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a TerseAgent scoped to a job's skills and execute onTrigger.
|
|
5
|
+
* Tools are registered from the codegen factory on globalThis (needed because
|
|
6
|
+
* tsx may load a separate module instance of terse-sdk).
|
|
7
|
+
*/
|
|
8
|
+
export declare function executeJob(job: CreateJobParameters, event: SerializedEvent, options?: {
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function run(jobName?: string, eventJson?: string, eventFile?: string): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAc,MAAM,WAAW,CAAA;AAK3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAIxD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCjI;AAED,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjG"}
|
package/dist/run.js
CHANGED
|
@@ -1,10 +1,58 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import fs from "fs";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { TerseAgent } from "terse-sdk";
|
|
4
|
+
import { readApiKey } from "./api.js";
|
|
5
|
+
import { assertProjectRoot } from "./assertProjectRoot.js";
|
|
5
6
|
import { loadJob } from "./loadJob.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
7
|
+
import { ApiRoutes } from "./shared/ApiRoutes.js";
|
|
8
|
+
import { convertSerializedEventToInputEvent } from "./util.js";
|
|
9
|
+
import { BACKEND_URL } from "./config.js";
|
|
10
|
+
/**
|
|
11
|
+
* Create a TerseAgent scoped to a job's skills and execute onTrigger.
|
|
12
|
+
* Tools are registered from the codegen factory on globalThis (needed because
|
|
13
|
+
* tsx may load a separate module instance of terse-sdk).
|
|
14
|
+
*/
|
|
15
|
+
export async function executeJob(job, event, options) {
|
|
16
|
+
const inputEvent = convertSerializedEventToInputEvent(event);
|
|
17
|
+
const isVerbose = options?.verbose ?? false;
|
|
18
|
+
const apiKey = process.env.TERSE_API_KEY ?? null;
|
|
19
|
+
let sessionId;
|
|
20
|
+
let closeSession;
|
|
21
|
+
if (isVerbose && apiKey) {
|
|
22
|
+
const session = await openSessionStream(apiKey);
|
|
23
|
+
sessionId = session.sessionId;
|
|
24
|
+
closeSession = session.close;
|
|
25
|
+
}
|
|
26
|
+
const agent = new TerseAgent(job.skills, BACKEND_URL, sessionId);
|
|
27
|
+
const createTools = globalThis.__terse_createTools;
|
|
28
|
+
if (createTools) {
|
|
29
|
+
Object.defineProperty(agent, "tools", { value: createTools(agent) });
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
if (job.filter) {
|
|
33
|
+
const shouldRun = await job.filter(inputEvent);
|
|
34
|
+
if (!shouldRun) {
|
|
35
|
+
console.log(chalk.dim(`\n Job "${job.name}" skipped (filter returned false).\n`));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (isVerbose) {
|
|
40
|
+
console.log(chalk.cyan(` Job "${job.name}" started`));
|
|
41
|
+
}
|
|
42
|
+
await job.onTrigger(inputEvent, agent);
|
|
43
|
+
console.log(chalk.green(`\n Job "${job.name}" completed successfully.\n`));
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.error(chalk.red(`\n Job "${job.name}" threw an error:\n`));
|
|
47
|
+
console.error(err);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
closeSession?.();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export async function run(jobName, eventJson, eventFile) {
|
|
55
|
+
assertProjectRoot();
|
|
8
56
|
if (eventFile && !eventJson) {
|
|
9
57
|
try {
|
|
10
58
|
eventJson = fs.readFileSync(eventFile, "utf-8");
|
|
@@ -15,58 +63,121 @@ export async function run(jobName, eventJson, eventFile, provider = resolveProvi
|
|
|
15
63
|
process.exit(1);
|
|
16
64
|
}
|
|
17
65
|
}
|
|
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) {
|
|
66
|
+
if (!eventJson) {
|
|
34
67
|
console.error(chalk.red("Error: --event <json> or --event-file <path> is required.\n"));
|
|
35
|
-
console.error(chalk.dim(
|
|
68
|
+
console.error(chalk.dim(" Usage: terse run --event '{\"integrationType\":\"...\",\"formattedContent\":\"...\",\"debugLog\":\"...\"}'"));
|
|
36
69
|
console.error(chalk.dim(" terse run --event-file ./event.json"));
|
|
37
70
|
console.error(chalk.dim(" Tip: Use `terse test` to interactively pick a sample event.\n"));
|
|
38
71
|
process.exit(1);
|
|
39
72
|
}
|
|
40
|
-
|
|
73
|
+
readApiKey();
|
|
74
|
+
const { job } = await loadJob(jobName);
|
|
75
|
+
console.log(chalk.cyan(`\n Running job: ${job.name}\n`));
|
|
41
76
|
let parsed;
|
|
42
77
|
try {
|
|
43
|
-
parsed =
|
|
78
|
+
parsed = JSON.parse(eventJson);
|
|
44
79
|
}
|
|
45
|
-
catch
|
|
46
|
-
console.error(chalk.red("Error: --event
|
|
47
|
-
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
80
|
+
catch {
|
|
81
|
+
console.error(chalk.red("Error: --event value is not valid JSON."));
|
|
48
82
|
process.exit(1);
|
|
49
83
|
}
|
|
50
|
-
await
|
|
84
|
+
await executeJob(job, parsed);
|
|
51
85
|
}
|
|
52
|
-
async function
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
86
|
+
async function openSessionStream(apiKey) {
|
|
87
|
+
const res = await fetch(`${BACKEND_URL}${ApiRoutes.SDK.SESSION_EVENTS}`, {
|
|
88
|
+
headers: { Authorization: `Bearer ${apiKey}`, Accept: "text/event-stream" }
|
|
89
|
+
});
|
|
90
|
+
if (!res.ok || !res.body) {
|
|
91
|
+
throw new Error(`Failed to open session event stream (HTTP ${res.status})`);
|
|
56
92
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
93
|
+
const reader = res.body.getReader();
|
|
94
|
+
const decoder = new TextDecoder();
|
|
95
|
+
let buffer = "";
|
|
96
|
+
const sessionId = await readSessionId(reader, decoder, buffer);
|
|
97
|
+
buffer = sessionId._remainingBuffer;
|
|
98
|
+
startEventConsumer(reader, decoder, buffer);
|
|
99
|
+
return {
|
|
100
|
+
sessionId: sessionId.value,
|
|
101
|
+
close: () => reader.cancel().catch(() => { })
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async function readSessionId(reader, decoder, buffer) {
|
|
105
|
+
while (true) {
|
|
106
|
+
const { done, value } = await reader.read();
|
|
107
|
+
if (done)
|
|
108
|
+
throw new Error("Session stream ended before sending sessionId");
|
|
109
|
+
buffer += decoder.decode(value, { stream: true });
|
|
110
|
+
const lines = buffer.split("\n");
|
|
111
|
+
buffer = lines.pop() ?? "";
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
if (!line.startsWith("data: "))
|
|
114
|
+
continue;
|
|
115
|
+
const event = safeParseJson(line.slice(6));
|
|
116
|
+
if (event?.type === "session_started" && typeof event.sessionId === "string") {
|
|
117
|
+
return { value: event.sessionId, _remainingBuffer: buffer };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
61
120
|
}
|
|
121
|
+
}
|
|
122
|
+
function startEventConsumer(reader, decoder, initialBuffer) {
|
|
123
|
+
let buffer = initialBuffer;
|
|
124
|
+
(async () => {
|
|
125
|
+
try {
|
|
126
|
+
while (true) {
|
|
127
|
+
const { done, value } = await reader.read();
|
|
128
|
+
if (done)
|
|
129
|
+
break;
|
|
130
|
+
buffer += decoder.decode(value, { stream: true });
|
|
131
|
+
const lines = buffer.split("\n");
|
|
132
|
+
buffer = lines.pop() ?? "";
|
|
133
|
+
for (const line of lines) {
|
|
134
|
+
if (!line.startsWith("data: "))
|
|
135
|
+
continue;
|
|
136
|
+
const event = safeParseJson(line.slice(6));
|
|
137
|
+
if (event)
|
|
138
|
+
logSessionEvent(event);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// Stream cancelled by close() — expected
|
|
144
|
+
}
|
|
145
|
+
})();
|
|
146
|
+
}
|
|
147
|
+
function logSessionEvent(event) {
|
|
148
|
+
switch (event.type) {
|
|
149
|
+
case "tool_call_started":
|
|
150
|
+
console.log(chalk.blue(` [tool:start] ${event.toolCallStarted}`));
|
|
151
|
+
break;
|
|
152
|
+
case "tool_call_completed": {
|
|
153
|
+
const parsed = safeParseJson(event.toolCallCompleted);
|
|
154
|
+
const toolName = parsed?.tool || "unknown_tool";
|
|
155
|
+
const status = parsed?.status || "unknown";
|
|
156
|
+
const symbol = status === "completed" ? chalk.green("ok") : chalk.red("failed");
|
|
157
|
+
console.log(` [tool:done] ${toolName} (${symbol})`);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
case "action": {
|
|
161
|
+
const action = event.action;
|
|
162
|
+
const actionName = action?.action || "action";
|
|
163
|
+
const target = action?.target ? ` -> ${action.target}` : "";
|
|
164
|
+
console.log(chalk.magenta(` [action] ${actionName}${target}`));
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case "final_output":
|
|
168
|
+
console.log(chalk.green(`\n [final_output] ${event.finalOutput}\n`));
|
|
169
|
+
break;
|
|
170
|
+
case "error":
|
|
171
|
+
console.log(chalk.red(` [error] ${event.message}`));
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function safeParseJson(value) {
|
|
62
176
|
try {
|
|
63
|
-
|
|
64
|
-
return sdkRunTriggerEventResponseSchema.parse(response).event;
|
|
177
|
+
return JSON.parse(value);
|
|
65
178
|
}
|
|
66
|
-
catch
|
|
67
|
-
|
|
68
|
-
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
69
|
-
process.exit(1);
|
|
179
|
+
catch {
|
|
180
|
+
return null;
|
|
70
181
|
}
|
|
71
182
|
}
|
|
72
183
|
//# 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,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { SerializedEvent } from "terse-types";
|
|
3
|
+
import type { LanguageProvider } from "./providers/LanguageProvider.js";
|
|
4
|
+
export declare function runLocalTestJob(provider: LanguageProvider, job: CreateJobParameters, event: SerializedEvent, opts: {
|
|
5
|
+
projectId: string;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
forceLocal?: boolean;
|
|
8
|
+
isTest?: boolean;
|
|
9
|
+
replayOfRunId?: string;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
entryFile?: string;
|
|
12
|
+
pauseUiAround?: <T>(fn: () => Promise<T>) => Promise<T>;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=runLocalTestJob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runLocalTestJob.d.ts","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE,wBAAsB,eAAe,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE;IACF,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CAC1D,GACF,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { finalizeTestRun, startTestRun } from "./api.js";
|
|
3
|
+
export async function runLocalTestJob(provider, job, event, opts) {
|
|
4
|
+
const { runId, local } = await startTestRun({ projectId: opts.projectId, jobName: job.name, event, forceLocal: opts.forceLocal, isTest: opts.isTest, replayOfRunId: opts.replayOfRunId }, opts.apiKey);
|
|
5
|
+
if (!local) {
|
|
6
|
+
console.log(chalk.cyan(` Dispatched test event to your self-hosted data plane (run ${runId}). Watch it in the dashboard.`));
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let failure = null;
|
|
10
|
+
try {
|
|
11
|
+
await provider.executeJob(job, runId, event, {
|
|
12
|
+
verbose: opts.verbose,
|
|
13
|
+
entryFile: opts.entryFile,
|
|
14
|
+
projectId: opts.projectId,
|
|
15
|
+
pauseUiAround: opts.pauseUiAround
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
failure = error instanceof Error ? error : new Error(String(error));
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
await finalizeTestRun(runId, failure ? "failed" : "success", opts.apiKey, failure?.message);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=runLocalTestJob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runLocalTestJob.js","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,QAA0B,EAC1B,GAAwB,EACxB,KAAsB,EACtB,IASC;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CACvC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAC5I,IAAI,CAAC,MAAM,CACd,CAAA;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+DAA+D,KAAK,+BAA+B,CAAC,CAAC,CAAA;QAC5H,OAAM;IACV,CAAC;IAED,IAAI,OAAO,GAAiB,IAAI,CAAA;IAChC,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnE,MAAM,KAAK,CAAA;IACf,CAAC;YAAS,CAAC;QACP,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/F,CAAC;AACL,CAAC"}
|
package/dist/sampleEventId.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ import type { SerializedEvent } from "terse-types";
|
|
|
4
4
|
* the underlying Trigger payload (`event.data`) is identical — we deliberately
|
|
5
5
|
* avoid hashing display strings like `formattedContent` because the server
|
|
6
6
|
* renders relative timestamps that drift between calls.
|
|
7
|
+
*
|
|
8
|
+
* For synthetic cron/webhook events the CLI builds in test.ts, the caller is
|
|
9
|
+
* responsible for ensuring each trigger produces a distinct `data` (e.g. by
|
|
10
|
+
* stamping a `_syntheticTriggerIndex`).
|
|
7
11
|
*/
|
|
8
12
|
export declare function hashEventKey(event: SerializedEvent): string;
|
|
9
13
|
//# sourceMappingURL=sampleEventId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampleEventId.d.ts","sourceRoot":"","sources":["../src/sampleEventId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD
|
|
1
|
+
{"version":3,"file":"sampleEventId.d.ts","sourceRoot":"","sources":["../src/sampleEventId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAO3D"}
|
package/dist/sampleEventId.js
CHANGED
|
@@ -4,6 +4,10 @@ import { createHash } from "node:crypto";
|
|
|
4
4
|
* the underlying Trigger payload (`event.data`) is identical — we deliberately
|
|
5
5
|
* avoid hashing display strings like `formattedContent` because the server
|
|
6
6
|
* renders relative timestamps that drift between calls.
|
|
7
|
+
*
|
|
8
|
+
* For synthetic cron/webhook events the CLI builds in test.ts, the caller is
|
|
9
|
+
* responsible for ensuring each trigger produces a distinct `data` (e.g. by
|
|
10
|
+
* stamping a `_syntheticTriggerIndex`).
|
|
7
11
|
*/
|
|
8
12
|
export function hashEventKey(event) {
|
|
9
13
|
const material = JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampleEventId.js","sourceRoot":"","sources":["../src/sampleEventId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC
|
|
1
|
+
{"version":3,"file":"sampleEventId.js","sourceRoot":"","sources":["../src/sampleEventId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC,CAAA;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC3E,CAAC"}
|
|
@@ -139,9 +139,6 @@ export declare const ApiRoutes: {
|
|
|
139
139
|
readonly INTEGRATIONS: "/workos-integration/integrations";
|
|
140
140
|
readonly WEBHOOK_SECRET: "/workos-integration/webhook-secret";
|
|
141
141
|
};
|
|
142
|
-
readonly SNOWFLAKE: {
|
|
143
|
-
readonly INTEGRATIONS: "/snowflake/integrations";
|
|
144
|
-
};
|
|
145
142
|
readonly ATTIO: {
|
|
146
143
|
readonly INTEGRATIONS: "/attio/integrations";
|
|
147
144
|
readonly OAUTH_CALLBACK: "/attio/oauth/callback";
|
|
@@ -248,24 +245,8 @@ export declare const ApiRoutes: {
|
|
|
248
245
|
readonly TOOL_EXECUTE: "/sdk/tool-execute";
|
|
249
246
|
readonly TOOL_DEFINITIONS: "/sdk/tool-definitions";
|
|
250
247
|
readonly AGENT_RUN: "/sdk/agent-run";
|
|
251
|
-
readonly APPROVAL_DECISION: "/sdk/approval-decision";
|
|
252
248
|
readonly SESSION_EVENTS: "/sdk/session-events";
|
|
253
249
|
readonly DEPLOY: "/sdk/deploy";
|
|
254
|
-
readonly DEVICE_TOKEN_EXCHANGE: "/sdk/auth/device-token-exchange";
|
|
255
|
-
readonly INTEGRATION_FIELDS: {
|
|
256
|
-
readonly pattern: "/sdk/integrations/:integrationType/fields";
|
|
257
|
-
readonly build: (integrationType: string) => string;
|
|
258
|
-
readonly params: {
|
|
259
|
-
readonly integrationType: "string";
|
|
260
|
-
};
|
|
261
|
-
};
|
|
262
|
-
readonly INTEGRATION_FORM_SUBMIT: {
|
|
263
|
-
readonly pattern: "/sdk/integrations/:integrationType/form-submit";
|
|
264
|
-
readonly build: (integrationType: string) => string;
|
|
265
|
-
readonly params: {
|
|
266
|
-
readonly integrationType: "string";
|
|
267
|
-
};
|
|
268
|
-
};
|
|
269
250
|
};
|
|
270
251
|
readonly NOTIFICATION_SETTINGS: "/notification-settings";
|
|
271
252
|
readonly SENT_NOTIFICATIONS: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiRoutes.d.ts","sourceRoot":"","sources":["../../src/shared/ApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;6CAyBc,MAAM;;;;;;;;;;;;sCAcb,MAAM;;;;;;;oCAKR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CA0FE,MAAM;;;;;;;4CAKN,MAAM,cAAc,MAAM
|
|
1
|
+
{"version":3,"file":"ApiRoutes.d.ts","sourceRoot":"","sources":["../../src/shared/ApiRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;6CAyBc,MAAM;;;;;;;;;;;;sCAcb,MAAM;;;;;;;oCAKR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CA0FE,MAAM;;;;;;;4CAKN,MAAM,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;4CAuB1B,MAAM;;;;;;;;;;;iCAWjB,MAAM;;;;;;;;;sCAQD,MAAM;;;;;;;sCAKN,MAAM,MAAM,MAAM;;;;;;;;sCAKlB,MAAM,MAAM,MAAM;;;;;;;;sCAKlB,MAAM,MAAM,MAAM;;;;;;;;sCAKlB,MAAM;;;;;;;;;;;;;;;;8CAoBE,MAAM;;;;;;;;;;;;iCAYnB,MAAM;;;;;;;;;;iCAUN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAiCC,MAAM;;;;;;;qCAKT,MAAM;;;;;;;sCAKL,MAAM;;;;;;;4CAKA,MAAM;;;;;;;;;sCASZ,MAAM;;;;;;;2CAKD,MAAM;;;;;;;;;;;;iCAchB,MAAM;;;;;;;;;wCASC,MAAM;;;;;;CAI3B,CAAA"}
|
package/dist/shared/ApiRoutes.js
CHANGED
|
@@ -145,10 +145,6 @@ export const ApiRoutes = {
|
|
|
145
145
|
INTEGRATIONS: "/workos-integration/integrations",
|
|
146
146
|
WEBHOOK_SECRET: "/workos-integration/webhook-secret"
|
|
147
147
|
},
|
|
148
|
-
// Snowflake routes
|
|
149
|
-
SNOWFLAKE: {
|
|
150
|
-
INTEGRATIONS: "/snowflake/integrations"
|
|
151
|
-
},
|
|
152
148
|
// Attio routes
|
|
153
149
|
ATTIO: {
|
|
154
150
|
INTEGRATIONS: "/attio/integrations",
|
|
@@ -240,20 +236,8 @@ export const ApiRoutes = {
|
|
|
240
236
|
TOOL_EXECUTE: "/sdk/tool-execute",
|
|
241
237
|
TOOL_DEFINITIONS: "/sdk/tool-definitions",
|
|
242
238
|
AGENT_RUN: "/sdk/agent-run",
|
|
243
|
-
APPROVAL_DECISION: "/sdk/approval-decision",
|
|
244
239
|
SESSION_EVENTS: "/sdk/session-events",
|
|
245
|
-
DEPLOY: "/sdk/deploy"
|
|
246
|
-
DEVICE_TOKEN_EXCHANGE: "/sdk/auth/device-token-exchange",
|
|
247
|
-
INTEGRATION_FIELDS: {
|
|
248
|
-
pattern: "/sdk/integrations/:integrationType/fields",
|
|
249
|
-
build: (integrationType) => `/sdk/integrations/${encodeURIComponent(integrationType)}/fields`,
|
|
250
|
-
params: { integrationType: "string" }
|
|
251
|
-
},
|
|
252
|
-
INTEGRATION_FORM_SUBMIT: {
|
|
253
|
-
pattern: "/sdk/integrations/:integrationType/form-submit",
|
|
254
|
-
build: (integrationType) => `/sdk/integrations/${encodeURIComponent(integrationType)}/form-submit`,
|
|
255
|
-
params: { integrationType: "string" }
|
|
256
|
-
}
|
|
240
|
+
DEPLOY: "/sdk/deploy"
|
|
257
241
|
},
|
|
258
242
|
NOTIFICATION_SETTINGS: "/notification-settings",
|
|
259
243
|
SENT_NOTIFICATIONS: {
|