terse-cli 0.2.2 → 0.2.4

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 (181) hide show
  1. package/dist/api.d.ts +1 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js.map +1 -1
  4. package/dist/codegen.d.ts +0 -15
  5. package/dist/codegen.d.ts.map +1 -1
  6. package/dist/codegen.js +81 -466
  7. package/dist/codegen.js.map +1 -1
  8. package/dist/commands/generate.d.ts.map +1 -1
  9. package/dist/commands/generate.js +16 -2
  10. package/dist/commands/generate.js.map +1 -1
  11. package/dist/commands/memory.d.ts +1 -0
  12. package/dist/commands/memory.d.ts.map +1 -1
  13. package/dist/commands/memory.js +1 -1
  14. package/dist/commands/memory.js.map +1 -1
  15. package/dist/commands/test.d.ts +2 -1
  16. package/dist/commands/test.d.ts.map +1 -1
  17. package/dist/commands/test.js +3 -2
  18. package/dist/commands/test.js.map +1 -1
  19. package/dist/deploy.d.ts +1 -2
  20. package/dist/deploy.d.ts.map +1 -1
  21. package/dist/deploy.js +38 -61
  22. package/dist/deploy.js.map +1 -1
  23. package/dist/generate.d.ts +1 -2
  24. package/dist/generate.d.ts.map +1 -1
  25. package/dist/generate.js +69 -67
  26. package/dist/generate.js.map +1 -1
  27. package/dist/index.js +64 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/init.d.ts +1 -2
  30. package/dist/init.d.ts.map +1 -1
  31. package/dist/init.js +96 -45
  32. package/dist/init.js.map +1 -1
  33. package/dist/integrate.d.ts +0 -1
  34. package/dist/integrate.d.ts.map +1 -1
  35. package/dist/integrate.js +11 -191
  36. package/dist/integrate.js.map +1 -1
  37. package/dist/jsonOutput.d.ts +19 -0
  38. package/dist/jsonOutput.d.ts.map +1 -0
  39. package/dist/jsonOutput.js +25 -0
  40. package/dist/jsonOutput.js.map +1 -0
  41. package/dist/nonInteractive.d.ts +2 -4
  42. package/dist/nonInteractive.d.ts.map +1 -1
  43. package/dist/nonInteractive.js +2 -5
  44. package/dist/nonInteractive.js.map +1 -1
  45. package/dist/providers/codegenTypes.d.ts +1 -0
  46. package/dist/providers/codegenTypes.d.ts.map +1 -1
  47. package/dist/providers/python/PythonProvider.js +0 -1
  48. package/dist/providers/python/PythonProvider.js.map +1 -1
  49. package/dist/providers/typescript/parkSignals.d.ts +7 -0
  50. package/dist/providers/typescript/parkSignals.d.ts.map +1 -0
  51. package/dist/providers/typescript/parkSignals.js +45 -0
  52. package/dist/providers/typescript/parkSignals.js.map +1 -0
  53. package/dist/providers/typescript/prepareCodegenData.d.ts +1 -0
  54. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  55. package/dist/providers/typescript/prepareCodegenData.js +8 -2
  56. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  57. package/dist/replay.d.ts +3 -0
  58. package/dist/replay.d.ts.map +1 -0
  59. package/dist/replay.js +20 -0
  60. package/dist/replay.js.map +1 -0
  61. package/dist/run.d.ts +11 -2
  62. package/dist/run.d.ts.map +1 -1
  63. package/dist/run.js +153 -42
  64. package/dist/run.js.map +1 -1
  65. package/dist/runLocalTestJob.d.ts +1 -0
  66. package/dist/runLocalTestJob.d.ts.map +1 -1
  67. package/dist/runLocalTestJob.js +1 -1
  68. package/dist/runLocalTestJob.js.map +1 -1
  69. package/dist/sampleEventId.d.ts +4 -0
  70. package/dist/sampleEventId.d.ts.map +1 -1
  71. package/dist/sampleEventId.js +4 -0
  72. package/dist/sampleEventId.js.map +1 -1
  73. package/dist/shared/ApiRoutes.d.ts +0 -19
  74. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  75. package/dist/shared/ApiRoutes.js +1 -17
  76. package/dist/shared/ApiRoutes.js.map +1 -1
  77. package/dist/shared/Configs.d.ts +2 -24
  78. package/dist/shared/Configs.d.ts.map +1 -1
  79. package/dist/shared/Configs.js +2 -32
  80. package/dist/shared/Configs.js.map +1 -1
  81. package/dist/shared/Integrations.d.ts +1 -18
  82. package/dist/shared/Integrations.d.ts.map +1 -1
  83. package/dist/shared/Integrations.js +1 -10
  84. package/dist/shared/Integrations.js.map +1 -1
  85. package/dist/shared/InvalidationKeys.d.ts +0 -1
  86. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  87. package/dist/shared/InvalidationKeys.js +0 -3
  88. package/dist/shared/InvalidationKeys.js.map +1 -1
  89. package/dist/shared/ModelEvents.d.ts +0 -9
  90. package/dist/shared/ModelEvents.d.ts.map +1 -1
  91. package/dist/shared/ModelEvents.js +0 -15
  92. package/dist/shared/ModelEvents.js.map +1 -1
  93. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  94. package/dist/shared/ToolDisplayUtils.js +11 -107
  95. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  96. package/dist/shared/types.d.ts +108 -1013
  97. package/dist/shared/types.d.ts.map +1 -1
  98. package/dist/shared/types.js.map +1 -1
  99. package/dist/test.d.ts +1 -2
  100. package/dist/test.d.ts.map +1 -1
  101. package/dist/test.js +23 -43
  102. package/dist/test.js.map +1 -1
  103. package/dist/urls.d.ts +3 -0
  104. package/dist/urls.d.ts.map +1 -0
  105. package/dist/urls.js +27 -0
  106. package/dist/urls.js.map +1 -0
  107. package/dist/util.d.ts +3 -2
  108. package/dist/util.d.ts.map +1 -1
  109. package/dist/util.js +3 -3
  110. package/dist/util.js.map +1 -1
  111. package/package.json +3 -3
  112. package/templates/typescript/codegen/partials/posthog-section.hbs +12 -0
  113. package/dist/_tmp_create_project.d.ts +0 -2
  114. package/dist/_tmp_create_project.d.ts.map +0 -1
  115. package/dist/_tmp_create_project.js +0 -17
  116. package/dist/_tmp_create_project.js.map +0 -1
  117. package/dist/_tmp_delete_agent.d.ts +0 -2
  118. package/dist/_tmp_delete_agent.d.ts.map +0 -1
  119. package/dist/_tmp_delete_agent.js +0 -14
  120. package/dist/_tmp_delete_agent.js.map +0 -1
  121. package/dist/_tmp_manual_trigger.d.ts +0 -2
  122. package/dist/_tmp_manual_trigger.d.ts.map +0 -1
  123. package/dist/_tmp_manual_trigger.js +0 -17
  124. package/dist/_tmp_manual_trigger.js.map +0 -1
  125. package/dist/_tmp_patch_active.d.ts +0 -2
  126. package/dist/_tmp_patch_active.d.ts.map +0 -1
  127. package/dist/_tmp_patch_active.js +0 -21
  128. package/dist/_tmp_patch_active.js.map +0 -1
  129. package/dist/commands/deployTheme.d.ts +0 -28
  130. package/dist/commands/deployTheme.d.ts.map +0 -1
  131. package/dist/commands/deployTheme.js +0 -68
  132. package/dist/commands/deployTheme.js.map +0 -1
  133. package/dist/commands/dev.d.ts +0 -3
  134. package/dist/commands/dev.d.ts.map +0 -1
  135. package/dist/commands/dev.js +0 -47
  136. package/dist/commands/dev.js.map +0 -1
  137. package/dist/commands/fsExec.d.ts +0 -8
  138. package/dist/commands/fsExec.d.ts.map +0 -1
  139. package/dist/commands/fsExec.js +0 -46
  140. package/dist/commands/fsExec.js.map +0 -1
  141. package/dist/commands/serve.d.ts +0 -1
  142. package/dist/commands/serve.d.ts.map +0 -1
  143. package/dist/commands/serve.js +0 -2
  144. package/dist/commands/serve.js.map +0 -1
  145. package/dist/commands/terseCliTheme.d.ts +0 -28
  146. package/dist/commands/terseCliTheme.d.ts.map +0 -1
  147. package/dist/commands/terseCliTheme.js +0 -68
  148. package/dist/commands/terseCliTheme.js.map +0 -1
  149. package/dist/commands/tool.d.ts +0 -6
  150. package/dist/commands/tool.d.ts.map +0 -1
  151. package/dist/commands/tool.js +0 -34
  152. package/dist/commands/tool.js.map +0 -1
  153. package/dist/data/standardSlackEmoji.d.ts +0 -2
  154. package/dist/data/standardSlackEmoji.d.ts.map +0 -1
  155. package/dist/data/standardSlackEmoji.js +0 -1978
  156. package/dist/data/standardSlackEmoji.js.map +0 -1
  157. package/dist/data/standardSlackEmoji.json +0 -1974
  158. package/dist/perf.d.ts +0 -9
  159. package/dist/perf.d.ts.map +0 -1
  160. package/dist/perf.js +0 -59
  161. package/dist/perf.js.map +0 -1
  162. package/dist/providers/codegen.test.d.ts +0 -2
  163. package/dist/providers/codegen.test.d.ts.map +0 -1
  164. package/dist/providers/codegen.test.js +0 -45
  165. package/dist/providers/codegen.test.js.map +0 -1
  166. package/dist/providers/python/PythonProvider.test.d.ts +0 -2
  167. package/dist/providers/python/PythonProvider.test.d.ts.map +0 -1
  168. package/dist/providers/python/PythonProvider.test.js +0 -169
  169. package/dist/providers/python/PythonProvider.test.js.map +0 -1
  170. package/dist/providers/typescript/prepareCodegenData.test.d.ts +0 -2
  171. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +0 -1
  172. package/dist/providers/typescript/prepareCodegenData.test.js +0 -54
  173. package/dist/providers/typescript/prepareCodegenData.test.js.map +0 -1
  174. package/dist/providers/typescript/projectedTypes.d.ts +0 -11
  175. package/dist/providers/typescript/projectedTypes.d.ts.map +0 -1
  176. package/dist/providers/typescript/projectedTypes.js +0 -53
  177. package/dist/providers/typescript/projectedTypes.js.map +0 -1
  178. package/dist/providers/typescript/triggerPayloads.d.ts +0 -7
  179. package/dist/providers/typescript/triggerPayloads.d.ts.map +0 -1
  180. package/dist/providers/typescript/triggerPayloads.js +0 -60
  181. package/dist/providers/typescript/triggerPayloads.js.map +0 -1
