terse-cli 0.2.14 → 0.2.15

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 (214) hide show
  1. package/dist/_tmp_create_project.d.ts +2 -0
  2. package/dist/_tmp_create_project.d.ts.map +1 -0
  3. package/dist/_tmp_create_project.js +17 -0
  4. package/dist/_tmp_create_project.js.map +1 -0
  5. package/dist/_tmp_delete_agent.d.ts +2 -0
  6. package/dist/_tmp_delete_agent.d.ts.map +1 -0
  7. package/dist/_tmp_delete_agent.js +14 -0
  8. package/dist/_tmp_delete_agent.js.map +1 -0
  9. package/dist/_tmp_manual_trigger.d.ts +2 -0
  10. package/dist/_tmp_manual_trigger.d.ts.map +1 -0
  11. package/dist/_tmp_manual_trigger.js +17 -0
  12. package/dist/_tmp_manual_trigger.js.map +1 -0
  13. package/dist/_tmp_patch_active.d.ts +2 -0
  14. package/dist/_tmp_patch_active.d.ts.map +1 -0
  15. package/dist/_tmp_patch_active.js +21 -0
  16. package/dist/_tmp_patch_active.js.map +1 -0
  17. package/dist/cliHelpers.d.ts +1 -0
  18. package/dist/cliHelpers.d.ts.map +1 -1
  19. package/dist/cliHelpers.js +8 -5
  20. package/dist/cliHelpers.js.map +1 -1
  21. package/dist/codegen.d.ts +15 -0
  22. package/dist/codegen.d.ts.map +1 -1
  23. package/dist/codegen.js +466 -81
  24. package/dist/codegen.js.map +1 -1
  25. package/dist/commands/deployTheme.d.ts +28 -0
  26. package/dist/commands/deployTheme.d.ts.map +1 -0
  27. package/dist/commands/deployTheme.js +68 -0
  28. package/dist/commands/deployTheme.js.map +1 -0
  29. package/dist/commands/dev.d.ts +3 -0
  30. package/dist/commands/dev.d.ts.map +1 -0
  31. package/dist/commands/dev.js +47 -0
  32. package/dist/commands/dev.js.map +1 -0
  33. package/dist/commands/fsExec.d.ts +8 -0
  34. package/dist/commands/fsExec.d.ts.map +1 -0
  35. package/dist/commands/fsExec.js +46 -0
  36. package/dist/commands/fsExec.js.map +1 -0
  37. package/dist/commands/generate.d.ts.map +1 -1
  38. package/dist/commands/generate.js +34 -1
  39. package/dist/commands/generate.js.map +1 -1
  40. package/dist/commands/integrate.d.ts +3 -0
  41. package/dist/commands/integrate.d.ts.map +1 -1
  42. package/dist/commands/integrate.js +50 -17
  43. package/dist/commands/integrate.js.map +1 -1
  44. package/dist/commands/integrateUse.d.ts +13 -0
  45. package/dist/commands/integrateUse.d.ts.map +1 -0
  46. package/dist/commands/integrateUse.js +99 -0
  47. package/dist/commands/integrateUse.js.map +1 -0
  48. package/dist/commands/serve.d.ts +1 -0
  49. package/dist/commands/serve.d.ts.map +1 -0
  50. package/dist/commands/serve.js +2 -0
  51. package/dist/commands/serve.js.map +1 -0
  52. package/dist/commands/terseCliTheme.d.ts +28 -0
  53. package/dist/commands/terseCliTheme.d.ts.map +1 -0
  54. package/dist/commands/terseCliTheme.js +68 -0
  55. package/dist/commands/terseCliTheme.js.map +1 -0
  56. package/dist/commands/tool.d.ts +6 -0
  57. package/dist/commands/tool.d.ts.map +1 -0
  58. package/dist/commands/tool.js +34 -0
  59. package/dist/commands/tool.js.map +1 -0
  60. package/dist/commands/toolRun.d.ts +7 -0
  61. package/dist/commands/toolRun.d.ts.map +1 -0
  62. package/dist/commands/toolRun.js +135 -0
  63. package/dist/commands/toolRun.js.map +1 -0
  64. package/dist/data/standardSlackEmoji.d.ts +2 -0
  65. package/dist/data/standardSlackEmoji.d.ts.map +1 -0
  66. package/dist/data/standardSlackEmoji.js +1978 -0
  67. package/dist/data/standardSlackEmoji.js.map +1 -0
  68. package/dist/data/standardSlackEmoji.json +1974 -0
  69. package/dist/deploy.d.ts +2 -1
  70. package/dist/deploy.d.ts.map +1 -1
  71. package/dist/deploy.js +61 -38
  72. package/dist/deploy.js.map +1 -1
  73. package/dist/generate.d.ts +2 -1
  74. package/dist/generate.d.ts.map +1 -1
  75. package/dist/generate.js +67 -69
  76. package/dist/generate.js.map +1 -1
  77. package/dist/index.js +61 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/init.d.ts +2 -1
  80. package/dist/init.d.ts.map +1 -1
  81. package/dist/init.js +45 -96
  82. package/dist/init.js.map +1 -1
  83. package/dist/integrate.d.ts +1 -0
  84. package/dist/integrate.d.ts.map +1 -1
  85. package/dist/integrate.js +191 -11
  86. package/dist/integrate.js.map +1 -1
  87. package/dist/integrationApi.d.ts +2 -1
  88. package/dist/integrationApi.d.ts.map +1 -1
  89. package/dist/integrationApi.js +24 -2
  90. package/dist/integrationApi.js.map +1 -1
  91. package/dist/nonInteractive.d.ts +4 -2
  92. package/dist/nonInteractive.d.ts.map +1 -1
  93. package/dist/nonInteractive.js +5 -2
  94. package/dist/nonInteractive.js.map +1 -1
  95. package/dist/perf.d.ts +9 -0
  96. package/dist/perf.d.ts.map +1 -0
  97. package/dist/perf.js +59 -0
  98. package/dist/perf.js.map +1 -0
  99. package/dist/providers/codegen.test.d.ts +2 -0
  100. package/dist/providers/codegen.test.d.ts.map +1 -0
  101. package/dist/providers/codegen.test.js +45 -0
  102. package/dist/providers/codegen.test.js.map +1 -0
  103. package/dist/providers/codegenTypes.d.ts +2 -1
  104. package/dist/providers/codegenTypes.d.ts.map +1 -1
  105. package/dist/providers/python/PythonProvider.js +1 -0
  106. package/dist/providers/python/PythonProvider.js.map +1 -1
  107. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  108. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  109. package/dist/providers/python/PythonProvider.test.js +169 -0
  110. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  111. package/dist/providers/typescript/prepareCodegenData.d.ts +1 -0
  112. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  113. package/dist/providers/typescript/prepareCodegenData.js +94 -75
  114. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  115. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  116. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  117. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  118. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  119. package/dist/providers/typescript/projectedTypes.d.ts +11 -0
  120. package/dist/providers/typescript/projectedTypes.d.ts.map +1 -0
  121. package/dist/providers/typescript/projectedTypes.js +53 -0
  122. package/dist/providers/typescript/projectedTypes.js.map +1 -0
  123. package/dist/providers/typescript/projectionPrinter.d.ts +26 -0
  124. package/dist/providers/typescript/projectionPrinter.d.ts.map +1 -0
  125. package/dist/providers/typescript/projectionPrinter.js +110 -0
  126. package/dist/providers/typescript/projectionPrinter.js.map +1 -0
  127. package/dist/providers/typescript/replayLogDedupe.d.ts +6 -0
  128. package/dist/providers/typescript/replayLogDedupe.d.ts.map +1 -0
  129. package/dist/providers/typescript/replayLogDedupe.js +156 -0
  130. package/dist/providers/typescript/replayLogDedupe.js.map +1 -0
  131. package/dist/providers/typescript/triggerPayloads.d.ts +7 -0
  132. package/dist/providers/typescript/triggerPayloads.d.ts.map +1 -0
  133. package/dist/providers/typescript/triggerPayloads.js +60 -0
  134. package/dist/providers/typescript/triggerPayloads.js.map +1 -0
  135. package/dist/providers/typescript/triggerTypeDeclarations.d.ts +7 -0
  136. package/dist/providers/typescript/triggerTypeDeclarations.d.ts.map +1 -0
  137. package/dist/providers/typescript/triggerTypeDeclarations.js +99 -0
  138. package/dist/providers/typescript/triggerTypeDeclarations.js.map +1 -0
  139. package/dist/providers/typescript/triggerTypeRegistry.d.ts +7 -0
  140. package/dist/providers/typescript/triggerTypeRegistry.d.ts.map +1 -0
  141. package/dist/providers/typescript/triggerTypeRegistry.js +198 -0
  142. package/dist/providers/typescript/triggerTypeRegistry.js.map +1 -0
  143. package/dist/providers/typescript/typePrinter.d.ts +22 -0
  144. package/dist/providers/typescript/typePrinter.d.ts.map +1 -0
  145. package/dist/providers/typescript/typePrinter.js +117 -0
  146. package/dist/providers/typescript/typePrinter.js.map +1 -0
  147. package/dist/run.d.ts +2 -11
  148. package/dist/run.d.ts.map +1 -1
  149. package/dist/run.js +42 -153
  150. package/dist/run.js.map +1 -1
  151. package/dist/sampleEventId.d.ts +0 -4
  152. package/dist/sampleEventId.d.ts.map +1 -1
  153. package/dist/sampleEventId.js +0 -4
  154. package/dist/sampleEventId.js.map +1 -1
  155. package/dist/shared/ApiRoutes.d.ts +19 -0
  156. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  157. package/dist/shared/ApiRoutes.js +17 -1
  158. package/dist/shared/ApiRoutes.js.map +1 -1
  159. package/dist/shared/Configs.d.ts +24 -2
  160. package/dist/shared/Configs.d.ts.map +1 -1
  161. package/dist/shared/Configs.js +32 -2
  162. package/dist/shared/Configs.js.map +1 -1
  163. package/dist/shared/Integrations.d.ts +18 -1
  164. package/dist/shared/Integrations.d.ts.map +1 -1
  165. package/dist/shared/Integrations.js +10 -1
  166. package/dist/shared/Integrations.js.map +1 -1
  167. package/dist/shared/InvalidationKeys.d.ts +1 -0
  168. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  169. package/dist/shared/InvalidationKeys.js +3 -0
  170. package/dist/shared/InvalidationKeys.js.map +1 -1
  171. package/dist/shared/ModelEvents.d.ts +9 -0
  172. package/dist/shared/ModelEvents.d.ts.map +1 -1
  173. package/dist/shared/ModelEvents.js +15 -0
  174. package/dist/shared/ModelEvents.js.map +1 -1
  175. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  176. package/dist/shared/ToolDisplayUtils.js +107 -11
  177. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  178. package/dist/shared/types.d.ts +1013 -108
  179. package/dist/shared/types.d.ts.map +1 -1
  180. package/dist/shared/types.js.map +1 -1
  181. package/dist/test.d.ts +2 -1
  182. package/dist/test.d.ts.map +1 -1
  183. package/dist/test.js +43 -23
  184. package/dist/test.js.map +1 -1
  185. package/dist/triggerParseDetail.d.ts +8 -0
  186. package/dist/triggerParseDetail.d.ts.map +1 -0
  187. package/dist/triggerParseDetail.js +30 -0
  188. package/dist/triggerParseDetail.js.map +1 -0
  189. package/dist/util.d.ts +2 -3
  190. package/dist/util.d.ts.map +1 -1
  191. package/dist/util.js +3 -3
  192. package/dist/util.js.map +1 -1
  193. package/package.json +3 -3
  194. package/templates/typescript/codegen/.impeccable/hook.cache.json +1 -0
  195. package/dist/jsonOutput.d.ts +0 -19
  196. package/dist/jsonOutput.d.ts.map +0 -1
  197. package/dist/jsonOutput.js +0 -25
  198. package/dist/jsonOutput.js.map +0 -1
  199. package/dist/providers/typescript/parkSignals.d.ts +0 -7
  200. package/dist/providers/typescript/parkSignals.d.ts.map +0 -1
  201. package/dist/providers/typescript/parkSignals.js +0 -45
  202. package/dist/providers/typescript/parkSignals.js.map +0 -1
  203. package/dist/replay.d.ts +0 -3
  204. package/dist/replay.d.ts.map +0 -1
  205. package/dist/replay.js +0 -20
  206. package/dist/replay.js.map +0 -1
  207. package/dist/testRelay.d.ts +0 -6
  208. package/dist/testRelay.d.ts.map +0 -1
  209. package/dist/testRelay.js +0 -91
  210. package/dist/testRelay.js.map +0 -1
  211. package/dist/urls.d.ts +0 -3
  212. package/dist/urls.d.ts.map +0 -1
  213. package/dist/urls.js +0 -27
  214. package/dist/urls.js.map +0 -1
