terse-cli 0.1.47 → 0.1.49

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 (73) hide show
  1. package/dist/commands/generate.d.ts.map +1 -1
  2. package/dist/commands/generate.js +26 -3
  3. package/dist/commands/generate.js.map +1 -1
  4. package/dist/jsonOutput.d.ts +19 -0
  5. package/dist/jsonOutput.d.ts.map +1 -0
  6. package/dist/jsonOutput.js +25 -0
  7. package/dist/jsonOutput.js.map +1 -0
  8. package/dist/nonInteractive.d.ts +2 -4
  9. package/dist/nonInteractive.d.ts.map +1 -1
  10. package/dist/nonInteractive.js +2 -5
  11. package/dist/nonInteractive.js.map +1 -1
  12. package/dist/providers/codegenTypes.d.ts +13 -0
  13. package/dist/providers/codegenTypes.d.ts.map +1 -1
  14. package/dist/providers/python/PythonProvider.js +0 -1
  15. package/dist/providers/python/PythonProvider.js.map +1 -1
  16. package/dist/providers/typescript/prepareCodegenData.d.ts +6 -0
  17. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  18. package/dist/providers/typescript/prepareCodegenData.js +36 -2
  19. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  20. package/dist/replay.d.ts +3 -0
  21. package/dist/replay.d.ts.map +1 -0
  22. package/dist/replay.js +20 -0
  23. package/dist/replay.js.map +1 -0
  24. package/dist/run.d.ts.map +1 -1
  25. package/dist/run.js +12 -36
  26. package/dist/run.js.map +1 -1
  27. package/dist/sampleEventId.d.ts +4 -0
  28. package/dist/sampleEventId.d.ts.map +1 -1
  29. package/dist/sampleEventId.js +4 -0
  30. package/dist/sampleEventId.js.map +1 -1
  31. package/dist/shared/ToolDisplayUtils.js +1 -1
  32. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  33. package/dist/urls.d.ts +3 -0
  34. package/dist/urls.d.ts.map +1 -0
  35. package/dist/urls.js +27 -0
  36. package/dist/urls.js.map +1 -0
  37. package/package.json +3 -3
  38. package/templates/typescript/codegen/generated.hbs +1 -0
  39. package/templates/typescript/codegen/partials/hey-reach-section.hbs +3 -0
  40. package/templates/typescript/codegen/partials/slack-section.hbs +2 -0
  41. package/templates/typescript/codegen/partials/triggers-section.hbs +52 -0
  42. package/dist/commands/deployTheme.d.ts +0 -28
  43. package/dist/commands/deployTheme.d.ts.map +0 -1
  44. package/dist/commands/deployTheme.js +0 -68
  45. package/dist/commands/deployTheme.js.map +0 -1
  46. package/dist/commands/dev.d.ts +0 -3
  47. package/dist/commands/dev.d.ts.map +0 -1
  48. package/dist/commands/dev.js +0 -47
  49. package/dist/commands/dev.js.map +0 -1
  50. package/dist/commands/serve.d.ts +0 -1
  51. package/dist/commands/serve.d.ts.map +0 -1
  52. package/dist/commands/serve.js +0 -2
  53. package/dist/commands/serve.js.map +0 -1
  54. package/dist/commands/terseCliTheme.d.ts +0 -28
  55. package/dist/commands/terseCliTheme.d.ts.map +0 -1
  56. package/dist/commands/terseCliTheme.js +0 -68
  57. package/dist/commands/terseCliTheme.js.map +0 -1
  58. package/dist/perf.d.ts +0 -9
  59. package/dist/perf.d.ts.map +0 -1
  60. package/dist/perf.js +0 -59
  61. package/dist/perf.js.map +0 -1
  62. package/dist/providers/codegen.test.d.ts +0 -2
  63. package/dist/providers/codegen.test.d.ts.map +0 -1
  64. package/dist/providers/codegen.test.js +0 -45
  65. package/dist/providers/codegen.test.js.map +0 -1
  66. package/dist/providers/python/PythonProvider.test.d.ts +0 -2
  67. package/dist/providers/python/PythonProvider.test.d.ts.map +0 -1
  68. package/dist/providers/python/PythonProvider.test.js +0 -169
  69. package/dist/providers/python/PythonProvider.test.js.map +0 -1
  70. package/dist/providers/typescript/prepareCodegenData.test.d.ts +0 -2
  71. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +0 -1
  72. package/dist/providers/typescript/prepareCodegenData.test.js +0 -54
  73. package/dist/providers/typescript/prepareCodegenData.test.js.map +0 -1
