terse-cli 0.3.4 → 0.3.6

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 (209) 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/codegen.d.ts +15 -0
  18. package/dist/codegen.d.ts.map +1 -1
  19. package/dist/codegen.js +466 -81
  20. package/dist/codegen.js.map +1 -1
  21. package/dist/commands/deployTheme.d.ts +28 -0
  22. package/dist/commands/deployTheme.d.ts.map +1 -0
  23. package/dist/commands/deployTheme.js +68 -0
  24. package/dist/commands/deployTheme.js.map +1 -0
  25. package/dist/commands/dev.d.ts +3 -0
  26. package/dist/commands/dev.d.ts.map +1 -0
  27. package/dist/commands/dev.js +47 -0
  28. package/dist/commands/dev.js.map +1 -0
  29. package/dist/commands/fsExec.d.ts +8 -0
  30. package/dist/commands/fsExec.d.ts.map +1 -0
  31. package/dist/commands/fsExec.js +46 -0
  32. package/dist/commands/fsExec.js.map +1 -0
  33. package/dist/commands/metaAdsScope.d.ts +12 -0
  34. package/dist/commands/metaAdsScope.d.ts.map +1 -0
  35. package/dist/commands/metaAdsScope.js +120 -0
  36. package/dist/commands/metaAdsScope.js.map +1 -0
  37. package/dist/commands/serve.d.ts +1 -0
  38. package/dist/commands/serve.d.ts.map +1 -0
  39. package/dist/commands/serve.js +2 -0
  40. package/dist/commands/serve.js.map +1 -0
  41. package/dist/commands/terseCliTheme.d.ts +28 -0
  42. package/dist/commands/terseCliTheme.d.ts.map +1 -0
  43. package/dist/commands/terseCliTheme.js +68 -0
  44. package/dist/commands/terseCliTheme.js.map +1 -0
  45. package/dist/commands/tool.d.ts +6 -0
  46. package/dist/commands/tool.d.ts.map +1 -0
  47. package/dist/commands/tool.js +34 -0
  48. package/dist/commands/tool.js.map +1 -0
  49. package/dist/data/standardSlackEmoji.d.ts +2 -0
  50. package/dist/data/standardSlackEmoji.d.ts.map +1 -0
  51. package/dist/data/standardSlackEmoji.js +1978 -0
  52. package/dist/data/standardSlackEmoji.js.map +1 -0
  53. package/dist/data/standardSlackEmoji.json +1974 -0
  54. package/dist/deploy.d.ts +2 -1
  55. package/dist/deploy.d.ts.map +1 -1
  56. package/dist/deploy.js +61 -38
  57. package/dist/deploy.js.map +1 -1
  58. package/dist/eventFixture.js +1 -0
  59. package/dist/eventFixture.js.map +1 -1
  60. package/dist/generate.d.ts +2 -1
  61. package/dist/generate.d.ts.map +1 -1
  62. package/dist/generate.js +67 -69
  63. package/dist/generate.js.map +1 -1
  64. package/dist/init.d.ts +2 -1
  65. package/dist/init.d.ts.map +1 -1
  66. package/dist/init.js +45 -96
  67. package/dist/init.js.map +1 -1
  68. package/dist/integrate.d.ts +1 -0
  69. package/dist/integrate.d.ts.map +1 -1
  70. package/dist/integrate.js +191 -11
  71. package/dist/integrate.js.map +1 -1
  72. package/dist/nonInteractive.d.ts +4 -2
  73. package/dist/nonInteractive.d.ts.map +1 -1
  74. package/dist/nonInteractive.js +5 -2
  75. package/dist/nonInteractive.js.map +1 -1
  76. package/dist/perf.d.ts +9 -0
  77. package/dist/perf.d.ts.map +1 -0
  78. package/dist/perf.js +59 -0
  79. package/dist/perf.js.map +1 -0
  80. package/dist/providers/codegen.test.d.ts +2 -0
  81. package/dist/providers/codegen.test.d.ts.map +1 -0
  82. package/dist/providers/codegen.test.js +45 -0
  83. package/dist/providers/codegen.test.js.map +1 -0
  84. package/dist/providers/python/PythonProvider.js +1 -0
  85. package/dist/providers/python/PythonProvider.js.map +1 -1
  86. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  87. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  88. package/dist/providers/python/PythonProvider.test.js +169 -0
  89. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  90. package/dist/providers/typescript/attioProjection.d.ts +50 -0
  91. package/dist/providers/typescript/attioProjection.d.ts.map +1 -0
  92. package/dist/providers/typescript/attioProjection.js +358 -0
  93. package/dist/providers/typescript/attioProjection.js.map +1 -0
  94. package/dist/providers/typescript/modules/cursor/CursorModule.d.ts +20 -0
  95. package/dist/providers/typescript/modules/cursor/CursorModule.d.ts.map +1 -0
  96. package/dist/providers/typescript/modules/cursor/CursorModule.js +27 -0
  97. package/dist/providers/typescript/modules/cursor/CursorModule.js.map +1 -0
  98. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.d.ts +27 -0
  99. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.d.ts.map +1 -0
  100. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.js +54 -0
  101. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.js.map +1 -0
  102. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.d.ts +20 -0
  103. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.d.ts.map +1 -0
  104. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.js +27 -0
  105. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.js.map +1 -0
  106. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.d.ts +24 -0
  107. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.d.ts.map +1 -0
  108. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.js +34 -0
  109. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.js.map +1 -0
  110. package/dist/providers/typescript/modules/registry.d.ts.map +1 -1
  111. package/dist/providers/typescript/modules/registry.js +7 -1
  112. package/dist/providers/typescript/modules/registry.js.map +1 -1
  113. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  114. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  115. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  116. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  117. package/dist/providers/typescript/projectedTypes.d.ts +11 -0
  118. package/dist/providers/typescript/projectedTypes.d.ts.map +1 -0
  119. package/dist/providers/typescript/projectedTypes.js +53 -0
  120. package/dist/providers/typescript/projectedTypes.js.map +1 -0
  121. package/dist/providers/typescript/projectionPrinter.d.ts +26 -0
  122. package/dist/providers/typescript/projectionPrinter.d.ts.map +1 -0
  123. package/dist/providers/typescript/projectionPrinter.js +110 -0
  124. package/dist/providers/typescript/projectionPrinter.js.map +1 -0
  125. package/dist/providers/typescript/replayLogDedupe.d.ts +6 -0
  126. package/dist/providers/typescript/replayLogDedupe.d.ts.map +1 -0
  127. package/dist/providers/typescript/replayLogDedupe.js +156 -0
  128. package/dist/providers/typescript/replayLogDedupe.js.map +1 -0
  129. package/dist/providers/typescript/triggerPayloads.d.ts +7 -0
  130. package/dist/providers/typescript/triggerPayloads.d.ts.map +1 -0
  131. package/dist/providers/typescript/triggerPayloads.js +60 -0
  132. package/dist/providers/typescript/triggerPayloads.js.map +1 -0
  133. package/dist/providers/typescript/triggerTypeRegistry.d.ts +7 -0
  134. package/dist/providers/typescript/triggerTypeRegistry.d.ts.map +1 -0
  135. package/dist/providers/typescript/triggerTypeRegistry.js +198 -0
  136. package/dist/providers/typescript/triggerTypeRegistry.js.map +1 -0
  137. package/dist/run.d.ts +2 -11
  138. package/dist/run.d.ts.map +1 -1
  139. package/dist/run.js +42 -153
  140. package/dist/run.js.map +1 -1
  141. package/dist/sampleEventId.d.ts +0 -4
  142. package/dist/sampleEventId.d.ts.map +1 -1
  143. package/dist/sampleEventId.js +0 -4
  144. package/dist/sampleEventId.js.map +1 -1
  145. package/dist/shared/ApiRoutes.d.ts +19 -0
  146. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  147. package/dist/shared/ApiRoutes.js +17 -1
  148. package/dist/shared/ApiRoutes.js.map +1 -1
  149. package/dist/shared/Configs.d.ts +24 -2
  150. package/dist/shared/Configs.d.ts.map +1 -1
  151. package/dist/shared/Configs.js +32 -2
  152. package/dist/shared/Configs.js.map +1 -1
  153. package/dist/shared/Integrations.d.ts +18 -1
  154. package/dist/shared/Integrations.d.ts.map +1 -1
  155. package/dist/shared/Integrations.js +10 -1
  156. package/dist/shared/Integrations.js.map +1 -1
  157. package/dist/shared/InvalidationKeys.d.ts +1 -0
  158. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  159. package/dist/shared/InvalidationKeys.js +3 -0
  160. package/dist/shared/InvalidationKeys.js.map +1 -1
  161. package/dist/shared/ModelEvents.d.ts +9 -0
  162. package/dist/shared/ModelEvents.d.ts.map +1 -1
  163. package/dist/shared/ModelEvents.js +15 -0
  164. package/dist/shared/ModelEvents.js.map +1 -1
  165. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  166. package/dist/shared/ToolDisplayUtils.js +107 -11
  167. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  168. package/dist/shared/types.d.ts +1013 -108
  169. package/dist/shared/types.d.ts.map +1 -1
  170. package/dist/shared/types.js.map +1 -1
  171. package/dist/test.d.ts +2 -1
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +43 -23
  174. package/dist/test.js.map +1 -1
  175. package/dist/triggerParseDetail.d.ts +8 -0
  176. package/dist/triggerParseDetail.d.ts.map +1 -0
  177. package/dist/triggerParseDetail.js +30 -0
  178. package/dist/triggerParseDetail.js.map +1 -0
  179. package/dist/util.d.ts +2 -3
  180. package/dist/util.d.ts.map +1 -1
  181. package/dist/util.js +3 -3
  182. package/dist/util.js.map +1 -1
  183. package/package.json +3 -3
  184. package/src/providers/typescript/modules/github/github.triggers.hbs +4 -0
  185. package/src/providers/typescript/modules/google_search_console/google_search_console.tools.hbs +16 -0
  186. package/src/providers/typescript/modules/higgsfield/higgsfield.tools.hbs +12 -0
  187. package/src/providers/typescript/modules/meta_ads/meta_ads.tools.hbs +16 -0
  188. package/templates/typescript/codegen/.impeccable/hook.cache.json +1 -0
  189. package/templates/typescript/codegen/sdk-primitives.hbs +6 -0
  190. package/dist/jsonOutput.d.ts +0 -19
  191. package/dist/jsonOutput.d.ts.map +0 -1
  192. package/dist/jsonOutput.js +0 -25
  193. package/dist/jsonOutput.js.map +0 -1
  194. package/dist/providers/typescript/parkSignals.d.ts +0 -7
  195. package/dist/providers/typescript/parkSignals.d.ts.map +0 -1
  196. package/dist/providers/typescript/parkSignals.js +0 -45
  197. package/dist/providers/typescript/parkSignals.js.map +0 -1
  198. package/dist/replay.d.ts +0 -3
  199. package/dist/replay.d.ts.map +0 -1
  200. package/dist/replay.js +0 -20
  201. package/dist/replay.js.map +0 -1
  202. package/dist/testRelay.d.ts +0 -6
  203. package/dist/testRelay.d.ts.map +0 -1
  204. package/dist/testRelay.js +0 -91
  205. package/dist/testRelay.js.map +0 -1
  206. package/dist/urls.d.ts +0 -3
  207. package/dist/urls.d.ts.map +0 -1
  208. package/dist/urls.js +0 -27
  209. package/dist/urls.js.map +0 -1
