larkci 0.2.3 → 0.2.5

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 (51) hide show
  1. package/README.md +266 -18
  2. package/dist/api/client.d.ts +48 -5
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +98 -20
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/types.d.ts +80 -11
  7. package/dist/api/types.d.ts.map +1 -1
  8. package/dist/commands/archive-workflow.d.ts +3 -0
  9. package/dist/commands/archive-workflow.d.ts.map +1 -0
  10. package/dist/commands/archive-workflow.js +47 -0
  11. package/dist/commands/archive-workflow.js.map +1 -0
  12. package/dist/commands/create-workflow.d.ts.map +1 -1
  13. package/dist/commands/create-workflow.js +2 -0
  14. package/dist/commands/create-workflow.js.map +1 -1
  15. package/dist/commands/events.d.ts +3 -0
  16. package/dist/commands/events.d.ts.map +1 -0
  17. package/dist/commands/events.js +34 -0
  18. package/dist/commands/events.js.map +1 -0
  19. package/dist/commands/execution.d.ts.map +1 -1
  20. package/dist/commands/execution.js +0 -26
  21. package/dist/commands/execution.js.map +1 -1
  22. package/dist/commands/generations.d.ts +3 -0
  23. package/dist/commands/generations.d.ts.map +1 -0
  24. package/dist/commands/generations.js +30 -0
  25. package/dist/commands/generations.js.map +1 -0
  26. package/dist/commands/get-workflow.d.ts +3 -0
  27. package/dist/commands/get-workflow.d.ts.map +1 -0
  28. package/dist/commands/get-workflow.js +26 -0
  29. package/dist/commands/get-workflow.js.map +1 -0
  30. package/dist/commands/list-workflows.d.ts.map +1 -1
  31. package/dist/commands/list-workflows.js +2 -0
  32. package/dist/commands/list-workflows.js.map +1 -1
  33. package/dist/commands/repairs.d.ts +3 -0
  34. package/dist/commands/repairs.d.ts.map +1 -0
  35. package/dist/commands/repairs.js +123 -0
  36. package/dist/commands/repairs.js.map +1 -0
  37. package/dist/commands/secret-contexts.d.ts +3 -0
  38. package/dist/commands/secret-contexts.d.ts.map +1 -0
  39. package/dist/commands/secret-contexts.js +152 -0
  40. package/dist/commands/secret-contexts.js.map +1 -0
  41. package/dist/commands/update-workflow.d.ts +3 -0
  42. package/dist/commands/update-workflow.d.ts.map +1 -0
  43. package/dist/commands/update-workflow.js +48 -0
  44. package/dist/commands/update-workflow.js.map +1 -0
  45. package/dist/commands/workflow-groups.d.ts +3 -0
  46. package/dist/commands/workflow-groups.d.ts.map +1 -0
  47. package/dist/commands/workflow-groups.js +126 -0
  48. package/dist/commands/workflow-groups.js.map +1 -0
  49. package/dist/index.js +17 -1
  50. package/dist/index.js.map +1 -1
  51. package/package.json +1 -1
package/README.md CHANGED
@@ -58,6 +58,7 @@ larkci workflows create --name "login-flow" --description "Test the login proces
58
58
  | `--description <description>` | Yes | Workflow description | |
59
59
  | `--mode <mode>` | No | Execution mode: `ai_driven` or `deterministic` | `ai_driven` |
60
60
  | `--secret-contexts <contexts...>` | No | Secret contexts to attach to the workflow | |
61
+ | `--group-id <groupId>` | No | Workflow group ID to assign this workflow to | |
61
62
 
62
63
  ```bash
63
64
  # Create a deterministic workflow with secret contexts
@@ -68,16 +69,57 @@ larkci workflows create \
68
69
  --secret-contexts production staging
69
70
  ```
70
71
 
