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.
Files changed (207) hide show
  1. package/dist/api.d.ts +11 -1
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +8 -0
  4. package/dist/api.js.map +1 -1
  5. package/dist/codegen.d.ts +0 -15
  6. package/dist/codegen.d.ts.map +1 -1
  7. package/dist/codegen.js +81 -466
  8. package/dist/codegen.js.map +1 -1
  9. package/dist/commands/deploy.d.ts.map +1 -1
  10. package/dist/commands/deploy.js +13 -0
  11. package/dist/commands/deploy.js.map +1 -1
  12. package/dist/commands/history.d.ts +1 -0
  13. package/dist/commands/history.d.ts.map +1 -1
  14. package/dist/commands/history.js +2 -0
  15. package/dist/commands/history.js.map +1 -1
  16. package/dist/commands/historyPrinters.d.ts.map +1 -1
  17. package/dist/commands/historyPrinters.js +4 -1
  18. package/dist/commands/historyPrinters.js.map +1 -1
  19. package/dist/commands/listen.d.ts.map +1 -1
  20. package/dist/commands/listen.js +2 -1
  21. package/dist/commands/listen.js.map +1 -1
  22. package/dist/commands/replay.d.ts.map +1 -1
  23. package/dist/commands/replay.js +11 -1
  24. package/dist/commands/replay.js.map +1 -1
  25. package/dist/commands/resume.d.ts +5 -0
  26. package/dist/commands/resume.d.ts.map +1 -0
  27. package/dist/commands/resume.js +29 -0
  28. package/dist/commands/resume.js.map +1 -0
  29. package/dist/commands/run.d.ts.map +1 -1
  30. package/dist/commands/run.js +14 -2
  31. package/dist/commands/run.js.map +1 -1
  32. package/dist/commands/test.d.ts.map +1 -1
  33. package/dist/commands/test.js +9 -3
  34. package/dist/commands/test.js.map +1 -1
  35. package/dist/deploy.d.ts +1 -2
  36. package/dist/deploy.d.ts.map +1 -1
  37. package/dist/deploy.js +38 -61
  38. package/dist/deploy.js.map +1 -1
  39. package/dist/generate.d.ts +1 -2
  40. package/dist/generate.d.ts.map +1 -1
  41. package/dist/generate.js +69 -67
  42. package/dist/generate.js.map +1 -1
  43. package/dist/index.js +74 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/init.d.ts +1 -2
  46. package/dist/init.d.ts.map +1 -1
  47. package/dist/init.js +96 -45
  48. package/dist/init.js.map +1 -1
  49. package/dist/integrate.d.ts +0 -1
  50. package/dist/integrate.d.ts.map +1 -1
  51. package/dist/integrate.js +11 -191
  52. package/dist/integrate.js.map +1 -1
  53. package/dist/jsonOutput.d.ts +19 -0
  54. package/dist/jsonOutput.d.ts.map +1 -0
  55. package/dist/jsonOutput.js +25 -0
  56. package/dist/jsonOutput.js.map +1 -0
  57. package/dist/nonInteractive.d.ts +2 -4
  58. package/dist/nonInteractive.d.ts.map +1 -1
  59. package/dist/nonInteractive.js +2 -5
  60. package/dist/nonInteractive.js.map +1 -1
  61. package/dist/providers/LanguageProvider.d.ts +13 -0
  62. package/dist/providers/LanguageProvider.d.ts.map +1 -1
  63. package/dist/providers/python/PythonProvider.js +0 -1
  64. package/dist/providers/python/PythonProvider.js.map +1 -1
  65. package/dist/providers/typescript/TypeScriptProvider.d.ts +13 -0
  66. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  67. package/dist/providers/typescript/TypeScriptProvider.js +27 -94
  68. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  69. package/dist/providers/typescript/durableRuntime.d.ts +19 -0
  70. package/dist/providers/typescript/durableRuntime.d.ts.map +1 -0
  71. package/dist/providers/typescript/durableRuntime.js +179 -0
  72. package/dist/providers/typescript/durableRuntime.js.map +1 -0
  73. package/dist/providers/typescript/jobMacro.d.ts +12 -0
  74. package/dist/providers/typescript/jobMacro.d.ts.map +1 -0
  75. package/dist/providers/typescript/jobMacro.js +116 -0
  76. package/dist/providers/typescript/jobMacro.js.map +1 -0
  77. package/dist/providers/typescript/parkSignals.d.ts +7 -0
  78. package/dist/providers/typescript/parkSignals.d.ts.map +1 -0
  79. package/dist/providers/typescript/parkSignals.js +45 -0
  80. package/dist/providers/typescript/parkSignals.js.map +1 -0
  81. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  82. package/dist/providers/typescript/prepareCodegenData.js +1 -0
  83. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  84. package/dist/providers/typescript/rewindRun.d.ts +9 -0
  85. package/dist/providers/typescript/rewindRun.d.ts.map +1 -0
  86. package/dist/providers/typescript/rewindRun.js +111 -0
  87. package/dist/providers/typescript/rewindRun.js.map +1 -0
  88. package/dist/providers/typescript/runtimes/JobRuntime.d.ts +23 -0
  89. package/dist/providers/typescript/runtimes/JobRuntime.d.ts.map +1 -0
  90. package/dist/providers/typescript/runtimes/JobRuntime.js +4 -0
  91. package/dist/providers/typescript/runtimes/JobRuntime.js.map +1 -0
  92. package/dist/providers/typescript/runtimes/directJobRuntime.d.ts +3 -0
  93. package/dist/providers/typescript/runtimes/directJobRuntime.d.ts.map +1 -0
  94. package/dist/providers/typescript/runtimes/directJobRuntime.js +50 -0
  95. package/dist/providers/typescript/runtimes/directJobRuntime.js.map +1 -0
  96. package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts +3 -0
  97. package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts.map +1 -0
  98. package/dist/providers/typescript/runtimes/durableJobRuntime.js +95 -0
  99. package/dist/providers/typescript/runtimes/durableJobRuntime.js.map +1 -0
  100. package/dist/providers/typescript/runtimes/index.d.ts +4 -0
  101. package/dist/providers/typescript/runtimes/index.d.ts.map +1 -0
  102. package/dist/providers/typescript/runtimes/index.js +3 -0
  103. package/dist/providers/typescript/runtimes/index.js.map +1 -0
  104. package/dist/providers/typescript/runtimes/session.d.ts +2 -0
  105. package/dist/providers/typescript/runtimes/session.d.ts.map +1 -0
  106. package/dist/providers/typescript/runtimes/session.js +59 -0
  107. package/dist/providers/typescript/runtimes/session.js.map +1 -0
  108. package/dist/providers/typescript/terseWorkflowBuilder.d.ts +7 -0
  109. package/dist/providers/typescript/terseWorkflowBuilder.d.ts.map +1 -0
  110. package/dist/providers/typescript/terseWorkflowBuilder.js +43 -0
  111. package/dist/providers/typescript/terseWorkflowBuilder.js.map +1 -0
  112. package/dist/replay.d.ts +3 -0
  113. package/dist/replay.d.ts.map +1 -0
  114. package/dist/replay.js +20 -0
  115. package/dist/replay.js.map +1 -0
  116. package/dist/run.d.ts +11 -2
  117. package/dist/run.d.ts.map +1 -1
  118. package/dist/run.js +153 -42
  119. package/dist/run.js.map +1 -1
  120. package/dist/runLocalTestJob.d.ts +14 -0
  121. package/dist/runLocalTestJob.d.ts.map +1 -0
  122. package/dist/runLocalTestJob.js +26 -0
  123. package/dist/runLocalTestJob.js.map +1 -0
  124. package/dist/sampleEventId.d.ts +4 -0
  125. package/dist/sampleEventId.d.ts.map +1 -1
  126. package/dist/sampleEventId.js +4 -0
  127. package/dist/sampleEventId.js.map +1 -1
  128. package/dist/shared/ApiRoutes.d.ts +0 -19
  129. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  130. package/dist/shared/ApiRoutes.js +1 -17
  131. package/dist/shared/ApiRoutes.js.map +1 -1
  132. package/dist/shared/Configs.d.ts +2 -24
  133. package/dist/shared/Configs.d.ts.map +1 -1
  134. package/dist/shared/Configs.js +2 -32
  135. package/dist/shared/Configs.js.map +1 -1
  136. package/dist/shared/Integrations.d.ts +1 -18
  137. package/dist/shared/Integrations.d.ts.map +1 -1
  138. package/dist/shared/Integrations.js +1 -10
  139. package/dist/shared/Integrations.js.map +1 -1
  140. package/dist/shared/InvalidationKeys.d.ts +0 -1
  141. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  142. package/dist/shared/InvalidationKeys.js +0 -3
  143. package/dist/shared/InvalidationKeys.js.map +1 -1
  144. package/dist/shared/ModelEvents.d.ts +0 -9
  145. package/dist/shared/ModelEvents.d.ts.map +1 -1
  146. package/dist/shared/ModelEvents.js +0 -15
  147. package/dist/shared/ModelEvents.js.map +1 -1
  148. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  149. package/dist/shared/ToolDisplayUtils.js +11 -107
  150. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  151. package/dist/shared/types.d.ts +108 -1013
  152. package/dist/shared/types.d.ts.map +1 -1
  153. package/dist/shared/types.js.map +1 -1
  154. package/dist/terseWorld.d.ts +4 -0
  155. package/dist/terseWorld.d.ts.map +1 -0
  156. package/dist/terseWorld.js +46 -0
  157. package/dist/terseWorld.js.map +1 -0
  158. package/dist/test.d.ts +1 -2
  159. package/dist/test.d.ts.map +1 -1
  160. package/dist/test.js +23 -43
  161. package/dist/test.js.map +1 -1
  162. package/dist/urls.d.ts +3 -0
  163. package/dist/urls.d.ts.map +1 -0
  164. package/dist/urls.js +27 -0
  165. package/dist/urls.js.map +1 -0
  166. package/dist/util.d.ts +3 -2
  167. package/dist/util.d.ts.map +1 -1
  168. package/dist/util.js +3 -3
  169. package/dist/util.js.map +1 -1
  170. package/package.json +7 -3
  171. package/templates/typescript/codegen/partials/skills-section.hbs +4 -0
  172. package/dist/commands/deployTheme.d.ts +0 -28
  173. package/dist/commands/deployTheme.d.ts.map +0 -1
  174. package/dist/commands/deployTheme.js +0 -68
  175. package/dist/commands/deployTheme.js.map +0 -1
  176. package/dist/commands/dev.d.ts +0 -3
  177. package/dist/commands/dev.d.ts.map +0 -1
  178. package/dist/commands/dev.js +0 -47
  179. package/dist/commands/dev.js.map +0 -1
  180. package/dist/commands/fsExec.d.ts +0 -8
  181. package/dist/commands/fsExec.d.ts.map +0 -1
  182. package/dist/commands/fsExec.js +0 -46
  183. package/dist/commands/fsExec.js.map +0 -1
  184. package/dist/commands/serve.d.ts +0 -1
  185. package/dist/commands/serve.d.ts.map +0 -1
  186. package/dist/commands/serve.js +0 -2
  187. package/dist/commands/serve.js.map +0 -1
  188. package/dist/commands/terseCliTheme.d.ts +0 -28
  189. package/dist/commands/terseCliTheme.d.ts.map +0 -1
  190. package/dist/commands/terseCliTheme.js +0 -68
  191. package/dist/commands/terseCliTheme.js.map +0 -1
  192. package/dist/perf.d.ts +0 -9
  193. package/dist/perf.d.ts.map +0 -1
  194. package/dist/perf.js +0 -59
  195. package/dist/perf.js.map +0 -1
  196. package/dist/providers/codegen.test.d.ts +0 -2
  197. package/dist/providers/codegen.test.d.ts.map +0 -1
  198. package/dist/providers/codegen.test.js +0 -45
  199. package/dist/providers/codegen.test.js.map +0 -1
  200. package/dist/providers/python/PythonProvider.test.d.ts +0 -2
  201. package/dist/providers/python/PythonProvider.test.d.ts.map +0 -1
  202. package/dist/providers/python/PythonProvider.test.js +0 -169
  203. package/dist/providers/python/PythonProvider.test.js.map +0 -1
  204. package/dist/providers/typescript/prepareCodegenData.test.d.ts +0 -2
  205. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +0 -1
  206. package/dist/providers/typescript/prepareCodegenData.test.js +0 -54
  207. 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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
