@alvera-ai/platform-sdk 0.7.2 → 0.8.0

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.
@@ -0,0 +1,246 @@
1
+ import { Command } from 'commander';
2
+ import { type GlobalOpts, authedApi, bodyOption, readBody, resolveTenant, run } from './helpers.js';
3
+
4
+ export function register(program: Command): void {
5
+ const workflows = program.command('workflows').description('Agentic workflows');
6
+
7
+ workflows
8
+ .command('list <datalake> [tenant]')
9
+ .description('List workflow definitions in a datalake')
10
+ .action(async (datalake: string, tenant: string | undefined) => {
11
+ await run(async () => {
12
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
13
+ const { data } = await api.workflows.list(
14
+ resolveTenant(tenant, resolved.tenantSlug),
15
+ datalake,
16
+ );
17
+ return data;
18
+ });
19
+ });
20
+
21
+ workflows
22
+ .command('get <datalake> <id> [tenant]')
23
+ .description('Get a workflow by id')
24
+ .action(async (datalake: string, id: string, tenant: string | undefined) => {
25
+ await run(async () => {
26
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
27
+ const { data } = await api.workflows.get(
28
+ resolveTenant(tenant, resolved.tenantSlug),
29
+ datalake,
30
+ id,
31
+ );
32
+ return data;
33
+ });
34
+ });
35
+
36
+ bodyOption(workflows.command('create <datalake> [tenant]').description('Create a workflow'))
37
+ .action(async (datalake: string, tenant: string | undefined, opts: Record<string, string>) => {
38
+ await run(async () => {
39
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
40
+ const { data } = await api.workflows.create(
41
+ resolveTenant(tenant, resolved.tenantSlug),
42
+ datalake,
43
+ readBody(opts.body, opts.bodyFile),
44
+ );
45
+ return data;
46
+ });
47
+ });
48
+
49
+ bodyOption(workflows.command('update <datalake> <id> [tenant]').description('Update a workflow'))
50
+ .action(async (datalake: string, id: string, tenant: string | undefined, opts: Record<string, string>) => {
51
+ await run(async () => {
52
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
53
+ const { data } = await api.workflows.update(
54
+ resolveTenant(tenant, resolved.tenantSlug),
55
+ datalake,
56
+ id,
57
+ readBody(opts.body, opts.bodyFile),
58
+ );
59
+ return data;
60
+ });
61
+ });
62
+
63
+ workflows
64
+ .command('delete <datalake> <id> [tenant]')
65
+ .description('Delete a workflow')
66
+ .action(async (datalake: string, id: string, tenant: string | undefined) => {
67
+ await run(async () => {
68
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
69
+ const { data } = await api.workflows.delete(
70
+ resolveTenant(tenant, resolved.tenantSlug),
71
+ datalake,
72
+ id,
73
+ );
74
+ return data;
75
+ });
76
+ });
77
+
78
+ workflows
79
+ .command('metadata <datalake> <id> [tenant]')
80
+ .description('Get markdown metadata for a workflow')
81
+ .action(async (datalake: string, id: string, tenant: string | undefined) => {
82
+ await run(async () => {
83
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
84
+ const { data } = await api.workflows.metadata(
85
+ resolveTenant(tenant, resolved.tenantSlug),
86
+ datalake,
87
+ id,
88
+ );
89
+ return data;
90
+ });
91
+ });
92
+
93
+ bodyOption(
94
+ workflows.command('execute <workflow-slug> [tenant]').description('Execute an agentic workflow'),
95
+ )
96
+ .action(async (workflowSlug: string, tenant: string | undefined, opts: Record<string, string>) => {
97
+ await run(async () => {
98
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
99
+ const { data } = await api.workflows.execute(
100
+ resolveTenant(tenant, resolved.tenantSlug),
101
+ workflowSlug,
102
+ readBody(opts.body, opts.bodyFile),
103
+ );
104
+ return data;
105
+ });
106
+ });
107
+
108
+ bodyOption(
109
+ workflows
110
+ .command('run <workflow-slug> [tenant]')
111
+ .description('Run a workflow across records matched by a SQL WHERE clause'),
112
+ )
113
+ .action(async (workflowSlug: string, tenant: string | undefined, opts: Record<string, string>) => {
114
+ await run(async () => {
115
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
116
+ const { data } = await api.workflows.run(
117
+ resolveTenant(tenant, resolved.tenantSlug),
118
+ workflowSlug,
119
+ readBody(opts.body, opts.bodyFile),
120
+ );
121
+ return data;
122
+ });
123
+ });
124
+
125
+ workflows
126
+ .command('batch-logs <workflow-slug> [tenant]')
127
+ .description('List batch logs for a workflow')
128
+ .action(async (workflowSlug: string, tenant: string | undefined) => {
129
+ await run(async () => {
130
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
131
+ const { data } = await api.workflows.batchLogs.list(
132
+ resolveTenant(tenant, resolved.tenantSlug),
133
+ workflowSlug,
134
+ );
135
+ return data;
136
+ });
137
+ });
138
+
139
+ workflows
140
+ .command('batch-log <workflow-slug> <id> [tenant]')
141
+ .description('Get a single batch log by id')
142
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined) => {
143
+ await run(async () => {
144
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
145
+ const { data } = await api.workflows.batchLogs.get(
146
+ resolveTenant(tenant, resolved.tenantSlug),
147
+ workflowSlug,
148
+ id,
149
+ );
150
+ return data;
151
+ });
152
+ });
153
+
154
+ workflows
155
+ .command('batch-log-start <workflow-slug> <id> [tenant]')
156
+ .description('Start polling a batch log')
157
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined) => {
158
+ await run(async () => {
159
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
160
+ const { data } = await api.workflows.batchLogs.start(
161
+ resolveTenant(tenant, resolved.tenantSlug),
162
+ workflowSlug,
163
+ id,
164
+ );
165
+ return data;
166
+ });
167
+ });
168
+
169
+ workflows
170
+ .command('batch-log-stop <workflow-slug> <id> [tenant]')
171
+ .description('Stop polling a batch log')
172
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined) => {
173
+ await run(async () => {
174
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
175
+ const { data } = await api.workflows.batchLogs.stop(
176
+ resolveTenant(tenant, resolved.tenantSlug),
177
+ workflowSlug,
178
+ id,
179
+ );
180
+ return data;
181
+ });
182
+ });
183
+
184
+ workflows
185
+ .command('batch-log-refresh <workflow-slug> <id> [tenant]')
186
+ .description('Force-refresh a batch log')
187
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined) => {
188
+ await run(async () => {
189
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
190
+ const { data } = await api.workflows.batchLogs.refresh(
191
+ resolveTenant(tenant, resolved.tenantSlug),
192
+ workflowSlug,
193
+ id,
194
+ );
195
+ return data;
196
+ });
197
+ });
198
+
199
+ workflows
200
+ .command('workflow-logs <workflow-slug> [tenant]')
201
+ .description('List execution logs for a workflow')
202
+ .action(async (workflowSlug: string, tenant: string | undefined) => {
203
+ await run(async () => {
204
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
205
+ const { data } = await api.workflows.workflowLogs.list(
206
+ resolveTenant(tenant, resolved.tenantSlug),
207
+ workflowSlug,
208
+ );
209
+ return data;
210
+ });
211
+ });
212
+
213
+ workflows
214
+ .command('workflow-log <workflow-slug> <id> [tenant]')
215
+ .description('Get a single execution log by id')
216
+ .option('--data-access-mode <mode>', 'regulated or unregulated')
217
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined, opts: Record<string, string>) => {
218
+ await run(async () => {
219
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
220
+ const { data } = await api.workflows.workflowLogs.get(
221
+ resolveTenant(tenant, resolved.tenantSlug),
222
+ workflowSlug,
223
+ id,
224
+ opts.dataAccessMode
225
+ ? { dataAccessMode: opts.dataAccessMode as 'regulated' | 'unregulated' }
226
+ : undefined,
227
+ );
228
+ return data;
229
+ });
230
+ });
231
+
232
+ workflows
233
+ .command('workflow-log-download <workflow-slug> <id> [tenant]')
234
+ .description('Get a presigned download URL for an execution log')
235
+ .action(async (workflowSlug: string, id: string, tenant: string | undefined) => {
236
+ await run(async () => {
237
+ const { api, resolved } = authedApi(program.opts<GlobalOpts>());
238
+ const { data } = await api.workflows.workflowLogs.download(
239
+ resolveTenant(tenant, resolved.tenantSlug),
240
+ workflowSlug,
241
+ id,
242
+ );
243
+ return data;
244
+ });
245
+ });
246
+ }