72
+ #### `workflows get` — Get workflow details
73
+
74
+ ```bash
75
+ larkci workflows get <workflow_id>
76
+ ```
77
+
78
+ Returns the full workflow resource including status, mode, schedule, and last execution/generation/repair info.
79
+
80
+ #### `workflows update` — Update a workflow
81
+
82
+ ```bash
83
+ larkci workflows update <workflow_id> --name "new-name" --description "updated description"
84
+ ```
85
+
86
+ | Flag | Description |
87
+ | --------------------------------- | ----------------------------------------------------- |
88
+ | `--name <name>` | New name for the workflow |
89
+ | `--description <description>` | New description for the workflow |
90
+ | `--secret-contexts <contexts...>` | Secret contexts to attach |
91
+ | `--schedule <cron>` | Cron schedule for the workflow |
92
+ | `--group-id <groupId>` | Workflow group ID (use `null` to ungroup) |
93
+
94
+ At least one option is required.
95
+
96
+ #### `workflows archive` — Archive a workflow
97
+
98
+ ```bash
99
+ larkci workflows archive <workflow_id>
100
+ ```
101
+
102
+ Archived workflows are hidden from the default list and cannot be invoked until unarchived.
103
+
104
+ #### `workflows unarchive` — Unarchive a workflow
105
+
106
+ ```bash
107
+ larkci workflows unarchive <workflow_id>
108
+ ```
109
+
110
+ Restores an archived workflow so it appears in the list and can be invoked again.
111
+
71
112
  #### `workflows list` — List workflows
72
113
 
73
114
  ```bash
74
115
  larkci workflows list
75
116
  ```
76
117
 
77
- | Flag | Description | Default |
78
- | ------------------ | ------------------------------- | ------- |
79
- | `--limit <number>` | Max workflows to return (1–100) | `10` |
80
- | `--offset <number>`| Number of workflows to skip | `0` |
118
+ | Flag | Description | Default |
119
+ | --------------------- | ------------------------------------ | ------- |
120
+ | `--limit <number>` | Max workflows to return (1–100) | `10` |
121
+ | `--offset <number>` | Number of workflows to skip | `0` |
122
+ | `--group-id <groupId>`| Filter workflows by group ID | |
81
123
 
82
124
  #### `workflows invoke` — Invoke workflows
83
125
 
@@ -101,17 +143,6 @@ Either `--workflow-ids` or `--all` is required.
101
143
 
102
144
  Exit codes: `0` = success, `1` = workflow failure, `2` = timeout, `3` = unexpected error.
103
145
 
104
- #### `workflows executions list` — List executions
105
-
106
- ```bash
107
- larkci workflows executions list <workflow_id>
108
- ```
109
-
110
- | Flag | Description | Default |
111
- | ------------------ | -------------------------------- | ------- |
112
- | `--limit <number>` | Max executions to return (1–100) | `10` |
113
- | `--offset <number>`| Number of executions to skip | `0` |
114
-
115
146
  #### `workflows executions get` — Get execution details
116
147
 
117
148
  ```bash
@@ -130,15 +161,196 @@ larkci workflows executions logs <workflow_id> <execution_id>
130
161
  larkci workflows executions cancel <workflow_id> <execution_id>
131
162
  ```
132
163
 
