terse-cli 0.1.46 → 0.1.47

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 (139) hide show
  1. package/dist/api.d.ts +0 -2
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +2 -2
  4. package/dist/api.js.map +1 -1
  5. package/dist/cliError.d.ts +2 -3
  6. package/dist/cliError.d.ts.map +1 -1
  7. package/dist/cliError.js +2 -2
  8. package/dist/cliError.js.map +1 -1
  9. package/dist/commands/auth.d.ts +0 -5
  10. package/dist/commands/auth.d.ts.map +1 -1
  11. package/dist/commands/auth.js +2 -2
  12. package/dist/commands/auth.js.map +1 -1
  13. package/dist/commands/deployTheme.d.ts +28 -0
  14. package/dist/commands/deployTheme.d.ts.map +1 -0
  15. package/dist/commands/deployTheme.js +68 -0
  16. package/dist/commands/deployTheme.js.map +1 -0
  17. package/dist/commands/dev.d.ts +3 -0
  18. package/dist/commands/dev.d.ts.map +1 -0
  19. package/dist/commands/dev.js +47 -0
  20. package/dist/commands/dev.js.map +1 -0
  21. package/dist/commands/serve.d.ts +1 -0
  22. package/dist/commands/serve.d.ts.map +1 -0
  23. package/dist/commands/serve.js +2 -0
  24. package/dist/commands/serve.js.map +1 -0
  25. package/dist/commands/terseCliTheme.d.ts +28 -0
  26. package/dist/commands/terseCliTheme.d.ts.map +1 -0
  27. package/dist/commands/terseCliTheme.js +68 -0
  28. package/dist/commands/terseCliTheme.js.map +1 -0
  29. package/dist/commands/test.d.ts +0 -35
  30. package/dist/commands/test.d.ts.map +1 -1
  31. package/dist/commands/test.js +1 -1
  32. package/dist/commands/test.js.map +1 -1
  33. package/dist/env.d.ts +0 -2
  34. package/dist/env.d.ts.map +1 -1
  35. package/dist/env.js +1 -1
  36. package/dist/env.js.map +1 -1
  37. package/dist/nonInteractive.d.ts +4 -2
  38. package/dist/nonInteractive.d.ts.map +1 -1
  39. package/dist/nonInteractive.js +5 -2
  40. package/dist/nonInteractive.js.map +1 -1
  41. package/dist/perf.d.ts +9 -0
  42. package/dist/perf.d.ts.map +1 -0
  43. package/dist/perf.js +59 -0
  44. package/dist/perf.js.map +1 -0
  45. package/dist/projectConfig.d.ts +0 -1
  46. package/dist/projectConfig.d.ts.map +1 -1
  47. package/dist/projectConfig.js +1 -1
  48. package/dist/projectConfig.js.map +1 -1
  49. package/dist/providers/LanguageProvider.d.ts +1 -1
  50. package/dist/providers/LanguageProvider.d.ts.map +1 -1
  51. package/dist/providers/codegen.test.d.ts +2 -0
  52. package/dist/providers/codegen.test.d.ts.map +1 -0
  53. package/dist/providers/codegen.test.js +45 -0
  54. package/dist/providers/codegen.test.js.map +1 -0
  55. package/dist/providers/codegenTypes.d.ts +10 -9
  56. package/dist/providers/codegenTypes.d.ts.map +1 -1
  57. package/dist/providers/fetchSdkVersion.d.ts +1 -3
  58. package/dist/providers/fetchSdkVersion.d.ts.map +1 -1
  59. package/dist/providers/fetchSdkVersion.js +2 -2
  60. package/dist/providers/fetchSdkVersion.js.map +1 -1
  61. package/dist/providers/python/PythonProvider.js +1 -0
  62. package/dist/providers/python/PythonProvider.js.map +1 -1
  63. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  64. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  65. package/dist/providers/python/PythonProvider.test.js +169 -0
  66. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  67. package/dist/providers/resolveProvider.d.ts +0 -1
  68. package/dist/providers/resolveProvider.d.ts.map +1 -1
  69. package/dist/providers/resolveProvider.js +4 -20
  70. package/dist/providers/resolveProvider.js.map +1 -1
  71. package/dist/providers/shared/sessionStream.d.ts +0 -4
  72. package/dist/providers/shared/sessionStream.d.ts.map +1 -1
  73. package/dist/providers/shared/sessionStream.js +1 -1
  74. package/dist/providers/shared/sessionStream.js.map +1 -1
  75. package/dist/providers/shared/shellUtils.d.ts +0 -11
  76. package/dist/providers/shared/shellUtils.d.ts.map +1 -1
  77. package/dist/providers/shared/shellUtils.js +0 -44
  78. package/dist/providers/shared/shellUtils.js.map +1 -1
  79. package/dist/providers/templateUtils.d.ts +0 -2
  80. package/dist/providers/templateUtils.d.ts.map +1 -1
  81. package/dist/providers/templateUtils.js +2 -2
  82. package/dist/providers/templateUtils.js.map +1 -1
  83. package/dist/providers/typescript/TypeScriptProvider.d.ts +2 -1
  84. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  85. package/dist/providers/typescript/TypeScriptProvider.js +1 -1
  86. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  87. package/dist/providers/typescript/prepareCodegenData.d.ts +20 -23
  88. package/dist/providers/typescript/prepareCodegenData.d.ts.map +1 -1
  89. package/dist/providers/typescript/prepareCodegenData.js +4 -4
  90. package/dist/providers/typescript/prepareCodegenData.js.map +1 -1
  91. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  92. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  93. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  94. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  95. package/dist/run.d.ts.map +1 -1
  96. package/dist/run.js +36 -12
  97. package/dist/run.js.map +1 -1
  98. package/dist/sampleEventId.d.ts +0 -4
  99. package/dist/sampleEventId.d.ts.map +1 -1
  100. package/dist/sampleEventId.js +0 -4
  101. package/dist/sampleEventId.js.map +1 -1
  102. package/dist/shared/ToolDisplayUtils.js +1 -1
  103. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  104. package/package.json +3 -3
  105. package/dist/jsonOutput.d.ts +0 -19
  106. package/dist/jsonOutput.d.ts.map +0 -1
  107. package/dist/jsonOutput.js +0 -25
  108. package/dist/jsonOutput.js.map +0 -1
  109. package/dist/replay.d.ts +0 -3
  110. package/dist/replay.d.ts.map +0 -1
  111. package/dist/replay.js +0 -20
  112. package/dist/replay.js.map +0 -1
  113. package/dist/urls.d.ts +0 -3
  114. package/dist/urls.d.ts.map +0 -1
  115. package/dist/urls.js +0 -27
  116. package/dist/urls.js.map +0 -1
  117. package/templates/python/codegen/generated.hbs +0 -12
  118. package/templates/python/codegen/partials/attio-list-objects-method.hbs +0 -8
  119. package/templates/python/codegen/partials/attio-object-types.hbs +0 -23
  120. package/templates/python/codegen/partials/attio-query-records-method.hbs +0 -45
  121. package/templates/python/codegen/partials/attio-section.hbs +0 -110
  122. package/templates/python/codegen/partials/attio-upsert-record-method.hbs +0 -51
  123. package/templates/python/codegen/partials/deterministic-tools-section.hbs +0 -308
  124. package/templates/python/codegen/partials/file-header.hbs +0 -32
  125. package/templates/python/codegen/partials/github-section.hbs +0 -149
  126. package/templates/python/codegen/partials/gmail-section.hbs +0 -30
  127. package/templates/python/codegen/partials/linear-section.hbs +0 -229
  128. package/templates/python/codegen/partials/schedule-section.hbs +0 -15
  129. package/templates/python/codegen/partials/slack-section.hbs +0 -266
  130. package/templates/python/codegen/partials/snowflake-section.hbs +0 -26
  131. package/templates/python/codegen/partials/tool-name-types.hbs +0 -18
  132. package/templates/python/codegen/partials/webhook-section.hbs +0 -15
  133. package/templates/python/codegen/partials/workos-section.hbs +0 -149
  134. package/templates/python/init/.python-version.hbs +0 -1
  135. package/templates/python/init/README.md.hbs +0 -68
  136. package/templates/python/init/env.example.hbs +0 -1
  137. package/templates/python/init/gitignore.hbs +0 -3
  138. package/templates/python/init/pyproject.toml.hbs +0 -16
  139. package/templates/python/init/src/main.py.hbs +0 -23