+ export declare function replay(runId: string, provider?: LanguageProvider): Promise<void>;
3
+ //# sourceMappingURL=replay.d.ts.map
@@ -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 type { LanguageProvider } from "./providers/LanguageProvider.js";
2
- export declare function run(jobName?: string, eventJson?: string, eventFile?: string, provider?: LanguageProvider, entryFile?: string): Promise<void>;
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":"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,CA8CrK"}
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 { ApiRoutes, buildRoute, sdkRunTriggerEventResponseSchema, serializedEventSchema } from "terse-types";
4
- import { fetchWithAuth, readApiKey } from "./api.js";
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 { resolveProvider } from "./providers/resolveProvider.js";
7
- export async function run(jobName, eventJson, eventFile, provider = resolveProvider(), entryFile) {
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
- readApiKey();
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(' Usage: terse run --event \'{"integrationType":"...","eventType":"...","formattedContent":"...","debugLog":"...","data":{...}}\''));
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
- const { job } = await loadJob(provider, jobName, entryFile);
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 = serializedEventSchema.parse(rawEvent);
78
+ parsed = JSON.parse(eventJson);
44
79
  }
45
- catch (error) {
46
- console.error(chalk.red("Error: --event does not match the canonical Trigger schema."));
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 provider.executeJob(job, parsed, { entryFile });
84
+ await executeJob(job, parsed);
51
85
  }