164
+ #### `workflows repairs trigger` — Trigger a workflow repair
165
+
166
+ ```bash
167
+ larkci workflows repairs trigger <workflow_id>
168
+ ```
169
+
170
+ Triggers a repair for a workflow. Returns the repair resource.
171
+
172
+ #### `workflows repairs list` — List workflow repairs
173
+
174
+ ```bash
175
+ larkci workflows repairs list <workflow_id>
176
+ ```
177
+
178
+ | Flag | Description | Default |
179
+ | ------------------ | ------------------------------ | ------- |
180
+ | `--limit <number>` | Max repairs to return (1–100) | `10` |
181
+ | `--offset <number>`| Number of repairs to skip | `0` |
182
+
183
+ #### `workflows repairs get` — Get repair details
184
+
185
+ ```bash
186
+ larkci workflows repairs get <workflow_id> <repair_id>
187
+ ```
188
+
189
+ #### `workflows repairs cancel` — Cancel a running repair
190
+
191
+ ```bash
192
+ larkci workflows repairs cancel <workflow_id> <repair_id>
193
+ ```
194
+
195
+ #### `workflows repairs logs` — Get repair logs
196
+
197
+ ```bash
198
+ larkci workflows repairs logs <workflow_id> <repair_id>
199
+ ```
200
+
201
+ #### `workflows generations cancel` — Cancel a running generation
202
+
203
+ ```bash
204
+ larkci workflows generations cancel <workflow_id> <generation_id>
205
+ ```
206
+
207
+ #### `workflows events list` — List workflow events
208
+
209
+ ```bash
210
+ larkci workflows events list <workflow_id>
211
+ ```
212
+
213
+ | Flag | Description | Default |
214
+ | ------------------ | ----------------------------- | ------- |
215
+ | `--limit <number>` | Max events to return (1–100) | `10` |
216
+ | `--offset <number>`| Number of events to skip | `0` |
217
+
218
+ Lists all events (generations, executions, repairs) for a workflow.
219
+
220
+ #### `workflow-groups create` — Create a workflow group
221
+
222
+ ```bash
223
+ larkci workflow-groups create --name "Checkout Flow"
224
+ ```
225
+
226
+ | Flag | Required | Description |
227
+ | -------------- | -------- | ---------------------------- |
228
+ | `--name <name>`| Yes | Name of the workflow group |
229
+
230
+ #### `workflow-groups list` — List workflow groups
231
+
232
+ ```bash
233
+ larkci workflow-groups list
234
+ ```
235
+
236
+ | Flag | Description | Default |
237
+ | ------------------ | ----------------------------- | ------- |
238
+ | `--limit <number>` | Max groups to return (1–100) | `10` |
239
+ | `--offset <number>`| Number of groups to skip | `0` |
240
+
241
+ #### `workflow-groups get` — Get a workflow group
242
+
243
+ ```bash
244
+ larkci workflow-groups get <group_id>
245
+ ```
246
+
247
+ #### `workflow-groups update` — Update a workflow group
248
+
249
+ ```bash
250
+ larkci workflow-groups update <group_id> --name "Updated Name"
251
+ ```
252
+
253
+ | Flag | Description |
254
+ | --------------- | -------------------------------- |
255
+ | `--name <name>` | New name for the workflow group |
256
+
257
+ #### `workflow-groups delete` — Delete a workflow group
258
+
259
+ ```bash
260
+ larkci workflow-groups delete <group_id>
261
+ ```
262
+
263
+ Workflows in the group become ungrouped.
264
+
265
+ #### `secret-contexts list` — List secret contexts
266
+
267
+ ```bash
268
+ larkci secret-contexts list
269
+ ```
270
+
271
+ Returns all secret context names and metadata for your account. Does not return secret values.
272
+
273
+ #### `secret-contexts get` — Get a secret context
274
+
275
+ ```bash
276
+ larkci secret-contexts get <context>
277
+ ```
278
+
279
+ Returns the context name and the list of key names stored in it. Does not return secret values.
280
+
281
+ #### `secret-contexts create` — Create or replace a secret context
282
+
283
+ ```bash
284
+ larkci secret-contexts create --context production --secret username=admin --secret password=s3cret
285
+ ```
286
+
287
+ | Flag | Required | Description |
288
+ | --------------------------- | -------- | -------------------------------------------------- |
289
+ | `--context <name>` | Yes | Name of the secret context |
290
+ | `--secret <key=value>` | Yes | Secret key-value pair (repeat for multiple values) |
291
+
292
+ ```bash
293
+ # Create a secret context with multiple credentials
294
+ larkci secret-contexts create \
295
+ --context staging \
296
+ --secret api_key=sk_test_abc123 \
297
+ --secret username=testuser \
298
+ --secret password=testpass
299
+ ```
300
+
301
+ #### `secret-contexts update` — Update a key in a secret context
302
+
303
+ ```bash
304
+ larkci secret-contexts update <context> --key <key> --value <value>
305
+ ```
306
+
307
+ | Flag | Required | Description |
308
+ | ----------------- | -------- | ------------------------------------ |
309
+ | `--key <key>` | Yes | The key to create or update |
310
+ | `--value <value>` | Yes | The new value for the key |
311
+
312
+ If the key already exists its value is replaced; if it does not exist it is added.
313
+
314
+ #### `secret-contexts delete` — Delete a secret context
315
+
316
+ ```bash
317
+ larkci secret-contexts delete <context>
318
+ ```
319
+
320
+ Permanently deletes a secret context. Workflows referencing it will no longer have access.
321
+
322
+ #### `secret-contexts delete-key` — Delete a key from a secret context
323
+
324
+ ```bash
325
+ larkci secret-contexts delete-key <context> <key>
326
+ ```
327
+
328
+ Removes a single key-value pair from an existing secret context.
329
+
133
330
  ### Examples
