terse-cli 0.1.27 → 0.1.29

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 (59) hide show
  1. package/dist/commands/integrate.js +1 -1
  2. package/dist/commands/integrate.js.map +1 -1
  3. package/dist/commands/run.d.ts.map +1 -1
  4. package/dist/commands/run.js +25 -20
  5. package/dist/commands/run.js.map +1 -1
  6. package/dist/commands/serve.d.ts +1 -0
  7. package/dist/commands/serve.d.ts.map +1 -0
  8. package/dist/commands/serve.js +2 -0
  9. package/dist/commands/serve.js.map +1 -0
  10. package/dist/commands/test.d.ts.map +1 -1
  11. package/dist/commands/test.js +1 -0
  12. package/dist/commands/test.js.map +1 -1
  13. package/dist/deploy.d.ts.map +1 -1
  14. package/dist/deploy.js +3 -1
  15. package/dist/deploy.js.map +1 -1
  16. package/dist/perf.d.ts +9 -0
  17. package/dist/perf.d.ts.map +1 -0
  18. package/dist/perf.js +59 -0
  19. package/dist/perf.js.map +1 -0
  20. package/dist/projectConfig.d.ts +8 -0
  21. package/dist/projectConfig.d.ts.map +1 -0
  22. package/dist/projectConfig.js +43 -0
  23. package/dist/projectConfig.js.map +1 -0
  24. package/dist/providers/codegen.test.d.ts +2 -0
  25. package/dist/providers/codegen.test.d.ts.map +1 -0
  26. package/dist/providers/codegen.test.js +45 -0
  27. package/dist/providers/codegen.test.js.map +1 -0
  28. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  29. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  30. package/dist/providers/python/PythonProvider.test.js +169 -0
  31. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  32. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  33. package/dist/providers/typescript/prepareCodegenData.js +13 -1
  34. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  35. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  36. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  37. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  38. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  39. package/dist/run.d.ts.map +1 -1
  40. package/dist/run.js +25 -9
  41. package/dist/run.js.map +1 -1
  42. package/dist/shared/ToolDisplayUtils.js +1 -1
  43. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  44. package/dist/test.js +1 -1
  45. package/dist/test.js.map +1 -1
  46. package/package.json +3 -3
  47. package/templates/typescript/codegen/partials/system-section.hbs +13 -2
  48. package/dist/jsonOutput.d.ts +0 -19
  49. package/dist/jsonOutput.d.ts.map +0 -1
  50. package/dist/jsonOutput.js +0 -25
  51. package/dist/jsonOutput.js.map +0 -1
  52. package/dist/replay.d.ts +0 -3
  53. package/dist/replay.d.ts.map +0 -1
  54. package/dist/replay.js +0 -20
  55. package/dist/replay.js.map +0 -1
  56. package/dist/urls.d.ts +0 -3
  57. package/dist/urls.d.ts.map +0 -1
  58. package/dist/urls.js +0 -27
  59. package/dist/urls.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  export const Schedule = {
4
4
  /** Use in `triggers[]` — run on a cron schedule */
5
5
  cron(opts: { expression: string }): TypedTrigger<CronTrigger> {
6
- return new TimeTriggerConfig(opts.expression)
6
+ return new TimeTriggerConfig(opts.expression)
7
7
  },
8
8
  }
9
9
 
@@ -16,6 +16,18 @@ export const Webhook = {
16
16
  },
17
17
  }
18
18
 
19
+ {{sectionHeader "WebMonitor"}}
20
+
21
+ export const WebMonitor = {
22
+ onEvent<const TSchema>(opts: {
23
+ query: string
24
+ frequency: { number: number; unit: FrequencyUnit }
25
+ outputSchema?: TSchema
26
+ }): TypedTrigger<WebMonitorTrigger<InferStructuredOutput<TSchema>>> {
27
+ return new WebMonitorConfig(opts.query, opts.frequency, opts.outputSchema)
28
+ },
29
+ }
30
+
19
31
  {{sectionHeader "Terse"}}
20
32
 
21
33
  export const Terse = {
@@ -24,4 +36,3 @@ export const Terse = {
24
36
  return new TerseConfig() as TypedSkill<{{{skillToolType}}}>
25
37
  },
26
38
  }