package/dist/init.js CHANGED
@@ -1,17 +1,20 @@
1
+ import chalk from "chalk";
1
2
  import fs from "node:fs";
2
3
  import path from "node:path";
3
- import { exec, execSync } from "node:child_process";
4
- import { promisify } from "node:util";
5
- import { fileURLToPath } from "node:url";
6
4
  import ora from "ora";
7
- import chalk from "chalk";
8
- import { input } from "@inquirer/prompts";
5
+ import { loginAndWriteEnv } from "./auth.js";
9
6
  import { generate } from "./generate.js";
10
- import { FRONTEND_URL, BACKEND_URL } from "./config.js";
11
- const execAsync = promisify(exec);
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
14
- export async function init(projectName) {
7
+ import { listAndPromptIntegrations } from "./integrate.js";
8
+ import { fetchSdkVersion } from "./providers/fetchSdkVersion.js";
9
+ import { resolveProvider } from "./providers/resolveProvider.js";
10
+ import { renderTemplate } from "./providers/templateUtils.js";
11
+ export async function init(projectName, provider = resolveProvider({ command: "init", language: "ts" })) {
12
+ if (!projectName && fs.existsSync(path.join(process.cwd(), "package.json"))) {
13
+ console.error(chalk.red("\n Error: Detected an existing npm project in this directory."));
14
+ console.error(chalk.dim(" terse init is for scaffolding new projects only.\n"));
15
+ console.error(` To add Terse to this project for self-hosted mode, run ${chalk.cyan("terse attach")} instead.\n`);
16
+ process.exit(1);
17
+ }
15
18
  const targetDir = projectName ? path.resolve(process.cwd(), projectName) : process.cwd();
16
19
  const resolvedName = projectName ?? path.basename(process.cwd());
17
20
  console.log(`\n Creating Terse project ${chalk.bold(resolvedName)}\n`);
@@ -23,40 +26,39 @@ export async function init(projectName) {
23
26
  }
24
27
  fs.mkdirSync(targetDir, { recursive: true });
25
28
  }
26
- // Create src directory
29
+ // Create the source directory up front. Nested template paths create their own parents.
27
30
  fs.mkdirSync(path.join(targetDir, "src"), { recursive: true });
28
- const templatesDir = getTemplatesDir();
29
- const replacements = { PROJECT_NAME: resolvedName };
31
+ const versionSpinner = ora("Fetching latest SDK version").start();
32
+ const sdkVersion = await fetchSdkVersion(provider.language);
33
+ versionSpinner.succeed(`Using terse-sdk ${sdkVersion}`);
34
+ const templateContext = provider.buildInitTemplateContext(resolvedName, sdkVersion);
30
35
  // Write files from templates
31
- const files = [
32
- { template: "package.json.tmpl", output: "package.json" },
33
- { template: "tsconfig.json.tmpl", output: "tsconfig.json" },
34
- { template: "src/index.ts.tmpl", output: "src/index.ts" },
35
- { template: "env.example.tmpl", output: ".env.example" },
36
- { template: "gitignore.tmpl", output: ".gitignore" },
37
- ];
38
- for (const file of files) {
39
- const content = readTemplate(templatesDir, file.template);
40
- const rendered = applyReplacements(content, replacements);
36
+ for (const file of provider.scaffoldFiles()) {
37
+ const rendered = renderTemplate(file.template, templateContext);
41
38
  const outputPath = path.join(targetDir, file.output);
39
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
42
40
  fs.writeFileSync(outputPath, rendered);
43
41
  console.log(` ${chalk.green("+")} ${file.output}`);
44
42
  }
45
43
  // Install dependencies
46
- const pm = detectPackageManager();
44
+ const pm = provider.detectPackageManager();
47
45
  const spinner = ora(`Installing dependencies with ${pm}`).start();
46
+ // Rest of commands run in newly generated project directory
47
+ await changeDirectory(targetDir);
48
48
  try {
49
- await execAsync(`${pm} install`, { cwd: targetDir });
49
+ await provider.installDependencies(targetDir);
50
50
  spinner.succeed(`Dependencies installed with ${pm}`);
51
51
  }
52
52
  catch {
53
53
  spinner.warn(`Failed to install dependencies. Run ${chalk.cyan(`${pm} install`)} manually.`);
54
54
  }
55
- // Prompt for API key and write .env
56
- await promptForApiKey(targetDir);
55
+ // Authenticate via browser and write API key to .env
56
+ await loginAndWriteEnv(targetDir);
57
57
  const envExists = fs.existsSync(path.join(targetDir, ".env"));
58
+ // Connect integrations
59
+ await listAndPromptIntegrations();
58
60
  try {
59
- await generate();
61
+ await generate(provider);
60
62
  spinner.succeed(`Generated code`);
61
63
  }
62
64
  catch {
@@ -70,80 +72,27 @@ export async function init(projectName) {
70
72
  step++;
71
73
  }
72
74
  if (!envExists) {
73
- console.log(` ${step}. Copy .env.example to .env and add your TERSE_API_KEY`);
75
+ console.log(` ${step}. Run ${chalk.cyan("terse login")} to authenticate`);
74
76
  step++;
75
77
  }
76
- console.log(` ${step}. Edit src/index.ts to define your job`);
78
+ console.log(` ${step}. Edit ${provider.entryFile} to define your job`);
77
79
  step++;
78
- console.log(` ${step}. ${pm} run build Build the project`);
79
- step++;
80
- console.log(` ${step}. ${pm} run dev Run in development mode\n`);
80
+ const postInitSteps = provider.getPostInitSteps(pm);
81
+ for (const postInitStep of postInitSteps) {
82
+ console.log(` ${step}. ${postInitStep}`);
83
+ step++;
84
+ }
85
+ console.log("");
81
86
  }
82
- async function promptForApiKey(targetDir) {
83
- console.log(`\n Create an API key at: ${chalk.cyan(`${FRONTEND_URL}/app/profile?tab=api-tokens`)}\n`);
84
- try {
85
- const key = (await input({ message: "Paste your API key (or press Enter to skip):" })).trim();
86
- if (!key) {
87
- fs.writeFileSync(path.join(targetDir, ".env"), "TERSE_API_KEY=\n");
88
- console.log(chalk.dim(" Skipped — you can add TERSE_API_KEY to .env later."));
89
- return;
90
- }
91
- // Validate the key against the backend
92
- const spinner = ora("Verifying API key").start();
87
+ function changeDirectory(targetDir) {
88
+ return new Promise((resolve, reject) => {
93
89
  try {
94
- const res = await fetch(`${BACKEND_URL}/sdk/me`, {
95
- headers: { Authorization: `Bearer ${key}` },
96
- });
97
- if (res.ok) {
98
- const data = await res.json();
99
- const name = data.firstName || data.displayName || data.email || "there";
100
- spinner.succeed(`Hello, ${name}! API key verified.`);
101
- }
102
- else {
103
- spinner.warn("Could not verify API key (invalid or server error). Saving it anyway.");
104
- }
90
+ process.chdir(targetDir);
91
+ resolve();
105
92
  }
106
- catch {
107
- spinner.warn("Could not reach the server to verify your API key. Saving it anyway.");
108
- }
109
- fs.writeFileSync(path.join(targetDir, ".env"), `TERSE_API_KEY=${key}\n`);
110
- }
111
- catch (error) {
112
- if (error instanceof Error && error.name === "ExitPromptError") {
113
- console.log("\n");
114
- process.exit(0);
93
+ catch (err) {
94
+ reject(err);
115
95
  }
116
- throw error;
117
- }
118
- }
119
- function getTemplatesDir() {
120
- // In dist/, templates are at ../templates relative to the compiled file
121
- const fromDist = path.resolve(__dirname, "..", "templates");
122
- if (fs.existsSync(fromDist))
123
- return fromDist;
124
- // Fallback for development
125
- const fromSrc = path.resolve(__dirname, "..", "..", "templates");
126
- if (fs.existsSync(fromSrc))
127
- return fromSrc;
128
- throw new Error("Could not find templates directory");
129
- }
130
- function readTemplate(templatesDir, templatePath) {
131
- return fs.readFileSync(path.join(templatesDir, templatePath), "utf-8");
132
- }
133
- function applyReplacements(content, replacements) {
134
- let result = content;
135
- for (const [token, value] of Object.entries(replacements)) {
136
- result = result.replaceAll(`{{${token}}}`, value);
137
- }
138
- return result;
139
- }
140
- function detectPackageManager() {
141
- try {
142
- execSync("pnpm --version", { stdio: "ignore" });
143
- return "pnpm";
144
- }
145
- catch {
146
- return "npm";
147
- }
96
+ });
148
97
  }
149
98
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare function integrate(): Promise<void>;
2
+ export declare function listAndPromptIntegrations(): Promise<void>;
2
3
  //# sourceMappingURL=integrate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAa/C"}
1
+ {"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAeA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB/C;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B/D"}
package/dist/integrate.js CHANGED
@@ -1,19 +1,199 @@
1
- import { spawn } from "node:child_process";
1
+ import { confirm, input, password, select } from "@inquirer/prompts";
2
2
  import chalk from "chalk";
3
- import { FRONTEND_URL } from "./config.js";
4
- const INTEGRATIONS_URL = `${FRONTEND_URL}/app/integrations`;
3
+ import { spawn } from "node:child_process";
4
+ import ora from "ora";
5
+ import { INTEGRATION_METADATA, IntegrationType } from "terse-types";
6
+ import { readApiKey, readApiKeyOrBail } from "./api.js";
7
+ import { generate } from "./generate.js";
8
+ import { fetchInstallationUrl, fetchIntegrationFields, fetchIntegrations, pollForConnection, submitIntegrationForm } from "./integrationApi.js";
5
9
  export async function integrate() {
6
- console.log("");
7
- console.log(` Open integrations in the Web UI: ${chalk.cyan(INTEGRATIONS_URL)}`);
8
- console.log("");
9
- const opened = openInBrowser(INTEGRATIONS_URL);
10
- if (opened) {
11
- console.log(chalk.green(" Opened in your default browser."));
10
+ const apiKey = readApiKeyOrBail();
11
+ let didChangeAnyIntegration = false;
12
+ let continueLoop = true;
13
+ while (continueLoop) {
14
+ const result = await connectOneIntegration(apiKey);
15
+ didChangeAnyIntegration = didChangeAnyIntegration || result.status !== "unchanged";
16
+ console.log("");
17
+ continueLoop = await confirm({ message: "Connect another integration?", default: false });
18
+ }
19
+ if (didChangeAnyIntegration) {
20
+ await generate();
21
+ }
22
+ }
23
+ export async function listAndPromptIntegrations() {
24
+ const apiKey = readApiKey();
25
+ if (!apiKey)
26
+ return;
27
+ let integrations;
28
+ try {
29
+ integrations = await fetchIntegrations(apiKey);
30
+ }
31
+ catch {
32
+ console.error(chalk.red("Failed to fetch integrations"));
12
33
  return;
13
34
  }
14
- console.log(chalk.yellow(" Could not open browser automatically."));
15
- console.log(` Open manually: ${chalk.cyan(INTEGRATIONS_URL)}`);
35
+ const active = integrations.filter(i => i.isActive && i.integrationType !== IntegrationType.TERSE && i.integrationType !== IntegrationType.CRON_JOB);
36
+ if (active.length > 0) {
37
+ console.log("\n Connected integrations:\n");
38
+ for (const i of active) {
39
+ const meta = INTEGRATION_METADATA[i.integrationType];
40
+ console.log(` ${chalk.green("✓")} ${meta?.name || i.integrationType}`);
41
+ }
42
+ console.log("");
43
+ const addMore = await confirm({ message: "Connect another integration?", default: false });
44
+ if (addMore)
45
+ await integrate();
46
+ }
47
+ else {
48
+ console.log(chalk.dim("\n No integrated tools yet.\n"));
49
+ await integrate();
50
+ }
51
+ }
52
+ async function connectOneIntegration(apiKey) {
53
+ const spinner = ora("Fetching integrations").start();
54
+ let integrations;
55
+ try {
56
+ integrations = await fetchIntegrations(apiKey);
57
+ spinner.stop();
58
+ }
59
+ catch (err) {
60
+ spinner.fail("Failed to fetch integrations");
61
+ console.error(chalk.red(` ${err.message}`));
62
+ process.exit(1);
63
+ }
64
+ // Filter out system integrations
65
+ const userFacing = integrations.filter(i => i.integrationType !== IntegrationType.TERSE && i.integrationType !== IntegrationType.CRON_JOB);
66
+ if (userFacing.length === 0) {
67
+ console.log(chalk.yellow("\n No integrations available.\n"));
68
+ return { status: "unchanged" };
69
+ }
70
+ const selected = await select({
71
+ message: "Select an integration to connect",
72
+ choices: userFacing.map(i => {
73
+ const meta = INTEGRATION_METADATA[i.integrationType];
74
+ const name = meta?.name || i.integrationType;
75
+ const status = i.isActive ? chalk.green(" ✓ connected") : chalk.dim(" not connected");
76
+ return {
77
+ name: `${name}${status}`,
78
+ value: i.integrationType,
79
+ description: meta?.description
80
+ };
81
+ })
82
+ });
83
+ const selectedIntegration = userFacing.find(i => i.integrationType === selected);
84
+ // Fetch fields for the selected integration
85
+ const fieldsSpinner = ora("Loading integration details").start();
86
+ let fieldsResponse;
87
+ try {
88
+ fieldsResponse = await fetchIntegrationFields(apiKey, selected);
89
+ fieldsSpinner.stop();
90
+ }
91
+ catch (err) {
92
+ fieldsSpinner.fail("Failed to load integration details");
93
+ console.error(chalk.red(` ${err.message}`));
94
+ process.exit(1);
95
+ }
96
+ if (fieldsResponse.installationType === "form") {
97
+ const didUpdate = await handleFormIntegration(apiKey, selected, fieldsResponse.fields);
98
+ return {
99
+ status: didUpdate ? (selectedIntegration?.isActive ? "modified" : "added") : "unchanged",
100
+ integrationType: selected
101
+ };
102
+ }
103
+ else if (fieldsResponse.installationType === "oauth") {
104
+ const didUpdate = await handleOAuthIntegration(apiKey, selected, fieldsResponse.fields);
105
+ return {
106
+ status: didUpdate ? (selectedIntegration?.isActive ? "modified" : "added") : "unchanged",
107
+ integrationType: selected
108
+ };
109
+ }
110
+ else {
111
+ console.log(chalk.yellow(`\n Integration '${selected}' has an unsupported installation type.\n`));
112
+ return {
113
+ status: "unchanged",
114
+ integrationType: selected
115
+ };
116
+ }
117
+ }
118
+ // ─── Form-based integrations (Datadog, PostHog, Snowflake, etc.) ─────────────
119
+ async function handleFormIntegration(apiKey, integrationType, fields) {
120
+ console.log("");
121
+ const formValues = {};
122
+ for (const field of fields) {
123
+ const hint = field.hint ? chalk.dim(` (${field.hint})`) : "";
124
+ if (field.type === "password") {
125
+ formValues[field.name] = await password({
126
+ message: `${field.label}${hint}`,
127
+ validate: field.required ? v => (v.length > 0 ? true : `${field.label} is required`) : undefined
128
+ });
129
+ }
130
+ else {
131
+ formValues[field.name] = await input({
132
+ message: `${field.label}${hint}`,
133
+ default: field.placeholder,
134
+ validate: field.required ? v => (v.length > 0 ? true : `${field.label} is required`) : undefined
135
+ });
136
+ }
137
+ }
138
+ const spinner = ora("Connecting integration").start();
139
+ try {
140
+ const result = await submitIntegrationForm(apiKey, integrationType, formValues);
141
+ if (result.success) {
142
+ spinner.succeed(chalk.green("Integration connected successfully"));
143
+ return true;
144
+ }
145
+ else {
146
+ spinner.fail(`Failed to connect: ${result.error || "Unknown error"}`);
147
+ return false;
148
+ }
149
+ }
150
+ catch (err) {
151
+ spinner.fail("Failed to connect integration");
152
+ console.error(chalk.red(` ${err.message}`));
153
+ return false;
154
+ }
155
+ }
156
+ // ─── OAuth-based integrations (Slack, GitHub, Gmail, etc.) ───────────────────
157
+ async function handleOAuthIntegration(apiKey, integrationType, configFields) {
158
+ // Prompt for configuration fields if any (e.g. Slack's bot vs user choice)
159
+ let options;
160
+ if (configFields.length > 0) {
161
+ console.log("");
162
+ options = {};
163
+ for (const field of configFields) {
164
+ const value = await select({
165
+ message: field.label,
166
+ choices: field.options.map(o => ({ name: o.label, value: o.value }))
167
+ });
168
+ options[field.name] = value;
169
+ }
170
+ }
171
+ const spinner = ora("Getting authorization URL").start();
172
+ let installationDetails;
173
+ try {
174
+ installationDetails = await fetchInstallationUrl(apiKey, integrationType, options);
175
+ spinner.stop();
176
+ }
177
+ catch (err) {
178
+ spinner.fail("Failed to get authorization URL");
179
+ console.error(chalk.red(` ${err.message}`));
180
+ return false;
181
+ }
182
+ console.log(`\n ${chalk.bold("Complete authorization in your browser:")}\n`);
183
+ console.log(` ${chalk.cyan(installationDetails.oauthUrl)}\n`);
184
+ openInBrowser(installationDetails.oauthUrl);
185
+ const pollSpinner = ora("Waiting for authorization to complete").start();
186
+ const connected = await pollForConnection(apiKey, integrationType);
187
+ if (connected) {
188
+ pollSpinner.succeed(chalk.green("Integration connected successfully"));
189
+ return true;
190
+ }
191
+ else {
192
+ pollSpinner.fail("Authorization timed out — please try again");
193
+ return false;
194
+ }
16
195
  }
196
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
17
197
  function openInBrowser(url) {
18
198
  try {
19
199
  if (process.platform === "darwin") {
@@ -1 +1 @@
1
- {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,MAAM,gBAAgB,GAAG,GAAG,YAAY,mBAAmB,CAAA;AAE3D,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAA;IAC9C,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC7D,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAC9B,IAAI,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;YACjE,OAAO,IAAI,CAAA;QACf,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;YACnF,OAAO,IAAI,CAAA;QACf,CAAC;QACD,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QACrE,OAAO,IAAI,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  export type NonInteractiveOpts = {
2
- yes?: boolean;
3
2
  nonInteractive?: boolean;
4
3
  };
5
4
  /**
6
5
  * True when the CLI should avoid any interactive prompt. Honors the explicit
7
6
  * flag first, falls back to TTY detection so subprocess / piped invocations
8
- * behave non-interactively without the caller needing to pass `--yes`.
7
+ * behave non-interactively without the caller needing to pass `--non-interactive`.
9
8
  */
10
9
  export declare function isNonInteractive(opts?: NonInteractiveOpts): boolean;
10
+ /**
11
+ * Supports parsing a series of key=value flags from the CLI.
12
+ */
11
13
  export declare function parseKeyValueFlags(values: string[] | undefined): Record<string, string>;
12
14
  /**
13
15
  * Read a JSON object from stdin and return it as a string map. Used by
@@ -1 +1 @@
1
- {"version":3,"file":"nonInteractive.d.ts","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAGnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUvF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B3E"}
1
+ {"version":3,"file":"nonInteractive.d.ts","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUvF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B3E"}
@@ -2,13 +2,16 @@ import { CliError } from "./cliError.js";
2
2
  /**
3
3
  * True when the CLI should avoid any interactive prompt. Honors the explicit
4
4
  * flag first, falls back to TTY detection so subprocess / piped invocations
5
- * behave non-interactively without the caller needing to pass `--yes`.
5
+ * behave non-interactively without the caller needing to pass `--non-interactive`.
6
6
  */
7
7
  export function isNonInteractive(opts) {
8
- if (opts?.yes || opts?.nonInteractive)
8
+ if (opts?.nonInteractive)
9
9
  return true;
10
10
  return !process.stdin.isTTY || !process.stdout.isTTY;
11
11
  }
12
+ /**
13
+ * Supports parsing a series of key=value flags from the CLI.
14
+ */
12
15
  export function parseKeyValueFlags(values) {
13
16
  const out = {};
14
17
  for (const raw of values ?? []) {
@@ -1 +1 @@
1
- {"version":3,"file":"nonInteractive.js","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAOxC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACtD,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,cAAc;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAC3D,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,0BAA0B,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE;YAC1E,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC3D,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAA;IAC5H,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;QAC/E,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"nonInteractive.js","sourceRoot":"","sources":["../src/nonInteractive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACtD,IAAI,IAAI,EAAE,cAAc;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAC3D,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,0BAA0B,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE;YAC1E,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC3D,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAA;IAC5H,CAAC;IAED,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;QAC/E,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC"}
package/dist/perf.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ type PerfAttributes = Record<string, unknown>;
2
+ export declare function enableCliPerfLogging(): void;
3
+ export declare function startCliPerfStep(step: string, attributes?: PerfAttributes): {
4
+ complete: (extra?: PerfAttributes) => void;
5
+ fail: (error: unknown, extra?: PerfAttributes) => void;
6
+ };
7
+ export declare function withCliPerfStep<T>(step: string, attributes: PerfAttributes, fn: () => Promise<T>): Promise<T>;
8
+ export {};
9
+ //# sourceMappingURL=perf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../src/perf.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAiC7C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,cAAmB,GAAG;IAC7E,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;IAC1C,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;CACzD,CAqBA;AAED,wBAAsB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAWnH"}
package/dist/perf.js ADDED
@@ -0,0 +1,59 @@
1
+ import chalk from "chalk";
2
+ function isPerfLoggingEnabled() {
3
+ const value = process.env.TERSE_PERF_LOGS;
4
+ if (value === undefined) {
5
+ return false;
6
+ }
7
+ return !["0", "false", "off", "no"].includes(value.toLowerCase());
8
+ }
9
+ function serializeAttributes(attributes) {
10
+ return JSON.stringify(Object.fromEntries(Object.entries(attributes).filter(([, value]) => value !== undefined)), (_key, value) => {
11
+ if (value instanceof Error) {
12
+ return { message: value.message, name: value.name };
13
+ }
14
+ return value;
15
+ });
16
+ }
17
+ function logPerf(step, phase, attributes = {}) {
18
+ if (!isPerfLoggingEnabled()) {
19
+ return;
20
+ }
21
+ console.log(chalk.dim(`[terse:perf] ${serializeAttributes({ step, phase, ...attributes })}`));
22
+ }
23
+ export function enableCliPerfLogging() {
24
+ process.env.TERSE_PERF_LOGS ??= "1";
25
+ }
26
+ export function startCliPerfStep(step, attributes = {}) {
27
+ const start = performance.now();
28
+ logPerf(step, "started", attributes);
29
+ return {
30
+ complete(extra = {}) {
31
+ logPerf(step, "completed", {
32
+ ...attributes,
33
+ ...extra,
34
+ duration_ms: Math.round(performance.now() - start)
35
+ });
36
+ },
37
+ fail(error, extra = {}) {
38
+ logPerf(step, "failed", {
39
+ ...attributes,
40
+ ...extra,
41
+ duration_ms: Math.round(performance.now() - start),
42
+ error: error instanceof Error ? error.message : String(error)
43
+ });
44
+ }
45
+ };
46
+ }
47
+ export async function withCliPerfStep(step, attributes, fn) {
48
+ const timer = startCliPerfStep(step, attributes);
49
+ try {
50
+ const result = await fn();
51
+ timer.complete();
52
+ return result;
53
+ }
54
+ catch (error) {
55
+ timer.fail(error);
56
+ throw error;
57
+ }
58
+ }
59
+ //# sourceMappingURL=perf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf.js","sourceRoot":"","sources":["../src/perf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codegen.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.test.d.ts","sourceRoot":"","sources":["../../src/providers/codegen.test.ts"],"names":[],"mappings":""}