134
331
 
135
332
  ```bash
136
333
  # Create a workflow
137
334
  larkci workflows create --name "signup-flow" --description "Test user signup"
138
335
 
336
+ # Get workflow details
337
+ larkci workflows get wf_abc123
338
+
339
+ # Update a workflow
340
+ larkci workflows update wf_abc123 --name "updated-signup-flow" --schedule "0 9 * * *"
341
+
139
342
  # List your workflows
140
343
  larkci workflows list --limit 20
141
344
 
345
+ # List workflows in a group
346
+ larkci workflows list --group-id grp_abc123
347
+
348
+ # Archive a workflow
349
+ larkci workflows archive wf_abc123
350
+
351
+ # Unarchive a workflow
352
+ larkci workflows unarchive wf_abc123
353
+
142
354
  # Invoke a workflow but don't wait for completion
143
355
  larkci workflows invoke --workflow-ids wf_abc123
144
356
 
@@ -148,9 +360,6 @@ larkci workflows invoke --workflow-ids wf_abc123 --wait
148
360
  # Invoke and wait (up to 5 minutes) with verbose logs
149
361
  larkci workflows invoke --workflow-ids wf_abc123 --wait --timeout 300 --verbose
150
362
 
151
- # List recent executions for a workflow
152
- larkci workflows executions list wf_abc123
153
-
154
363
  # Check execution status
155
364
  larkci workflows executions get wf_abc123 exec_xyz789
156
365
 
@@ -160,8 +369,47 @@ larkci workflows executions logs wf_abc123 exec_xyz789
160
369
  # Cancel a running execution
161
370
  larkci workflows executions cancel wf_abc123 exec_xyz789
162
371
 
372
+ # Trigger a repair
373
+ larkci workflows repairs trigger wf_abc123
374
+
375
+ # List repairs
376
+ larkci workflows repairs list wf_abc123
377
+
378
+ # Cancel a generation
379
+ larkci workflows generations cancel wf_abc123 gen_xyz789
380
+
381
+ # List events
382
+ larkci workflows events list wf_abc123
383
+
384
+ # Create a workflow group
385
+ larkci workflow-groups create --name "Checkout Flow"
386
+
387
+ # List workflow groups
388
+ larkci workflow-groups list
389
+
390
+ # Delete a workflow group
391
+ larkci workflow-groups delete grp_abc123
392
+
163
393
  # Override API key inline
164
394
  larkci --api-key sk-test-key workflows invoke --workflow-ids wf_abc123
395
+
396
+ # Store credentials for a secret context
397
+ larkci secret-contexts create --context production --secret username=admin --secret password=s3cret
398
+
399
+ # Update a single key in a secret context
400
+ larkci secret-contexts update production --key password --value new-s3cret
401
+
402
+ # List all secret contexts
403
+ larkci secret-contexts list
404
+
405
+ # View the keys stored in a secret context
406
+ larkci secret-contexts get production
407
+
408
+ # Delete a key from a secret context
409
+ larkci secret-contexts delete-key production password
410
+
411
+ # Delete a secret context
412
+ larkci secret-contexts delete production
165
413
  ```
166
414
 
167
415
  ## CI Pipeline Usage