@@ -1,169 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import fs from "node:fs";
3
- import os from "node:os";
4
- import path from "node:path";
5
- import { afterEach, beforeEach, describe, it, mock } from "node:test";
6
- import { PythonProvider } from "./PythonProvider.js";
7
- const JOB_REGISTRY_MARKER = "__TERSE_JOB_REGISTRY__=";
8
- const CREATED_DIRS = [];
9
- class ExitSignal extends Error {
10
- code;
11
- constructor(code) {
12
- super(`process.exit(${code ?? 0})`);
13
- this.code = code;
14
- }
15
- }
16
- class TestPythonProvider extends PythonProvider {
17
- execStdout = "";
18
- capturedScripts = [];
19
- execCalls = [];
20
- async execUvCommand(args, opts) {
21
- this.execCalls.push({ args, cwd: opts.cwd, env: opts.env });
22
- return { stdout: this.execStdout, stderr: "" };
23
- }
24
- async withTempPythonScript(source, fn) {
25
- this.capturedScripts.push(source);
26
- return fn("/tmp/terse-python-provider-test.py");
27
- }
28
- async ensureUvAvailable(_cwd) { }
29
- }
30
- describe("PythonProvider entry file resolution", () => {
31
- const originalCwd = process.cwd();
32
- beforeEach(() => {
33
- mock.restoreAll();
34
- });
35
- afterEach(() => {
36
- process.chdir(originalCwd);
37
- mock.restoreAll();
38
- while (CREATED_DIRS.length > 0) {
39
- const dir = CREATED_DIRS.pop();
40
- if (dir)
41
- fs.rmSync(dir, { recursive: true, force: true });
42
- }
43
- });
44
- it("loads the canonical default entry file from src/main.py", async () => {
45
- const dir = createPythonProject({
46
- "src/main.py": "from terse_sdk import Terse\napp = Terse()\n"
47
- });
48
- process.chdir(dir);
49
- const provider = new TestPythonProvider();
50
- provider.execStdout = buildRegistryPayload("default-job");
51
- const registry = await provider.loadJobRegistry();
52
- assert.deepEqual([...registry.keys()], ["default-job"]);
53
- assert.match(provider.capturedScripts[0], /ENTRY_FILE = "src\/main\.py"/);
54
- assert.deepEqual(provider.execCalls[0]?.args, ["run", "python", "/tmp/terse-python-provider-test.py"]);
55
- assert.equal(fs.realpathSync(provider.execCalls[0]?.cwd ?? ""), fs.realpathSync(dir));
56
- assert.match(provider.execCalls[0]?.env?.UV_CACHE_DIR ?? "", /terse-uv-cache$/);
57
- });
58
- it("prints guidance when the default entry file is missing", async () => {
59
- const dir = createPythonProject({
60
- "src/server.py": "from terse_sdk import Terse\napp = Terse()\n"
61
- });
62
- process.chdir(dir);
63
- const provider = new TestPythonProvider();
64
- const errors = [];
65
- mock.method(console, "error", (...args) => {
66
- errors.push(args.map(String).join(" "));
67
- });
68
- mock.method(process, "exit", (code) => {
69
- throw new ExitSignal(code);
70
- });
71
- await assert.rejects(provider.loadJobRegistry(), (error) => error instanceof ExitSignal && error.code === 1);
72
- const output = stripAnsi(errors.join("\n"));
73
- assert.match(output, /default Python Terse entry file at src\/main\.py/);
74
- assert.match(output, /register at least one job with @app\.job/);
75
- assert.match(output, /terse test --entry-file src\/server\.py/);
76
- assert.match(output, /terse run my-job --entry-file src\/server\.py --event-file \.\/event\.json/);
77
- assert.match(output, /terse deploy --entry-file src\/server\.py/);
78
- assert.equal(provider.execCalls.length, 0);
79
- });
80
- it("loads a non-canonical entry file when --entry-file is provided", async () => {
81
- const dir = createPythonProject({
82
- "src/server.py": "from terse_sdk import Terse\napp = Terse()\n"
83
- });
84
- process.chdir(dir);
85
- const provider = new TestPythonProvider();
86
- provider.execStdout = buildRegistryPayload("self-hosted-job");
87
- const registry = await provider.loadJobRegistry("src/server.py");
88
- assert.deepEqual([...registry.keys()], ["self-hosted-job"]);
89
- assert.match(provider.capturedScripts[0], /ENTRY_FILE = "src\/server\.py"/);
90
- });
91
- });
92
- describe("PythonProvider GitHub codegen parity", () => {
93
- it("renders GitHub.skill() with repositoryIds via PythonProvider.renderGeneratedCode()", () => {
94
- const provider = new PythonProvider();
95
- const code = provider.renderGeneratedCode(buildCodegenInput({
96
- github: [
97
- {
98
- integration: {
99
- id: "github-integration-id",
100
- installation_id: 123,
101
- account_name: "TerseAI"
102
- },
103
- repositories: [
104
- {
105
- id: 1076128380,
106
- name: "Terse",
107
- owner: "TerseAI",
108
- fullName: "TerseAI/Terse"
109
- }
110
- ]
111
- }
112
- ]
113
- }));
114
- assert.match(code, /class GitHub:/);
115
- assert.match(code, /def skill\(\*, repos: Sequence\[GitHubRepo\]\) -> SkillConfig\[str\]:/);
116
- assert.match(code, /integration_id='github-integration-id'/);
117
- assert.match(code, /config_type='github'/);
118
- assert.match(code, /repositoryIds=\[repo\.repository_id for repo in repos\]/);
119
- });
120
- it("does not emit GitHub helpers when no GitHub integration is present", () => {
121
- const provider = new PythonProvider();
122
- const code = provider.renderGeneratedCode(buildCodegenInput());
123
- assert.doesNotMatch(code, /# === GitHub ===/);
124
- assert.doesNotMatch(code, /def skill\(\*, repos: Sequence\[GitHubRepo\]\)/);
125
- });
126
- });
127
- function createPythonProject(files) {
128
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), "terse-python-provider-"));
129
- CREATED_DIRS.push(dir);
130
- fs.writeFileSync(path.join(dir, "pyproject.toml"), ["[project]", 'name = "provider-test"', 'version = "0.0.1"', 'requires-python = ">=3.11"', "dependencies = []", ""].join("\n"), "utf-8");
131
- for (const [relativePath, contents] of Object.entries(files)) {
132
- const filePath = path.join(dir, relativePath);
133
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
134
- fs.writeFileSync(filePath, contents, "utf-8");
135
- }
136
- return dir;
137
- }
138
- function buildRegistryPayload(jobName) {
139
- return `${JOB_REGISTRY_MARKER}${JSON.stringify({
140
- [jobName]: {
141
- name: jobName,
142
- triggers: [],
143
- skills: [],
144
- toolApprovals: [],
145
- hasFilter: false
146
- }
147
- })}`;
148
- }
149
- function stripAnsi(value) {
150
- return value.replace(/\u001B\[[0-9;]*m/g, "");
151
- }
152
- function buildCodegenInput(overrides = {}) {
153
- return {
154
- github: [],
155
- slack: [],
156
- gmail: [],
157
- linear: [],
158
- notion: [],
159
- posthog: [],
160
- datadog: [],
161
- launchdarkly: [],
162
- workos: [],
163
- attio: [],
164
- snowflake: [],
165
- tools: [],
166
- ...overrides
167
- };
168
- }
169
- //# sourceMappingURL=PythonProvider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PythonProvider.test.js","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=prepareCodegenData.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareCodegenData.test.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/prepareCodegenData.test.ts"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import test from "node:test";
3
- import { jsonSchemaToTs } from "./prepareCodegenData.js";
4
- test("required nullable properties render as optional while preserving null", () => {
5
- const schema = {
6
- type: "object",
7
- properties: {
8
- thread_ts: {
9
- anyOf: [{ type: "string" }, { type: "null" }],
10
- },
11
- blocks: {
12
- anyOf: [{ type: "string" }, { type: "null" }],
13
- },
14
- message: {
15
- type: "string",
16
- },
17
- },
18
- required: ["thread_ts", "blocks", "message"],
19
- };
20
- assert.equal(jsonSchemaToTs(schema, 0), `{
21
- thread_ts?: string | null
22
- blocks?: string | null
23
- message: string
24
- }`);
25
- });
26
- test("optional nullable properties stay optional", () => {
27
- const schema = {
28
- type: "object",
29
- properties: {
30
- cursor: {
31
- anyOf: [{ type: "string" }, { type: "null" }],
32
- },
33
- },
34
- required: [],
35
- };
36
- assert.equal(jsonSchemaToTs(schema, 0), `{
37
- cursor?: string | null
38
- }`);
39
- });
40
- test("required non-nullable properties stay required", () => {
41
- const schema = {
42
- type: "object",
43
- properties: {
44
- channelId: {
45
- type: "string",
46
- },
47
- },
48
- required: ["channelId"],
49
- };
50
- assert.equal(jsonSchemaToTs(schema, 0), `{
51
- channelId: string
52
- }`);
53
- });
54
- //# sourceMappingURL=prepareCodegenData.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareCodegenData.test.js","sourceRoot":"","sources":["../../../src/providers/typescript/prepareCodegenData.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,SAAS,EAAE;gBACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC/C,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;;;EAIN,CACG,CAAA;AACL,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACpD,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;SACJ;QACD,QAAQ,EAAE,EAAE;KACf,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;EAEN,CACG,CAAA;AACL,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,SAAS,EAAE;gBACP,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KAC1B,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;EAEN,CACG,CAAA;AACL,CAAC,CAAC,CAAA"}