52
- async function resolveEventFromRunId() {
53
- const runId = process.env.TERSE_RUN_ID?.trim();
54
- if (!runId) {
55
- return undefined;
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 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);
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
- const response = await fetchWithAuth(buildRoute(ApiRoutes.SDK.RUN_TRIGGER_EVENT, { runId }), apiKey);
64
- return sdkRunTriggerEventResponseSchema.parse(response).event;
177
+ return JSON.parse(value);
65
178
  }
66
- catch (error) {
67
- console.error(chalk.red(`Error: Could not fetch the trigger event for run ${runId}.`));
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":"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"}
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"}
@@ -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;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAO3D"}
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"}
@@ -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;;;;;GAKG;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"}
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;;;;;;;;;;;;;;;;;;;;;;;4CA4B1B,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;;;;;;;;;;;;;;;;;;8CAkBO,MAAM;;;;;;;8CAKN,MAAM;;;;;;;;;;;;;;;;;;;wCAsBZ,MAAM;;;;;;;qCAKT,MAAM;;;;;;;sCAKL,MAAM;;;;;;;4CAKA,MAAM;;;;;;;;;sCASZ,MAAM;;;;;;;2CAKD,MAAM;;;;;;;;;;;;iCAchB,MAAM;;;;;;;;;wCASC,MAAM;;;;;;CAI3B,CAAA"}
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"}
@@ -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: {