@@ -1,5 +1,5 @@
1
1
  import type { Config } from "../config.js";
2
- import type { ListWorkflowExecutionsResponse, ListWorkflowsResponse, WorkflowExecutionResource, WorkflowResource } from "./types.js";
2
+ import type { GetSecretContextResponse, ListSecretContextsResponse, ListWorkflowEventsResponse, ListWorkflowGroupsResponse, ListWorkflowRepairsResponse, ListWorkflowsResponse, WorkflowExecutionResource, WorkflowGenerationResource, WorkflowGroupResource, WorkflowRepairResource, WorkflowResource } from "./types.js";
3
3
  export declare class TimeoutError extends Error {
4
4
  constructor(message: string);
5
5
  }
@@ -13,24 +13,67 @@ export declare class LarkCIClient {
13
13
  private apiKey;
14
14
  constructor(config: Config);
15
15
  private request;
16
+ private buildQueryPath;
16
17
  createWorkflow(options: {
17
18
  name: string;
18
19
  description: string;
19
20
  secret_contexts?: string[];
20
21
  mode?: "ai_driven" | "deterministic";
22
+ group_id?: string;
21
23
  }): Promise<WorkflowResource>;
24
+ getWorkflow(workflowId: string): Promise<WorkflowResource>;
25
+ updateWorkflow(workflowId: string, options: {
26
+ name?: string;
27
+ description?: string;
28
+ secret_contexts?: string[];
29
+ schedule?: string | null;
30
+ group_id?: string | null;
31
+ }): Promise<WorkflowResource>;
32
+ archiveWorkflow(workflowId: string): Promise<WorkflowResource>;
33
+ unarchiveWorkflow(workflowId: string): Promise<WorkflowResource>;
22
34
  invokeWorkflow(workflowId: string): Promise<WorkflowExecutionResource>;
23
35
  listWorkflows(options?: {
24
36
  limit?: number;
25
37
  offset?: number;
38
+ group_id?: string;
26
39
  }): Promise<ListWorkflowsResponse>;
27
- listWorkflowExecutions(workflowId: string, options?: {
28
- limit?: number;
29
- offset?: number;
30
- }): Promise<ListWorkflowExecutionsResponse>;
31
40
  getWorkflowExecution(workflowId: string, executionId: string): Promise<WorkflowExecutionResource>;
32
41
  getWorkflowExecutionLogs(workflowId: string, executionId: string): Promise<string[]>;
33
42
  cancelWorkflowExecution(workflowId: string, executionId: string): Promise<WorkflowExecutionResource>;
43
+ cancelWorkflowGeneration(workflowId: string, generationId: string): Promise<WorkflowGenerationResource>;
44
+ repairWorkflow(workflowId: string): Promise<WorkflowRepairResource>;
45
+ listWorkflowRepairs(workflowId: string, options?: {
46
+ limit?: number;
47
+ offset?: number;
48
+ }): Promise<ListWorkflowRepairsResponse>;
49
+ getWorkflowRepair(workflowId: string, repairId: string): Promise<WorkflowRepairResource>;
50
+ cancelWorkflowRepair(workflowId: string, repairId: string): Promise<WorkflowRepairResource>;
51
+ getWorkflowRepairLogs(workflowId: string, repairId: string): Promise<string[]>;
52
+ listWorkflowEvents(workflowId: string, options?: {
53
+ limit?: number;
54
+ offset?: number;
55
+ }): Promise<ListWorkflowEventsResponse>;
56
+ listSecretContexts(): Promise<ListSecretContextsResponse>;
57
+ getSecretContext(context: string): Promise<GetSecretContextResponse>;
58
+ createSecretContext(options: {
59
+ context: string;
60
+ value: Record<string, string>;
61
+ }): Promise<void>;
62
+ updateSecretContext(context: string, key: string, value: string): Promise<void>;
63
+ deleteSecretContext(context: string): Promise<void>;
64
+ deleteSecretContextKey(context: string, key: string): Promise<void>;
65
+ createWorkflowGroup(options: {
66
+ name: string;
67
+ }): Promise<WorkflowGroupResource>;
68
+ listWorkflowGroups(options?: {
69
+ limit?: number;
70
+ offset?: number;
71
+ }): Promise<ListWorkflowGroupsResponse>;
72
+ getWorkflowGroup(groupId: string): Promise<WorkflowGroupResource>;
73
+ updateWorkflowGroup(groupId: string, options: {
74
+ name?: string;
75
+ }): Promise<WorkflowGroupResource>;
76
+ deleteWorkflowGroup(groupId: string): Promise<void>;
34
77
  pollWorkflowExecution(workflowId: string, executionId: string, options: PollOptions): Promise<WorkflowExecutionResource>;
35
78
  }
