terse-cli 0.1.16 → 0.1.18
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/README.md +4 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -9
- 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 +6 -9
- package/dist/assertProjectRoot.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +4 -4
- package/dist/auth.js.map +1 -1
- package/dist/deploy.d.ts +2 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +19 -23
- 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 +59 -33
- package/dist/generate.js.map +1 -1
- package/dist/index.js +12 -12
- 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 +30 -58
- package/dist/init.js.map +1 -1
- package/dist/integrate.d.ts.map +1 -1
- package/dist/integrate.js +8 -12
- package/dist/integrate.js.map +1 -1
- package/dist/integrationApi.d.ts +2 -2
- package/dist/integrationApi.d.ts.map +1 -1
- package/dist/integrationApi.js.map +1 -1
- package/dist/loadJob.d.ts +4 -3
- package/dist/loadJob.d.ts.map +1 -1
- package/dist/loadJob.js +8 -56
- 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 +119 -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 +362 -0
- package/dist/providers/python/PythonProvider.js.map +1 -0
- package/dist/providers/python/preparePythonCodegenData.d.ts +89 -0
- package/dist/providers/python/preparePythonCodegenData.d.ts.map +1 -0
- package/dist/providers/python/preparePythonCodegenData.js +359 -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 +157 -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 +69 -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 +160 -0
- package/dist/providers/typescript/TypeScriptProvider.js.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.d.ts +144 -0
- package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.js +751 -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 +7 -194
- package/dist/run.js.map +1 -1
- package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
- package/dist/shared/ToolDisplayUtils.js +13 -1
- package/dist/shared/ToolDisplayUtils.js.map +1 -1
- package/dist/shared/types.d.ts +912 -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 +12 -12
- package/dist/test.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js.map +1 -1
- package/package.json +13 -9
- package/templates/python/codegen/generated.hbs +7 -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 +110 -0
- package/templates/python/codegen/partials/attio-upsert-record-method.hbs +51 -0
- package/templates/python/codegen/partials/deterministic-tools-section.hbs +308 -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/slack-section.hbs +178 -0
- package/templates/python/codegen/partials/snowflake-section.hbs +26 -0
- package/templates/python/codegen/partials/tool-name-types.hbs +18 -0
- package/templates/python/init/.python-version.hbs +1 -0
- package/templates/python/init/README.md.hbs +40 -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 +22 -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 +69 -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
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
const SUPPORTED_TOOL_SPECS = [
|
|
2
|
+
["attio", "attio_list_objects", "list_objects"],
|
|
3
|
+
["attio", "attio_query_records", "query_records"],
|
|
4
|
+
["attio", "attio_upsert_record", "upsert_record"],
|
|
5
|
+
["slack", "slack_send_message", "send_message"],
|
|
6
|
+
["slack", "slack_list_channels", "list_channels"],
|
|
7
|
+
["slack", "slack_list_users", "list_users"],
|
|
8
|
+
["slack", "slack_read_conversation", "read_conversation"],
|
|
9
|
+
["snowflake", "snowflakeExecuteQuery", "execute_query"],
|
|
10
|
+
["snowflake", "snowflakeExplainQuery", "explain_query"]
|
|
11
|
+
];
|
|
12
|
+
const SUPPORTED_TOOL_NAMES = new Set(SUPPORTED_TOOL_SPECS.map(([, toolName]) => toolName));
|
|
13
|
+
const TOOL_METHOD_NAME_BY_TOOL = Object.fromEntries(SUPPORTED_TOOL_SPECS.map(([, toolName, methodName]) => [toolName, methodName]));
|
|
14
|
+
const TOOL_NAME_ALIASES = {
|
|
15
|
+
snowflake_execute_query: "snowflakeExecuteQuery",
|
|
16
|
+
snowflake_explain_query: "snowflakeExplainQuery"
|
|
17
|
+
};
|
|
18
|
+
const TOOL_OUTPUT_MODEL_BY_TOOL = {
|
|
19
|
+
attio_list_objects: "AttioListObjectsToolOutput",
|
|
20
|
+
attio_query_records: "AttioQueryRecordsToolOutput",
|
|
21
|
+
attio_upsert_record: "AttioUpsertRecordToolOutput",
|
|
22
|
+
slack_send_message: "SlackSendMessageToolOutput",
|
|
23
|
+
slack_list_channels: "SlackListChannelsToolOutput",
|
|
24
|
+
slack_list_users: "SlackListUsersToolOutput",
|
|
25
|
+
slack_read_conversation: "SlackReadConversationToolOutput",
|
|
26
|
+
snowflakeExecuteQuery: "SnowflakeExecuteQueryToolOutput",
|
|
27
|
+
snowflakeExplainQuery: "SnowflakeExplainQueryToolOutput"
|
|
28
|
+
};
|
|
29
|
+
export function preparePythonTemplateContext(input) {
|
|
30
|
+
const attioTools = selectSupportedTools(input.tools, "attio");
|
|
31
|
+
const slackTools = selectSupportedTools(input.tools, "slack");
|
|
32
|
+
const snowflakeTools = selectSupportedTools(input.tools, "snowflake");
|
|
33
|
+
const attio = input.attio[0] ? buildAttioCtx(input.attio[0], attioTools) : null;
|
|
34
|
+
const slack = input.slack[0] ? buildSlackCtx(input.slack[0], slackTools) : null;
|
|
35
|
+
const snowflake = input.snowflake[0] ? buildSnowflakeCtx(input.snowflake[0], snowflakeTools) : null;
|
|
36
|
+
const hasAttio = attio !== null;
|
|
37
|
+
const hasAttioAttrs = !!attio?.hasAttrs;
|
|
38
|
+
const hasAttioTools = (attio?.tools.length ?? 0) > 0;
|
|
39
|
+
const hasSlack = slack !== null;
|
|
40
|
+
const hasSlackTools = (slack?.tools.length ?? 0) > 0;
|
|
41
|
+
const hasSnowflake = snowflake !== null;
|
|
42
|
+
const hasSnowflakeTools = (snowflake?.tools.length ?? 0) > 0;
|
|
43
|
+
const hasAnyToolNameTypes = (attio?.approvableTools.length ?? 0) > 0 || (slack?.approvableTools.length ?? 0) > 0 || (snowflake?.approvableTools.length ?? 0) > 0;
|
|
44
|
+
const hasAnyDeterministicTools = hasAttioTools || hasSlackTools || hasSnowflakeTools;
|
|
45
|
+
const sdkImports = ["SkillConfig", "TerseAgent as _SdkTerseAgent", "TriggerConfig"];
|
|
46
|
+
if (hasSlack) {
|
|
47
|
+
sdkImports.push("SlackEventType");
|
|
48
|
+
}
|
|
49
|
+
if (hasAttioAttrs && hasAttioTools) {
|
|
50
|
+
sdkImports.push("AttioTypedQueryResult", "AttioTypedRecord", "AttioTypedUpsertResult");
|
|
51
|
+
}
|
|
52
|
+
for (const tool of [...(attio?.tools ?? []), ...(slack?.tools ?? []), ...(snowflake?.tools ?? [])]) {
|
|
53
|
+
pushUnique(sdkImports, tool.outputModel);
|
|
54
|
+
}
|
|
55
|
+
const typingImports = new Set();
|
|
56
|
+
if (hasAttioAttrs) {
|
|
57
|
+
for (const name of ["Any", "Generic", "Sequence", "TypeVar", "TypedDict", "cast"]) {
|
|
58
|
+
typingImports.add(name);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (hasSlack) {
|
|
62
|
+
typingImports.add("ClassVar");
|
|
63
|
+
typingImports.add("Sequence");
|
|
64
|
+
}
|
|
65
|
+
if (hasAnyToolNameTypes) {
|
|
66
|
+
typingImports.add("Literal");
|
|
67
|
+
}
|
|
68
|
+
const typingImportsLine = typingImports.size ? `from typing import ${Array.from(typingImports).sort().join(", ")}` : undefined;
|
|
69
|
+
const pydanticImportsLine = hasAttio || hasSlack ? "from pydantic import BaseModel, ConfigDict" : undefined;
|
|
70
|
+
const exportedNames = buildExportedNames(attio, slack, snowflake);
|
|
71
|
+
return {
|
|
72
|
+
attio,
|
|
73
|
+
slack,
|
|
74
|
+
snowflake,
|
|
75
|
+
hasAttio,
|
|
76
|
+
hasAttioAttrs,
|
|
77
|
+
hasAttioTools,
|
|
78
|
+
hasSlack,
|
|
79
|
+
hasSlackTools,
|
|
80
|
+
hasSnowflake,
|
|
81
|
+
hasSnowflakeTools,
|
|
82
|
+
hasAnyToolNameTypes,
|
|
83
|
+
hasAnyDeterministicTools,
|
|
84
|
+
sdkImports,
|
|
85
|
+
typingImportsLine,
|
|
86
|
+
pydanticImportsLine,
|
|
87
|
+
needsJsonImport: hasAttioTools || hasSlackTools,
|
|
88
|
+
attioToolNamesLiteral: attio?.approvableTools.length ? buildToolNamesLiteral(attio.approvableTools) : undefined,
|
|
89
|
+
slackToolNamesLiteral: slack?.approvableTools.length ? buildToolNamesLiteral(slack.approvableTools) : undefined,
|
|
90
|
+
snowflakeToolNamesLiteral: snowflake?.approvableTools.length ? buildToolNamesLiteral(snowflake.approvableTools) : undefined,
|
|
91
|
+
allToolNamesLiteral: hasAnyToolNameTypes ? buildToolNamesLiteral([...(attio?.approvableTools ?? []), ...(slack?.approvableTools ?? []), ...(snowflake?.approvableTools ?? [])]) : undefined,
|
|
92
|
+
exportedNamesRepr: pyListRepr(exportedNames)
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export function pyRepr(value) {
|
|
96
|
+
let result = "'";
|
|
97
|
+
for (const char of value) {
|
|
98
|
+
switch (char) {
|
|
99
|
+
case "\\":
|
|
100
|
+
result += "\\\\";
|
|
101
|
+
break;
|
|
102
|
+
case "'":
|
|
103
|
+
result += "\\'";
|
|
104
|
+
break;
|
|
105
|
+
case "\n":
|
|
106
|
+
result += "\\n";
|
|
107
|
+
break;
|
|
108
|
+
case "\r":
|
|
109
|
+
result += "\\r";
|
|
110
|
+
break;
|
|
111
|
+
case "\t":
|
|
112
|
+
result += "\\t";
|
|
113
|
+
break;
|
|
114
|
+
default: {
|
|
115
|
+
const code = char.charCodeAt(0);
|
|
116
|
+
result += code < 32 ? `\\x${code.toString(16).padStart(2, "0")}` : char;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return `${result}'`;
|
|
122
|
+
}
|
|
123
|
+
export function pyListRepr(values) {
|
|
124
|
+
return `[${values.map(pyRepr).join(", ")}]`;
|
|
125
|
+
}
|
|
126
|
+
function buildAttioCtx(instance, tools) {
|
|
127
|
+
const hasAttrs = instance.objects.some(obj => (obj.attributes?.length ?? 0) > 0);
|
|
128
|
+
const usedNames = new Set();
|
|
129
|
+
const objects = instance.objects.map(obj => buildAttioObjectCtx(obj, usedNames, hasAttrs));
|
|
130
|
+
const toolContexts = tools.map(buildToolCtx);
|
|
131
|
+
return {
|
|
132
|
+
instanceIdRepr: pyRepr(instance.id),
|
|
133
|
+
hasAttrs,
|
|
134
|
+
objects,
|
|
135
|
+
tools: toolContexts,
|
|
136
|
+
approvableTools: toolContexts.filter(tool => tool.approvable),
|
|
137
|
+
skillToolType: toolContexts.some(tool => tool.approvable) ? "AttioToolNames" : "str",
|
|
138
|
+
skillObjectType: hasAttrs ? "AttioObjectType[Any, Any, Any, Any]" : "AttioObjectType"
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function buildSnowflakeCtx(instance, tools) {
|
|
142
|
+
const toolContexts = tools.map(buildToolCtx);
|
|
143
|
+
return {
|
|
144
|
+
instanceIdRepr: pyRepr(instance.id),
|
|
145
|
+
tools: toolContexts,
|
|
146
|
+
approvableTools: toolContexts.filter(tool => tool.approvable),
|
|
147
|
+
skillToolType: toolContexts.some(tool => tool.approvable) ? "SnowflakeToolNames" : "str"
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function buildSlackCtx(instance, tools) {
|
|
151
|
+
const toolContexts = tools.map(buildToolCtx);
|
|
152
|
+
const usedNames = new Set();
|
|
153
|
+
const channels = instance.channels.map(channel => ({
|
|
154
|
+
staticName: uniqueName(toPascalCase(channel.name || "Channel") || "Channel", usedNames),
|
|
155
|
+
channelIdRepr: pyRepr(channel.id),
|
|
156
|
+
nameRepr: pyRepr(channel.name)
|
|
157
|
+
}));
|
|
158
|
+
return {
|
|
159
|
+
instanceIdRepr: pyRepr(instance.id),
|
|
160
|
+
channels,
|
|
161
|
+
tools: toolContexts,
|
|
162
|
+
approvableTools: toolContexts.filter(tool => tool.approvable),
|
|
163
|
+
skillToolType: toolContexts.some(tool => tool.approvable) ? "SlackToolNames" : "str"
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function buildAttioObjectCtx(obj, usedNames, hasAttrs) {
|
|
167
|
+
const pascal = toPascalCase(obj.singular_noun || obj.api_slug) || "Object";
|
|
168
|
+
const staticName = uniqueName(pascal, usedNames);
|
|
169
|
+
const attributes = (obj.attributes ?? []).map(attr => ({
|
|
170
|
+
apiSlug: attr.api_slug ?? "",
|
|
171
|
+
recordType: attioRecordPythonType(attr),
|
|
172
|
+
inputType: attioInputPythonType(attr),
|
|
173
|
+
filterType: attioFilterPythonType(attr)
|
|
174
|
+
}));
|
|
175
|
+
const attrSlugsLiteral = attributes.length ? attributes.map(attr => pyRepr(attr.apiSlug)).join(", ") : "''";
|
|
176
|
+
const attrSlugsFrozensetRepr = attributes.length ? `frozenset({${attributes.map(attr => pyRepr(attr.apiSlug)).join(", ")}})` : "frozenset()";
|
|
177
|
+
const multiValueSlugs = (obj.attributes ?? [])
|
|
178
|
+
.filter(attr => isAttioMultiValue(attr))
|
|
179
|
+
.map(attr => attr.api_slug ?? "")
|
|
180
|
+
.filter(Boolean);
|
|
181
|
+
const multiValueFrozensetRepr = multiValueSlugs.length ? `frozenset({${multiValueSlugs.map(pyRepr).join(", ")}})` : "frozenset()";
|
|
182
|
+
const recordValuesTypeName = `${pascal}RecordValues`;
|
|
183
|
+
const inputValuesTypeName = `${pascal}InputValues`;
|
|
184
|
+
const attributeSlugTypeName = `${pascal}AttributeSlug`;
|
|
185
|
+
const filterTypeName = `${pascal}Filter`;
|
|
186
|
+
const hasAttributes = attributes.length > 0;
|
|
187
|
+
const staticDeclaration = hasAttrs && hasAttributes
|
|
188
|
+
? `${staticName}: AttioObjectType[${attributeSlugTypeName}, ${recordValuesTypeName}, ${inputValuesTypeName}, ${filterTypeName}] = AttioObjectType(api_slug=${pyRepr(obj.api_slug)}, name=${pyRepr(obj.singular_noun)}, attributes=${renderAttributeTuple(obj.attributes ?? [])})`
|
|
189
|
+
: `${staticName} = AttioObjectType(api_slug=${pyRepr(obj.api_slug)}, name=${pyRepr(obj.singular_noun)})`;
|
|
190
|
+
return {
|
|
191
|
+
apiSlug: obj.api_slug,
|
|
192
|
+
apiSlugRepr: pyRepr(obj.api_slug),
|
|
193
|
+
singularNoun: obj.singular_noun,
|
|
194
|
+
singularNounRepr: pyRepr(obj.singular_noun),
|
|
195
|
+
pascal,
|
|
196
|
+
staticName,
|
|
197
|
+
attributes,
|
|
198
|
+
hasAttributes,
|
|
199
|
+
attrSlugsLiteral,
|
|
200
|
+
attrSlugsFrozensetRepr,
|
|
201
|
+
multiValueSlugs,
|
|
202
|
+
hasMultiValueSlugs: multiValueSlugs.length > 0,
|
|
203
|
+
multiValueFrozensetRepr,
|
|
204
|
+
attributeTupleRepr: renderAttributeTuple(obj.attributes ?? []),
|
|
205
|
+
recordValuesTypeName,
|
|
206
|
+
inputValuesTypeName,
|
|
207
|
+
attributeSlugTypeName,
|
|
208
|
+
filterTypeName,
|
|
209
|
+
staticDeclaration
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function buildToolCtx(tool) {
|
|
213
|
+
const normalizedName = canonicalToolName(tool.name);
|
|
214
|
+
return {
|
|
215
|
+
name: normalizedName,
|
|
216
|
+
nameRepr: pyRepr(normalizedName),
|
|
217
|
+
methodName: TOOL_METHOD_NAME_BY_TOOL[normalizedName],
|
|
218
|
+
outputModel: TOOL_OUTPUT_MODEL_BY_TOOL[normalizedName],
|
|
219
|
+
approvable: !tool.isReadOnly || tool.supportsApproval
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function buildToolNamesLiteral(tools) {
|
|
223
|
+
return tools.map(tool => tool.nameRepr).join(", ");
|
|
224
|
+
}
|
|
225
|
+
function buildExportedNames(attio, slack, snowflake) {
|
|
226
|
+
const names = ["Schedule", "GeneratedTools", "create_tools", "attach_tools", "TerseAgent"];
|
|
227
|
+
for (const tool of [...(attio?.tools ?? []), ...(slack?.tools ?? []), ...(snowflake?.tools ?? [])]) {
|
|
228
|
+
pushUnique(names, tool.outputModel);
|
|
229
|
+
}
|
|
230
|
+
if ((attio?.approvableTools.length ?? 0) > 0)
|
|
231
|
+
names.push("AttioToolNames");
|
|
232
|
+
if ((slack?.approvableTools.length ?? 0) > 0)
|
|
233
|
+
names.push("SlackToolNames");
|
|
234
|
+
if ((snowflake?.approvableTools.length ?? 0) > 0)
|
|
235
|
+
names.push("SnowflakeToolNames");
|
|
236
|
+
if ((attio?.approvableTools.length ?? 0) > 0 || (slack?.approvableTools.length ?? 0) > 0 || (snowflake?.approvableTools.length ?? 0) > 0) {
|
|
237
|
+
names.push("AllToolNames");
|
|
238
|
+
}
|
|
239
|
+
if (attio) {
|
|
240
|
+
names.push("AttioAttributeDefinition", "AttioObjectType", "AttioObjects", "Attio");
|
|
241
|
+
if (attio.hasAttrs) {
|
|
242
|
+
for (const obj of attio.objects) {
|
|
243
|
+
if (!obj.hasAttributes)
|
|
244
|
+
continue;
|
|
245
|
+
names.push(obj.recordValuesTypeName, obj.inputValuesTypeName, obj.filterTypeName, obj.attributeSlugTypeName);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
names.push("Attio");
|
|
251
|
+
}
|
|
252
|
+
names.push("Slack", "SlackChannel");
|
|
253
|
+
names.push("Snowflake");
|
|
254
|
+
return names;
|
|
255
|
+
}
|
|
256
|
+
function isAttioMultiValue(attr) {
|
|
257
|
+
const slug = (attr.api_slug ?? "").toLowerCase();
|
|
258
|
+
const type = (attr.type ?? "").toLowerCase();
|
|
259
|
+
return (type.includes("multi") ||
|
|
260
|
+
type.includes("array") ||
|
|
261
|
+
type.includes("list") ||
|
|
262
|
+
["email_addresses", "domains", "phone_numbers", "social_profiles", "links", "tags"].includes(slug) ||
|
|
263
|
+
slug.endsWith("_addresses") ||
|
|
264
|
+
slug.endsWith("_ids"));
|
|
265
|
+
}
|
|
266
|
+
function attioBasePythonType(attr) {
|
|
267
|
+
const type = (attr.type ?? "").toLowerCase();
|
|
268
|
+
const slug = (attr.api_slug ?? "").toLowerCase();
|
|
269
|
+
if (type.includes("checkbox") || type.includes("boolean"))
|
|
270
|
+
return "bool";
|
|
271
|
+
if (["number", "currency", "rating", "percent"].some(keyword => type.includes(keyword)))
|
|
272
|
+
return "float";
|
|
273
|
+
if (["date", "time", "email", "domain", "phone", "url", "select", "status", "text", "string", "name"].some(keyword => type.includes(keyword))) {
|
|
274
|
+
return "str";
|
|
275
|
+
}
|
|
276
|
+
if (["location", "address", "reference", "record", "actor"].some(keyword => type.includes(keyword))) {
|
|
277
|
+
return "dict[str, Any]";
|
|
278
|
+
}
|
|
279
|
+
if (["email_addresses", "domains", "phone_numbers", "name"].includes(slug))
|
|
280
|
+
return "str";
|
|
281
|
+
return "Any";
|
|
282
|
+
}
|
|
283
|
+
function attioRecordPythonType(attr) {
|
|
284
|
+
const baseType = attioBasePythonType(attr);
|
|
285
|
+
return isAttioMultiValue(attr) ? `list[${baseType}]` : baseType;
|
|
286
|
+
}
|
|
287
|
+
function attioInputPythonType(attr) {
|
|
288
|
+
const baseType = attioBasePythonType(attr);
|
|
289
|
+
return isAttioMultiValue(attr) ? `${baseType} | list[${baseType}]` : baseType;
|
|
290
|
+
}
|
|
291
|
+
function attioFilterPythonType(attr) {
|
|
292
|
+
const valueType = attioBasePythonType(attr);
|
|
293
|
+
return valueType === "Any" || valueType === "dict[str, Any]" ? "dict[str, Any]" : `${valueType} | dict[str, Any]`;
|
|
294
|
+
}
|
|
295
|
+
function renderAttributeTuple(attributes) {
|
|
296
|
+
if (attributes.length === 0)
|
|
297
|
+
return "()";
|
|
298
|
+
const parts = attributes.map(attr => {
|
|
299
|
+
const args = [`api_slug=${pyRepr(attr.api_slug ?? "")}`];
|
|
300
|
+
if (attr.title)
|
|
301
|
+
args.push(`title=${pyRepr(attr.title)}`);
|
|
302
|
+
if (attr.type)
|
|
303
|
+
args.push(`type=${pyRepr(attr.type)}`);
|
|
304
|
+
if (attr.is_required)
|
|
305
|
+
args.push("is_required=True");
|
|
306
|
+
if (attr.is_unique)
|
|
307
|
+
args.push("is_unique=True");
|
|
308
|
+
return `AttioAttributeDefinition(${args.join(", ")})`;
|
|
309
|
+
});
|
|
310
|
+
return `(${parts.join(", ")},)`;
|
|
311
|
+
}
|
|
312
|
+
function selectSupportedTools(tools, integration) {
|
|
313
|
+
const available = new Map();
|
|
314
|
+
for (const tool of tools) {
|
|
315
|
+
if (tool.integration !== integration)
|
|
316
|
+
continue;
|
|
317
|
+
const normalizedName = canonicalToolName(tool.name);
|
|
318
|
+
if (!SUPPORTED_TOOL_NAMES.has(normalizedName))
|
|
319
|
+
continue;
|
|
320
|
+
available.set(normalizedName, { ...tool, name: normalizedName });
|
|
321
|
+
}
|
|
322
|
+
const ordered = [];
|
|
323
|
+
for (const [supportedIntegration, toolName] of SUPPORTED_TOOL_SPECS) {
|
|
324
|
+
if (supportedIntegration !== integration)
|
|
325
|
+
continue;
|
|
326
|
+
const tool = available.get(toolName);
|
|
327
|
+
if (tool)
|
|
328
|
+
ordered.push(tool);
|
|
329
|
+
}
|
|
330
|
+
return ordered;
|
|
331
|
+
}
|
|
332
|
+
function canonicalToolName(toolName) {
|
|
333
|
+
return TOOL_NAME_ALIASES[toolName] ?? toolName;
|
|
334
|
+
}
|
|
335
|
+
function toPascalCase(value) {
|
|
336
|
+
const normalized = value
|
|
337
|
+
.split(/[^0-9A-Za-z]+/)
|
|
338
|
+
.filter(Boolean)
|
|
339
|
+
.map(part => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)
|
|
340
|
+
.join("");
|
|
341
|
+
return /^\d/.test(normalized) ? `_${normalized}` : normalized;
|
|
342
|
+
}
|
|
343
|
+
function uniqueName(candidate, usedNames) {
|
|
344
|
+
if (!usedNames.has(candidate)) {
|
|
345
|
+
usedNames.add(candidate);
|
|
346
|
+
return candidate;
|
|
347
|
+
}
|
|
348
|
+
let index = 2;
|
|
349
|
+
while (usedNames.has(`${candidate}${index}`))
|
|
350
|
+
index++;
|
|
351
|
+
const unique = `${candidate}${index}`;
|
|
352
|
+
usedNames.add(unique);
|
|
353
|
+
return unique;
|
|
354
|
+
}
|
|
355
|
+
function pushUnique(values, value) {
|
|
356
|
+
if (!values.includes(value))
|
|
357
|
+
values.push(value);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=preparePythonCodegenData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preparePythonCodegenData.js","sourceRoot":"","sources":["../../../src/providers/python/preparePythonCodegenData.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG;IACzB,CAAC,OAAO,EAAE,oBAAoB,EAAE,cAAc,CAAC;IAC/C,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe,CAAC;IACjD,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe,CAAC;IACjD,CAAC,OAAO,EAAE,oBAAoB,EAAE,cAAc,CAAC;IAC/C,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe,CAAC;IACjD,CAAC,OAAO,EAAE,kBAAkB,EAAE,YAAY,CAAC;IAC3C,CAAC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,CAAC;IACzD,CAAC,WAAW,EAAE,uBAAuB,EAAE,eAAe,CAAC;IACvD,CAAC,WAAW,EAAE,uBAAuB,EAAE,eAAe,CAAC;CACjD,CAAA;AAEV,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AAElG,MAAM,wBAAwB,GAAG,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAA2B,CAAA;AAE7J,MAAM,iBAAiB,GAA2B;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,uBAAuB,EAAE,uBAAuB;CACnD,CAAA;AAED,MAAM,yBAAyB,GAA2B;IACtD,kBAAkB,EAAE,4BAA4B;IAChD,mBAAmB,EAAE,6BAA6B;IAClD,mBAAmB,EAAE,6BAA6B;IAClD,kBAAkB,EAAE,4BAA4B;IAChD,mBAAmB,EAAE,6BAA6B;IAClD,gBAAgB,EAAE,0BAA0B;IAC5C,uBAAuB,EAAE,iCAAiC;IAC1D,qBAAqB,EAAE,iCAAiC;IACxD,qBAAqB,EAAE,iCAAiC;CAC3D,CAAA;AA8FD,MAAM,UAAU,4BAA4B,CAAC,KAAmB;IAC5D,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAErE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEnG,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAA;IAC/B,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAA;IACvC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAA;IAC/B,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,SAAS,KAAK,IAAI,CAAA;IACvC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5D,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAChK,MAAM,wBAAwB,GAAG,aAAa,IAAI,aAAa,IAAI,iBAAiB,CAAA;IAEpF,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,8BAA8B,EAAE,eAAe,CAAC,CAAA;IACnF,IAAI,QAAQ,EAAE,CAAC;QACX,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACrC,CAAC;IACD,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,uBAAuB,EAAE,kBAAkB,EAAE,wBAAwB,CAAC,CAAA;IAC1F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACjG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACvC,IAAI,aAAa,EAAE,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;YAChF,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACX,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7B,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,mBAAmB,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAE9H,MAAM,mBAAmB,GAAG,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,SAAS,CAAA;IAE3G,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAEjE,OAAO;QACH,KAAK;QACL,KAAK;QACL,SAAS;QACT,QAAQ;QACR,aAAa;QACb,aAAa;QACb,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,wBAAwB;QACxB,UAAU;QACV,iBAAiB;QACjB,mBAAmB;QACnB,eAAe,EAAE,aAAa,IAAI,aAAa;QAC/C,qBAAqB,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/G,qBAAqB,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/G,yBAAyB,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3H,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3L,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC;KAC/C,CAAA;AACL,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAChC,IAAI,MAAM,GAAG,GAAG,CAAA;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI;gBACL,MAAM,IAAI,MAAM,CAAA;gBAChB,MAAK;YACT,KAAK,GAAG;gBACJ,MAAM,IAAI,KAAK,CAAA;gBACf,MAAK;YACT,KAAK,IAAI;gBACL,MAAM,IAAI,KAAK,CAAA;gBACf,MAAK;YACT,KAAK,IAAI;gBACL,MAAM,IAAI,KAAK,CAAA;gBACf,MAAK;YACT,KAAK,IAAI;gBACL,MAAM,IAAI,KAAK,CAAA;gBACf,MAAK;YACT,OAAO,CAAC,CAAC,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;gBACvE,MAAK;YACT,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,GAAG,MAAM,GAAG,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAgB;IACvC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAC/C,CAAC;AAED,SAAS,aAAa,CAAC,QAA2B,EAAE,KAAuB;IACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAChF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1F,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAE5C,OAAO;QACH,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,QAAQ;QACR,OAAO;QACP,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK;QACpF,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,iBAAiB;KACxF,CAAA;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA+B,EAAE,KAAuB;IAC/E,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC5C,OAAO;QACH,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK;KAC3F,CAAA;AACL,CAAC;AAED,SAAS,aAAa,CAAC,QAA2B,EAAE,KAAuB;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,SAAS,EAAE,SAAS,CAAC;QACvF,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CAAA;IAEH,OAAO;QACH,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,QAAQ;QACR,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK;KACvF,CAAA;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAyC,EAAE,SAAsB,EAAE,QAAiB;IAC7G,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAA;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC5B,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC;QACvC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACrC,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC,CAAA;IACH,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3G,MAAM,sBAAsB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;IAC5I,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;IAEjI,MAAM,oBAAoB,GAAG,GAAG,MAAM,cAAc,CAAA;IACpD,MAAM,mBAAmB,GAAG,GAAG,MAAM,aAAa,CAAA;IAClD,MAAM,qBAAqB,GAAG,GAAG,MAAM,eAAe,CAAA;IACtD,MAAM,cAAc,GAAG,GAAG,MAAM,QAAQ,CAAA;IACxC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;IAE3C,MAAM,iBAAiB,GACnB,QAAQ,IAAI,aAAa;QACrB,CAAC,CAAC,GAAG,UAAU,qBAAqB,qBAAqB,KAAK,oBAAoB,KAAK,mBAAmB,KAAK,cAAc,gCAAgC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,oBAAoB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG;QACjR,CAAC,CAAC,GAAG,UAAU,+BAA+B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAA;IAEhH,OAAO;QACH,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QAC3C,MAAM;QACN,UAAU;QACV,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,sBAAsB;QACtB,eAAe;QACf,kBAAkB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;QAC9C,uBAAuB;QACvB,kBAAkB,EAAE,oBAAoB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QAC9D,oBAAoB;QACpB,mBAAmB;QACnB,qBAAqB;QACrB,cAAc;QACd,iBAAiB;KACpB,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,IAAoB;IACtC,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnD,OAAO;QACH,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC;QAChC,UAAU,EAAE,wBAAwB,CAAC,cAAc,CAAC;QACpD,WAAW,EAAE,yBAAyB,CAAC,cAAc,CAAC;QACtD,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB;KACxD,CAAA;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA4B,EAAE,KAA4B,EAAE,SAAoC;IACxH,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;IAE1F,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACjG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC1E,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC1E,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAClF,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACvI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QAClF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,aAAa;oBAAE,SAAQ;gBAChC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAChH,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvB,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAwB;IAC/C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAE5C,OAAO,CACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxB,CAAA;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACjD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAEhD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAA;IACxE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,OAAO,CAAA;IACvG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5I,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAClG,OAAO,gBAAgB,CAAA;IAC3B,CAAC;IACD,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACxF,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAwB;IACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnE,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAwB;IAClD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,WAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;AACjF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAwB;IACnD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3C,OAAO,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAAmB,CAAA;AACrH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAgC;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAExC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChC,MAAM,IAAI,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QACxD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACnD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC/C,OAAO,4BAA4B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AACnC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAuB,EAAE,WAAmB;IACtE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW;YAAE,SAAQ;QAC9C,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,SAAQ;QACvD,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,OAAO,GAAqB,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAClE,IAAI,oBAAoB,KAAK,WAAW;YAAE,SAAQ;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACpC,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAA;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAC/B,MAAM,UAAU,GAAG,KAAK;SACnB,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,IAAI,CAAC,EAAE,CAAC,CAAA;IAEb,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;AACjE,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB,EAAE,SAAsB;IACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC;QAAE,KAAK,EAAE,CAAA;IAErD,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,KAAK,EAAE,CAAA;IACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACrB,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,MAAgB,EAAE,KAAa;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonTemplateEngine.d.ts","sourceRoot":"","sources":["../../../src/providers/python/pythonTemplateEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,qBAAqB,EAAsB,MAAM,+BAA+B,CAAA;AA4B9F,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAEhF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Handlebars from "handlebars";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { getTemplatesRoot, readTemplateFile } from "../templateUtils.js";
|
|
5
|
+
import { pyListRepr, pyRepr } from "./preparePythonCodegenData.js";
|
|
6
|
+
let template;
|
|
7
|
+
function getHandlebars() {
|
|
8
|
+
const handlebars = Handlebars.create();
|
|
9
|
+
handlebars.registerHelper("pyRepr", (value) => pyRepr(String(value ?? "")));
|
|
10
|
+
handlebars.registerHelper("pyListRepr", (values) => (Array.isArray(values) ? pyListRepr(values.map(value => String(value))) : "[]"));
|
|
11
|
+
handlebars.registerHelper("eq", (left, right) => left === right);
|
|
12
|
+
const partialsDir = path.join(getTemplatesRoot(), "python", "codegen", "partials");
|
|
13
|
+
for (const entry of fs.readdirSync(partialsDir).sort()) {
|
|
14
|
+
if (!entry.endsWith(".hbs"))
|
|
15
|
+
continue;
|
|
16
|
+
handlebars.registerPartial(path.basename(entry, ".hbs"), fs.readFileSync(path.join(partialsDir, entry), "utf-8"));
|
|
17
|
+
}
|
|
18
|
+
return handlebars;
|
|
19
|
+
}
|
|
20
|
+
function getCompiledTemplate() {
|
|
21
|
+
if (!template) {
|
|
22
|
+
const handlebars = getHandlebars();
|
|
23
|
+
template = handlebars.compile(readTemplateFile("python/codegen/generated.hbs"), { noEscape: true });
|
|
24
|
+
}
|
|
25
|
+
return template;
|
|
26
|
+
}
|
|
27
|
+
export function renderPythonGeneratedCode(context) {
|
|
28
|
+
return getCompiledTemplate()(context);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=pythonTemplateEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonTemplateEngine.js","sourceRoot":"","sources":["../../../src/providers/python/pythonTemplateEngine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EAA8B,UAAU,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAE9F,IAAI,QAAwE,CAAA;AAE5E,SAAS,aAAa;IAClB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;IAEtC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpF,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7I,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,IAAa,EAAE,KAAc,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;IAElF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;IAClF,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAQ;QACrC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IACrH,CAAC;IAED,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,SAAS,mBAAmB;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;QAClC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAwB,gBAAgB,CAAC,8BAA8B,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9H,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAA8B;IACpE,OAAO,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LanguageProvider } from "./LanguageProvider.js";
|
|
2
|
+
export declare function resolveProvider(opts?: {
|
|
3
|
+
command?: string;
|
|
4
|
+
language?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
}): LanguageProvider;
|
|
7
|
+
export declare function resolveProviderByLanguage(language: string): LanguageProvider;
|
|
8
|
+
//# sourceMappingURL=resolveProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProvider.d.ts","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAa7D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAsB9G;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAc5E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { pythonProvider } from "./python/PythonProvider.js";
|
|
4
|
+
import { typeScriptProvider } from "./typescript/TypeScriptProvider.js";
|
|
5
|
+
const PROVIDERS = [typeScriptProvider, pythonProvider];
|
|
6
|
+
const LANGUAGE_ALIASES = {
|
|
7
|
+
ts: "typescript",
|
|
8
|
+
typescript: "typescript",
|
|
9
|
+
py: "python",
|
|
10
|
+
python: "python"
|
|
11
|
+
};
|
|
12
|
+
export function resolveProvider(opts) {
|
|
13
|
+
if (opts?.command === "init") {
|
|
14
|
+
return resolveProviderByLanguage(opts.language ?? "ts");
|
|
15
|
+
}
|
|
16
|
+
const cwd = opts?.cwd ?? process.cwd();
|
|
17
|
+
const matches = PROVIDERS.filter(provider => matchesProjectMarkers(provider, cwd));
|
|
18
|
+
if (matches.length === 1) {
|
|
19
|
+
return matches[0];
|
|
20
|
+
}
|
|
21
|
+
if (matches.length > 1) {
|
|
22
|
+
console.error(`Error: Multiple Terse project types detected: ${matches.map(provider => provider.displayName).join(", ")}.`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
console.error("Error: Could not detect Terse project language in the current directory.");
|
|
26
|
+
for (const provider of PROVIDERS) {
|
|
27
|
+
console.error(` ${provider.displayName}: ${provider.projectMarkers.requiredFiles.join(", ")}`);
|
|
28
|
+
}
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
export function resolveProviderByLanguage(language) {
|
|
32
|
+
const normalized = LANGUAGE_ALIASES[language.toLowerCase()];
|
|
33
|
+
if (!normalized) {
|
|
34
|
+
console.error(`Error: Unsupported language "${language}". Use ts, typescript, py, or python.`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const provider = PROVIDERS.find(candidate => candidate.language === normalized);
|
|
38
|
+
if (!provider) {
|
|
39
|
+
console.error(`Error: No provider registered for "${normalized}".`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
return provider;
|
|
43
|
+
}
|
|
44
|
+
function matchesProjectMarkers(provider, cwd) {
|
|
45
|
+
return provider.projectMarkers.requiredFiles.every(relativePath => fs.existsSync(path.join(cwd, relativePath)));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=resolveProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProvider.js","sourceRoot":"","sources":["../../src/providers/resolveProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAEvE,MAAM,SAAS,GAAuB,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;AAE1E,MAAM,gBAAgB,GAAiD;IACnE,EAAE,EAAE,YAAY;IAChB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;CACnB,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,IAA4D;IACxF,IAAI,IAAI,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,iDAAiD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAA;IACzF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,gCAAgC,QAAQ,uCAAuC,CAAC,CAAA;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;IAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,IAAI,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA0B,EAAE,GAAW;IAClE,OAAO,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACnH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SdkAgentStreamEvent, SdkApprovalDecisionRequestBody } from "terse-types";
|
|
2
|
+
type SessionStartedEvent = {
|
|
3
|
+
type: "session_started";
|
|
4
|
+
sessionId: string;
|
|
5
|
+
};
|
|
6
|
+
export type SessionStreamEvent = SdkAgentStreamEvent | SessionStartedEvent;
|
|
7
|
+
export type SessionHandle = {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
close: () => void;
|
|
10
|
+
};
|
|
11
|
+
type SessionStreamOptions = {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
isPaused?: () => boolean;
|
|
14
|
+
onEvent?: (event: SessionStreamEvent) => Promise<void> | void;
|
|
15
|
+
};
|
|
16
|
+
export declare function openSessionStream(apiKey: string, options?: SessionStreamOptions): Promise<SessionHandle>;
|
|
17
|
+
export declare function submitApprovalDecision(apiKey: string, params: SdkApprovalDecisionRequestBody): Promise<void>;
|
|
18
|
+
export declare function logSessionEvent(event: SessionStreamEvent, options?: {
|
|
19
|
+
isPaused?: () => boolean;
|
|
20
|
+
verbose?: boolean;
|
|
21
|
+
}): void;
|
|
22
|
+
export declare function promptForToolApproval(toolName: string, rawArguments: string): Promise<boolean>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=sessionStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStream.d.ts","sourceRoot":"","sources":["../../../src/providers/shared/sessionStream.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAItF,KAAK,mBAAmB,GAAG;IACvB,IAAI,EAAE,iBAAiB,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,KAAK,oBAAoB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAChE,CAAA;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsBlH;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAclH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAiC9H;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBpG"}
|