terse-cli 0.1.15 → 0.1.17
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.
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +13 -0
- package/dist/api.js.map +1 -1
- package/dist/assertProjectRoot.d.ts +3 -2
- package/dist/assertProjectRoot.d.ts.map +1 -1
- package/dist/assertProjectRoot.js +5 -8
- package/dist/assertProjectRoot.js.map +1 -1
- package/dist/deploy.d.ts +2 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +16 -19
- package/dist/deploy.js.map +1 -1
- package/dist/generate.d.ts +2 -1
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +17 -18
- package/dist/generate.js.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +2 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +32 -57
- package/dist/init.js.map +1 -1
- package/dist/integrate.d.ts +1 -0
- package/dist/integrate.d.ts.map +1 -1
- package/dist/integrate.js +194 -10
- package/dist/integrate.js.map +1 -1
- package/dist/integrationApi.d.ts +12 -0
- package/dist/integrationApi.d.ts.map +1 -0
- package/dist/integrationApi.js +31 -0
- package/dist/integrationApi.js.map +1 -0
- package/dist/loadJob.d.ts +4 -3
- package/dist/loadJob.d.ts.map +1 -1
- package/dist/loadJob.js +6 -54
- package/dist/loadJob.js.map +1 -1
- package/dist/providers/LanguageProvider.d.ts +31 -0
- package/dist/providers/LanguageProvider.d.ts.map +1 -0
- package/dist/providers/LanguageProvider.js +2 -0
- package/dist/providers/LanguageProvider.js.map +1 -0
- package/dist/providers/codegenTypes.d.ts +130 -0
- package/dist/providers/codegenTypes.d.ts.map +1 -0
- package/dist/providers/codegenTypes.js +2 -0
- package/dist/providers/codegenTypes.js.map +1 -0
- package/dist/providers/python/PythonProvider.d.ts +33 -0
- package/dist/providers/python/PythonProvider.d.ts.map +1 -0
- package/dist/providers/python/PythonProvider.js +369 -0
- package/dist/providers/python/PythonProvider.js.map +1 -0
- package/dist/providers/python/preparePythonCodegenData.d.ts +73 -0
- package/dist/providers/python/preparePythonCodegenData.d.ts.map +1 -0
- package/dist/providers/python/preparePythonCodegenData.js +338 -0
- package/dist/providers/python/preparePythonCodegenData.js.map +1 -0
- package/dist/providers/python/pythonTemplateEngine.d.ts +3 -0
- package/dist/providers/python/pythonTemplateEngine.d.ts.map +1 -0
- package/dist/providers/python/pythonTemplateEngine.js +30 -0
- package/dist/providers/python/pythonTemplateEngine.js.map +1 -0
- package/dist/providers/resolveProvider.d.ts +8 -0
- package/dist/providers/resolveProvider.d.ts.map +1 -0
- package/dist/providers/resolveProvider.js +47 -0
- package/dist/providers/resolveProvider.js.map +1 -0
- package/dist/providers/shared/sessionStream.d.ts +24 -0
- package/dist/providers/shared/sessionStream.d.ts.map +1 -0
- package/dist/providers/shared/sessionStream.js +159 -0
- package/dist/providers/shared/sessionStream.js.map +1 -0
- package/dist/providers/shared/shellUtils.d.ts +13 -0
- package/dist/providers/shared/shellUtils.d.ts.map +1 -0
- package/dist/providers/shared/shellUtils.js +70 -0
- package/dist/providers/shared/shellUtils.js.map +1 -0
- package/dist/providers/templateUtils.d.ts +7 -0
- package/dist/providers/templateUtils.d.ts.map +1 -0
- package/dist/providers/templateUtils.js +30 -0
- package/dist/providers/templateUtils.js.map +1 -0
- package/dist/providers/typescript/TypeScriptProvider.d.ts +33 -0
- package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -0
- package/dist/providers/typescript/TypeScriptProvider.js +162 -0
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.d.ts +145 -0
- package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.js +834 -0
- package/dist/providers/typescript/prepareCodegenData.js.map +1 -0
- package/dist/providers/typescript/templateEngine.d.ts +3 -0
- package/dist/providers/typescript/templateEngine.d.ts.map +1 -0
- package/dist/providers/typescript/templateEngine.js +37 -0
- package/dist/providers/typescript/templateEngine.js.map +1 -0
- package/dist/run.d.ts +2 -11
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +5 -192
- package/dist/run.js.map +1 -1
- package/dist/shared/ApiRoutes.d.ts +14 -0
- package/dist/shared/ApiRoutes.d.ts.map +1 -1
- package/dist/shared/ApiRoutes.js +11 -1
- package/dist/shared/ApiRoutes.js.map +1 -1
- package/dist/shared/types.d.ts +925 -107
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/test.d.ts +2 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +9 -11
- package/dist/test.js.map +1 -1
- package/package.json +2 -2
- package/templates/python/codegen/generated.hbs +6 -0
- package/templates/python/codegen/partials/attio-list-objects-method.hbs +8 -0
- package/templates/python/codegen/partials/attio-object-types.hbs +23 -0
- package/templates/python/codegen/partials/attio-query-records-method.hbs +45 -0
- package/templates/python/codegen/partials/attio-section.hbs +111 -0
- package/templates/python/codegen/partials/attio-upsert-record-method.hbs +51 -0
- package/templates/python/codegen/partials/deterministic-tools-section.hbs +194 -0
- package/templates/python/codegen/partials/file-header.hbs +32 -0
- package/templates/python/codegen/partials/schedule-section.hbs +9 -0
- package/templates/python/codegen/partials/snowflake-section.hbs +26 -0
- package/templates/python/codegen/partials/tool-name-types.hbs +15 -0
- package/templates/python/init/.python-version.hbs +1 -0
- package/templates/python/init/README.md.hbs +38 -0
- package/templates/python/init/gitignore.hbs +3 -0
- package/templates/python/init/pyproject.toml.hbs +16 -0
- package/templates/python/init/src/main.py.hbs +21 -0
- package/templates/typescript/codegen/generated.hbs +17 -0
- package/templates/typescript/codegen/partials/atlassian-section.hbs +32 -0
- package/templates/typescript/codegen/partials/attio-section.hbs +38 -0
- package/templates/typescript/codegen/partials/datadog-section.hbs +11 -0
- package/templates/typescript/codegen/partials/figma-section.hbs +13 -0
- package/templates/typescript/codegen/partials/github-section.hbs +62 -0
- package/templates/typescript/codegen/partials/gmail-section.hbs +21 -0
- package/templates/typescript/codegen/partials/header.hbs +12 -0
- package/templates/typescript/codegen/partials/launchdarkly-section.hbs +11 -0
- package/templates/typescript/codegen/partials/linear-section.hbs +27 -0
- package/templates/typescript/codegen/partials/notion-section.hbs +15 -0
- package/templates/typescript/codegen/partials/posthog-section.hbs +11 -0
- package/templates/typescript/codegen/partials/resource-class.hbs +9 -0
- package/templates/typescript/codegen/partials/slack-section.hbs +23 -0
- package/templates/typescript/codegen/partials/snowflake-section.hbs +9 -0
- package/templates/typescript/codegen/partials/system-section.hbs +18 -0
- package/templates/typescript/codegen/partials/tools-section.hbs +68 -0
- package/templates/typescript/codegen/partials/workos-section.hbs +53 -0
- package/templates/typescript/init/env.example.hbs +1 -0
- package/templates/{package.json.tmpl → typescript/init/package.json.hbs} +1 -1
- package/templates/{src/index.ts.tmpl → typescript/init/src/index.ts.hbs} +1 -3
- /package/templates/{env.example.tmpl → python/init/env.example.hbs} +0 -0
- /package/templates/{.claude/settings.json.tmpl → typescript/init/.claude/settings.json.hbs} +0 -0
- /package/templates/{gitignore.tmpl → typescript/init/gitignore.hbs} +0 -0
- /package/templates/{tsconfig.json.tmpl → typescript/init/tsconfig.json.hbs} +0 -0
package/dist/integrate.d.ts
CHANGED
package/dist/integrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"AAsBA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB/C;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B/D"}
|
package/dist/integrate.js
CHANGED
|
@@ -1,19 +1,203 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
4
|
+
import ora from "ora";
|
|
5
|
+
import { readApiKey, readApiKeyOrBail } from "./api.js";
|
|
6
|
+
import { fetchIntegrationFields, fetchInstallationUrl, fetchIntegrations, pollForConnection, submitIntegrationForm } from "./integrationApi.js";
|
|
7
|
+
import { INTEGRATION_METADATA, IntegrationType } from "./shared/Integrations.js";
|
|
8
|
+
import { generate } from "./generate.js";
|
|
5
9
|
export async function integrate() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
15
|
-
|
|
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
|
|
100
|
+
? selectedIntegration?.isActive ? "modified" : "added"
|
|
101
|
+
: "unchanged",
|
|
102
|
+
integrationType: selected
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
else if (fieldsResponse.installationType === "oauth") {
|
|
106
|
+
const didUpdate = await handleOAuthIntegration(apiKey, selected, fieldsResponse.fields);
|
|
107
|
+
return {
|
|
108
|
+
status: didUpdate
|
|
109
|
+
? selectedIntegration?.isActive ? "modified" : "added"
|
|
110
|
+
: "unchanged",
|
|
111
|
+
integrationType: selected
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(chalk.yellow(`\n Integration '${selected}' has an unsupported installation type.\n`));
|
|
116
|
+
return {
|
|
117
|
+
status: "unchanged",
|
|
118
|
+
integrationType: selected
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ─── Form-based integrations (Datadog, PostHog, Snowflake, etc.) ─────────────
|
|
123
|
+
async function handleFormIntegration(apiKey, integrationType, fields) {
|
|
124
|
+
console.log("");
|
|
125
|
+
const formValues = {};
|
|
126
|
+
for (const field of fields) {
|
|
127
|
+
const hint = field.hint ? chalk.dim(` (${field.hint})`) : "";
|
|
128
|
+
if (field.type === "password") {
|
|
129
|
+
formValues[field.name] = await password({
|
|
130
|
+
message: `${field.label}${hint}`,
|
|
131
|
+
validate: field.required ? (v) => (v.length > 0 ? true : `${field.label} is required`) : undefined
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
formValues[field.name] = await input({
|
|
136
|
+
message: `${field.label}${hint}`,
|
|
137
|
+
default: field.placeholder,
|
|
138
|
+
validate: field.required ? (v) => (v.length > 0 ? true : `${field.label} is required`) : undefined
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const spinner = ora("Connecting integration").start();
|
|
143
|
+
try {
|
|
144
|
+
const result = await submitIntegrationForm(apiKey, integrationType, formValues);
|
|
145
|
+
if (result.success) {
|
|
146
|
+
spinner.succeed(chalk.green("Integration connected successfully"));
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
spinner.fail(`Failed to connect: ${result.error || "Unknown error"}`);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
spinner.fail("Failed to connect integration");
|
|
156
|
+
console.error(chalk.red(` ${err.message}`));
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// ─── OAuth-based integrations (Slack, GitHub, Gmail, etc.) ───────────────────
|
|
161
|
+
async function handleOAuthIntegration(apiKey, integrationType, configFields) {
|
|
162
|
+
// Prompt for configuration fields if any (e.g. Slack's bot vs user choice)
|
|
163
|
+
let options;
|
|
164
|
+
if (configFields.length > 0) {
|
|
165
|
+
console.log("");
|
|
166
|
+
options = {};
|
|
167
|
+
for (const field of configFields) {
|
|
168
|
+
const value = await select({
|
|
169
|
+
message: field.label,
|
|
170
|
+
choices: field.options.map(o => ({ name: o.label, value: o.value }))
|
|
171
|
+
});
|
|
172
|
+
options[field.name] = value;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const spinner = ora("Getting authorization URL").start();
|
|
176
|
+
let installationDetails;
|
|
177
|
+
try {
|
|
178
|
+
installationDetails = await fetchInstallationUrl(apiKey, integrationType, options);
|
|
179
|
+
spinner.stop();
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
spinner.fail("Failed to get authorization URL");
|
|
183
|
+
console.error(chalk.red(` ${err.message}`));
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
console.log(`\n ${chalk.bold("Complete authorization in your browser:")}\n`);
|
|
187
|
+
console.log(` ${chalk.cyan(installationDetails.oauthUrl)}\n`);
|
|
188
|
+
openInBrowser(installationDetails.oauthUrl);
|
|
189
|
+
const pollSpinner = ora("Waiting for authorization to complete").start();
|
|
190
|
+
const connected = await pollForConnection(apiKey, integrationType);
|
|
191
|
+
if (connected) {
|
|
192
|
+
pollSpinner.succeed(chalk.green("Integration connected successfully"));
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
pollSpinner.fail("Authorization timed out — please try again");
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
16
199
|
}
|
|
200
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
17
201
|
function openInBrowser(url) {
|
|
18
202
|
try {
|
|
19
203
|
if (process.platform === "darwin") {
|
package/dist/integrate.js.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"integrate.js","sourceRoot":"","sources":["../src/integrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IntegrationWithStatus } from "./shared/Integrations.js";
|
|
2
|
+
import { ConfigurationFieldDefinition, FormFieldDefinition, IntegrationFieldsResponse, OAuthInstallationDetails } from "./shared/types.js";
|
|
3
|
+
export type { IntegrationFieldsResponse, FormFieldDefinition, ConfigurationFieldDefinition };
|
|
4
|
+
export declare function fetchIntegrations(apiKey: string): Promise<IntegrationWithStatus[]>;
|
|
5
|
+
export declare function fetchIntegrationFields(apiKey: string, integrationType: string): Promise<IntegrationFieldsResponse>;
|
|
6
|
+
export declare function submitIntegrationForm(apiKey: string, integrationType: string, formValues: Record<string, string>): Promise<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
error?: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function fetchInstallationUrl(apiKey: string, integrationType: string, options?: Record<string, string>): Promise<OAuthInstallationDetails>;
|
|
11
|
+
export declare function pollForConnection(apiKey: string, integrationType: string, timeoutMs?: number, intervalMs?: number): Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=integrationApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationApi.d.ts","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE1I,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,CAAA;AAE5F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAExF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAExH;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOtK;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAMvJ;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,UAAU,SAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAe1I"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { fetchWithAuth } from "./api.js";
|
|
2
|
+
export async function fetchIntegrations(apiKey) {
|
|
3
|
+
return fetchWithAuth("/integrations", apiKey);
|
|
4
|
+
}
|
|
5
|
+
export async function fetchIntegrationFields(apiKey, integrationType) {
|
|
6
|
+
return fetchWithAuth(`/sdk/integrations/${integrationType}/fields`, apiKey);
|
|
7
|
+
}
|
|
8
|
+
export async function submitIntegrationForm(apiKey, integrationType, formValues) {
|
|
9
|
+
return fetchWithAuth(`/sdk/integrations/${integrationType}/form-submit`, apiKey, { formValues }, "POST");
|
|
10
|
+
}
|
|
11
|
+
export async function fetchInstallationUrl(apiKey, integrationType, options) {
|
|
12
|
+
const optionsParam = options ? `?options=${encodeURIComponent(JSON.stringify(options))}` : "";
|
|
13
|
+
return fetchWithAuth(`/integrations/${integrationType}/installation-details${optionsParam}`, apiKey);
|
|
14
|
+
}
|
|
15
|
+
export async function pollForConnection(apiKey, integrationType, timeoutMs = 120_000, intervalMs = 3_000) {
|
|
16
|
+
const deadline = Date.now() + timeoutMs;
|
|
17
|
+
while (Date.now() < deadline) {
|
|
18
|
+
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
19
|
+
try {
|
|
20
|
+
const integrations = await fetchIntegrations(apiKey);
|
|
21
|
+
const match = integrations.find(i => i.integrationType === integrationType);
|
|
22
|
+
if (match?.isActive)
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// ignore transient errors, keep polling
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=integrationApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationApi.js","sourceRoot":"","sources":["../src/integrationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAClD,OAAO,aAAa,CAA0B,eAAe,EAAE,MAAM,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,eAAuB;IAChF,OAAO,aAAa,CAA4B,qBAAqB,eAAe,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,eAAuB,EAAE,UAAkC;IACnH,OAAO,aAAa,CAChB,qBAAqB,eAAe,cAAc,EAClD,MAAM,EACN,EAAE,UAAU,EAAE,EACd,MAAM,CACT,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,eAAuB,EAAE,OAAgC;IAChH,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7F,OAAO,aAAa,CAChB,iBAAiB,eAAe,wBAAwB,YAAY,EAAE,EACtE,MAAM,CACT,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,eAAuB,EAAE,SAAS,GAAG,OAAO,EAAE,UAAU,GAAG,KAAK;IACpH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;IAEvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,CAAA;YAC3E,IAAI,KAAK,EAAE,QAAQ;gBAAE,OAAO,IAAI,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,wCAAwC;QAC5C,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
|
package/dist/loadJob.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { LanguageProvider } from "./providers/LanguageProvider.js";
|
|
2
3
|
/**
|
|
3
4
|
* Imports the user's entry file and returns the full job registry.
|
|
4
|
-
* Each createJob() call
|
|
5
|
+
* Each createJob() call populates this map.
|
|
5
6
|
*/
|
|
6
|
-
export declare function loadJobRegistry(): Promise<Map<string, CreateJobParameters>>;
|
|
7
|
-
export declare function loadJob(jobName?: string): Promise<{
|
|
7
|
+
export declare function loadJobRegistry(provider: LanguageProvider): Promise<Map<string, CreateJobParameters>>;
|
|
8
|
+
export declare function loadJob(provider: LanguageProvider, jobName?: string): Promise<{
|
|
8
9
|
job: CreateJobParameters;
|
|
9
10
|
}>;
|
|
10
11
|
//# sourceMappingURL=loadJob.d.ts.map
|
package/dist/loadJob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadJob.d.ts","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadJob.d.ts","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAG3G;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,mBAAmB,CAAA;CAAE,CAAC,CA0BjH"}
|
package/dist/loadJob.js
CHANGED
|
@@ -1,56 +1,16 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { pathToFileURL } from "node:url";
|
|
3
1
|
import chalk from "chalk";
|
|
4
2
|
import { select } from "@inquirer/prompts";
|
|
5
|
-
import { tsImport } from "tsx/esm/api";
|
|
6
3
|
import { assertProjectRoot } from "./assertProjectRoot.js";
|
|
7
4
|
/**
|
|
8
5
|
* Imports the user's entry file and returns the full job registry.
|
|
9
|
-
* Each createJob() call
|
|
6
|
+
* Each createJob() call populates this map.
|
|
10
7
|
*/
|
|
11
|
-
export async function loadJobRegistry() {
|
|
12
|
-
assertProjectRoot();
|
|
13
|
-
|
|
14
|
-
const entryPath = path.join(cwd, "src", "index.ts");
|
|
15
|
-
// Import the user's entry file via tsx — this triggers createJob() calls which
|
|
16
|
-
// populate the global job registry on globalThis.__terse_jobRegistry.
|
|
17
|
-
const parentURL = pathToFileURL(path.join(cwd, "package.json")).href;
|
|
18
|
-
try {
|
|
19
|
-
await tsImport(entryPath, parentURL);
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
if (isModuleNotFoundError(err)) {
|
|
23
|
-
const pkg = extractMissingPackage(err);
|
|
24
|
-
console.error(chalk.red(`Error: Cannot find package '${pkg}' imported from src/index.ts`));
|
|
25
|
-
if (pkg === "terse-sdk") {
|
|
26
|
-
console.error(chalk.dim("\nMake sure terse-sdk is installed in your project:"));
|
|
27
|
-
console.error(chalk.dim(" npm install terse-sdk"));
|
|
28
|
-
console.error(chalk.dim(" # or, for local SDK development"));
|
|
29
|
-
console.error(chalk.dim(" npm link terse-sdk"));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
console.error(chalk.dim(`\nInstall the missing package: npm install ${pkg}`));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
console.error(chalk.red("Error importing src/index.ts:\n"));
|
|
37
|
-
console.error(err);
|
|
38
|
-
}
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
// Read the registry from globalThis — populated by createJob() during the import above.
|
|
42
|
-
// We use globalThis rather than importing the SDK again because tsx may load separate
|
|
43
|
-
// module instances, which would give us an empty registry.
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
const registry = globalThis.__terse_jobRegistry;
|
|
46
|
-
if (!registry || registry.size === 0) {
|
|
47
|
-
console.error(chalk.red("No jobs found. Make sure your src/index.ts calls client.createJob()."));
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
return registry;
|
|
8
|
+
export async function loadJobRegistry(provider) {
|
|
9
|
+
assertProjectRoot(provider);
|
|
10
|
+
return provider.loadJobRegistry();
|
|
51
11
|
}
|
|
52
|
-
export async function loadJob(jobName) {
|
|
53
|
-
const registry = await loadJobRegistry();
|
|
12
|
+
export async function loadJob(provider, jobName) {
|
|
13
|
+
const registry = await loadJobRegistry(provider);
|
|
54
14
|
// Resolve which job to run
|
|
55
15
|
let resolvedName;
|
|
56
16
|
if (jobName) {
|
|
@@ -75,12 +35,4 @@ export async function loadJob(jobName) {
|
|
|
75
35
|
}
|
|
76
36
|
return { job: registry.get(resolvedName) };
|
|
77
37
|
}
|
|
78
|
-
function isModuleNotFoundError(err) {
|
|
79
|
-
return err instanceof Error && err.code === "ERR_MODULE_NOT_FOUND";
|
|
80
|
-
}
|
|
81
|
-
function extractMissingPackage(err) {
|
|
82
|
-
// Node's error message format: "Cannot find package 'foo' imported from ..."
|
|
83
|
-
const match = err.message.match(/Cannot find package '([^']+)'/);
|
|
84
|
-
return match?.[1] ?? "unknown";
|
|
85
|
-
}
|
|
86
38
|
//# sourceMappingURL=loadJob.js.map
|
package/dist/loadJob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadJob.js","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"loadJob.js","sourceRoot":"","sources":["../src/loadJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAA0B;IAC5D,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,QAAQ,CAAC,eAAe,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAA0B,EAAE,OAAgB;IACtE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;IAEhD,2BAA2B;IAC3B,IAAI,YAAoB,CAAA;IAExB,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,OAAO,cAAc,CAAC,CAAC,CAAA;YACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YAC9B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,YAAY,GAAG,OAAO,CAAA;IAC1B,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAA;IAChD,CAAC;SAAM,CAAC;QACJ,YAAY,GAAG,MAAM,MAAM,CAAS;YAChC,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACrE,CAAC,CAAA;IACN,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,EAAE,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { CodegenInput } from "./codegenTypes.js";
|
|
3
|
+
import type { SerializedEvent } from "../shared/types.js";
|
|
4
|
+
export interface LanguageProvider {
|
|
5
|
+
readonly language: "typescript" | "python";
|
|
6
|
+
readonly displayName: string;
|
|
7
|
+
readonly projectMarkers: {
|
|
8
|
+
requiredFiles: string[];
|
|
9
|
+
description: string;
|
|
10
|
+
};
|
|
11
|
+
readonly entryFile: string;
|
|
12
|
+
readonly generatedCodePath: string;
|
|
13
|
+
readonly deployExclusions: {
|
|
14
|
+
dirs: Set<string>;
|
|
15
|
+
files: Set<string>;
|
|
16
|
+
};
|
|
17
|
+
scaffoldFiles(): Array<{
|
|
18
|
+
template: string;
|
|
19
|
+
output: string;
|
|
20
|
+
}>;
|
|
21
|
+
buildInitTemplateContext(projectName: string): Record<string, unknown>;
|
|
22
|
+
getPostInitSteps(packageManager: string): string[];
|
|
23
|
+
detectPackageManager(): string;
|
|
24
|
+
installDependencies(targetDir: string): Promise<void>;
|
|
25
|
+
renderGeneratedCode(input: CodegenInput): string;
|
|
26
|
+
loadJobRegistry(): Promise<Map<string, CreateJobParameters>>;
|
|
27
|
+
executeJob(job: CreateJobParameters, event: SerializedEvent, opts?: {
|
|
28
|
+
verbose?: boolean;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=LanguageProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LanguageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAAA;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE;QACrB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,gBAAgB,EAAE;QACvB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACjB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KACrB,CAAA;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtE,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAClD,oBAAoB,IAAI,MAAM,CAAA;IAC9B,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAA;IAChD,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAC5D,UAAU,CACN,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageProvider.js","sourceRoot":"","sources":["../../src/providers/LanguageProvider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { GithubIntegration } from "../shared/Integrations.js";
|
|
2
|
+
export interface GitHubRepo {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
owner: string;
|
|
6
|
+
fullName?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GitHubInstanceData {
|
|
9
|
+
integration: GithubIntegration;
|
|
10
|
+
repositories: GitHubRepo[];
|
|
11
|
+
}
|
|
12
|
+
export interface IntegrationInstanceData {
|
|
13
|
+
id: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SlackChannelData {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
}
|
|
20
|
+
export interface LinearTeamData {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
key: string;
|
|
24
|
+
}
|
|
25
|
+
export interface NotionResourceData {
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
type: string;
|
|
29
|
+
}
|
|
30
|
+
export interface JiraProjectData {
|
|
31
|
+
id: string;
|
|
32
|
+
key: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ConfluencePageData {
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
spaceId: string;
|
|
39
|
+
spaceName: string;
|
|
40
|
+
}
|
|
41
|
+
export interface PosthogProjectData {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}
|
|
45
|
+
export interface DatadogIndexData {
|
|
46
|
+
name: string;
|
|
47
|
+
}
|
|
48
|
+
export interface LaunchDarklyProjectData {
|
|
49
|
+
key: string;
|
|
50
|
+
name: string;
|
|
51
|
+
}
|
|
52
|
+
export interface SnowflakeInstanceData {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AttioAttributeData {
|
|
57
|
+
api_slug?: string;
|
|
58
|
+
title?: string;
|
|
59
|
+
type?: string;
|
|
60
|
+
is_required?: boolean;
|
|
61
|
+
is_unique?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface AttioObjectData {
|
|
64
|
+
api_slug: string;
|
|
65
|
+
singular_noun: string;
|
|
66
|
+
plural_noun?: string;
|
|
67
|
+
attributes?: AttioAttributeData[];
|
|
68
|
+
}
|
|
69
|
+
export interface SlackInstanceData extends IntegrationInstanceData {
|
|
70
|
+
channels: SlackChannelData[];
|
|
71
|
+
}
|
|
72
|
+
export interface LinearInstanceData extends IntegrationInstanceData {
|
|
73
|
+
teams: LinearTeamData[];
|
|
74
|
+
}
|
|
75
|
+
export interface NotionInstanceData extends IntegrationInstanceData {
|
|
76
|
+
databases: NotionResourceData[];
|
|
77
|
+
pages: NotionResourceData[];
|
|
78
|
+
}
|
|
79
|
+
export interface AtlassianInstanceData extends IntegrationInstanceData {
|
|
80
|
+
jiraProjects: JiraProjectData[];
|
|
81
|
+
confluencePages: ConfluencePageData[];
|
|
82
|
+
}
|
|
83
|
+
export interface PosthogInstanceData extends IntegrationInstanceData {
|
|
84
|
+
projects: PosthogProjectData[];
|
|
85
|
+
}
|
|
86
|
+
export interface DatadogInstanceData extends IntegrationInstanceData {
|
|
87
|
+
indexes: DatadogIndexData[];
|
|
88
|
+
}
|
|
89
|
+
export interface LaunchDarklyInstanceData extends IntegrationInstanceData {
|
|
90
|
+
projects: LaunchDarklyProjectData[];
|
|
91
|
+
}
|
|
92
|
+
export interface AttioInstanceData extends IntegrationInstanceData {
|
|
93
|
+
objects: AttioObjectData[];
|
|
94
|
+
}
|
|
95
|
+
export interface ToolDefinition {
|
|
96
|
+
name: string;
|
|
97
|
+
displayName: string;
|
|
98
|
+
description: string;
|
|
99
|
+
integration: string;
|
|
100
|
+
isReadOnly: boolean;
|
|
101
|
+
supportsApproval: boolean;
|
|
102
|
+
parameters: JsonSchema;
|
|
103
|
+
}
|
|
104
|
+
export interface JsonSchema {
|
|
105
|
+
type?: string;
|
|
106
|
+
properties?: Record<string, JsonSchema>;
|
|
107
|
+
required?: string[];
|
|
108
|
+
items?: JsonSchema;
|
|
109
|
+
enum?: Array<string | number | boolean>;
|
|
110
|
+
anyOf?: JsonSchema[];
|
|
111
|
+
description?: string;
|
|
112
|
+
[key: string]: unknown;
|
|
113
|
+
}
|
|
114
|
+
export interface CodegenInput {
|
|
115
|
+
github: GitHubInstanceData[];
|
|
116
|
+
slack: SlackInstanceData[];
|
|
117
|
+
gmail: IntegrationInstanceData[];
|
|
118
|
+
figma: IntegrationInstanceData[];
|
|
119
|
+
linear: LinearInstanceData[];
|
|
120
|
+
atlassian: AtlassianInstanceData[];
|
|
121
|
+
notion: NotionInstanceData[];
|
|
122
|
+
posthog: PosthogInstanceData[];
|
|
123
|
+
datadog: DatadogInstanceData[];
|
|
124
|
+
launchdarkly: LaunchDarklyInstanceData[];
|
|
125
|
+
workos: IntegrationInstanceData[];
|
|
126
|
+
attio: AttioInstanceData[];
|
|
127
|
+
snowflake: SnowflakeInstanceData[];
|
|
128
|
+
tools: ToolDefinition[];
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=codegenTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegenTypes.d.ts","sourceRoot":"","sources":["../../src/providers/codegenTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegenTypes.js","sourceRoot":"","sources":["../../src/providers/codegenTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CreateJobParameters } from "terse-sdk";
|
|
2
|
+
import type { LanguageProvider } from "../LanguageProvider.js";
|
|
3
|
+
import type { CodegenInput } from "../codegenTypes.js";
|
|
4
|
+
import type { SerializedEvent } from "../../shared/types.js";
|
|
5
|
+
export declare class PythonProvider implements LanguageProvider {
|
|
6
|
+
readonly language: "python";
|
|
7
|
+
readonly displayName = "Python";
|
|
8
|
+
readonly projectMarkers: {
|
|
9
|
+
requiredFiles: string[];
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
readonly entryFile = "src/main.py";
|
|
13
|
+
readonly generatedCodePath = "src/terse_generated.py";
|
|
14
|
+
readonly deployExclusions: {
|
|
15
|
+
dirs: Set<string>;
|
|
16
|
+
files: Set<string>;
|
|
17
|
+
};
|
|
18
|
+
scaffoldFiles(): Array<{
|
|
19
|
+
template: string;
|
|
20
|
+
output: string;
|
|
21
|
+
}>;
|
|
22
|
+
buildInitTemplateContext(projectName: string): Record<string, unknown>;
|
|
23
|
+
getPostInitSteps(_packageManager: string): string[];
|
|
24
|
+
detectPackageManager(): string;
|
|
25
|
+
installDependencies(targetDir: string): Promise<void>;
|
|
26
|
+
renderGeneratedCode(input: CodegenInput): string;
|
|
27
|
+
loadJobRegistry(): Promise<Map<string, CreateJobParameters>>;
|
|
28
|
+
executeJob(job: CreateJobParameters, event: SerializedEvent, opts?: {
|
|
29
|
+
verbose?: boolean;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare const pythonProvider: PythonProvider;
|
|
33
|
+
//# sourceMappingURL=PythonProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PythonProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/python/PythonProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAA;AA+BjF,qBAAa,cAAe,YAAW,gBAAgB;IACnD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAS;IACrC,QAAQ,CAAC,WAAW,YAAW;IAC/B,QAAQ,CAAC,cAAc;;;MAGtB;IACD,QAAQ,CAAC,SAAS,iBAAgB;IAClC,QAAQ,CAAC,iBAAiB,4BAA2B;IACrD,QAAQ,CAAC,gBAAgB;;;MAGxB;IAED,aAAa,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5D,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOtE,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAOnD,oBAAoB,IAAI,MAAM;IAIxB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;IAM1C,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAkC5D,UAAU,CACZ,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;CAuCnB;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
|