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.
Files changed (142) hide show
  1. package/README.md +4 -4
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +6 -9
  4. package/dist/api.js.map +1 -1
  5. package/dist/assertProjectRoot.d.ts +3 -2
  6. package/dist/assertProjectRoot.d.ts.map +1 -1
  7. package/dist/assertProjectRoot.js +6 -9
  8. package/dist/assertProjectRoot.js.map +1 -1
  9. package/dist/auth.d.ts.map +1 -1
  10. package/dist/auth.js +4 -4
  11. package/dist/auth.js.map +1 -1
  12. package/dist/deploy.d.ts +2 -1
  13. package/dist/deploy.d.ts.map +1 -1
  14. package/dist/deploy.js +19 -23
  15. package/dist/deploy.js.map +1 -1
  16. package/dist/generate.d.ts +2 -1
  17. package/dist/generate.d.ts.map +1 -1
  18. package/dist/generate.js +59 -33
  19. package/dist/generate.js.map +1 -1
  20. package/dist/index.js +12 -12
  21. package/dist/index.js.map +1 -1
  22. package/dist/init.d.ts +2 -1
  23. package/dist/init.d.ts.map +1 -1
  24. package/dist/init.js +30 -58
  25. package/dist/init.js.map +1 -1
  26. package/dist/integrate.d.ts.map +1 -1
  27. package/dist/integrate.js +8 -12
  28. package/dist/integrate.js.map +1 -1
  29. package/dist/integrationApi.d.ts +2 -2
  30. package/dist/integrationApi.d.ts.map +1 -1
  31. package/dist/integrationApi.js.map +1 -1
  32. package/dist/loadJob.d.ts +4 -3
  33. package/dist/loadJob.d.ts.map +1 -1
  34. package/dist/loadJob.js +8 -56
  35. package/dist/loadJob.js.map +1 -1
  36. package/dist/providers/LanguageProvider.d.ts +31 -0
  37. package/dist/providers/LanguageProvider.d.ts.map +1 -0
  38. package/dist/providers/LanguageProvider.js +2 -0
  39. package/dist/providers/LanguageProvider.js.map +1 -0
  40. package/dist/providers/codegenTypes.d.ts +119 -0
  41. package/dist/providers/codegenTypes.d.ts.map +1 -0
  42. package/dist/providers/codegenTypes.js +2 -0
  43. package/dist/providers/codegenTypes.js.map +1 -0
  44. package/dist/providers/python/PythonProvider.d.ts +33 -0
  45. package/dist/providers/python/PythonProvider.d.ts.map +1 -0
  46. package/dist/providers/python/PythonProvider.js +362 -0
  47. package/dist/providers/python/PythonProvider.js.map +1 -0
  48. package/dist/providers/python/preparePythonCodegenData.d.ts +89 -0
  49. package/dist/providers/python/preparePythonCodegenData.d.ts.map +1 -0
  50. package/dist/providers/python/preparePythonCodegenData.js +359 -0
  51. package/dist/providers/python/preparePythonCodegenData.js.map +1 -0
  52. package/dist/providers/python/pythonTemplateEngine.d.ts +3 -0
  53. package/dist/providers/python/pythonTemplateEngine.d.ts.map +1 -0
  54. package/dist/providers/python/pythonTemplateEngine.js +30 -0
  55. package/dist/providers/python/pythonTemplateEngine.js.map +1 -0
  56. package/dist/providers/resolveProvider.d.ts +8 -0
  57. package/dist/providers/resolveProvider.d.ts.map +1 -0
  58. package/dist/providers/resolveProvider.js +47 -0
  59. package/dist/providers/resolveProvider.js.map +1 -0
  60. package/dist/providers/shared/sessionStream.d.ts +24 -0
  61. package/dist/providers/shared/sessionStream.d.ts.map +1 -0
  62. package/dist/providers/shared/sessionStream.js +157 -0
  63. package/dist/providers/shared/sessionStream.js.map +1 -0
  64. package/dist/providers/shared/shellUtils.d.ts +13 -0
  65. package/dist/providers/shared/shellUtils.d.ts.map +1 -0
  66. package/dist/providers/shared/shellUtils.js +69 -0
  67. package/dist/providers/shared/shellUtils.js.map +1 -0
  68. package/dist/providers/templateUtils.d.ts +7 -0
  69. package/dist/providers/templateUtils.d.ts.map +1 -0
  70. package/dist/providers/templateUtils.js +30 -0
  71. package/dist/providers/templateUtils.js.map +1 -0
  72. package/dist/providers/typescript/TypeScriptProvider.d.ts +33 -0
  73. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -0
  74. package/dist/providers/typescript/TypeScriptProvider.js +160 -0
  75. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -0
  76. package/dist/providers/typescript/prepareCodegenData.d.ts +144 -0
  77. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -0
  78. package/dist/providers/typescript/prepareCodegenData.js +751 -0
  79. package/dist/providers/typescript/prepareCodegenData.js.map +1 -0
  80. package/dist/providers/typescript/templateEngine.d.ts +3 -0
  81. package/dist/providers/typescript/templateEngine.d.ts.map +1 -0
  82. package/dist/providers/typescript/templateEngine.js +37 -0
  83. package/dist/providers/typescript/templateEngine.js.map +1 -0
  84. package/dist/run.d.ts +2 -11
  85. package/dist/run.d.ts.map +1 -1
  86. package/dist/run.js +7 -194
  87. package/dist/run.js.map +1 -1
  88. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  89. package/dist/shared/ToolDisplayUtils.js +13 -1
  90. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  91. package/dist/shared/types.d.ts +912 -107
  92. package/dist/shared/types.d.ts.map +1 -1
  93. package/dist/test.d.ts +2 -1
  94. package/dist/test.d.ts.map +1 -1
  95. package/dist/test.js +12 -12
  96. package/dist/test.js.map +1 -1
  97. package/dist/util.d.ts +1 -1
  98. package/dist/util.d.ts.map +1 -1
  99. package/dist/util.js.map +1 -1
  100. package/package.json +13 -9
  101. package/templates/python/codegen/generated.hbs +7 -0
  102. package/templates/python/codegen/partials/attio-list-objects-method.hbs +8 -0
  103. package/templates/python/codegen/partials/attio-object-types.hbs +23 -0
  104. package/templates/python/codegen/partials/attio-query-records-method.hbs +45 -0
  105. package/templates/python/codegen/partials/attio-section.hbs +110 -0
  106. package/templates/python/codegen/partials/attio-upsert-record-method.hbs +51 -0
  107. package/templates/python/codegen/partials/deterministic-tools-section.hbs +308 -0
  108. package/templates/python/codegen/partials/file-header.hbs +32 -0
  109. package/templates/python/codegen/partials/schedule-section.hbs +9 -0
  110. package/templates/python/codegen/partials/slack-section.hbs +178 -0
  111. package/templates/python/codegen/partials/snowflake-section.hbs +26 -0
  112. package/templates/python/codegen/partials/tool-name-types.hbs +18 -0
  113. package/templates/python/init/.python-version.hbs +1 -0
  114. package/templates/python/init/README.md.hbs +40 -0
  115. package/templates/python/init/gitignore.hbs +3 -0
  116. package/templates/python/init/pyproject.toml.hbs +16 -0
  117. package/templates/python/init/src/main.py.hbs +21 -0
  118. package/templates/typescript/codegen/generated.hbs +17 -0
  119. package/templates/typescript/codegen/partials/atlassian-section.hbs +32 -0
  120. package/templates/typescript/codegen/partials/attio-section.hbs +38 -0
  121. package/templates/typescript/codegen/partials/datadog-section.hbs +11 -0
  122. package/templates/typescript/codegen/partials/figma-section.hbs +13 -0
  123. package/templates/typescript/codegen/partials/github-section.hbs +62 -0
  124. package/templates/typescript/codegen/partials/gmail-section.hbs +21 -0
  125. package/templates/typescript/codegen/partials/header.hbs +12 -0
  126. package/templates/typescript/codegen/partials/launchdarkly-section.hbs +11 -0
  127. package/templates/typescript/codegen/partials/linear-section.hbs +27 -0
  128. package/templates/typescript/codegen/partials/notion-section.hbs +15 -0
  129. package/templates/typescript/codegen/partials/posthog-section.hbs +11 -0
  130. package/templates/typescript/codegen/partials/resource-class.hbs +9 -0
  131. package/templates/typescript/codegen/partials/slack-section.hbs +22 -0
  132. package/templates/typescript/codegen/partials/snowflake-section.hbs +9 -0
  133. package/templates/typescript/codegen/partials/system-section.hbs +18 -0
  134. package/templates/typescript/codegen/partials/tools-section.hbs +69 -0
  135. package/templates/typescript/codegen/partials/workos-section.hbs +53 -0
  136. package/templates/typescript/init/env.example.hbs +1 -0
  137. package/templates/{package.json.tmpl → typescript/init/package.json.hbs} +1 -1
  138. package/templates/{src/index.ts.tmpl → typescript/init/src/index.ts.hbs} +1 -3
  139. /package/templates/{env.example.tmpl → python/init/env.example.hbs} +0 -0
  140. /package/templates/{.claude/settings.json.tmpl → typescript/init/.claude/settings.json.hbs} +0 -0
  141. /package/templates/{gitignore.tmpl → typescript/init/gitignore.hbs} +0 -0
  142. /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":"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"}
@@ -0,0 +1,3 @@
1
+ import { type PythonTemplateContext } from "./preparePythonCodegenData.js";
2
+ export declare function renderPythonGeneratedCode(context: PythonTemplateContext): string;
3
+ //# sourceMappingURL=pythonTemplateEngine.d.ts.map
@@ -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"}