package/dist/deploy.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function deploy(): Promise<void>;
1
+ import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
+ export declare function deploy(provider?: LanguageProvider, entryFile?: string): Promise<void>;
2
3
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAeA,wBAAsB,MAAM,kBA2D3B"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,EAAE,SAAS,CAAC,EAAE,MAAM,iBA2F9F"}
package/dist/deploy.js CHANGED
@@ -1,35 +1,45 @@
1
+ import chalk from "chalk";
2
+ import { zipSync } from "fflate";
1
3
  import fs from "node:fs";
2
4
  import path from "node:path";
3
- import chalk from "chalk";
4
5
  import ora from "ora";
5
- import { zipSync } from "fflate";
6
- import { fetchWithAuth, readApiKey } from "./api.js";
7
- import { assertProjectRoot } from "./assertProjectRoot.js";
6
+ import { ApiRoutes, sdkDeployRequestBodySchema } from "terse-types";
7
+ import { fetchWithAuth, readApiKeyOrBail, readEnvVar } from "./api.js";
8
8
  import { loadJobRegistry } from "./loadJob.js";
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);
19
- }
20
- const registry = await loadJobRegistry();
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);
21
16
  const jobs = [...registry.values()];
22
- const { sourceZipBase64, fileCount, zipSizeBytes } = buildZipPayload();
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;
29
+ }
23
30
  const spinner = ora(`Deploying ${jobs.length} job${jobs.length === 1 ? "" : "s"}...`).start();