package/dist/deploy.js CHANGED
@@ -1,45 +1,35 @@
1
- import chalk from "chalk";
2
- import { zipSync } from "fflate";
3
1
  import fs from "node:fs";
4
2
  import path from "node:path";
3
+ import chalk from "chalk";
5
4
  import ora from "ora";
6
- import { ApiRoutes, sdkDeployRequestBodySchema } from "terse-types";
7
- import { fetchWithAuth, readApiKeyOrBail, readEnvVar } from "./api.js";
5
+ import { zipSync } from "fflate";
6
+ import { fetchWithAuth, readApiKey } from "./api.js";
7
+ import { assertProjectRoot } from "./assertProjectRoot.js";
8
8
  import { loadJobRegistry } from "./loadJob.js";
9
- import { resolveProvider } from "./providers/resolveProvider.js";
10
- export async function deploy(provider = resolveProvider(), entryFile) {
11
- const apiKey = readApiKeyOrBail({
12
- title: "Error: No TERSE_API_KEY found in .env",
13
- detail: "Run `terse init` to set up your project, or add TERSE_API_KEY to your .env file."
14
- });
15
- const registry = await loadJobRegistry(provider, entryFile);
16
- const jobs = [...registry.values()];
17
- // If TERSE_REMOTE_SERVER_URL (or legacy TERSE_JOB_URL) is set in .env, deploy
18
- // in URL mode (user infrastructure). No source code is zipped or uploaded.
19
- const remoteServerUrl = readEnvVar("TERSE_REMOTE_SERVER_URL") ?? readEnvVar("TERSE_JOB_URL");
20
- const isUrlMode = !!remoteServerUrl;
21
- let sourceZipBase64;
22
- let fileCount = 0;
23
- let zipSizeBytes = 0;
24
- if (!isUrlMode) {
25
- const zipPayload = buildZipPayload(provider);
26
- sourceZipBase64 = zipPayload.sourceZipBase64;
27
- fileCount = zipPayload.fileCount;
28
- zipSizeBytes = zipPayload.zipSizeBytes;
9
+ import { ApiRoutes } from "./shared/ApiRoutes.js";
10
+ const EXCLUDED_DIRS = new Set(["node_modules", ".git", "dist", ".next", ".turbo"]);
11
+ const EXCLUDED_FILES = new Set([".env", ".DS_Store"]);
12
+ export async function deploy() {
13
+ assertProjectRoot();
14
+ const apiKey = readApiKey();
15
+ if (!apiKey) {
16
+ console.error(chalk.red("Error: No TERSE_API_KEY found in .env"));
17
+ console.error(chalk.dim("Run `terse init` to set up your project, or add TERSE_API_KEY to your .env file."));
18
+ process.exit(1);
29
19
  }
20
+ const registry = await loadJobRegistry();
21
+ const jobs = [...registry.values()];
22
+ const { sourceZipBase64, fileCount, zipSizeBytes } = buildZipPayload();
30
23
  const spinner = ora(`Deploying ${jobs.length} job${jobs.length === 1 ? "" : "s"}...`).start();
31
24
  try {
32
- const body = sdkDeployRequestBodySchema.parse({
25
+ const result = await fetchWithAuth(ApiRoutes.SDK.DEPLOY, apiKey, {
33
26
  jobs: jobs.map(job => ({
34
27
  jobName: job.name,
35
- triggers: job.triggers,
36
- outputs: job.skills ?? [],
37
- toolApprovals: job.toolApprovals ?? []
28
+ triggers: job.triggers.map(serializeTrigger),
29
+ webhookURL: job.webhookURL
38
30
  })),
39
- remoteServerUrl: isUrlMode ? remoteServerUrl : undefined,
40
31
  sourceZipBase64
41
- });
42
- const result = await fetchWithAuth(ApiRoutes.SDK.DEPLOY, apiKey, body, "POST");
32
+ }, "POST");
43
33
  if (!result.success) {
44
34
  spinner.fail(chalk.red(`Deploy failed: ${result.error}`));
45
35
  if (result.details) {
@@ -51,31 +41,9 @@ export async function deploy(provider = resolveProvider(), entryFile) {
51
41
  for (const r of result.results) {
52
42
  const verb = r.isUpdate ? "Updated" : "Created";
53
43
  console.log(chalk.dim(` ${verb} "${r.jobName}" (${r.automationId})`));
54
- if (r.triggers) {
55
- for (const t of r.triggers) {
56
- if (t.metadata?.webhookUrl) {
57
- console.log(chalk.cyan(` Webhook URL: ${t.metadata.webhookUrl}`));
58
- }
59
- }
60
- }
61
- }
62
- if (isUrlMode) {
63
- console.log(chalk.dim(` Mode: user infrastructure`));
64
- console.log(chalk.dim(` Server URL: ${remoteServerUrl}`));
65
- const signingSecret = result.results.find(r => r.signingSecret)?.signingSecret;
66
- if (signingSecret) {
67
- const existingSecret = readEnvVar("TERSE_SIGNING_SECRET");
68
- if (!existingSecret) {
69
- console.log(`\n Add this to your ${chalk.bold(".env")} file:\n`);
70
- console.log(`TERSE_SIGNING_SECRET=${signingSecret}`);
71
- console.log("");
72
- }
73
- }
74
- }
75
- else {
76
- console.log(chalk.dim(` Files: ${fileCount}`));
77
- console.log(chalk.dim(` Zip size: ${(zipSizeBytes / 1024).toFixed(1)} KB`));
78
44
  }
45
+ console.log(chalk.dim(` Files: ${fileCount}`));
46
+ console.log(chalk.dim(` Zip size: ${(zipSizeBytes / 1024).toFixed(1)} KB`));
79
47
  if (result.removed.length > 0) {
80
48
  console.log(chalk.yellow(`\nRemoved ${result.removed.length} stale job${result.removed.length === 1 ? "" : "s"} no longer in project:`));
81
49
  for (const r of result.removed) {
@@ -88,17 +56,17 @@ export async function deploy(provider = resolveProvider(), entryFile) {
88
56
  process.exit(1);
89
57
  }
90
58
  }
91
- function collectFiles(dir, baseDir, provider) {
59
+ function collectFiles(dir, baseDir) {
92
60
  const entries = {};
93
61
  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
94
- if (provider.deployExclusions.dirs.has(entry.name))
62
+ if (EXCLUDED_DIRS.has(entry.name))
95
63
  continue;
96
- if (provider.deployExclusions.files.has(entry.name))
64
+ if (EXCLUDED_FILES.has(entry.name))
97
65
  continue;
98
66
  const fullPath = path.join(dir, entry.name);
99
67
  const relativePath = path.relative(baseDir, fullPath);
100
68
  if (entry.isDirectory()) {
101
- Object.assign(entries, collectFiles(fullPath, baseDir, provider));
69
+ Object.assign(entries, collectFiles(fullPath, baseDir));
102
70
  }
103
71
  else if (entry.isFile()) {
104
72
  entries[relativePath] = new Uint8Array(fs.readFileSync(fullPath));
@@ -106,9 +74,18 @@ function collectFiles(dir, baseDir, provider) {
106
74
  }
107
75
  return entries;
108
76
  }
109
- function buildZipPayload(provider) {
77
+ function serializeTrigger(config) {
78
+ const { isComplete, formatForAgent, configType, integrationType, integrationId, ...rest } = config;
79
+ return {
80
+ configType,
81
+ integrationType,
82
+ integrationId,
83
+ config: rest
84
+ };
85
+ }
86
+ function buildZipPayload() {
110
87
  const cwd = process.cwd();
111
- const files = collectFiles(cwd, cwd, provider);
88
+ const files = collectFiles(cwd, cwd);
112
89
  const fileCount = Object.keys(files).length;
113
90
  if (fileCount === 0) {
114
91
  console.error(chalk.red("No files found to deploy"));
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
- export declare function generate(provider?: LanguageProvider): Promise<void>;
1
+ export declare function generate(): Promise<void>;
3
2
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAkBvE,wBAAsB,QAAQ,CAAC,QAAQ,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoT5F"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAwCA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAmQ9C"}
package/dist/generate.js CHANGED
@@ -1,21 +1,23 @@
1
- import chalk from "chalk";
2
1
  import fs from "node:fs";
3
2
  import path from "node:path";
3
+ import chalk from "chalk";
4
4
  import ora from "ora";
5
- import { IntegrationType, isValidToolName } from "terse-types";
6
- import { ApiRoutes, buildRoute } from "terse-types";
7
- import { fetchWithAuth, readApiKeyOrBail } from "./api.js";
8
5
  import { assertProjectRoot } from "./assertProjectRoot.js";
9
- import { resolveProvider } from "./providers/resolveProvider.js";
6
+ import { generateCode, } from "./codegen.js";
7
+ import { IntegrationType } from "./shared/Integrations.js";
8
+ import { ApiRoutes } from "./shared/ApiRoutes.js";
9
+ import { fetchWithAuth, readApiKey } from "./api.js";
10
10
  // ── Main ──────────────────────────────────────────────────────────────
11
- export async function generate(provider = resolveProvider()) {
12
- assertProjectRoot(provider, provider.detectionMarkers);
11
+ export async function generate() {
12
+ assertProjectRoot();
13
13
  const totalStart = performance.now();
14
14
  // 1. Read API key
15
- const apiKey = readApiKeyOrBail({
16
- title: "\n Missing TERSE_API_KEY in .env\n",
17
- detail: " Create a project with `terse init` or add TERSE_API_KEY to your .env file.\n"
18
- });
15
+ const apiKey = readApiKey();
16
+ if (!apiKey) {
17
+ console.error(chalk.red("\n Missing TERSE_API_KEY in .env\n") +
18
+ chalk.dim(" Create a project with `terse init` or add TERSE_API_KEY to your .env file.\n"));
19
+ process.exit(1);
20
+ }
19
21
  // 2. Fetch active integrations
20
22
  const spinner = ora("Fetching integrations...").start();
21
23
  let activeTypes;
@@ -31,7 +33,8 @@ export async function generate(provider = resolveProvider()) {
31
33
  message.toLowerCase().includes("unauthorized") ||
32
34
  message.toLowerCase().includes("forbidden");
33
35
  if (isAuthError) {
34
- console.error(chalk.red("\n Authentication failed: your TERSE_API_KEY was rejected.\n") + chalk.dim(" Update TERSE_API_KEY in .env and try again.\n"));
36
+ console.error(chalk.red("\n Authentication failed: your TERSE_API_KEY was rejected.\n") +
37
+ chalk.dim(" Update TERSE_API_KEY in .env and try again.\n"));
35
38
  }
36
39
  else {
37
40
  console.error(chalk.red(`\n ${message}\n`));
@@ -46,11 +49,6 @@ export async function generate(provider = resolveProvider()) {
46
49
  // Filter to only tools whose integration matches an active integration type
47
50
  const activeSet = new Set(activeTypes);
48
51
  toolDefs = resp.tools.filter(t => activeSet.has(t.integration));
49
- const skippedToolNames = [...new Set(toolDefs.filter(t => !isValidToolName(t.name)).map(t => t.name))].sort();
50
- toolDefs = toolDefs.filter(t => isValidToolName(t.name));
51
- if (skippedToolNames.length > 0) {
52
- console.warn(chalk.yellow(`\n Skipped ${skippedToolNames.length} tool(s) absent from terse-types ToolDefinitions: ${skippedToolNames.join(", ")}\n`));
53
- }
54
52
  }
55
53
  catch {
56
54
  // Non-fatal: proceed without tool definitions
@@ -58,18 +56,11 @@ export async function generate(provider = resolveProvider()) {
58
56
  // 4. Fetch all integration instances + resources in parallel
59
57
  spinner.text = "Fetching integration details...";
60
58
  const input = {
61
- github: [],
62
- slack: [],
63
- gmail: [],
64
- linear: [],
65
- notion: [],
66
- posthog: [],
67
- datadog: [],
68
- launchdarkly: [],
69
- workos: [],
70
- attio: [],
71
- snowflake: [],
72
- tools: toolDefs
59
+ github: [], slack: [], gmail: [], figma: [],
60
+ linear: [], atlassian: [], notion: [],
61
+ posthog: [], datadog: [], launchdarkly: [],
62
+ workos: [], attio: [],
63
+ tools: toolDefs,
73
64
  };
74
65
  const has = (t) => activeTypes.includes(t);
75
66
  const promises = [];
@@ -100,18 +91,37 @@ export async function generate(provider = resolveProvider()) {
100
91
  }));
101
92
  }));
102
93
  }
94
+ // ── Figma (no resources) ──
95
+ if (has(IntegrationType.FIGMA)) {
96
+ promises.push(safely(async () => {
97
+ const instances = await fetchWithAuth(ApiRoutes.FIGMA.INTEGRATIONS, apiKey);
98
+ input.figma = instances.map(inst => ({ id: inst.id, displayName: inst.handle || inst.id }));
99
+ }));
100
+ }
103
101
  // ── Linear (fetches teams per instance) ──
104
102
  if (has(IntegrationType.LINEAR)) {
105
103
  promises.push(safely(async () => {
106
104
  const instances = await fetchWithAuth(ApiRoutes.LINEAR.INTEGRATIONS, apiKey);
107
105
  input.linear = await Promise.all(instances.map(async (inst) => {
108
106
  const teams = await fetchWithAuth(`${ApiRoutes.LINEAR.TEAMS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => []);
109
- const projects = await fetchWithAuth(`${ApiRoutes.LINEAR.PROJECTS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => []);
107
+ return { id: inst.id, displayName: inst.workspaceName || inst.id, teams: Array.isArray(teams) ? teams : [] };
108
+ }));
109
+ }));
110
+ }
111
+ // ── Atlassian — fetches Jira projects + Confluence pages per instance ──
112
+ if (has(IntegrationType.ATLASSIAN)) {
113
+ promises.push(safely(async () => {
114
+ const instances = await fetchWithAuth(ApiRoutes.ATLASSIAN.INTEGRATIONS, apiKey);
115
+ input.atlassian = await Promise.all(instances.map(async (inst) => {
116
+ const [jiraResp, confResp] = await Promise.all([
117
+ fetchWithAuth(`${ApiRoutes.JIRA.RESOURCES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => null),
118
+ fetchWithAuth(`${ApiRoutes.CONFLUENCE.RESOURCES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => null),
119
+ ]);
110
120
  return {
111
121
  id: inst.id,
112
- displayName: inst.workspaceName || inst.id,
113
- teams: Array.isArray(teams) ? teams : [],
114
- projects: Array.isArray(projects) ? projects : []
122
+ displayName: inst.siteName || inst.email || inst.id,
123
+ jiraProjects: jiraResp?.resources?.projects || [],
124
+ confluencePages: confResp?.resources || [],
115
125
  };
116
126
  }));
117
127
  }));
@@ -127,7 +137,7 @@ export async function generate(provider = resolveProvider()) {
127
137
  id: inst.id,
128
138
  displayName: inst.workspaceName || inst.id,
129
139
  databases: resources.filter(r => r.type === "database"),
130
- pages: resources.filter(r => r.type === "page")
140
+ pages: resources.filter(r => r.type === "page"),
131
141
  };
132
142
  }));
133
143
  }));
@@ -147,9 +157,7 @@ export async function generate(provider = resolveProvider()) {
147
157
  promises.push(safely(async () => {
148
158
  const instances = await fetchWithAuth(ApiRoutes.DATADOG.INTEGRATIONS, apiKey);
149
159
  input.datadog = await Promise.all(instances.map(async (inst) => {
150
- const resp = await fetchWithAuth(`${ApiRoutes.DATADOG.INDEXES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({
151
- indexes: []
152
- }));
160
+ const resp = await fetchWithAuth(`${ApiRoutes.DATADOG.INDEXES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({ indexes: [] }));
153
161
  return { id: inst.id, displayName: inst.region || inst.id, indexes: resp.indexes || [] };
154
162
  }));
155
163
  }));
@@ -159,7 +167,7 @@ export async function generate(provider = resolveProvider()) {
159
167
  promises.push(safely(async () => {
160
168
  const instances = await fetchWithAuth(ApiRoutes.LAUNCHDARKLY.INTEGRATIONS, apiKey);
161
169
  input.launchdarkly = await Promise.all(instances.map(async (inst) => {
162
- const resp = await fetchWithAuth(buildRoute(ApiRoutes.LAUNCHDARKLY.PROJECTS_BY_INTEGRATION_ID, { integrationId: inst.id }), apiKey).catch(() => ({ projects: [] }));
170
+ const resp = await fetchWithAuth(ApiRoutes.LAUNCHDARKLY.PROJECTS_BY_INTEGRATION_ID.build(inst.id), apiKey).catch(() => ({ projects: [] }));
163
171
  return { id: inst.id, displayName: inst.tokenName || inst.email || inst.id, projects: resp.projects || [] };
164
172
  }));
165
173
  }));
@@ -176,35 +184,23 @@ export async function generate(provider = resolveProvider()) {
176
184
  promises.push(safely(async () => {
177
185
  const instances = await fetchWithAuth(ApiRoutes.ATTIO.INTEGRATIONS, apiKey);
178
186
  input.attio = await Promise.all(instances.map(async (inst) => {
179
- const objects = await fetchWithAuth(buildRoute(ApiRoutes.ATTIO.OBJECTS, { integrationId: inst.id }), apiKey).catch(() => []);
187
+ const objects = await fetchWithAuth(ApiRoutes.ATTIO.OBJECTS.build(inst.id), apiKey).catch(() => []);
180
188
  return { id: inst.id, displayName: inst.workspaceName || inst.id, objects: Array.isArray(objects) ? objects : [] };
181
189
  }));
182
190
  }));
183
191
  }
184
- if (has(IntegrationType.SNOWFLAKE)) {
185
- promises.push(safely(async () => {
186
- const instances = await fetchWithAuth(ApiRoutes.SNOWFLAKE.INTEGRATIONS, apiKey);
187
- input.snowflake = instances.map(inst => ({ id: inst.id, name: inst.accountIdentifier }));
188
- }));
189
- }
190
192
  await Promise.all(promises);
191
- const integrationCount = input.github.length +
192
- input.slack.length +
193
- input.gmail.length +
194
- input.linear.length +
195
- input.notion.length +
196
- input.posthog.length +
197
- input.datadog.length +
198
- input.launchdarkly.length +
199
- input.workos.length +
200
- input.attio.length;
193
+ const integrationCount = input.github.length + input.slack.length + input.gmail.length + input.figma.length +
194
+ input.linear.length + input.atlassian.length + input.notion.length +
195
+ input.posthog.length + input.datadog.length + input.launchdarkly.length +
196
+ input.workos.length + input.attio.length;
201
197
  spinner.succeed(`Fetched ${integrationCount} integration(s)`);
202
198
  // 5. Generate code
203
199
  const codegenStart = performance.now();
204
- const code = provider.renderGeneratedCode(input);
200
+ const code = generateCode(input);
205
201
  const codegenMs = performance.now() - codegenStart;
206
202
  // 6. Write output
207
- writeOutput(code, provider);
203
+ writeOutput(code);
208
204
  // 7. Summary
209
205
  const totalMs = performance.now() - totalStart;
210
206
  console.log("");
@@ -215,7 +211,7 @@ export async function generate(provider = resolveProvider()) {
215
211
  console.log(` ${chalk.green("+")} Schedule trigger`);
216
212
  console.log(` ${chalk.green("+")} Terse skills (web search)`);
217
213
  console.log("");
218
- console.log(` ${chalk.green.bold("Generated")} ${path.relative(process.cwd(), provider.resolveGeneratedCodePath(process.cwd()))}`);
214
+ console.log(` ${chalk.green.bold("Generated")} src/terse.generated.ts`);
219
215
  console.log(` ${chalk.dim(`Codegen: ${codegenMs.toFixed(0)}ms | Total: ${totalMs.toFixed(0)}ms`)}`);
220
216
  console.log("");
221
217
  }
@@ -224,17 +220,14 @@ async function safely(fn) {
224
220
  try {
225
221
  await fn();
226
222
  }
227
- catch {
228
- /* skip failed integrations */
229
- }
223
+ catch { /* skip failed integrations */ }
230
224
  }
231
- function writeOutput(code, provider) {
232
- const outputPath = provider.resolveGeneratedCodePath(process.cwd());
233
- const outputDir = path.dirname(outputPath);
234
- if (!fs.existsSync(outputDir)) {
235
- fs.mkdirSync(outputDir, { recursive: true });
225
+ function writeOutput(code) {
226
+ const srcDir = path.resolve(process.cwd(), "src");
227
+ if (!fs.existsSync(srcDir)) {
228
+ fs.mkdirSync(srcDir, { recursive: true });
236
229
  }
237
- fs.writeFileSync(outputPath, code);
230
+ fs.writeFileSync(path.join(srcDir, "terse.generated.ts"), code);
238
231
  }
239
232
  function printSummary(input) {
240
233
  const g = chalk.green("+");
@@ -250,10 +243,19 @@ function printSummary(input) {
250
243
  const n = inst.channels.length;
251
244
  console.log(` ${g} Slack (${inst.displayName}) — ${n} ${n === 1 ? "channel" : "channels"}`);
252
245
  }
246
+ for (const inst of input.figma) {
247
+ console.log(` ${g} Figma (${inst.displayName})`);
248
+ }
253
249
  for (const inst of input.linear) {
254
250
  const n = inst.teams.length;
255
251
  console.log(` ${g} Linear (${inst.displayName}) — ${n} ${n === 1 ? "team" : "teams"}`);
256
252
  }
253
+ for (const inst of input.atlassian) {
254
+ const jp = inst.jiraProjects.length;
255
+ const cp = inst.confluencePages.length;
256
+ console.log(` ${g} Jira (${inst.displayName}) — ${jp} ${jp === 1 ? "project" : "projects"}`);
257
+ console.log(` ${g} Confluence (${inst.displayName}) — ${cp} ${cp === 1 ? "page" : "pages"}`);
258
+ }
257
259
  for (const inst of input.notion) {
258
260
  const d = inst.databases.length;
259
261
  const p = inst.pages.length;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EACH,YAAY,GAYf,MAAM,cAAc,CAAA;AAerB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEpD,yEAAyE;AAEzE,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC1B,iBAAiB,EAAE,CAAA;IAEnB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAEpC,kBAAkB;IAClB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAC9F,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAA;IAEvD,IAAI,WAA8B,CAAA;IAClC,IAAI,CAAC;QACD,WAAW,GAAG,MAAM,aAAa,CAAoB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/F,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;QAC5C,MAAM,WAAW,GACb,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACvD,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC9C,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAE/C,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC;gBAC1E,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAC/D,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAE7C,IAAI,QAAQ,GAAqB,EAAE,CAAA;IACnC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAA8B,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QACrG,4EAA4E;QAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAuB,CAAC,CAAA;QAClD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IACnE,CAAC;IAAC,MAAM,CAAC;QACL,8CAA8C;IAClD,CAAC;IAED,6DAA6D;IAC7D,OAAO,CAAC,IAAI,GAAG,iCAAiC,CAAA;IAEhD,MAAM,KAAK,GAAiB;QACxB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;QACrB,KAAK,EAAE,QAAQ;KAClB,CAAA;IAED,MAAM,GAAG,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAoB,EAAE,CAAA;IAEpC,iEAAiE;IACjE,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACjG,KAAK,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,MAAM,CAAC,gCAAgC,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAClH,MAAM,CACT,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACrC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAA;YACvE,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAqB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC/F,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9F,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,8CAA8C;IAC9C,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAqB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC/F,KAAK,CAAC,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA8B,EAAE;gBACrF,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACrF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACjC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAA;YAChG,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAqB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC/F,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC/F,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,4CAA4C;IAC5C,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACjG,KAAK,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;gBACvF,MAAM,KAAK,GAAG,MAAM,aAAa,CAC7B,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACnF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAsD,CAAC,CAAA;gBACrE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YAChH,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,0EAA0E;IAC1E,IAAI,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAyB,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACvG,KAAK,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAkC,EAAE;gBAC7F,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC3C,aAAa,CACT,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACrF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBACnB,aAAa,CACT,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAC3F,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;iBACtB,CAAC,CAAA;gBACF,OAAO;oBACH,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;oBACnD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE;oBACjD,eAAe,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE;iBAC7C,CAAA;YACL,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,wDAAwD;IACxD,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACjG,KAAK,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACvF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA;gBACtC,OAAO;oBACH,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;oBAC1C,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;oBACvD,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAClD,CAAA;YACL,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,gDAAgD;IAChD,IAAI,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAuB,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAgC,EAAE;gBACzF,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACvF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACjC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAA;YAC7G,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,+CAA+C;IAC/C,IAAI,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAuB,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAgC,EAAE;gBACzF,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CACtF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAChC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;YAC5F,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,sEAAsE;IACtE,IAAI,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAA4B,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC7G,KAAK,CAAC,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAqC,EAAE;gBACnG,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,SAAS,CAAC,YAAY,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAC3E,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACjC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAA;YAC/G,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,8BAA8B;IAC9B,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC7G,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QACrG,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,8DAA8D;IAC9D,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAqB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC/F,KAAK,CAAC,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA8B,EAAE;gBACrF,MAAM,OAAO,GAAG,MAAM,aAAa,CAC/B,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CACjD,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAwD,CAAC,CAAA;gBACvE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YACtH,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAE3B,MAAM,gBAAgB,GAClB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;QAClF,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;QAClE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM;QACvE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;IAE5C,OAAO,CAAC,OAAO,CAAC,WAAW,gBAAgB,iBAAiB,CAAC,CAAA;IAE7D,mBAAmB;IACnB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAA;IAElD,kBAAkB;IAClB,WAAW,CAAC,IAAI,CAAC,CAAA;IAEjB,aAAa;IACb,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAA;IAE9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,YAAY,CAAC,KAAK,CAAC,CAAA;IACnB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,eAAe,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAC9H,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAA;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED,yEAAyE;AAEzE,KAAK,UAAU,MAAM,CAAC,EAAuB;IACzC,IAAI,CAAC;QAAC,MAAM,EAAE,EAAE,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,KAAmB;IACrC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAA;QACjE,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;IAC5F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;IACrD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;IACrD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,WAAW,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,WAAW,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACjG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACvI,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAClG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;IAC/F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IACvG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;IACtD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;IAC9F,CAAC;AACL,CAAC"}
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ import { replay } from "./commands/replay.js";
24
24
  import { resume } from "./commands/resume.js";
25
25
  import { run } from "./commands/run.js";
26
26
  import { secretsAdd, secretsImport, secretsList, secretsRemove } from "./commands/secrets.js";
27
+ import { stateGet, stateList, stateRemove, stateReset } from "./commands/state.js";
27
28
  import { targetClear, targetStatus, targetUse } from "./commands/target.js";
28
29
  import { test, testList, testRun, testShow } from "./commands/test.js";
29
30
  import { isCliRunCommandEnabled } from "./env.js";
@@ -88,11 +89,13 @@ const testCommand = program
88
89
  .argument("[job-name]", "Name of the job to test (auto-selects if only one exists)")
89
90
  .option("-v, --verbose", "Show job stream output", true)
90
91
  .option("--no-verbose", "Hide job stream output")
92
+ .option("--fresh-state", "Reset the job's test state before running")
91
93
  .option(...ENTRY_FILE_OPTION)
92
94
  .addHelpText("after", `
93
95
  Examples:
94
96
  $ terse test # interactive picker
95
97
  $ terse test my-job # test a specific job
98
+ $ terse test my-job --fresh-state # reset test state first (e.g. to re-test dedupe)
96
99
 
97
100
  Non-interactive subcommands (for AI agents and CI):
98
101
  $ terse test list --json # enumerate sample events with ids
@@ -101,7 +104,7 @@ Non-interactive subcommands (for AI agents and CI):
101
104
  $ terse test run --event-file sample.json # run a sample event from disk
102
105
  `)
103
106
  .action(async (jobName, opts) => {
104
- await test(jobName, opts?.verbose, resolveProvider(), opts?.entryFile);
107
+ await test(jobName, opts?.verbose, resolveProvider(), opts?.entryFile, opts?.freshState);
105
108
  });
106
109
  testCommand
107
110
  .command("list")
@@ -131,11 +134,13 @@ testCommand
131
134
  .option("--event-file <path>", "Path to a JSON file containing the trigger event fixture")
132
135
  .option("-v, --verbose", "Show job stream output", true)
133
136
  .option("--no-verbose", "Hide job stream output")
137
+ .option("--fresh-state", "Reset the job's test state before running")
134
138
  .option(...ENTRY_FILE_OPTION)
135
139
  .addHelpText("after", `
136
140
  Examples:
137
141
  $ terse test list --json | jq -r '.events[0].id' | xargs -I{} terse test run --id {}
138
142
  $ terse test run --event-file fixture.json
143
+ $ terse test run --id <id> --fresh-state
139
144
  `)
140
145
  .action(async (jobName, opts) => {
141
146
  await testRun({
@@ -144,7 +149,8 @@ Examples:
144
149
  eventJson: opts?.event,
145
150
  eventFile: opts?.eventFile,
146
151
  verbose: opts?.verbose,
147
- entryFile: opts?.entryFile
152
+ entryFile: opts?.entryFile,
153
+ freshState: opts?.freshState
148
154
  });
149
155
  });
150
156
  program
@@ -389,6 +395,62 @@ memoryCommand
389
395
  .action(async (path, opts) => {
390
396
  await memoryRemove(path, { job: opts.job, test: opts.test, yes: opts.yes, entryFile: opts.entryFile });
391
397
  });
398
+ const stateCommand = program
399
+ .command("state")
400
+ .description("Inspect and manage a job's typed persistent state")
401
+ .addHelpText("after", `
402
+ State is written by \`state.set(...)\` in a job's filter/onTrigger handlers. Deployed runs and
403
+ \`terse test\` runs use separate state: commands default to the deployed state (read-only) and
404
+ target the test state with --test.
405
+
406
+ Examples:
407
+ $ terse state list --job my-job
408
+ $ terse state list --job my-job --test
409
+ $ terse state get lastProcessedId --job my-job
410
+ $ terse state rm lastProcessedId --job my-job --test --yes
411
+ $ terse state reset --job my-job --test --yes
412
+ `);
413
+ stateCommand
414
+ .command("list")
415
+ .description("List state keys for a job")
416
+ .option("--job <name>", "Job name (auto-selects if only one exists)")
417
+ .option("--test", "Target the isolated `terse test` state instead of deployed state")
418
+ .option("--json", "Emit JSON")
419
+ .option(...ENTRY_FILE_OPTION)
420
+ .action(async (opts) => {
421
+ await stateList({ job: opts.job, test: opts.test, json: opts.json, entryFile: opts.entryFile });
422
+ });
423
+ stateCommand
424
+ .command("get")
425
+ .description("Print a state value as JSON")
426
+ .argument("<key>", "State key (as declared in the job's `states`)")
427
+ .option("--job <name>", "Job name (auto-selects if only one exists)")
428
+ .option("--test", "Target the isolated `terse test` state instead of deployed state")
429
+ .option(...ENTRY_FILE_OPTION)
430
+ .action(async (key, opts) => {
431
+ await stateGet(key, { job: opts.job, test: opts.test, entryFile: opts.entryFile });
432
+ });
433
+ stateCommand
434
+ .command("rm")
435
+ .description("Delete one test state key (deployed state is read-only)")
436
+ .argument("<key>", "State key (as declared in the job's `states`)")
437
+ .option("--job <name>", "Job name (auto-selects if only one exists)")
438
+ .option("--test", "Target the isolated `terse test` state (required)")
439
+ .option("--yes", "Confirm deletion")
440
+ .option(...ENTRY_FILE_OPTION)
441
+ .action(async (key, opts) => {
442
+ await stateRemove(key, { job: opts.job, test: opts.test, yes: opts.yes, entryFile: opts.entryFile });
443
+ });
444
+ stateCommand
445
+ .command("reset")
446
+ .description("Delete all test state for a job (deployed state is read-only)")
447
+ .option("--job <name>", "Job name (auto-selects if only one exists)")
448
+ .option("--test", "Target the isolated `terse test` state (required)")
449
+ .option("--yes", "Confirm deletion")
450
+ .option(...ENTRY_FILE_OPTION)
451
+ .action(async (opts) => {
452
+ await stateReset({ job: opts.job, test: opts.test, yes: opts.yes, entryFile: opts.entryFile });
453
+ });
392
454
  program
393
455
  .command("generate")
394
456
  .description("Autogenerate context from your connected workspaces")