@llm4ts/flow 0.3.1 → 0.5.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.
@@ -19,6 +19,32 @@ declare const Issue_base: Schema.Class<Issue, Schema.Struct<{
19
19
  }>, {}>;
20
20
  export declare class Issue extends Issue_base {
21
21
  }
22
+ declare const RepoRef_base: Schema.Class<RepoRef, Schema.Struct<{
23
+ readonly owner: Schema.String;
24
+ readonly repo: Schema.String;
25
+ }>, {}>;
26
+ export declare class RepoRef extends RepoRef_base {
27
+ get slug(): string;
28
+ }
29
+ export declare const IssueState: Schema.Literals<readonly ["open", "closed", "all"]>;
30
+ export type IssueState = typeof IssueState.Type;
31
+ export interface IssueListFilter {
32
+ readonly labels?: ReadonlyArray<string>;
33
+ readonly state?: IssueState;
34
+ readonly assignee?: string;
35
+ readonly limit?: number;
36
+ }
37
+ declare const IssueSummary_base: Schema.Class<IssueSummary, Schema.Struct<{
38
+ readonly number: Schema.Int;
39
+ readonly title: Schema.String;
40
+ readonly body: Schema.String;
41
+ readonly author: Schema.String;
42
+ readonly labels: Schema.$Array<Schema.String>;
43
+ readonly updatedAt: Schema.String;
44
+ }>, {}>;
45
+ export declare class IssueSummary extends IssueSummary_base {
46
+ ref(repo: RepoRef): IssueRef;
47
+ }
22
48
  declare const PullRequest_base: Schema.Class<PullRequest, Schema.Struct<{
23
49
  readonly owner: Schema.String;
24
50
  readonly repo: Schema.String;
@@ -36,9 +62,17 @@ export declare const prCreateArgs: (title: string, body: string, base: string |
36
62
  export declare const issueViewArgs: (ref: IssueRef) => ReadonlyArray<string>;
37
63
  export declare const issueCommentArgs: (ref: IssueRef, body: string) => ReadonlyArray<string>;
38
64
  export declare const prCommentArgs: (pr: PullRequest, body: string) => ReadonlyArray<string>;
65
+ export declare const issueListFields = "number,title,body,author,labels,updatedAt";
66
+ export declare const issueListArgs: (repo: RepoRef, filter: IssueListFilter) => ReadonlyArray<string>;
67
+ export declare const issueCreateArgs: (repo: RepoRef, title: string, body: string, labels: ReadonlyArray<string>) => ReadonlyArray<string>;
68
+ export declare const parseIssueUrl: (url: string) => IssueRef | undefined;
69
+ export declare const issueEditLabelsArgs: (ref: IssueRef, add: ReadonlyArray<string>, remove: ReadonlyArray<string>) => ReadonlyArray<string>;
70
+ export declare const issueAssignArgs: (ref: IssueRef, login: string) => ReadonlyArray<string>;
71
+ export declare const issueCloseArgs: (ref: IssueRef, comment?: string) => ReadonlyArray<string>;
39
72
  export declare const prPatchArgs: (pr: PullRequest, title: string, body: string) => ReadonlyArray<string>;
40
73
  export declare const prChecksArgs: (pr: PullRequest) => ReadonlyArray<string>;
41
74
  export declare const parseIssue: (json: string) => Effect.Effect<Issue, ProcessError>;
75
+ export declare const parseIssueList: (json: string) => Effect.Effect<ReadonlyArray<IssueSummary>, ProcessError>;
42
76
  export declare const outcomeFromChecksJson: (json: string) => Effect.Effect<BuildOutcome, ProcessError>;
43
77
  export interface GitHubToolShape {
44
78
  readonly createPr: (title: string, body: string, base?: string, draft?: boolean) => Effect.Effect<PullRequest, FlowError>;
@@ -47,6 +81,11 @@ export interface GitHubToolShape {
47
81
  readonly writePrComment: (pr: PullRequest, body: string) => Effect.Effect<void, FlowError>;
48
82
  readonly updatePr: (pr: PullRequest, title: string, body: string) => Effect.Effect<void, FlowError>;
49
83
  readonly prChecks: (pr: PullRequest) => Effect.Effect<BuildOutcome, FlowError>;
84
+ readonly listIssues: (repo: RepoRef, filter?: IssueListFilter) => Effect.Effect<ReadonlyArray<IssueSummary>, FlowError>;
85
+ readonly createIssue: (repo: RepoRef, title: string, body: string, labels?: ReadonlyArray<string>) => Effect.Effect<IssueRef, FlowError>;
86
+ readonly editIssueLabels: (ref: IssueRef, add: ReadonlyArray<string>, remove: ReadonlyArray<string>) => Effect.Effect<void, FlowError>;
87
+ readonly assignIssue: (ref: IssueRef, login: string) => Effect.Effect<void, FlowError>;
88
+ readonly closeIssue: (ref: IssueRef, comment?: string) => Effect.Effect<void, FlowError>;
50
89
  }
51
90
  export declare const makeGitHubTool: (process: ProcessExecutorShape, workDir: string, events: FlowEventsShape) => GitHubToolShape;
52
91
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubTool.d.ts","sourceRoot":"","sources":["../src/GitHubTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubTool.d.ts","sourceRoot":"","sources":["../src/GitHubTool.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,27 @@ export class Issue extends Schema.Class("Issue")({
27
27
  author: Schema.String
28
28
  }) {
29
29
  }
30
+ export class RepoRef extends Schema.Class("RepoRef")({
31
+ owner: Schema.String,
32
+ repo: Schema.String
33
+ }) {
34
+ get slug() {
35
+ return `${this.owner}/${this.repo}`;
36
+ }
37
+ }
38
+ export const IssueState = Schema.Literals(["open", "closed", "all"]);
39
+ export class IssueSummary extends Schema.Class("IssueSummary")({
40
+ number: Schema.Int,
41
+ title: Schema.String,
42
+ body: Schema.String,
43
+ author: Schema.String,
44
+ labels: Schema.Array(Schema.String),
45
+ updatedAt: Schema.String
46
+ }) {
47
+ ref(repo) {
48
+ return IssueRef.make({ owner: repo.owner, repo: repo.repo, number: this.number });
49
+ }
50
+ }
30
51
  export class PullRequest extends Schema.Class("PullRequest")({
31
52
  owner: Schema.String,
32
53
  repo: Schema.String,
@@ -90,6 +111,67 @@ export const prCommentArgs = (pr, body) => [
90
111
  "--body",
91
112
  body
92
113
  ];
114
+ export const issueListFields = "number,title,body,author,labels,updatedAt";
115
+ export const issueListArgs = (repo, filter) => [
116
+ "issue",
117
+ "list",
118
+ "--repo",
119
+ repo.slug,
120
+ "--state",
121
+ filter.state ?? "open",
122
+ ...(filter.labels ?? []).flatMap((label) => ["--label", label]),
123
+ ...(filter.assignee === undefined ? [] : ["--assignee", filter.assignee]),
124
+ "--limit",
125
+ String(filter.limit ?? 100),
126
+ "--json",
127
+ issueListFields
128
+ ];
129
+ export const issueCreateArgs = (repo, title, body, labels) => [
130
+ "issue",
131
+ "create",
132
+ "--repo",
133
+ repo.slug,
134
+ "--title",
135
+ title,
136
+ "--body",
137
+ body,
138
+ ...labels.flatMap((label) => ["--label", label])
139
+ ];
140
+ export const parseIssueUrl = (url) => {
141
+ const match = /^https?:\/\/[^/]+\/([^/]+)\/([^/]+)\/issues\/(\d+)\s*$/.exec(url.trim());
142
+ const owner = match?.[1];
143
+ const repo = match?.[2];
144
+ const number = Number.parseInt(match?.[3] ?? "", 10);
145
+ return owner === undefined || repo === undefined || !Number.isInteger(number) || number <= 0
146
+ ? undefined
147
+ : IssueRef.make({ owner, repo, number });
148
+ };
149
+ export const issueEditLabelsArgs = (ref, add, remove) => [
150
+ "issue",
151
+ "edit",
152
+ String(ref.number),
153
+ "--repo",
154
+ `${ref.owner}/${ref.repo}`,
155
+ ...add.flatMap((label) => ["--add-label", label]),
156
+ ...remove.flatMap((label) => ["--remove-label", label])
157
+ ];
158
+ export const issueAssignArgs = (ref, login) => [
159
+ "issue",
160
+ "edit",
161
+ String(ref.number),
162
+ "--repo",
163
+ `${ref.owner}/${ref.repo}`,
164
+ "--add-assignee",
165
+ login
166
+ ];
167
+ export const issueCloseArgs = (ref, comment) => [
168
+ "issue",
169
+ "close",
170
+ String(ref.number),
171
+ "--repo",
172
+ `${ref.owner}/${ref.repo}`,
173
+ ...(comment === undefined ? [] : ["--comment", comment])
174
+ ];
93
175
  export const prPatchArgs = (pr, title, body) => [
94
176
  "api",
95
177
  "--method",
@@ -119,6 +201,19 @@ class GhIssue extends Schema.Class("GhIssue")({
119
201
  author: GhAuthor
120
202
  }) {
121
203
  }
204
+ class GhLabel extends Schema.Class("GhLabel")({
205
+ name: Schema.String
206
+ }) {
207
+ }
208
+ class GhIssueSummary extends Schema.Class("GhIssueSummary")({
209
+ number: Schema.Int,
210
+ title: Schema.String,
211
+ body: Schema.String,
212
+ author: GhAuthor,
213
+ labels: Schema.Array(GhLabel).pipe(Schema.withConstructorDefault(Effect.succeed(Object.freeze([])))),
214
+ updatedAt: Schema.String
215
+ }) {
216
+ }
122
217
  class GhCheck extends Schema.Class("GhCheck")({
123
218
  status: Schema.optionalKey(Schema.String),
124
219
  conclusion: Schema.optionalKey(Schema.String),
@@ -137,6 +232,17 @@ export const parseIssue = (json) => Schema.decodeUnknownEffect(Schema.fromJsonSt
137
232
  message: "gh issue view",
138
233
  detail: `invalid issue JSON: ${String(error)}`
139
234
  })));
235
+ export const parseIssueList = (json) => Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.Array(GhIssueSummary)))(json).pipe(Effect.map((issues) => issues.map((issue) => new IssueSummary({
236
+ number: issue.number,
237
+ title: issue.title,
238
+ body: issue.body,
239
+ author: issue.author.login,
240
+ labels: issue.labels.map((label) => label.name),
241
+ updatedAt: issue.updatedAt
242
+ }))), Effect.mapError((error) => ProcessError.make({
243
+ message: "gh issue list",
244
+ detail: `invalid issue list JSON: ${String(error)}`
245
+ })));
140
246
  export const outcomeFromChecksJson = (json) => Schema.decodeUnknownEffect(Schema.fromJsonString(GhChecks))(json).pipe(Effect.map((parsed) => {
141
247
  const pending = parsed.statusCheckRollup.some((check) => (check.status !== undefined && check.status.toUpperCase() !== "COMPLETED") ||
142
248
  ["PENDING", "EXPECTED"].includes(check.state?.toUpperCase() ?? ""));
@@ -185,7 +291,25 @@ export const makeGitHubTool = (process, workDir, events) => {
185
291
  writeIssueComment: (ref, body) => write("gh issue comment", run(issueCommentArgs(ref, body)).pipe(Effect.asVoid)),
186
292
  writePrComment: (pr, body) => write("gh pr comment", run(prCommentArgs(pr, body)).pipe(Effect.asVoid)),
187
293
  updatePr: (pr, title, body) => write("gh pr edit", run(prPatchArgs(pr, title, body)).pipe(Effect.asVoid)),
188
- prChecks: (pr) => read("gh pr checks", run(prChecksArgs(pr)).pipe(Effect.flatMap((result) => outcomeFromChecksJson(output(result)))))
294
+ prChecks: (pr) => read("gh pr checks", run(prChecksArgs(pr)).pipe(Effect.flatMap((result) => outcomeFromChecksJson(output(result))))),
295
+ listIssues: (repo, filter = {}) => read("gh issue list", run(issueListArgs(repo, filter)).pipe(Effect.flatMap((result) => parseIssueList(output(result))))),
296
+ createIssue: (repo, title, body, labels = []) => write("gh issue create", run(issueCreateArgs(repo, title, body, labels)).pipe(Effect.flatMap((result) => {
297
+ const ref = output(result)
298
+ .split(/\r?\n/)
299
+ .map(parseIssueUrl)
300
+ .find((item) => item !== undefined);
301
+ return ref === undefined
302
+ ? Effect.fail(ProcessError.make({
303
+ message: "gh issue create",
304
+ detail: `could not parse an issue URL from: ${output(result)}`
305
+ }))
306
+ : Effect.succeed(ref);
307
+ }))),
308
+ editIssueLabels: (ref, add, remove) => add.length === 0 && remove.length === 0
309
+ ? Effect.void
310
+ : write("gh issue edit", run(issueEditLabelsArgs(ref, add, remove)).pipe(Effect.asVoid)),
311
+ assignIssue: (ref, login) => write("gh issue edit", run(issueAssignArgs(ref, login)).pipe(Effect.asVoid)),
312
+ closeIssue: (ref, comment) => write("gh issue close", run(issueCloseArgs(ref, comment)).pipe(Effect.asVoid))
189
313
  };
190
314
  };
191
315
  //# sourceMappingURL=GitHubTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubTool.js","sourceRoot":"","sources":["../src/GitHubTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubTool.js","sourceRoot":"","sources":["../src/GitHubTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,GAAG;CACnB,CAAC;IACA,IAAI,QAAQ;QACV,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;IACpD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAwB,EAAE;IACnE,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACpD,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAC1F,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,OAAO,KAAM,SAAQ,MAAM,CAAC,KAAK,CAAQ,OAAO,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAU,SAAS,CAAC,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;IACA,IAAI,IAAI;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAUpE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,KAAK,CAAe,cAAc,CAAC,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAC,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC;IACA,GAAG,CAAC,IAAa;QACf,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACnF,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,aAAa,CAAC,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM;CACnB,CAAC;IACA,IAAI,QAAQ;QACV,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;IACpD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAG1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAA2B,EAAE;IAC1E,MAAM,KAAK,GAAG,qDAAqD,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACpF,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACpD,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAC3E,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YACf,KAAK;YACL,IAAI;YACJ,MAAM;YACN,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;SAChB,CAAC,CAAA;AACR,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAa,EACb,IAAY,EACZ,IAAwB,EACxB,KAAc,EACS,EAAE,CAAC;IAC1B,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CAC9B,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAa,EAAyB,EAAE,CAAC;IACrE,OAAO;IACP,MAAM;IACN,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAClB,QAAQ;IACR,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;IAC1B,QAAQ;IACR,mBAAmB;CACpB,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAa,EAAE,IAAY,EAAyB,EAAE,CAAC;IACtF,OAAO;IACP,SAAS;IACT,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAClB,QAAQ;IACR,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;IAC1B,QAAQ;IACR,IAAI;CACL,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAe,EAAE,IAAY,EAAyB,EAAE,CAAC;IACrF,IAAI;IACJ,SAAS;IACT,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;IACjB,QAAQ;IACR,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE;IACxB,QAAQ;IACR,IAAI;CACL,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,2CAA2C,CAAA;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,MAAuB,EAAyB,EAAE,CAAC;IAC9F,OAAO;IACP,MAAM;IACN,QAAQ;IACR,IAAI,CAAC,IAAI;IACT,SAAS;IACT,MAAM,CAAC,KAAK,IAAI,MAAM;IACtB,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,SAAS;IACT,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAC3B,QAAQ;IACR,eAAe;CAChB,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAa,EACb,KAAa,EACb,IAAY,EACZ,MAA6B,EACN,EAAE,CAAC;IAC1B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,IAAI,CAAC,IAAI;IACT,SAAS;IACT,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACjD,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAwB,EAAE;IACjE,MAAM,KAAK,GAAG,wDAAwD,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACvF,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACpD,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAC1F,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAa,EACb,GAA0B,EAC1B,MAA6B,EACN,EAAE,CAAC;IAC1B,OAAO;IACP,MAAM;IACN,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAClB,QAAQ;IACR,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;IAC1B,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjD,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;CACxD,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAa,EAAE,KAAa,EAAyB,EAAE,CAAC;IACtF,OAAO;IACP,MAAM;IACN,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAClB,QAAQ;IACR,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;IAC1B,gBAAgB;IAChB,KAAK;CACN,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAa,EAAE,OAAgB,EAAyB,EAAE,CAAC;IACxF,OAAO;IACP,OAAO;IACP,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAClB,QAAQ;IACR,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;IAC1B,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACzD,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAe,EACf,KAAa,EACb,IAAY,EACW,EAAE,CAAC;IAC1B,KAAK;IACL,UAAU;IACV,OAAO;IACP,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,MAAM,EAAE;IACjD,IAAI;IACJ,SAAS,KAAK,EAAE;IAChB,IAAI;IACJ,QAAQ,IAAI,EAAE;CACf,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAe,EAAyB,EAAE,CAAC;IACtE,IAAI;IACJ,MAAM;IACN,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;IACjB,QAAQ;IACR,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE;IACxB,QAAQ;IACR,mBAAmB;CACpB,CAAA;AAED,MAAM,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAU,SAAS,CAAC,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,QAAQ;CACjB,CAAC;CAAG;AAEL,MAAM,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAU,SAAS,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;CAAG;AAEL,MAAM,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IAC1E,MAAM,EAAE,MAAM,CAAC,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CACjE;IACD,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC;CAAG;AAEL,MAAM,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAU,SAAS,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC;CAAG;AAEL,MAAM,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IACxD,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CACjE;CACF,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAsC,EAAE,CAC7E,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,KAAK,CAAC;IACR,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;CAC3B,CAAC,CACL,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,IAAI,CAAC;IAChB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE;CAC/C,CAAC,CACH,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EAC8C,EAAE,CAC5D,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACxF,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpB,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;IACf,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/C,SAAS,EAAE,KAAK,CAAC,SAAS;CAC3B,CAAC,CACL,CACF,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,IAAI,CAAC;IAChB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,4BAA4B,MAAM,CAAC,KAAK,CAAC,EAAE;CACpD,CAAC,CACH,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAA6C,EAAE,CAC/F,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACpE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IACpB,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAC3C,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC;QAC1E,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CACrE,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAC1C,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAClF,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CACtC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CACvE,CAAA;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,IAAI,CAAC;IAChB,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE;CAChD,CAAC,CACH,CACF,CAAA;AAqCH,MAAM,MAAM,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAA6B,EAC7B,OAAe,EACf,MAAuB,EACN,EAAE;IACnB,MAAM,GAAG,GAAG,CACV,IAA2B,EAC3B,YAAY,GAAG,KAAK,EACqB,EAAE,CAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,IAAI,CAAC;QAChB,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC,CACH,EACD,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,YAAY;QACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,EACJ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBACtD,aAAa,MAAM,CAAC,QAAQ,EAAE;SACjC,CAAC,CACH,CACN,CACF,CAAA;IAEH,MAAM,IAAI,GAAG,CACX,SAAiB,EACjB,MAAmC,EACN,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzF,MAAM,KAAK,GAAG,CACZ,SAAiB,EACjB,MAAmC,EACN,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAE1F,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpB,MAAM,CAAC,QAAQ,KAAK,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;aACX,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,mBAAmB,CAAC;aACxB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;QACvC,CAAC,CAAC,SAAS,CACd,CACF,CAAA;IAED,OAAO;QACL,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,CAC7C,KAAK,CACH,cAAc,EACd,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CACtC,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;qBACtB,KAAK,CAAC,OAAO,CAAC;qBACd,GAAG,CAAC,mBAAmB,CAAC;qBACxB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;gBACrC,OAAO,EAAE,KAAK,SAAS;oBACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,IAAI,CAAC;wBAChB,OAAO,EAAE,cAAc;wBACvB,MAAM,EAAE,kCAAkC,MAAM,CAAC,MAAM,CAAC,EAAE;qBAC3D,CAAC,CACH;oBACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACxB,CAAC,CAAC,CACH;YACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC7B,CACF;QACH,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,IAAI,CACF,eAAe,EACf,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACrF;QACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAC/B,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjF,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAC3B,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC5B,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5E,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CACf,IAAI,CACF,cAAc,EACd,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CACxB,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAClE,CACF;QACH,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAChC,IAAI,CACF,eAAe,EACf,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CACnC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3D,CACF;QACH,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAC9C,KAAK,CACH,iBAAiB,EACjB,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;iBACvB,KAAK,CAAC,OAAO,CAAC;iBACd,GAAG,CAAC,aAAa,CAAC;iBAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YACrC,OAAO,GAAG,KAAK,SAAS;gBACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,IAAI,CAAC;oBAChB,OAAO,EAAE,iBAAiB;oBAC1B,MAAM,EAAE,sCAAsC,MAAM,CAAC,MAAM,CAAC,EAAE;iBAC/D,CAAC,CACH;gBACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CACH,CACF;QACH,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CACpC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,IAAI;YACb,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5F,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC1B,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9E,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAC3B,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACjF,CAAA;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/flow",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "Effect-native LLM workflow, persistence, review, and repository automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -78,7 +78,7 @@
78
78
  "typescript"
79
79
  ],
80
80
  "dependencies": {
81
- "@llm4ts/core": "0.3.1"
81
+ "@llm4ts/core": "0.5.0"
82
82
  },
83
83
  "peerDependencies": {
84
84
  "effect": "^4.0.0-beta.102"
package/src/GitHubTool.ts CHANGED
@@ -32,6 +32,38 @@ export class Issue extends Schema.Class<Issue>("Issue")({
32
32
  author: Schema.String
33
33
  }) {}
34
34
 
35
+ export class RepoRef extends Schema.Class<RepoRef>("RepoRef")({
36
+ owner: Schema.String,
37
+ repo: Schema.String
38
+ }) {
39
+ get slug(): string {
40
+ return `${this.owner}/${this.repo}`
41
+ }
42
+ }
43
+
44
+ export const IssueState = Schema.Literals(["open", "closed", "all"])
45
+ export type IssueState = typeof IssueState.Type
46
+
47
+ export interface IssueListFilter {
48
+ readonly labels?: ReadonlyArray<string>
49
+ readonly state?: IssueState
50
+ readonly assignee?: string
51
+ readonly limit?: number
52
+ }
53
+
54
+ export class IssueSummary extends Schema.Class<IssueSummary>("IssueSummary")({
55
+ number: Schema.Int,
56
+ title: Schema.String,
57
+ body: Schema.String,
58
+ author: Schema.String,
59
+ labels: Schema.Array(Schema.String),
60
+ updatedAt: Schema.String
61
+ }) {
62
+ ref(repo: RepoRef): IssueRef {
63
+ return IssueRef.make({ owner: repo.owner, repo: repo.repo, number: this.number })
64
+ }
65
+ }
66
+
35
67
  export class PullRequest extends Schema.Class<PullRequest>("PullRequest")({
36
68
  owner: Schema.String,
37
69
  repo: Schema.String,
@@ -109,6 +141,83 @@ export const prCommentArgs = (pr: PullRequest, body: string): ReadonlyArray<stri
109
141
  body
110
142
  ]
111
143
 
144
+ export const issueListFields = "number,title,body,author,labels,updatedAt"
145
+
146
+ export const issueListArgs = (repo: RepoRef, filter: IssueListFilter): ReadonlyArray<string> => [
147
+ "issue",
148
+ "list",
149
+ "--repo",
150
+ repo.slug,
151
+ "--state",
152
+ filter.state ?? "open",
153
+ ...(filter.labels ?? []).flatMap((label) => ["--label", label]),
154
+ ...(filter.assignee === undefined ? [] : ["--assignee", filter.assignee]),
155
+ "--limit",
156
+ String(filter.limit ?? 100),
157
+ "--json",
158
+ issueListFields
159
+ ]
160
+
161
+ export const issueCreateArgs = (
162
+ repo: RepoRef,
163
+ title: string,
164
+ body: string,
165
+ labels: ReadonlyArray<string>
166
+ ): ReadonlyArray<string> => [
167
+ "issue",
168
+ "create",
169
+ "--repo",
170
+ repo.slug,
171
+ "--title",
172
+ title,
173
+ "--body",
174
+ body,
175
+ ...labels.flatMap((label) => ["--label", label])
176
+ ]
177
+
178
+ export const parseIssueUrl = (url: string): IssueRef | undefined => {
179
+ const match = /^https?:\/\/[^/]+\/([^/]+)\/([^/]+)\/issues\/(\d+)\s*$/.exec(url.trim())
180
+ const owner = match?.[1]
181
+ const repo = match?.[2]
182
+ const number = Number.parseInt(match?.[3] ?? "", 10)
183
+ return owner === undefined || repo === undefined || !Number.isInteger(number) || number <= 0
184
+ ? undefined
185
+ : IssueRef.make({ owner, repo, number })
186
+ }
187
+
188
+ export const issueEditLabelsArgs = (
189
+ ref: IssueRef,
190
+ add: ReadonlyArray<string>,
191
+ remove: ReadonlyArray<string>
192
+ ): ReadonlyArray<string> => [
193
+ "issue",
194
+ "edit",
195
+ String(ref.number),
196
+ "--repo",
197
+ `${ref.owner}/${ref.repo}`,
198
+ ...add.flatMap((label) => ["--add-label", label]),
199
+ ...remove.flatMap((label) => ["--remove-label", label])
200
+ ]
201
+
202
+ export const issueAssignArgs = (ref: IssueRef, login: string): ReadonlyArray<string> => [
203
+ "issue",
204
+ "edit",
205
+ String(ref.number),
206
+ "--repo",
207
+ `${ref.owner}/${ref.repo}`,
208
+ "--add-assignee",
209
+ login
210
+ ]
211
+
212
+ export const issueCloseArgs = (ref: IssueRef, comment?: string): ReadonlyArray<string> => [
213
+ "issue",
214
+ "close",
215
+ String(ref.number),
216
+ "--repo",
217
+ `${ref.owner}/${ref.repo}`,
218
+ ...(comment === undefined ? [] : ["--comment", comment])
219
+ ]
220
+
112
221
  export const prPatchArgs = (
113
222
  pr: PullRequest,
114
223
  title: string,
@@ -144,6 +253,21 @@ class GhIssue extends Schema.Class<GhIssue>("GhIssue")({
144
253
  author: GhAuthor
145
254
  }) {}
146
255
 
256
+ class GhLabel extends Schema.Class<GhLabel>("GhLabel")({
257
+ name: Schema.String
258
+ }) {}
259
+
260
+ class GhIssueSummary extends Schema.Class<GhIssueSummary>("GhIssueSummary")({
261
+ number: Schema.Int,
262
+ title: Schema.String,
263
+ body: Schema.String,
264
+ author: GhAuthor,
265
+ labels: Schema.Array(GhLabel).pipe(
266
+ Schema.withConstructorDefault(Effect.succeed(Object.freeze([])))
267
+ ),
268
+ updatedAt: Schema.String
269
+ }) {}
270
+
147
271
  class GhCheck extends Schema.Class<GhCheck>("GhCheck")({
148
272
  status: Schema.optionalKey(Schema.String),
149
273
  conclusion: Schema.optionalKey(Schema.String),
@@ -174,6 +298,31 @@ export const parseIssue = (json: string): Effect.Effect<Issue, ProcessError> =>
174
298
  )
175
299
  )
176
300
 
301
+ export const parseIssueList = (
302
+ json: string
303
+ ): Effect.Effect<ReadonlyArray<IssueSummary>, ProcessError> =>
304
+ Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.Array(GhIssueSummary)))(json).pipe(
305
+ Effect.map((issues) =>
306
+ issues.map(
307
+ (issue) =>
308
+ new IssueSummary({
309
+ number: issue.number,
310
+ title: issue.title,
311
+ body: issue.body,
312
+ author: issue.author.login,
313
+ labels: issue.labels.map((label) => label.name),
314
+ updatedAt: issue.updatedAt
315
+ })
316
+ )
317
+ ),
318
+ Effect.mapError((error) =>
319
+ ProcessError.make({
320
+ message: "gh issue list",
321
+ detail: `invalid issue list JSON: ${String(error)}`
322
+ })
323
+ )
324
+ )
325
+
177
326
  export const outcomeFromChecksJson = (json: string): Effect.Effect<BuildOutcome, ProcessError> =>
178
327
  Schema.decodeUnknownEffect(Schema.fromJsonString(GhChecks))(json).pipe(
179
328
  Effect.map((parsed) => {
@@ -214,6 +363,23 @@ export interface GitHubToolShape {
214
363
  body: string
215
364
  ) => Effect.Effect<void, FlowError>
216
365
  readonly prChecks: (pr: PullRequest) => Effect.Effect<BuildOutcome, FlowError>
366
+ readonly listIssues: (
367
+ repo: RepoRef,
368
+ filter?: IssueListFilter
369
+ ) => Effect.Effect<ReadonlyArray<IssueSummary>, FlowError>
370
+ readonly createIssue: (
371
+ repo: RepoRef,
372
+ title: string,
373
+ body: string,
374
+ labels?: ReadonlyArray<string>
375
+ ) => Effect.Effect<IssueRef, FlowError>
376
+ readonly editIssueLabels: (
377
+ ref: IssueRef,
378
+ add: ReadonlyArray<string>,
379
+ remove: ReadonlyArray<string>
380
+ ) => Effect.Effect<void, FlowError>
381
+ readonly assignIssue: (ref: IssueRef, login: string) => Effect.Effect<void, FlowError>
382
+ readonly closeIssue: (ref: IssueRef, comment?: string) => Effect.Effect<void, FlowError>
217
383
  }
218
384
 
219
385
  const output = (result: ProcessResult): string => result.stdout.join("\n").trim()
@@ -310,6 +476,41 @@ export const makeGitHubTool = (
310
476
  run(prChecksArgs(pr)).pipe(
311
477
  Effect.flatMap((result) => outcomeFromChecksJson(output(result)))
312
478
  )
313
- )
479
+ ),
480
+ listIssues: (repo, filter = {}) =>
481
+ read(
482
+ "gh issue list",
483
+ run(issueListArgs(repo, filter)).pipe(
484
+ Effect.flatMap((result) => parseIssueList(output(result)))
485
+ )
486
+ ),
487
+ createIssue: (repo, title, body, labels = []) =>
488
+ write(
489
+ "gh issue create",
490
+ run(issueCreateArgs(repo, title, body, labels)).pipe(
491
+ Effect.flatMap((result) => {
492
+ const ref = output(result)
493
+ .split(/\r?\n/)
494
+ .map(parseIssueUrl)
495
+ .find((item) => item !== undefined)
496
+ return ref === undefined
497
+ ? Effect.fail(
498
+ ProcessError.make({
499
+ message: "gh issue create",
500
+ detail: `could not parse an issue URL from: ${output(result)}`
501
+ })
502
+ )
503
+ : Effect.succeed(ref)
504
+ })
505
+ )
506
+ ),
507
+ editIssueLabels: (ref, add, remove) =>
508
+ add.length === 0 && remove.length === 0
509
+ ? Effect.void
510
+ : write("gh issue edit", run(issueEditLabelsArgs(ref, add, remove)).pipe(Effect.asVoid)),
511
+ assignIssue: (ref, login) =>
512
+ write("gh issue edit", run(issueAssignArgs(ref, login)).pipe(Effect.asVoid)),
513
+ closeIssue: (ref, comment) =>
514
+ write("gh issue close", run(issueCloseArgs(ref, comment)).pipe(Effect.asVoid))
314
515
  }
315
516
  }