24
31
  try {
25
- const result = await fetchWithAuth(ApiRoutes.SDK.DEPLOY, apiKey, {
32
+ const body = sdkDeployRequestBodySchema.parse({
26
33
  jobs: jobs.map(job => ({
27
34
  jobName: job.name,
28
- triggers: job.triggers.map(serializeTrigger),
29
- webhookURL: job.webhookURL
35
+ triggers: job.triggers,
36
+ outputs: job.skills ?? [],
37
+ toolApprovals: job.toolApprovals ?? []
30
38
  })),
39
+ remoteServerUrl: isUrlMode ? remoteServerUrl : undefined,
31
40
  sourceZipBase64
32
- }, "POST");
41
+ });
42
+ const result = await fetchWithAuth(ApiRoutes.SDK.DEPLOY, apiKey, body, "POST");
33
43
  if (!result.success) {
34
44
  spinner.fail(chalk.red(`Deploy failed: ${result.error}`));
35
45
  if (result.details) {
@@ -41,9 +51,31 @@ export async function deploy() {
41
51
  for (const r of result.results) {
42
52
  const verb = r.isUpdate ? "Updated" : "Created";
43
53
  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`));
44
78
  }
45
- console.log(chalk.dim(` Files: ${fileCount}`));
46
- console.log(chalk.dim(` Zip size: ${(zipSizeBytes / 1024).toFixed(1)} KB`));
47
79
  if (result.removed.length > 0) {
48
80
  console.log(chalk.yellow(`\nRemoved ${result.removed.length} stale job${result.removed.length === 1 ? "" : "s"} no longer in project:`));
49
81
  for (const r of result.removed) {
@@ -56,17 +88,17 @@ export async function deploy() {
56
88
  process.exit(1);
57
89
  }
58
90
  }
59
- function collectFiles(dir, baseDir) {
91
+ function collectFiles(dir, baseDir, provider) {
60
92
  const entries = {};
61
93
  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
62
- if (EXCLUDED_DIRS.has(entry.name))
94
+ if (provider.deployExclusions.dirs.has(entry.name))
63
95
  continue;
64
- if (EXCLUDED_FILES.has(entry.name))
96
+ if (provider.deployExclusions.files.has(entry.name))
65
97
  continue;
66
98
  const fullPath = path.join(dir, entry.name);
67
99
  const relativePath = path.relative(baseDir, fullPath);
68
100
  if (entry.isDirectory()) {
69
- Object.assign(entries, collectFiles(fullPath, baseDir));
101
+ Object.assign(entries, collectFiles(fullPath, baseDir, provider));
70
102
  }
71
103
  else if (entry.isFile()) {
72
104
  entries[relativePath] = new Uint8Array(fs.readFileSync(fullPath));
@@ -74,18 +106,9 @@ function collectFiles(dir, baseDir) {
74
106
  }
75
107
  return entries;
76
108
  }
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() {
109
+ function buildZipPayload(provider) {
87
110
  const cwd = process.cwd();
88
- const files = collectFiles(cwd, cwd);
111
+ const files = collectFiles(cwd, cwd, provider);
89
112
  const fileCount = Object.keys(files).length;
90
113
  if (fileCount === 0) {
91
114
  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,2 +1,3 @@
1
- export declare function generate(): Promise<void>;
1
+ import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
+ export declare function generate(provider?: LanguageProvider): Promise<void>;
2
3
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAwCA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAmQ9C"}
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"}
package/dist/generate.js CHANGED
@@ -1,23 +1,21 @@
1
+ import chalk from "chalk";
1
2
  import fs from "node:fs";
2
3
  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";
5
8
  import { assertProjectRoot } from "./assertProjectRoot.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";
9
+ import { resolveProvider } from "./providers/resolveProvider.js";
10
10
  // ── Main ──────────────────────────────────────────────────────────────
11
- export async function generate() {
12
- assertProjectRoot();
11
+ export async function generate(provider = resolveProvider()) {
12
+ assertProjectRoot(provider, provider.detectionMarkers);
13
13
  const totalStart = performance.now();
14
14
  // 1. Read API key
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
- }
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
+ });
21
19
  // 2. Fetch active integrations
22
20
  const spinner = ora("Fetching integrations...").start();
23
21
  let activeTypes;
@@ -33,8 +31,7 @@ export async function generate() {
33
31
  message.toLowerCase().includes("unauthorized") ||
34
32
  message.toLowerCase().includes("forbidden");
35
33
  if (isAuthError) {
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"));
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"));
38
35
  }
39
36
  else {
40
37
  console.error(chalk.red(`\n ${message}\n`));
@@ -49,6 +46,11 @@ export async function generate() {
49
46
  // Filter to only tools whose integration matches an active integration type
50
47
  const activeSet = new Set(activeTypes);
51
48
  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
+ }
52
54
  }
53
55
  catch {
54
56
  // Non-fatal: proceed without tool definitions
@@ -56,11 +58,18 @@ export async function generate() {
56
58
  // 4. Fetch all integration instances + resources in parallel
57
59
  spinner.text = "Fetching integration details...";
58
60
  const input = {
59
- github: [], slack: [], gmail: [], figma: [],
60
- linear: [], atlassian: [], notion: [],
61
- posthog: [], datadog: [], launchdarkly: [],
62
- workos: [], attio: [],
63
- tools: toolDefs,
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
64
73
  };
65
74
  const has = (t) => activeTypes.includes(t);
66
75
  const promises = [];
@@ -91,37 +100,18 @@ export async function generate() {
91
100
  }));
92
101
  }));
93
102
  }
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
- }
101
103
  // ── Linear (fetches teams per instance) ──
102
104
  if (has(IntegrationType.LINEAR)) {
103
105
  promises.push(safely(async () => {
104
106
  const instances = await fetchWithAuth(ApiRoutes.LINEAR.INTEGRATIONS, apiKey);
105
107
  input.linear = await Promise.all(instances.map(async (inst) => {
106
108
  const teams = await fetchWithAuth(`${ApiRoutes.LINEAR.TEAMS}?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
- ]);
109
+ const projects = await fetchWithAuth(`${ApiRoutes.LINEAR.PROJECTS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => []);
120
110
  return {
121
111
  id: inst.id,
122
- displayName: inst.siteName || inst.email || inst.id,
123
- jiraProjects: jiraResp?.resources?.projects || [],
124
- confluencePages: confResp?.resources || [],
112
+ displayName: inst.workspaceName || inst.id,
113
+ teams: Array.isArray(teams) ? teams : [],
114
+ projects: Array.isArray(projects) ? projects : []
125
115
  };
126
116
  }));
127
117
  }));
@@ -137,7 +127,7 @@ export async function generate() {
137
127
  id: inst.id,
138
128
  displayName: inst.workspaceName || inst.id,
139
129
  databases: resources.filter(r => r.type === "database"),
140
- pages: resources.filter(r => r.type === "page"),
130
+ pages: resources.filter(r => r.type === "page")
141
131
  };
142
132
  }));
143
133
  }));
@@ -157,7 +147,9 @@ export async function generate() {
157
147
  promises.push(safely(async () => {
158
148
  const instances = await fetchWithAuth(ApiRoutes.DATADOG.INTEGRATIONS, apiKey);
159
149
  input.datadog = await Promise.all(instances.map(async (inst) => {
160
- const resp = await fetchWithAuth(`${ApiRoutes.DATADOG.INDEXES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({ indexes: [] }));
150
+ const resp = await fetchWithAuth(`${ApiRoutes.DATADOG.INDEXES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({
151
+ indexes: []
152
+ }));
161
153
  return { id: inst.id, displayName: inst.region || inst.id, indexes: resp.indexes || [] };
162
154
  }));
163
155
  }));
@@ -167,7 +159,7 @@ export async function generate() {
167
159
  promises.push(safely(async () => {
168
160
  const instances = await fetchWithAuth(ApiRoutes.LAUNCHDARKLY.INTEGRATIONS, apiKey);
169
161
  input.launchdarkly = await Promise.all(instances.map(async (inst) => {
170
- const resp = await fetchWithAuth(ApiRoutes.LAUNCHDARKLY.PROJECTS_BY_INTEGRATION_ID.build(inst.id), apiKey).catch(() => ({ projects: [] }));
162
+ const resp = await fetchWithAuth(buildRoute(ApiRoutes.LAUNCHDARKLY.PROJECTS_BY_INTEGRATION_ID, { integrationId: inst.id }), apiKey).catch(() => ({ projects: [] }));
171
163
  return { id: inst.id, displayName: inst.tokenName || inst.email || inst.id, projects: resp.projects || [] };
172
164
  }));
173
165
  }));
@@ -184,23 +176,35 @@ export async function generate() {
184
176
  promises.push(safely(async () => {
185
177
  const instances = await fetchWithAuth(ApiRoutes.ATTIO.INTEGRATIONS, apiKey);
186
178
  input.attio = await Promise.all(instances.map(async (inst) => {
187
- const objects = await fetchWithAuth(ApiRoutes.ATTIO.OBJECTS.build(inst.id), apiKey).catch(() => []);
179
+ const objects = await fetchWithAuth(buildRoute(ApiRoutes.ATTIO.OBJECTS, { integrationId: inst.id }), apiKey).catch(() => []);
188
180
  return { id: inst.id, displayName: inst.workspaceName || inst.id, objects: Array.isArray(objects) ? objects : [] };
189
181
  }));
190
182
  }));
191
183
  }
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
+ }
192
190
  await Promise.all(promises);
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;
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;
197
201
  spinner.succeed(`Fetched ${integrationCount} integration(s)`);
198
202
  // 5. Generate code
199
203
  const codegenStart = performance.now();
200
- const code = generateCode(input);
204
+ const code = provider.renderGeneratedCode(input);
201
205
  const codegenMs = performance.now() - codegenStart;
202
206
  // 6. Write output
203
- writeOutput(code);
207
+ writeOutput(code, provider);
204
208
  // 7. Summary
205
209
  const totalMs = performance.now() - totalStart;
206
210
  console.log("");
@@ -211,7 +215,7 @@ export async function generate() {
211
215
  console.log(` ${chalk.green("+")} Schedule trigger`);
212
216
  console.log(` ${chalk.green("+")} Terse skills (web search)`);
213
217
  console.log("");
214
- console.log(` ${chalk.green.bold("Generated")} src/terse.generated.ts`);
218
+ console.log(` ${chalk.green.bold("Generated")} ${path.relative(process.cwd(), provider.resolveGeneratedCodePath(process.cwd()))}`);
215
219
  console.log(` ${chalk.dim(`Codegen: ${codegenMs.toFixed(0)}ms | Total: ${totalMs.toFixed(0)}ms`)}`);
216
220
  console.log("");
217
221
  }
@@ -220,14 +224,17 @@ async function safely(fn) {
220
224
  try {
221
225
  await fn();
222
226
  }
223
- catch { /* skip failed integrations */ }
227
+ catch {
228
+ /* skip failed integrations */
229
+ }
224
230
  }
225
- function writeOutput(code) {
226
- const srcDir = path.resolve(process.cwd(), "src");
227
- if (!fs.existsSync(srcDir)) {
228
- fs.mkdirSync(srcDir, { recursive: true });
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 });
229
236
  }
230
- fs.writeFileSync(path.join(srcDir, "terse.generated.ts"), code);
237
+ fs.writeFileSync(outputPath, code);
231
238
  }
232
239
  function printSummary(input) {
233
240
  const g = chalk.green("+");
@@ -243,19 +250,10 @@ function printSummary(input) {
243
250
  const n = inst.channels.length;
244
251
  console.log(` ${g} Slack (${inst.displayName}) — ${n} ${n === 1 ? "channel" : "channels"}`);
245
252
  }
246
- for (const inst of input.figma) {
247
- console.log(` ${g} Figma (${inst.displayName})`);
248
- }
249
253
  for (const inst of input.linear) {
250
254
  const n = inst.teams.length;
251
255
  console.log(` ${g} Linear (${inst.displayName}) — ${n} ${n === 1 ? "team" : "teams"}`);
252
256
  }
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
- }
259
257
  for (const inst of input.notion) {
260
258
  const d = inst.databases.length;
261
259
  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":"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"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ import { applyImprovement, listImprovements } from "./commands/improvements.js";
18
18
  import { init } from "./commands/init.js";
19
19
  import { install, update } from "./commands/install.js";
20
20
  import { integrate, integrateConnect, integrateDescribe, integrateDisconnect, integrateList, integrateTool, integrateWait } from "./commands/integrate.js";
21
+ import { integrateConnections, integrateUse } from "./commands/integrateUse.js";
21
22
  import { listen } from "./commands/listen.js";
22
23
  import { memoryGet, memoryList, memoryPut, memoryRemove } from "./commands/memory.js";
23
24
  import { replay } from "./commands/replay.js";
@@ -27,6 +28,7 @@ import { secretsAdd, secretsImport, secretsList, secretsRemove } from "./command
27
28
  import { stateGet, stateList, stateRemove, stateReset } from "./commands/state.js";
28
29
  import { targetClear, targetStatus, targetUse } from "./commands/target.js";
29
30
  import { test, testList, testRun, testShow } from "./commands/test.js";
31
+ import { integrateToolRun } from "./commands/toolRun.js";
30
32
  import { isCliRunCommandEnabled } from "./env.js";
31
33
  import { isPromptCancellationError } from "./promptErrors.js";
32
34
  import { resolveProvider } from "./providers/resolveProvider.js";
@@ -214,6 +216,9 @@ Examples:
214
216
  $ terse integrate describe snowflake --json # see required fields
215
217
  $ terse integrate tool slack --json # list an integration's tools
216
218
  $ terse integrate tool slack slack_send_message --json # one tool's input/output schemas
219
+ $ terse integrate tool run slack.listChannels # invoke a tool ad hoc, no job required
220
+ $ terse integrate connections slack --json # enumerate a workspace's connections + IDs
221
+ $ terse integrate use slack # pin which connection this project uses
217
222
  $ terse integrate connect snowflake --field account=x --field username=y --fields-stdin <<< '{"password":"'"$PW"'"}'
218
223
  $ terse integrate connect slack # OAuth → opens browser, exit 2 (follow up with 'wait')
219
224
  $ terse integrate wait slack --timeout 300 # block until OAuth completes
@@ -273,9 +278,9 @@ integrateCommand
273
278
  .action(async (type, opts) => {
274
279
  await integrateDisconnect({ integrationType: type, json: opts.json });
275
280
  });
276
- integrateCommand
281
+ const integrateToolCommand = integrateCommand
277
282
  .command("tool")
278
- .description("List an integration's tools, or show one tool's description and input/output schemas")
283
+ .description("List an integration's tools, show one tool's schemas, or run a tool ad hoc")
279
284
  .argument("<type>", "Integration type (e.g. slack, snowflake)")
280
285
  .argument("[tool-name]", "Tool name (e.g. slack_send_message); omit to list every tool")
281
286
  .option("--json", "Emit JSON")
@@ -284,10 +289,64 @@ Examples:
284
289
  $ terse integrate tool slack # list Slack's tools
285
290
  $ terse integrate tool slack --json
286
291
  $ terse integrate tool slack slack_send_message --json # one tool's description and input/output schemas
292
+ $ terse integrate tool run slack.listChannels # invoke a tool without building a job
287
293
  `)
288
294
  .action(async (type, toolName, opts) => {
289
295
  await integrateTool({ integrationType: type, toolName, json: opts.json });
290
296
  });
297
+ integrateToolCommand
298
+ .command("run")
299
+ .description("Invoke a read-only toolbox tool ad hoc and print its JSON result — no job or deploy required")
300
+ .argument("<tool>", "Tool to run, as attio_records or attio.records")
301
+ .option("--params <json>", "Tool params as a JSON object; pass '-' (or pipe) to read from stdin")
302
+ .option("--integration <id>", "Integration connection ID (only needed when several connections exist)")
303
+ .addHelpText("after", `
304
+ Examples:
305
+ $ terse integrate tool run slack.listChannels
306
+ $ terse integrate tool run attio.records --params '{"request":{"action":"query","objectSlug":"deals","limit":5}}'
307
+ $ echo '{"request":{"action":"search","objectSlug":"companies","query":"acme"}}' | terse integrate tool run attio_records
308
+ $ terse integrate tool run linear.searchTicket --integration cm123 --params '{"query":"TER-658"}'
309
+
310
+ Only read-only tools can be run ad hoc; write tools (and approval-gated tools) run inside jobs.
311
+ The result is printed to stdout as raw JSON; errors go to stderr with a nonzero exit code.
312
+ Params are the tool's wire shape — see \`terse integrate tool <integration> <tool-name> --json\` for the input schema.
313
+ `)
314
+ .action(async (tool, opts) => {
315
+ await integrateToolRun({ toolName: tool, params: opts.params, integrationId: opts.integration });
316
+ });
317
+ integrateCommand
318
+ .command("connections")
319
+ .description("List an integration's connections with their IDs and which one this project pins")
320
+ .argument("<type>", "Integration type (e.g. slack)")
321
+ .option("--json", "Emit JSON")
322
+ .addHelpText("after", `
323
+ Examples:
324
+ $ terse integrate connections slack
325
+ $ terse integrate connections slack --json # {id, name, pinned} per connection
326
+
327
+ Non-interactive counterpart to the \`terse integrate use\` picker: list here, then pin with \`terse integrate use <type> <connection-id>\`.
328
+ `)
329
+ .action(async (type, opts) => {
330
+ await integrateConnections({ integrationType: type, json: opts.json });
331
+ });
332
+ integrateCommand
333
+ .command("use")
334
+ .description("Pin which connection this project generates against, then regenerate terse.generated.ts")
335
+ .argument("<type>", "Integration type (e.g. slack)")
336
+ .argument("[connection-id]", "Connection ID; omit to pick interactively (or auto-pin a single connection)")
337
+ .option("--clear", "Remove this integration's pin and regenerate")
338
+ .addHelpText("after", `
339
+ Examples:
340
+ $ terse integrate use slack # pick from the workspace's Slack connections
341
+ $ terse integrate use slack cmr3l8b3d0003bpq4rpifevze
342
+ $ terse integrate use slack --clear # back to the default (oldest) connection
343
+
344
+ Non-interactive (agents/CI): the picker is disabled without a TTY — list IDs with \`terse integrate connections <type> --json\` and pass one explicitly.
345
+ The pin is stored in terse.config.json and also drives \`terse integrate tool run\` resolution in this project.
346
+ `)
347
+ .action(async (type, connectionId, opts) => {
348
+ await integrateUse({ integrationType: type, connectionId, clear: opts.clear }, resolveProvider());
349
+ });
291
350
  integrateCommand
292
351
  .command("wait")
293
352
  .description("Block until an OAuth integration finishes connecting (run after `connect` emits a handoff)")