epismo 0.20.0 → 1.0.2

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,397 @@
1
+ import { Option } from "commander";
2
+ import { parseJsonArrayOption, parseJsonObjectOption, parseStringArrayInput } from "./input.js";
3
+ import { printJson } from "./output.js";
4
+ import { playbookApi } from "./playbooks.js";
5
+ import { caseApi } from "./cases.js";
6
+ import { suggestionApi } from "./suggestions.js";
7
+ import { recordApi } from "./records.js";
8
+ const number = (value) => Number(value);
9
+ function input(command) {
10
+ return command.option("--input <input>", "JSON object, @file, or - for stdin");
11
+ }
12
+ function paging(command) {
13
+ return command
14
+ .option("--page-size <number>", "results per page (1-100)", number)
15
+ .option("--cursor <cursor>", "cursor returned by the previous page");
16
+ }
17
+ function mutation(command) {
18
+ return input(command).option("--idempotency-key <uuid>", "retry key; generated automatically when omitted");
19
+ }
20
+ async function execute(deps, options, overrides, action) {
21
+ const payload = await deps.resolveInput(options, overrides);
22
+ printJson(await action(await deps.resolveContext(), payload));
23
+ }
24
+ function commonPage(options) {
25
+ return { pageSize: options.pageSize, cursor: options.cursor };
26
+ }
27
+ export function registerPlaybookProgram(program, deps) {
28
+ const playbook = program.command("playbook").description("manage reusable Playbooks");
29
+ paging(input(playbook.command("search").description("search readable Playbooks")))
30
+ .option("--query <text>", "full-text query")
31
+ .addOption(new Option("--category <category>").choices([
32
+ "productivity",
33
+ "programming",
34
+ "design",
35
+ "sales",
36
+ "marketing",
37
+ "operations",
38
+ "learning"
39
+ ]))
40
+ .option("--filter-expression <expression>", "search projection filter")
41
+ .option("--aggregations <json>", "JSON array of aggregation options")
42
+ .action(async (options) => execute(deps, options, {
43
+ query: options.query,
44
+ category: options.category,
45
+ ...commonPage(options),
46
+ filterExpression: options.filterExpression,
47
+ aggregationOptions: parseJsonArrayOption(options.aggregations, "--aggregations")
48
+ }, playbookApi.search));
49
+ mutation(playbook.command("create").description("create a Playbook and its first Version"))
50
+ .option("--owner-id <uuid>", "owner Account ID (defaults to your personal Account)")
51
+ .option("--acl <principals>", "comma-separated ACL principals")
52
+ .option("--definition <json>", "Playbook Definition JSON object")
53
+ .action(async (options) => {
54
+ const context = await deps.resolveContext();
55
+ const payload = await deps.resolveInput(options, {
56
+ ownerId: options.ownerId ?? context.auth.accountId,
57
+ acl: parseStringArrayInput(options.acl, "--acl"),
58
+ definition: parseJsonObjectOption(options.definition, "--definition"),
59
+ idempotencyKey: options.idempotencyKey
60
+ });
61
+ printJson(await playbookApi.create(context, payload));
62
+ });
63
+ playbook
64
+ .command("get")
65
+ .description("get a Playbook and its latest immutable Version")
66
+ .argument("<playbook-id>")
67
+ .action(async (id) => printJson(await playbookApi.get(await deps.resolveContext(), id)));
68
+ const version = playbook.command("version").description("read and publish immutable Versions");
69
+ paging(version.command("list").argument("<playbook-id>").description("list Versions")).action(async (id, options) => execute(deps, options, commonPage(options), (context, payload) => playbookApi.listVersions(context, id, payload)));
70
+ version
71
+ .command("get")
72
+ .argument("<playbook-id>")
73
+ .argument("<version-id>")
74
+ .description("get one immutable Version")
75
+ .action(async (playbookId, versionId) => printJson(await playbookApi.getVersion(await deps.resolveContext(), playbookId, versionId)));
76
+ mutation(version.command("publish").argument("<playbook-id>").description("publish a Version"))
77
+ .option("--base-version-id <uuid>", "current latest Version ID")
78
+ .option("--definition <json>", "new Playbook Definition JSON object")
79
+ .action(async (id, options) => execute(deps, options, {
80
+ baseVersionId: options.baseVersionId,
81
+ definition: parseJsonObjectOption(options.definition, "--definition"),
82
+ idempotencyKey: options.idempotencyKey
83
+ }, (context, payload) => playbookApi.publish(context, id, payload)));
84
+ mutation(playbook.command("acl").argument("<playbook-id>").description("replace the ACL"))
85
+ .requiredOption("--acl <principals>", "comma-separated ACL principals")
86
+ .action(async (id, options) => execute(deps, options, {
87
+ acl: parseStringArrayInput(options.acl, "--acl"),
88
+ idempotencyKey: options.idempotencyKey
89
+ }, (context, payload) => playbookApi.updateAcl(context, id, payload)));
90
+ for (const [name, description, action] of [
91
+ ["archive", "archive a Playbook", playbookApi.archive],
92
+ ["star", "star a Playbook", playbookApi.star],
93
+ ["unstar", "remove a Playbook star", playbookApi.unstar]
94
+ ]) {
95
+ mutation(playbook.command(name).argument("<playbook-id>").description(description)).action(async (id, options) => execute(deps, options, { idempotencyKey: options.idempotencyKey }, (context, payload) => action(context, id, payload)));
96
+ }
97
+ paging(playbook.command("starred").description("list your starred Playbooks")).action(async (options) => execute(deps, options, commonPage(options), playbookApi.listStarred));
98
+ const share = playbook.command("share").description("create short share URLs");
99
+ mutation(share.command("create").argument("<playbook-id>").description("create a share token"))
100
+ .option("--expires-at <timestamp>", "optional ISO-8601 expiration")
101
+ .action(async (id, options) => execute(deps, options, { expiresAt: options.expiresAt, idempotencyKey: options.idempotencyKey }, (context, payload) => playbookApi.createShare(context, id, payload)));
102
+ registerAliasProgram(program, deps);
103
+ registerCaseProgram(program, deps);
104
+ registerTaskProgram(program, deps);
105
+ registerRecordProgram(program, deps);
106
+ registerSuggestionProgram(program, deps);
107
+ }
108
+ function registerAliasProgram(program, deps) {
109
+ const alias = program.command("alias").description("manage Playbook aliases");
110
+ mutation(alias
111
+ .command("set")
112
+ .argument("<alias>")
113
+ .argument("<playbook-id>")
114
+ .description("point an alias at a Playbook, replacing any existing target"))
115
+ .requiredOption("--owner-id <uuid>", "alias namespace owner Account ID")
116
+ .action(async (name, playbookId, options) => execute(deps, options, {
117
+ ownerId: options.ownerId,
118
+ alias: name,
119
+ playbookId,
120
+ idempotencyKey: options.idempotencyKey
121
+ }, playbookApi.setAlias));
122
+ paging(input(alias.command("list").description("list aliases by namespace or Playbook")))
123
+ .option("--owner-id <uuid>", "alias namespace owner Account ID")
124
+ .option("--playbook-id <uuid>", "only aliases pointing at this Playbook")
125
+ .action(async (options) => execute(deps, options, {
126
+ ownerId: options.ownerId,
127
+ playbookId: options.playbookId,
128
+ ...commonPage(options)
129
+ }, playbookApi.listAliases));
130
+ mutation(alias
131
+ .command("delete")
132
+ .argument("<alias>")
133
+ .description("delete an alias without touching the Playbook it pointed at"))
134
+ .requiredOption("--owner-id <uuid>", "alias namespace owner Account ID")
135
+ .action(async (name, options) => execute(deps, options, { ownerId: options.ownerId, idempotencyKey: options.idempotencyKey }, (context, payload) => playbookApi.deleteAlias(context, name, payload)));
136
+ }
137
+ function registerCaseProgram(program, deps) {
138
+ const cases = program.command("case").description("start, assign, and close Cases");
139
+ mutation(cases.command("start").description("start a Playbook or ad-hoc Case"))
140
+ .option("--version-id <uuid>")
141
+ .option("--title <title>")
142
+ .option("--case-input <json>", "Case input JSON object")
143
+ .option("--acl <principals>", "comma-separated ACL principals")
144
+ .action(async (options) => execute(deps, options, {
145
+ versionId: options.versionId,
146
+ title: options.title,
147
+ input: parseJsonObjectOption(options.caseInput, "--case-input"),
148
+ acl: parseStringArrayInput(options.acl, "--acl"),
149
+ idempotencyKey: options.idempotencyKey
150
+ }, caseApi.start));
151
+ cases
152
+ .command("get")
153
+ .argument("<case-id>")
154
+ .description("get a Case with its status, ACL, and lock version")
155
+ .action(async (id) => printJson(await caseApi.get(await deps.resolveContext(), id)));
156
+ paging(input(cases.command("list").description("list readable Cases")))
157
+ .option("--assigned-to <uuid>", "only Cases assigned to this account")
158
+ .addOption(new Option("--status <status>").choices(["open", "closed"]))
159
+ .action(async (options) => execute(deps, options, { assignedTo: options.assignedTo, status: options.status, ...commonPage(options) }, caseApi.list));
160
+ mutation(cases
161
+ .command("assign")
162
+ .argument("<case-id>")
163
+ .description("hand overall responsibility for a Case to a user the ACL already covers"))
164
+ .requiredOption("--assigned-to <uuid>", "account to make responsible for the Case")
165
+ .requiredOption("--lock-version <number>", "expected lock version", number)
166
+ .action(async (id, options) => execute(deps, options, {
167
+ assignedTo: options.assignedTo,
168
+ expectedLockVersion: options.lockVersion,
169
+ idempotencyKey: options.idempotencyKey
170
+ }, (context, payload) => caseApi.assign(context, id, payload)));
171
+ mutation(cases
172
+ .command("acl")
173
+ .argument("<case-id>")
174
+ .description("replace a Case ACL; it must still cover every current assignee"))
175
+ .requiredOption("--acl <principals>", "comma-separated ACL principals")
176
+ .requiredOption("--lock-version <number>", "expected lock version", number)
177
+ .action(async (id, options) => execute(deps, options, {
178
+ acl: parseStringArrayInput(options.acl, "--acl"),
179
+ expectedLockVersion: options.lockVersion,
180
+ idempotencyKey: options.idempotencyKey
181
+ }, (context, payload) => caseApi.updateAcl(context, id, payload)));
182
+ mutation(cases.command("update").argument("<case-id>").description("update editable Case fields"))
183
+ .option("--title <title>")
184
+ .requiredOption("--lock-version <number>", "expected lock version", number)
185
+ .action(async (id, options) => execute(deps, options, {
186
+ title: options.title,
187
+ expectedLockVersion: options.lockVersion,
188
+ idempotencyKey: options.idempotencyKey
189
+ }, (context, payload) => caseApi.update(context, id, payload)));
190
+ mutation(cases
191
+ .command("close")
192
+ .argument("<case-id>")
193
+ .description("close a Case; completed requires no open Tasks, cancelled and abandoned close the rest"))
194
+ .addOption(new Option("--outcome <outcome>").choices(["completed", "cancelled", "abandoned"]))
195
+ .requiredOption("--lock-version <number>", "expected lock version", number)
196
+ .option("--records <json>", "JSON array of final Records")
197
+ .action(async (id, options) => execute(deps, options, {
198
+ outcome: options.outcome,
199
+ expectedLockVersion: options.lockVersion,
200
+ records: parseJsonArrayOption(options.records, "--records"),
201
+ idempotencyKey: options.idempotencyKey
202
+ }, (context, payload) => caseApi.close(context, id, payload)));
203
+ mutation(cases
204
+ .command("reopen")
205
+ .argument("<case-id>")
206
+ .description("reopen a closed Case; its Tasks stay closed until reopened separately"))
207
+ .requiredOption("--lock-version <number>", "expected lock version", number)
208
+ .action(async (id, options) => execute(deps, options, {
209
+ expectedLockVersion: options.lockVersion,
210
+ idempotencyKey: options.idempotencyKey
211
+ }, (context, payload) => caseApi.reopen(context, id, payload)));
212
+ }
213
+ function registerRecordProgram(program, deps) {
214
+ const record = program
215
+ .command("record")
216
+ .description("append Records and browse the ACL-scoped activity feed");
217
+ mutation(record
218
+ .command("append")
219
+ .argument("<case-id>")
220
+ .description("append an immutable Record to an open Case"))
221
+ .option("--task-id <uuid>", "Task this Record belongs to")
222
+ .option("--source-step-id <id>", "four-character Step ID from the Case's pinned Version")
223
+ .option("--kind <kind>", "application-defined Record kind, 1-64 characters")
224
+ .option("--content <text>")
225
+ .option("--data <json>", "Record data JSON object")
226
+ .addOption(new Option("--origin <origin>").choices(["user", "agent"]))
227
+ .option("--client-name <name>")
228
+ .option("--client-version <version>")
229
+ .action(async (id, options) => execute(deps, options, {
230
+ taskId: options.taskId,
231
+ sourceStepId: options.sourceStepId,
232
+ kind: options.kind,
233
+ content: options.content,
234
+ data: parseJsonObjectOption(options.data, "--data"),
235
+ origin: options.origin,
236
+ clientName: options.clientName,
237
+ clientVersion: options.clientVersion,
238
+ idempotencyKey: options.idempotencyKey
239
+ }, (context, payload) => recordApi.append(context, id, payload)));
240
+ paging(input(record
241
+ .command("list")
242
+ .description("browse Records across every readable Case, newest first by default")))
243
+ .option("--case-id <uuid>")
244
+ .option("--task-id <uuid>")
245
+ .option("--created-by <uuid>")
246
+ .option("--kinds <kinds>", "comma-separated Record kinds")
247
+ .option("--origins <origins>", "comma-separated user,agent,system")
248
+ .option("--acl <principals>", "narrow to Cases overlapping these ACL principals")
249
+ .addOption(new Option("--order <order>").choices(["asc", "desc"]).default("desc"))
250
+ .action(async (options) => execute(deps, options, {
251
+ caseId: options.caseId,
252
+ taskId: options.taskId,
253
+ createdBy: options.createdBy,
254
+ kinds: parseStringArrayInput(options.kinds, "--kinds"),
255
+ origins: parseStringArrayInput(options.origins, "--origins"),
256
+ acl: parseStringArrayInput(options.acl, "--acl"),
257
+ order: options.order,
258
+ ...commonPage(options)
259
+ }, recordApi.list));
260
+ }
261
+ function registerTaskProgram(program, deps) {
262
+ const task = program.command("task").description("manage materialized Case Tasks");
263
+ mutation(task
264
+ .command("create")
265
+ .argument("<case-id>")
266
+ .description("create a work or review Task when the work needs its own owner"))
267
+ .addOption(new Option("--kind <kind>").choices(["work", "review"]))
268
+ .option("--title <title>")
269
+ .option("--instructions <text>")
270
+ .option("--source-step-id <id>", "four-character Step ID from the Case's pinned Version")
271
+ .option("--assigned-to <uuid>", "assignee the Case ACL already covers; required for review")
272
+ .option("--subject-record-id <uuid>", "Record under review; review Tasks only")
273
+ .action(async (id, options) => execute(deps, options, {
274
+ kind: options.kind,
275
+ title: options.title,
276
+ instructions: options.instructions,
277
+ sourceStepId: options.sourceStepId,
278
+ assignedTo: options.assignedTo,
279
+ subjectRecordId: options.subjectRecordId,
280
+ idempotencyKey: options.idempotencyKey
281
+ }, (context, payload) => caseApi.createTask(context, id, payload)));
282
+ paging(input(task
283
+ .command("list")
284
+ .description("list Tasks in a Case, or your Tasks across Cases with --assigned-to")))
285
+ .option("--case-id <uuid>")
286
+ .option("--assigned-to <uuid>", "required when --case-id is omitted")
287
+ .addOption(new Option("--status <status>").choices(["open", "closed"]))
288
+ .action(async (options) => execute(deps, options, {
289
+ caseId: options.caseId,
290
+ assignedTo: options.assignedTo,
291
+ status: options.status,
292
+ ...commonPage(options)
293
+ }, caseApi.listTasks));
294
+ mutation(task
295
+ .command("assign")
296
+ .argument("<task-id>")
297
+ .description("assign a Task to a user the Case ACL already covers"))
298
+ .option("--assigned-to <uuid>", "omit in --input to clear assignment")
299
+ .requiredOption("--lock-version <number>", "expected lock version", number)
300
+ .action(async (taskId, options) => execute(deps, options, {
301
+ assignedTo: options.assignedTo,
302
+ expectedLockVersion: options.lockVersion,
303
+ idempotencyKey: options.idempotencyKey
304
+ }, (context, payload) => caseApi.assignTask(context, taskId, payload)));
305
+ mutation(task
306
+ .command("update")
307
+ .argument("<task-id>")
308
+ .description("update editable Task fields while the Task and Case are open"))
309
+ .option("--title <title>")
310
+ .option("--instructions <text>")
311
+ .requiredOption("--lock-version <number>", "expected lock version", number)
312
+ .action(async (taskId, options) => execute(deps, options, {
313
+ title: options.title,
314
+ instructions: options.instructions,
315
+ expectedLockVersion: options.lockVersion,
316
+ idempotencyKey: options.idempotencyKey
317
+ }, (context, payload) => caseApi.updateTask(context, taskId, payload)));
318
+ mutation(task
319
+ .command("close")
320
+ .argument("<task-id>")
321
+ .description("close a Task with an outcome, optionally appending its final Records"))
322
+ .requiredOption("--outcome <outcome>", "free-text result of the Task")
323
+ .requiredOption("--lock-version <number>", "expected lock version", number)
324
+ .option("--records <json>", "JSON array of final Records")
325
+ .action(async (taskId, options) => execute(deps, options, {
326
+ outcome: options.outcome,
327
+ expectedLockVersion: options.lockVersion,
328
+ records: parseJsonArrayOption(options.records, "--records"),
329
+ idempotencyKey: options.idempotencyKey
330
+ }, (context, payload) => caseApi.closeTask(context, taskId, payload)));
331
+ mutation(task
332
+ .command("reopen")
333
+ .argument("<task-id>")
334
+ .description("reopen a closed Task while its parent Case is still open"))
335
+ .requiredOption("--lock-version <number>", "expected lock version", number)
336
+ .action(async (taskId, options) => execute(deps, options, {
337
+ expectedLockVersion: options.lockVersion,
338
+ idempotencyKey: options.idempotencyKey
339
+ }, (context, payload) => caseApi.reopenTask(context, taskId, payload)));
340
+ }
341
+ function registerSuggestionProgram(program, deps) {
342
+ const suggestion = program.command("suggestion").description("manage Playbook Suggestions");
343
+ mutation(suggestion
344
+ .command("create")
345
+ .description("propose a change against an immutable base Version"))
346
+ .option("--playbook-id <uuid>")
347
+ .option("--base-version-id <uuid>", "Version the proposal was written against")
348
+ .option("--target-step-id <id>", "four-character Step ID within the base Version")
349
+ .option("--title <title>")
350
+ .option("--content <text>")
351
+ .action(async (options) => execute(deps, options, {
352
+ playbookId: options.playbookId,
353
+ baseVersionId: options.baseVersionId,
354
+ targetStepId: options.targetStepId,
355
+ title: options.title,
356
+ content: options.content,
357
+ idempotencyKey: options.idempotencyKey
358
+ }, suggestionApi.create));
359
+ suggestion
360
+ .command("get")
361
+ .argument("<suggestion-id>")
362
+ .description("get a Suggestion and its resolution state")
363
+ .action(async (id) => printJson(await suggestionApi.get(await deps.resolveContext(), id)));
364
+ paging(input(suggestion.command("list").description("list readable Suggestions")))
365
+ .option("--playbook-id <uuid>")
366
+ .option("--author-id <uuid>")
367
+ .option("--statuses <statuses>", "comma-separated open,applied,declined,archived")
368
+ .action(async (options) => execute(deps, options, {
369
+ playbookId: options.playbookId,
370
+ authorId: options.authorId,
371
+ statuses: parseStringArrayInput(options.statuses, "--statuses"),
372
+ ...commonPage(options)
373
+ }, suggestionApi.list));
374
+ mutation(suggestion
375
+ .command("update")
376
+ .argument("<suggestion-id>")
377
+ .description("edit your own open Suggestion"))
378
+ .option("--title <title>")
379
+ .option("--content <text>")
380
+ .action(async (id, options) => execute(deps, options, {
381
+ title: options.title,
382
+ content: options.content,
383
+ idempotencyKey: options.idempotencyKey
384
+ }, (context, payload) => suggestionApi.update(context, id, payload)));
385
+ mutation(suggestion
386
+ .command("resolve")
387
+ .argument("<suggestion-id>")
388
+ .description("apply, decline, archive, or reopen a Suggestion"))
389
+ .addOption(new Option("--status <status>").choices(["open", "applied", "declined", "archived"]))
390
+ .option("--result-version-id <uuid>", "Version published from it; required for applied")
391
+ .action(async (id, options) => execute(deps, options, {
392
+ status: options.status,
393
+ resultVersionId: options.resultVersionId,
394
+ idempotencyKey: options.idempotencyKey
395
+ }, (context, payload) => suggestionApi.resolve(context, id, payload)));
396
+ }
397
+ //# sourceMappingURL=playbook-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-program.js","sourceRoot":"","sources":["../src/playbook-program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAExD,SAAS,KAAK,CAAC,OAAgB;IAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC/B,OAAO,OAAO;SACZ,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAC3B,0BAA0B,EAC1B,iDAAiD,CACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CACrB,IAAkB,EAClB,OAA2B,EAC3B,SAAkC,EAClC,MAAyF;IAEzF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,SAAS,CAAC,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,OAAgC;IACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,IAAkB;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAEtF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC;SAChF,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;SAC3C,SAAS,CACT,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;QAC3C,cAAc;QACd,aAAa;QACb,QAAQ;QACR,OAAO;QACP,WAAW;QACX,YAAY;QACZ,UAAU;KACV,CAAC,CACF;SACA,MAAM,CAAC,kCAAkC,EAAE,0BAA0B,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,UAAU,CAAC,OAAO,CAAC;QACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,kBAAkB,EAAE,oBAAoB,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC;KAChF,EACD,WAAW,CAAC,MAAM,CAClB,CACD,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC;SACzF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAChD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS;YAClD,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;YAChD,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC;YACrE,cAAc,EAAE,OAAO,CAAC,cAAc;SACtC,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEJ,QAAQ;SACN,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CAAC,eAAe,CAAC;SACzB,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE,CAC5B,SAAS,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CACjE,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAC/F,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAC5F,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CAC7B,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAChE,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC9C,CACF,CAAC;IACF,OAAO;SACL,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,eAAe,CAAC;SACzB,QAAQ,CAAC,cAAc,CAAC;SACxB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,SAAiB,EAAE,EAAE,CACvD,SAAS,CACR,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,CAChF,CACD,CAAC;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;SAC7F,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;SAC/D,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC;QACrE,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC/D,CACD,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;SACxF,cAAc,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CACjE,CACD,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI;QACzC,CAAC,SAAS,EAAE,oBAAoB,EAAE,WAAW,CAAC,OAAO,CAAC;QACtD,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC;QAC7C,CAAC,QAAQ,EAAE,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC;KAC/C,EAAE,CAAC;QACZ,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CACzF,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CAC7B,OAAO,CACN,IAAI,EACJ,OAAO,EACP,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,EAC1C,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAClD,CACF,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,CAAC,MAAM,CACpF,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CACvF,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC/E,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;SAC7F,MAAM,CAAC,0BAA0B,EAAE,8BAA8B,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,EACxE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CACnE,CACD,CAAC;IAEH,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB,EAAE,IAAkB;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC9E,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,SAAS,CAAC;SACnB,QAAQ,CAAC,eAAe,CAAC;SACzB,WAAW,CAAC,6DAA6D,CAAC,CAC5E;SACC,cAAc,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,UAAkB,EAAE,OAAO,EAAE,EAAE,CAC3D,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,IAAI;QACX,UAAU;QACV,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,WAAW,CAAC,QAAQ,CACpB,CACD,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,CAAC;SACvF,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,EACD,WAAW,CAAC,WAAW,CACvB,CACD,CAAC;IACH,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,SAAS,CAAC;SACnB,WAAW,CAAC,6DAA6D,CAAC,CAC5E;SACC,cAAc,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAO,EAAE,EAAE,CACvC,OAAO,CACN,IAAI,EACJ,OAAO,EACP,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,EACpE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CACrE,CACD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB,EAAE,IAAkB;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IACpF,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;SAC7E,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC;QAC/D,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,OAAO,CAAC,KAAK,CACb,CACD,CAAC;IACH,KAAK;SACH,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE,CAC5B,SAAS,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAC7D,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;SACrE,MAAM,CAAC,sBAAsB,EAAE,qCAAqC,CAAC;SACrE,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAClF,OAAO,CAAC,IAAI,CACZ,CACD,CAAC;IACH,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,yEAAyE,CAAC,CACxF;SACC,cAAc,CAAC,sBAAsB,EAAE,0CAA0C,CAAC;SAClF,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC1D,CACD,CAAC;IACH,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,gEAAgE,CAAC,CAC/E;SACC,cAAc,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;SACtE,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAChD,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC7D,CACD,CAAC;IACH,QAAQ,CACP,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CACxF;SACC,MAAM,CAAC,iBAAiB,CAAC;SACzB,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC1D,CACD,CAAC;IAEH,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CACX,wFAAwF,CACxF,CACF;SACC,SAAS,CACT,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAClF;SACA,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;QAC3D,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CACzD,CACD,CAAC;IACH,QAAQ,CACP,KAAK;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,uEAAuE,CAAC,CACtF;SACC,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC1D,CACD,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAAE,IAAkB;IAClE,MAAM,MAAM,GAAG,OAAO;SACpB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wDAAwD,CAAC,CAAC;IACxE,QAAQ,CACP,MAAM;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,4CAA4C,CAAC,CAC3D;SACC,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,uBAAuB,EAAE,uDAAuD,CAAC;SACxF,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC;SAC3E,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SACrE,MAAM,CAAC,sBAAsB,CAAC;SAC9B,MAAM,CAAC,4BAA4B,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACnD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC5D,CACD,CAAC;IACH,MAAM,CACL,KAAK,CACJ,MAAM;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oEAAoE,CAAC,CACnF,CACD;SACC,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,CAAC;SAChF,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;QAC5D,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,EACD,SAAS,CAAC,IAAI,CACd,CACD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB,EAAE,IAAkB;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IACnF,QAAQ,CACP,IAAI;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,gEAAgE,CAAC,CAC/E;SACC,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;SAClE,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,uBAAuB,EAAE,uDAAuD,CAAC;SACxF,MAAM,CAAC,sBAAsB,EAAE,2DAA2D,CAAC;SAC3F,MAAM,CAAC,4BAA4B,EAAE,wCAAwC,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAC9D,CACD,CAAC;IACH,MAAM,CACL,KAAK,CACJ,IAAI;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qEAAqE,CAAC,CACpF,CACD;SACC,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,sBAAsB,EAAE,oCAAoC,CAAC;SACpE,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,EACD,OAAO,CAAC,SAAS,CACjB,CACD,CAAC;IACH,QAAQ,CACP,IAAI;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,qDAAqD,CAAC,CACpE;SACC,MAAM,CAAC,sBAAsB,EAAE,qCAAqC,CAAC;SACrE,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAClE,CACD,CAAC;IACH,QAAQ,CACP,IAAI;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,8DAA8D,CAAC,CAC7E;SACC,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,uBAAuB,CAAC;SAC/B,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAClE,CACD,CAAC;IACH,QAAQ,CACP,IAAI;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,sEAAsE,CAAC,CACrF;SACC,cAAc,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SACrE,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;QAC3D,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CACjE,CACD,CAAC;IACH,QAAQ,CACP,IAAI;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,0DAA0D,CAAC,CACzE;SACC,cAAc,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAClE,CACD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB,EAAE,IAAkB;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAC5F,QAAQ,CACP,UAAU;SACR,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC,CACnE;SACC,MAAM,CAAC,sBAAsB,CAAC;SAC9B,MAAM,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;SAC9E,MAAM,CAAC,uBAAuB,EAAE,gDAAgD,CAAC;SACjF,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,aAAa,CAAC,MAAM,CACpB,CACD,CAAC;IACH,UAAU;SACR,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iBAAiB,CAAC;SAC3B,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE,CAC5B,SAAS,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CACnE,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC;SAChF,MAAM,CAAC,sBAAsB,CAAC;SAC9B,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,uBAAuB,EAAE,gDAAgD,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/D,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,EACD,aAAa,CAAC,IAAI,CAClB,CACD,CAAC;IACH,QAAQ,CACP,UAAU;SACR,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,iBAAiB,CAAC;SAC3B,WAAW,CAAC,+BAA+B,CAAC,CAC9C;SACC,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAChE,CACD,CAAC;IACH,QAAQ,CACP,UAAU;SACR,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,iBAAiB,CAAC;SAC3B,WAAW,CAAC,iDAAiD,CAAC,CAChE;SACC,SAAS,CACT,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CACpF;SACA,MAAM,CAAC,4BAA4B,EAAE,iDAAiD,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CACN,IAAI,EACJ,OAAO,EACP;QACC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CACjE,CACD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { requestJson, withWorkspaceQuery } from "./api.js";
3
+ import { resolveApiUrl } from "./config.js";
4
+ import { toObjectInput } from "./input.js";
5
+ function withQuery(pathname, input) {
6
+ const values = toObjectInput(input);
7
+ const params = new URLSearchParams();
8
+ for (const [key, value] of Object.entries(values)) {
9
+ if (value === undefined || value === null || value === "")
10
+ continue;
11
+ if (Array.isArray(value)) {
12
+ for (const item of value)
13
+ params.append(key, String(item));
14
+ }
15
+ else if (typeof value === "object") {
16
+ params.set(key, JSON.stringify(value));
17
+ }
18
+ else {
19
+ params.set(key, String(value));
20
+ }
21
+ }
22
+ const query = params.toString();
23
+ return query ? `${pathname}?${query}` : pathname;
24
+ }
25
+ function withIdempotency(input) {
26
+ const payload = toObjectInput(input);
27
+ return {
28
+ ...payload,
29
+ idempotencyKey: typeof payload.idempotencyKey === "string" && payload.idempotencyKey
30
+ ? payload.idempotencyKey
31
+ : randomUUID()
32
+ };
33
+ }
34
+ async function call(context, pathname, method = "GET", body) {
35
+ return requestJson(resolveApiUrl(), withWorkspaceQuery(pathname, context.workspaceId), { method, authToken: context.auth.accessToken, ...(body === undefined ? {} : { body }) });
36
+ }
37
+ const part = (value) => encodeURIComponent(value);
38
+ export const playbookApi = {
39
+ search: (c, input) => call(c, withQuery("/v1/playbooks", input)),
40
+ create: (c, input) => call(c, "/v1/playbooks", "POST", withIdempotency(input)),
41
+ get: (c, id) => call(c, `/v1/playbooks/${part(id)}`),
42
+ listVersions: (c, id, input) => call(c, withQuery(`/v1/playbooks/${part(id)}/versions`, input)),
43
+ getVersion: (c, playbookId, versionId) => call(c, `/v1/playbooks/${part(playbookId)}/versions/${part(versionId)}`),
44
+ publish: (c, id, input) => call(c, `/v1/playbooks/${part(id)}/versions`, "POST", withIdempotency(input)),
45
+ updateAcl: (c, id, input) => call(c, `/v1/playbooks/${part(id)}/acl`, "PATCH", withIdempotency(input)),
46
+ archive: (c, id, input) => call(c, `/v1/playbooks/${part(id)}`, "DELETE", withIdempotency(input)),
47
+ star: (c, id, input) => call(c, `/v1/playbooks/${part(id)}/star`, "PUT", withIdempotency(input)),
48
+ unstar: (c, id, input) => call(c, `/v1/playbooks/${part(id)}/star`, "DELETE", withIdempotency(input)),
49
+ listStarred: (c, input) => call(c, withQuery("/v1/me/starred-playbooks", input)),
50
+ setAlias: (c, input) => call(c, "/v1/aliases", "PUT", withIdempotency(input)),
51
+ listAliases: (c, input) => call(c, withQuery("/v1/aliases", input)),
52
+ deleteAlias: (c, alias, input) => call(c, `/v1/aliases/${part(alias)}`, "DELETE", withIdempotency(input)),
53
+ createShare: (c, id, input) => call(c, `/v1/playbooks/${part(id)}/share-tokens`, "POST", withIdempotency(input))
54
+ };
55
+ export { withIdempotency, withQuery };
56
+ //# sourceMappingURL=playbooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbooks.js","sourceRoot":"","sources":["../src/playbooks.ts"],"names":[],"mappings":"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"}