27
-
@@ -1,19 +0,0 @@
1
- import type { Ora } from "ora";
2
- export type JsonErrorPayload = {
3
- error: {
4
- code: string;
5
- message: string;
6
- [key: string]: unknown;
7
- };
8
- };
9
- export declare function emitJsonError(code: string, message: string, details?: Record<string, unknown>): void;
10
- export declare function bailJsonError(code: string, message: string, details?: Record<string, unknown>, exitCode?: number): never;
11
- export type GuardOptions = {
12
- spinner?: Ora | null;
13
- json?: boolean;
14
- failMessage: string;
15
- code: string;
16
- details?: Record<string, unknown>;
17
- };
18
- export declare function withJsonError<T>(fn: () => Promise<T>, opts: GuardOptions): Promise<T>;
19
- //# sourceMappingURL=jsonOutput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonOutput.d.ts","sourceRoot":"","sources":["../src/jsonOutput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK9B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACzB,CAAA;CACJ,CAAA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAGxG;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,KAAK,CAG/H;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAKD,wBAAsB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAU3F"}
@@ -1,25 +0,0 @@
1
- import chalk from "chalk";
2
- export function emitJsonError(code, message, details = {}) {
3
- const payload = { error: { code, message, ...details } };
4
- process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
5
- }
6
- export function bailJsonError(code, message, details = {}, exitCode = 1) {
7
- emitJsonError(code, message, details);
8
- process.exit(exitCode);
9
- }
10
- // Wraps an async call so that failures (a) stop the spinner with a red label in TTY mode,
11
- // (b) emit a structured JSON error and exit 1 in --json mode, and (c) re-throw otherwise so
12
- // the top-level error handler can surface the trace.
13
- export async function withJsonError(fn, opts) {
14
- try {
15
- return await fn();
16
- }
17
- catch (error) {
18
- opts.spinner?.fail(chalk.red(opts.failMessage));
19
- if (opts.json) {
20
- bailJsonError(opts.code, error instanceof Error ? error.message : String(error), opts.details);
21
- }
22
- throw error;
23
- }
24
- }
25
- //# sourceMappingURL=jsonOutput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonOutput.js","sourceRoot":"","sources":["../src/jsonOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmC,EAAE;IAC9F,MAAM,OAAO,GAAqB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAA;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmC,EAAE,EAAE,WAAmB,CAAC;IACpH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC1B,CAAC;AAUD,0FAA0F;AAC1F,4FAA4F;AAC5F,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,EAAoB,EAAE,IAAkB;IAC3E,IAAI,CAAC;QACD,OAAO,MAAM,EAAE,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClG,CAAC;QACD,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC"}
package/dist/replay.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import type { LanguageProvider } from "./providers/LanguageProvider.js";
2
- export declare function replay(runId: string, provider?: LanguageProvider): Promise<void>;
3
- //# sourceMappingURL=replay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG"}
package/dist/replay.js DELETED
@@ -1,20 +0,0 @@
1
- import chalk from "chalk";
2
- import { readApiKeyOrBail, resolveEventFromRunId } from "./api.js";
3
- import { loadJob } from "./loadJob.js";
4
- import { resolveProvider } from "./providers/resolveProvider.js";
5
- export async function replay(runId, provider = resolveProvider()) {
6
- const apiKey = readApiKeyOrBail();
7
- if (!runId) {
8
- console.error(chalk.red("Error: --run-id is required.\n"));
9
- console.error(chalk.dim(" Usage: terse replay --run-id <run-id>"));
10
- process.exit(1);
11
- }
12
- const runHistoryRecord = await resolveEventFromRunId(runId, apiKey);
13
- if (!runHistoryRecord) {
14
- console.error(chalk.red("Error: Could not fetch the trigger event for run ${runId}.\n"));
15
- process.exit(1);
16
- }
17
- const { job } = await loadJob(provider, runHistoryRecord.agentName);
18
- await provider.executeJob(job, null, runHistoryRecord.event, { verbose: true });
19
- }
20
- //# sourceMappingURL=replay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,WAA6B,eAAe,EAAE;IACtF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEnE,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACnF,CAAC"}
package/dist/urls.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare const FRONTEND_URL: string;
2
- export declare const BACKEND_URL: string;
3
- //# sourceMappingURL=urls.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,YAAY,QAAsD,CAAA;AAC/E,eAAO,MAAM,WAAW,QAAoD,CAAA"}
package/dist/urls.js DELETED
@@ -1,27 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- const LOCAL_FRONTEND_URL = "http://localhost:5173";
5
- const LOCAL_BACKEND_URL = "http://localhost:3001";
6
- const PROD_FRONTEND_URL = "https://app.useterse.ai";
7
- const PROD_BACKEND_URL = "https://app.useterse.ai/api";
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
- function isWorkspaceDevelopment() {
11
- const packageRoot = path.resolve(__dirname, "..");
12
- const repoRoot = path.resolve(packageRoot, "..", "..");
13
- return (fs.existsSync(path.join(repoRoot, "packages", "terse-cli")) &&
14
- fs.existsSync(path.join(repoRoot, "backend")));
15
- }
16
- const defaults = isWorkspaceDevelopment()
17
- ? {
18
- frontend: LOCAL_FRONTEND_URL,
19
- backend: LOCAL_BACKEND_URL,
20
- }
21
- : {
22
- frontend: PROD_FRONTEND_URL,
23
- backend: PROD_BACKEND_URL,
24
- };
25
- export const FRONTEND_URL = process.env.TERSE_FRONTEND_URL || defaults.frontend;
26
- export const BACKEND_URL = process.env.TERSE_BACKEND_URL || defaults.backend;
27
- //# sourceMappingURL=urls.js.map
package/dist/urls.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"urls.js","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AAClD,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AACjD,MAAM,iBAAiB,GAAG,yBAAyB,CAAA;AACnD,MAAM,gBAAgB,GAAG,6BAA6B,CAAA;AAEtD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAE1C,SAAS,sBAAsB;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAEtD,OAAO,CACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAChD,CAAA;AACL,CAAC;AAED,MAAM,QAAQ,GAAG,sBAAsB,EAAE;IACrC,CAAC,CAAC;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;KAC7B;IACD,CAAC,CAAC;QACE,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,gBAAgB;KAC5B,CAAA;AAEL,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CAAA;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,QAAQ,CAAC,OAAO,CAAA"}