36
79
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CACP,SAAS,EAAE,yBAAyB,EACpC,SAAS,EAAE,MAAM,KACd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;YAKZ,OAAO;IAyCf,cAAc,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC;KACtC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIvB,cAAc,CAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,CAAC;IAQ/B,aAAa,CAAC,OAAO,CAAC,EAAE;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAW5B,sBAAsB,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,8BAA8B,CAAC;IAapC,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC;IAO/B,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC;IAOd,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC;IAO/B,qBAAqB,CACzB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,yBAAyB,CAAC;CA+BtC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -40,36 +40,48 @@ export class LarkCIClient {
40
40
  }
41
41
  throw new Error(message);
42
42
  }
43
- return (await response.json());
43
+ const text = await response.text();
44
+ if (!text)
45
+ return undefined;
46
+ return JSON.parse(text);
44
47
  }
48
+ buildQueryPath(basePath, params) {
49
+ const qs = new URLSearchParams();
50
+ for (const [key, value] of Object.entries(params)) {
51
+ if (value !== undefined)
52
+ qs.set(key, String(value));
53
+ }
54
+ const query = qs.toString();
55
+ return query ? `${basePath}?${query}` : basePath;
56
+ }
57
+ // ── Workflows ──────────────────────────────────────────────
45
58
  async createWorkflow(options) {
46
59
  return this.request("POST", "/workflows", options);
47
60
  }
61
+ async getWorkflow(workflowId) {
62
+ return this.request("GET", `/workflows/${workflowId}`);
63
+ }
64
+ async updateWorkflow(workflowId, options) {
65
+ return this.request("PUT", `/workflows/${workflowId}`, options);
66
+ }
67
+ async archiveWorkflow(workflowId) {
68
+ return this.request("POST", `/workflows/${workflowId}/archive`);
69
+ }
70
+ async unarchiveWorkflow(workflowId) {
71
+ return this.request("POST", `/workflows/${workflowId}/unarchive`);
72
+ }
48
73
  async invokeWorkflow(workflowId) {
49
74
  return this.request("POST", `/workflows/${workflowId}/invoke`, {});
50
75
  }
51
76
  async listWorkflows(options) {
52
- const params = new URLSearchParams();
53
- if (options?.limit !== undefined)
54
- params.set("limit", String(options.limit));
55
- if (options?.offset !== undefined)
56
- params.set("offset", String(options.offset));
57
- const query = params.toString();
58
- const path = query ? `/workflows?${query}` : "/workflows";
59
- return this.request("GET", path);
60
- }
61
- async listWorkflowExecutions(workflowId, options) {
62
- const params = new URLSearchParams();
63
- if (options?.limit !== undefined)
64
- params.set("limit", String(options.limit));
65
- if (options?.offset !== undefined)
66
- params.set("offset", String(options.offset));
67
- const query = params.toString();
68
- const path = query
69
- ? `/workflows/${workflowId}/executions?${query}`
70
- : `/workflows/${workflowId}/executions`;
77
+ const path = this.buildQueryPath("/workflows", {
78
+ limit: options?.limit,
79
+ offset: options?.offset,
80
+ group_id: options?.group_id,
81
+ });
71
82
  return this.request("GET", path);
72
83
  }
84
+ // ── Executions ─────────────────────────────────────────────
73
85
  async getWorkflowExecution(workflowId, executionId) {
74
86
  return this.request("GET", `/workflows/${workflowId}/executions/${executionId}`);
75
87
  }