@@ -1,149 +0,0 @@
1
- {{~#if workos}}
2
-
3
-
4
- # === WorkOS ===
5
-
6
-
7
- class WorkOS:
8
- @staticmethod
9
- def on_user_created() -> TriggerConfig[WorkOSUserCreatedTrigger]:
10
- return TriggerConfig(
11
- integration_id={{{workos.instanceIdRepr}}},
12
- integration_type='workos',
13
- config_type='workos_input',
14
- config=_compact_dict(eventTypes=[WorkOSEventType.user_created]),
15
- )
16
-
17
- @staticmethod
18
- def on_user_updated() -> TriggerConfig[WorkOSUserUpdatedTrigger]:
19
- return TriggerConfig(
20
- integration_id={{{workos.instanceIdRepr}}},
21
- integration_type='workos',
22
- config_type='workos_input',
23
- config=_compact_dict(eventTypes=[WorkOSEventType.user_updated]),
24
- )
25
-
26
- @staticmethod
27
- def on_user_deleted() -> TriggerConfig[WorkOSUserDeletedTrigger]:
28
- return TriggerConfig(
29
- integration_id={{{workos.instanceIdRepr}}},
30
- integration_type='workos',
31
- config_type='workos_input',
32
- config=_compact_dict(eventTypes=[WorkOSEventType.user_deleted]),
33
- )
34
-
35
- @staticmethod
36
- def on_membership_created() -> TriggerConfig[WorkOSOrganizationMembershipCreatedTrigger]:
37
- return TriggerConfig(
38
- integration_id={{{workos.instanceIdRepr}}},
39
- integration_type='workos',
40
- config_type='workos_input',
41
- config=_compact_dict(eventTypes=[WorkOSEventType.organization_membership_created]),
42
- )
43
-
44
- @staticmethod
45
- def on_membership_updated() -> TriggerConfig[WorkOSOrganizationMembershipUpdatedTrigger]:
46
- return TriggerConfig(
47
- integration_id={{{workos.instanceIdRepr}}},
48
- integration_type='workos',
49
- config_type='workos_input',
50
- config=_compact_dict(eventTypes=[WorkOSEventType.organization_membership_updated]),
51
- )
52
-
53
- @staticmethod
54
- def on_membership_deleted() -> TriggerConfig[WorkOSOrganizationMembershipDeletedTrigger]:
55
- return TriggerConfig(
56
- integration_id={{{workos.instanceIdRepr}}},
57
- integration_type='workos',
58
- config_type='workos_input',
59
- config=_compact_dict(eventTypes=[WorkOSEventType.organization_membership_deleted]),
60
- )
61
-
62
- @staticmethod
63
- def on_membership_changed() -> TriggerConfig[WorkOSMembershipTrigger]:
64
- return TriggerConfig(
65
- integration_id={{{workos.instanceIdRepr}}},
66
- integration_type='workos',
67
- config_type='workos_input',
68
- config=_compact_dict(
69
- eventTypes=[
70
- WorkOSEventType.organization_membership_created,
71
- WorkOSEventType.organization_membership_updated,
72
- WorkOSEventType.organization_membership_deleted,
73
- ],
74
- ),
75
- )
76
-
77
- @staticmethod
78
- def on_invitation_sent() -> TriggerConfig[WorkOSInvitationTrigger]:
79
- return TriggerConfig(
80
- integration_id={{{workos.instanceIdRepr}}},
81
- integration_type='workos',
82
- config_type='workos_input',
83
- config=_compact_dict(
84
- eventTypes=[
85
- WorkOSEventType.invitation_created,
86
- WorkOSEventType.invitation_resent,
87
- ],
88
- ),
89
- )
90
-
91
- @staticmethod
92
- def on_invitation_created() -> TriggerConfig[WorkOSInvitationCreatedTrigger]:
93
- return TriggerConfig(
94
- integration_id={{{workos.instanceIdRepr}}},
95
- integration_type='workos',
96
- config_type='workos_input',
97
- config=_compact_dict(eventTypes=[WorkOSEventType.invitation_created]),
98
- )
99
-
100
- @staticmethod
101
- def on_invitation_resent() -> TriggerConfig[WorkOSInvitationResentTrigger]:
102
- return TriggerConfig(
103
- integration_id={{{workos.instanceIdRepr}}},
104
- integration_type='workos',
105
- config_type='workos_input',
106
- config=_compact_dict(eventTypes=[WorkOSEventType.invitation_resent]),
107
- )
108
-
109
- @staticmethod
110
- def on_invitation_accepted() -> TriggerConfig[WorkOSInvitationAcceptedTrigger]:
111
- return TriggerConfig(
112
- integration_id={{{workos.instanceIdRepr}}},
113
- integration_type='workos',
114
- config_type='workos_input',
115
- config=_compact_dict(eventTypes=[WorkOSEventType.invitation_accepted]),
116
- )
117
-
118
- @staticmethod
119
- def on_invitation_revoked() -> TriggerConfig[WorkOSInvitationRevokedTrigger]:
120
- return TriggerConfig(
121
- integration_id={{{workos.instanceIdRepr}}},
122
- integration_type='workos',
123
- config_type='workos_input',
124
- config=_compact_dict(eventTypes=[WorkOSEventType.invitation_revoked]),
125
- )
126
-
127
- @staticmethod
128
- def on_organization_created() -> TriggerConfig[WorkOSOrganizationTrigger]:
129
- return TriggerConfig(
130
- integration_id={{{workos.instanceIdRepr}}},
131
- integration_type='workos',
132
- config_type='workos_input',
133
- config=_compact_dict(eventTypes=[WorkOSEventType.organization_created]),
134
- )
135
-
136
- @staticmethod
137
- def trigger(
138
- *,
139
- event_types: Sequence[WorkOSEventType] | None = None,
140
- ) -> TriggerConfig[WorkOSTrigger]:
141
- return TriggerConfig(
142
- integration_id={{{workos.instanceIdRepr}}},
143
- integration_type='workos',
144
- config_type='workos_input',
145
- config=_compact_dict(
146
- eventTypes=list(event_types) if event_types is not None else None,
147
- ),
148
- )
149
- {{~/if}}
@@ -1 +0,0 @@
1
- 3.11
@@ -1,68 +0,0 @@
1
- # {{projectName}}
2
-
3
- Project scaffolded by `terse-cli`.
4
-
5
- ## Prerequisites
6
-
7
- - Python `>=3.11`
8
- - [`uv`](https://docs.astral.sh/uv/getting-started/installation/) for dependency management and local commands
9
-
10
- If `terse init` did not install dependencies automatically, install `uv` and run:
11
-
12
- ```bash
13
- uv sync
14
- ```
15
-
16
- ## Quick Start
17
-
18
- ```bash
19
- uv sync
20
- terse test
21
- terse deploy
22
- ```
23
-
24
- Edit `src/main.py` to register jobs with `@app.job(...)`.
25
-
26
- ## Generated Helpers
27
-
28
- The starter scaffold shows generated `GitHub` trigger/skill helpers alongside `Slack.skill(...)`.
29
-
30
- After you connect GitHub, Attio, Slack, or Snowflake in Terse, rerun `terse generate` to refresh `src/terse_generated.py` with the real integration IDs, generated resources, and deterministic tool wrappers.
31
-
32
- Import helpers like `GitHub`, `GitHubRepo`, `Attio`, `AttioObject`, `Schedule`, `Slack`, `SlackChannel`, `Snowflake`, and `TerseAgent` from `terse_generated`.
33
-
34
- ## Writing a Job
35
-
36
- Register jobs on the `Terse` app, then build a `TerseAgent` inside the handler with the prompt and skills you want the model to see:
37
-
38
- ```python
39
- from terse_sdk import Terse
40
- from terse_sdk.types.events import GithubPRTrigger
41
- from terse_generated import GitHub, GitHubRepo, Slack, SlackChannel, TerseAgent
42
-
43
- app = Terse()
44
-
45
-
46
- @app.job(
47
- name="summarise-prs",
48
- triggers=[GitHub.on_pr(repo=GitHubRepo.Terse)],
49
- )
50
- def summarise_prs(event: GithubPRTrigger) -> None:
51
- agent = TerseAgent(
52
- prompt="You summarise pull requests.",
53
- skills=[
54
- GitHub.skill(repos=[GitHubRepo.Terse]),
55
- Slack.skill(channel=SlackChannel.AllTerseInc),
56
- ],
57
- )
58
- agent.run_and_wait(f"Summarise: {event.formatted_content}")
59
- ```
60
-
61
- Skills control what the model can do during `agent.run()` / `agent.run_and_wait()`. If the skill also has deterministic tool wrappers (Slack, Attio, Snowflake), they are auto-attached on `agent.tools.*`:
62
-
63
- ```python
64
- agent.tools.snowflake.execute_query(query="select 1")
65
- agent.tools.slack.send_message(channel_id=SlackChannel.AllTerseInc.channel_id, message="hi")
66
- ```
67
-
68
- `skills=[GitHub.skill(repos=[...])]` exposes repo-scoped GitHub tools to the model, but does not add deterministic `agent.tools.github.*` wrappers.
@@ -1 +0,0 @@
1
- TERSE_API_KEY=
@@ -1,3 +0,0 @@
1
- .venv
2
- __pycache__
3
- .env
@@ -1,16 +0,0 @@
1
- [project]
2
- name = "{{projectName}}"
3
- version = "0.1.0"
4
- requires-python = ">=3.11"
5
- dependencies = [
6
- "{{sdkDependency}}",
7
- ]
8
-
9
- [tool.uv]
10
- package = false
11
-
12
- [dependency-groups]
13
- dev = ["ty"]
14
-
15
- [tool.ty.environment]
16
- python = ".venv"
@@ -1,23 +0,0 @@
1
- from terse_sdk import Terse
2
- from terse_sdk.types.events import GithubPRTrigger
3
-
4
- from terse_generated import GitHub, GitHubRepo, Slack, SlackChannel, TerseAgent
5
-
6
- app = Terse()
7
-
8
-
9
- @app.job(
10
- name="{{projectName}}",
11
- triggers=[GitHub.on_pr(repo=GitHubRepo.Terse)],
12
- )
13
- def run_job(event: GithubPRTrigger) -> None:
14
- agent = TerseAgent(
15
- prompt="You summarise GitHub pull requests and post concise updates to Slack.",
16
- skills=[
17
- GitHub.skill(repos=[GitHubRepo.Terse]),
18
- Slack.skill(channel=SlackChannel.AllTerseInc),
19
- ],
20
- )
21
- agent.run_and_wait(
22
- f"Summarise this PR and post a short update to Slack: {event.formatted_content}"
23
- )