@@ -79,6 +91,72 @@ export class LarkCIClient {
79
91
  async cancelWorkflowExecution(workflowId, executionId) {
80
92
  return this.request("POST", `/workflows/${workflowId}/executions/${executionId}/cancel`);
81
93
  }
94
+ // ── Generations ────────────────────────────────────────────
95
+ async cancelWorkflowGeneration(workflowId, generationId) {
96
+ return this.request("POST", `/workflows/${workflowId}/generations/${generationId}/cancel`);
97
+ }
98
+ // ── Repairs ────────────────────────────────────────────────
99
+ async repairWorkflow(workflowId) {
100
+ return this.request("POST", `/workflows/${workflowId}/repair`);
101
+ }
102
+ async listWorkflowRepairs(workflowId, options) {
103
+ const path = this.buildQueryPath(`/workflows/${workflowId}/repairs`, { limit: options?.limit, offset: options?.offset });
104
+ return this.request("GET", path);
105
+ }
106
+ async getWorkflowRepair(workflowId, repairId) {
107
+ return this.request("GET", `/workflows/${workflowId}/repairs/${repairId}`);
108
+ }
109
+ async cancelWorkflowRepair(workflowId, repairId) {
110
+ return this.request("POST", `/workflows/${workflowId}/repairs/${repairId}/cancel`);
111
+ }
112
+ async getWorkflowRepairLogs(workflowId, repairId) {
113
+ return this.request("GET", `/workflows/${workflowId}/repairs/${repairId}/logs`);
114
+ }
115
+ // ── Events ─────────────────────────────────────────────────
116
+ async listWorkflowEvents(workflowId, options) {
117
+ const path = this.buildQueryPath(`/workflows/${workflowId}/events`, { limit: options?.limit, offset: options?.offset });
118
+ return this.request("GET", path);
119
+ }
120
+ // ── Secret Contexts ────────────────────────────────────────
121
+ async listSecretContexts() {
122
+ return this.request("GET", "/secret-contexts");
123
+ }
124
+ async getSecretContext(context) {
125
+ return this.request("GET", `/secret-contexts/${encodeURIComponent(context)}`);
126
+ }
127
+ async createSecretContext(options) {
128
+ await this.request("POST", "/secret-contexts", options);
129
+ }
130
+ async updateSecretContext(context, key, value) {
131
+ await this.request("PATCH", `/secret-contexts/${encodeURIComponent(context)}`, { key, value });
132
+ }
133
+ async deleteSecretContext(context) {
134
+ await this.request("DELETE", `/secret-contexts/${encodeURIComponent(context)}`);
135
+ }
136
+ async deleteSecretContextKey(context, key) {
137
+ await this.request("DELETE", `/secret-contexts/${encodeURIComponent(context)}/${encodeURIComponent(key)}`);
138
+ }
139
+ // ── Workflow Groups ────────────────────────────────────────
140
+ async createWorkflowGroup(options) {
141
+ return this.request("POST", "/workflow-groups", options);
142
+ }
143
+ async listWorkflowGroups(options) {
144
+ const path = this.buildQueryPath("/workflow-groups", {
145
+ limit: options?.limit,
146
+ offset: options?.offset,
147
+ });
148
+ return this.request("GET", path);
149
+ }
150
+ async getWorkflowGroup(groupId) {
151
+ return this.request("GET", `/workflow-groups/${groupId}`);
152
+ }
153
+ async updateWorkflowGroup(groupId, options) {
154
+ return this.request("PUT", `/workflow-groups/${groupId}`, options);
155
+ }
156
+ async deleteWorkflowGroup(groupId) {
157
+ await this.request("DELETE", `/workflow-groups/${groupId}`);
158
+ }
159
+ // ── Polling ────────────────────────────────────────────────
82
160
  async pollWorkflowExecution(workflowId, executionId, options) {
83
161
  const { timeoutMs, pollIntervalMs, onPoll } = options;
84
162
  const startTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}