@neturely/okffs 0.3.0 → 0.4.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.
package/dist/projects.js CHANGED
@@ -8,18 +8,23 @@
8
8
  import { graphqlRequest, owner, repo } from "./github.js";
9
9
  import { config } from "./config.js";
10
10
  // Throw a clear, actionable message when the token can't reach Projects, rather
11
- // than leaking a raw GraphQL FORBIDDEN blob. Permission errors arrive either as
12
- // an HTTP 403 or as a 200 with a FORBIDDEN error in the payload.
11
+ // than leaking a raw GraphQL blob. Permission errors arrive in several shapes:
12
+ // an HTTP 403, a 200 with a FORBIDDEN error, or the common gh-CLI-fallback
13
+ // case — an INSUFFICIENT_SCOPES error because the CLI's OAuth token lacks the
14
+ // `project` scope that Projects v2 requires.
13
15
  async function projectCall(fn) {
14
16
  try {
15
17
  return await fn();
16
18
  }
17
19
  catch (err) {
18
20
  const msg = err instanceof Error ? err.message : String(err);
19
- if (/\b403\b|FORBIDDEN|not accessible/i.test(msg)) {
20
- throw new Error("[okffs] GitHub denied a Projects API call (403 / forbidden). The token needs Projects access: " +
21
+ if (/\b403\b|FORBIDDEN|INSUFFICIENT_SCOPES|not accessible|requires .*\bproject\b/i.test(msg)) {
22
+ throw new Error("[okffs] GitHub denied a Projects API call (insufficient scope / forbidden). " +
23
+ "Projects v2 (GraphQL) needs a token with Projects access: " +
21
24
  'fine-grained PAT → Organization permissions → "Projects: Read and write"; ' +
22
25
  "classic PAT → the `project` scope. " +
26
+ "Note: the GitHub CLI fallback token (used when GITHUB_TOKEN is unset) usually " +
27
+ "lacks `project` scope — grant it with `gh auth refresh -s project,read:project`. " +
23
28
  `Original error: ${msg}`);
24
29
  }
25
30
  throw err;
@@ -50,7 +55,7 @@ async function fetchProjectMetadata() {
50
55
  const data = await projectCall(() => graphqlRequest(`query($project:ID!){
51
56
  node(id:$project){
52
57
  ... on ProjectV2 {
53
- fields(first:50){
58
+ fields(first:100){
54
59
  nodes{
55
60
  ... on ProjectV2SingleSelectField { id name options { id name } }
56
61
  }
@@ -64,8 +69,7 @@ async function fetchProjectMetadata() {
64
69
  const meta = {
65
70
  statusFieldId: null,
66
71
  statusOptions: new Map(),
67
- priorityFieldId: null,
68
- priorityOptions: new Map(),
72
+ singleSelectByName: new Map(),
69
73
  };
70
74
  for (const field of data.node.fields.nodes) {
71
75
  // Non-single-select fields come back as empty objects from the inline
@@ -74,14 +78,11 @@ async function fetchProjectMetadata() {
74
78
  continue;
75
79
  const optionMap = new Map(field.options.map((o) => [o.name, o.id]));
76
80
  const name = field.name.toLowerCase();
81
+ meta.singleSelectByName.set(name, { fieldId: field.id, options: optionMap });
77
82
  if (name === "status") {
78
83
  meta.statusFieldId = field.id;
79
84
  meta.statusOptions = optionMap;
80
85
  }
81
- else if (name === "priority") {
82
- meta.priorityFieldId = field.id;
83
- meta.priorityOptions = optionMap;
84
- }
85
86
  }
86
87
  return meta;
87
88
  }
@@ -105,6 +106,84 @@ export async function setProjectFieldValue(itemId, fieldId, optionId) {
105
106
  }){ projectV2Item{ id } }
106
107
  }`, { project: projectId, item: itemId, field: fieldId, opt: optionId }));
107
108
  }
109
+ // --- Org-level Issue Fields (Phase 5.1, #91) -------------------------------
110
+ // GitHub's newer org-level "Issue Fields" (e.g. Priority, Effort) are NOT the
111
+ // same as a project-native single-select field: their options live under
112
+ // organization.issueFields, and values are written on the *issue* (not the
113
+ // project item) via setIssueFieldValue. On such boards the project single-select
114
+ // field reports empty options, which is the signal to fall back to this path.
115
+ //
116
+ // Access needs a different permission than Projects: a classic PAT with the
117
+ // `admin:org` scope works; fine-grained PATs currently get FORBIDDEN for this
118
+ // preview API. Translate that into an actionable message rather than the
119
+ // Projects-scope one.
120
+ async function orgFieldCall(fn) {
121
+ try {
122
+ return await fn();
123
+ }
124
+ catch (err) {
125
+ const msg = err instanceof Error ? err.message : String(err);
126
+ if (/\b403\b|FORBIDDEN|not accessible/i.test(msg)) {
127
+ throw new Error("[okffs] GitHub denied access to org-level Issue Fields (organization.issueFields). " +
128
+ "This is a separate permission from Projects: a classic PAT with the `admin:org` scope works; " +
129
+ "fine-grained PATs currently return FORBIDDEN for this preview API. Use an org-capable GITHUB_TOKEN " +
130
+ "or set the field manually in the board UI. " +
131
+ `Original error: ${msg}`);
132
+ }
133
+ throw err;
134
+ }
135
+ }
136
+ // Per-field-name cache so each org Issue Field (Priority, Effort, …) is fetched
137
+ // at most once per process. On failure the entry is cleared so a later call can
138
+ // retry.
139
+ const orgFieldCache = new Map();
140
+ // Discover an org single-select Issue Field by name (case-insensitive) and its
141
+ // options. Returns null if the owner isn't an org, has no such field, or it
142
+ // isn't a single-select. Throws (via orgFieldCall) on a permission error.
143
+ export function getOrgIssueField(name) {
144
+ const key = name.toLowerCase();
145
+ let cached = orgFieldCache.get(key);
146
+ if (!cached) {
147
+ cached = fetchOrgIssueField(key).catch((err) => {
148
+ orgFieldCache.delete(key);
149
+ throw err;
150
+ });
151
+ orgFieldCache.set(key, cached);
152
+ }
153
+ return cached;
154
+ }
155
+ async function fetchOrgIssueField(nameLower) {
156
+ const data = await orgFieldCall(() => graphqlRequest(`query($org:String!){
157
+ organization(login:$org){
158
+ issueFields(first:100){
159
+ nodes{
160
+ __typename
161
+ ... on IssueFieldSingleSelect { id name options { id name } }
162
+ }
163
+ }
164
+ }
165
+ }`, { org: owner }));
166
+ const nodes = data.organization?.issueFields?.nodes ?? [];
167
+ const match = nodes.find((n) => n.__typename === "IssueFieldSingleSelect" &&
168
+ (n.name ?? "").toLowerCase() === nameLower &&
169
+ n.id &&
170
+ n.options);
171
+ if (!match?.id || !match.options)
172
+ return null;
173
+ return {
174
+ fieldId: match.id,
175
+ options: new Map(match.options.map((o) => [o.name, o.id])),
176
+ };
177
+ }
178
+ // Set an org Issue Field single-select value on an issue (by its node id).
179
+ export async function setIssueFieldSingleSelect(issueNodeId, fieldId, optionId) {
180
+ await orgFieldCall(() => graphqlRequest(`mutation($iss:ID!,$field:ID!,$opt:ID!){
181
+ setIssueFieldValue(input:{
182
+ issueId:$iss,
183
+ issueFields:[{ fieldId:$field, singleSelectOptionId:$opt }]
184
+ }){ issue{ number } }
185
+ }`, { iss: issueNodeId, field: fieldId, opt: optionId }));
186
+ }
108
187
  // Find the project item id for an issue already on the board (null if absent).
109
188
  export async function getProjectItemForIssue(issueNumber) {
110
189
  const projectId = requireProjectId();
@@ -118,9 +197,10 @@ export async function getProjectItemForIssue(issueNumber) {
118
197
  const nodes = data.repository?.issue?.projectItems.nodes ?? [];
119
198
  return nodes.find((n) => n.project.id === projectId)?.id ?? null;
120
199
  }
121
- // Map of issue number → current Status column, for list_issues enrichment.
122
- // Capped at the first 100 board items (matches list_issues' own page size).
123
- export async function getProjectStatusByIssueNumber() {
200
+ // Map of issue number → its board Status + project-native Priority/Effort, for
201
+ // list_issues enrichment. Capped at the first 100 board items (matches
202
+ // list_issues' own page size).
203
+ export async function getProjectFieldsByIssueNumber() {
124
204
  const projectId = requireProjectId();
125
205
  const data = await projectCall(() => graphqlRequest(`query($project:ID!){
126
206
  node(id:$project){
@@ -128,7 +208,13 @@ export async function getProjectStatusByIssueNumber() {
128
208
  items(first:100){
129
209
  nodes{
130
210
  content{ ... on Issue { number } }
131
- fieldValueByName(name:"Status"){
211
+ status:fieldValueByName(name:"Status"){
212
+ ... on ProjectV2ItemFieldSingleSelectValue { name }
213
+ }
214
+ priority:fieldValueByName(name:"Priority"){
215
+ ... on ProjectV2ItemFieldSingleSelectValue { name }
216
+ }
217
+ effort:fieldValueByName(name:"Effort"){
132
218
  ... on ProjectV2ItemFieldSingleSelectValue { name }
133
219
  }
134
220
  }
@@ -139,9 +225,56 @@ export async function getProjectStatusByIssueNumber() {
139
225
  const result = new Map();
140
226
  for (const item of data.node?.items.nodes ?? []) {
141
227
  const number = item.content?.number;
142
- const status = item.fieldValueByName?.name;
143
- if (number != null && status)
144
- result.set(number, status);
228
+ if (number == null)
229
+ continue;
230
+ const fields = {};
231
+ if (item.status?.name)
232
+ fields.status = item.status.name;
233
+ if (item.priority?.name)
234
+ fields.priority = item.priority.name;
235
+ if (item.effort?.name)
236
+ fields.effort = item.effort.name;
237
+ if (fields.status || fields.priority || fields.effort)
238
+ result.set(number, fields);
239
+ }
240
+ return result;
241
+ }
242
+ // Map of issue number → its org-level Issue Field single-select values, keyed by
243
+ // lowercased field name (e.g. "priority" → "High", "effort" → "Medium"). For
244
+ // boards whose Priority/Effort are org Issue Fields (not project-native fields —
245
+ // those aren't readable off the project item). One batched query over open
246
+ // issues. Needs the org-field permission, so callers gate this on
247
+ // OKFFS_CLASSIC_PAT. Throws (via orgFieldCall) on a permission error; list_issues
248
+ // treats that as non-fatal.
249
+ export async function getOrgIssueFieldValuesByNumber() {
250
+ const data = await orgFieldCall(() => graphqlRequest(`query($owner:String!,$repo:String!){
251
+ repository(owner:$owner,name:$repo){
252
+ issues(first:100,states:OPEN){
253
+ nodes{
254
+ number
255
+ issueFieldValues(first:50){
256
+ nodes{
257
+ __typename
258
+ ... on IssueFieldSingleSelectValue {
259
+ name
260
+ field{ ... on IssueFieldSingleSelect { name } }
261
+ }
262
+ }
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }`, { owner, repo }));
268
+ const result = new Map();
269
+ for (const issue of data.repository?.issues.nodes ?? []) {
270
+ const values = new Map();
271
+ for (const v of issue.issueFieldValues.nodes) {
272
+ const fname = v.field?.name;
273
+ if (fname && v.name)
274
+ values.set(fname.toLowerCase(), v.name);
275
+ }
276
+ if (values.size)
277
+ result.set(issue.number, values);
145
278
  }
146
279
  return result;
147
280
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const name = "create_issue";
3
- export declare const description = "Create a GitHub issue and automatically create a matching branch. Before calling this tool, infer appropriate labels from the issue title and description using GitHub's default labels: bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix. Pass the inferred labels in the labels parameter unless the user has specified their own. If the user mentions that this issue is blocked by, blocking, or a child of another issue, call link_issues after creating this issue to set the relationship. Returns the issue URL, issue number, and branch name.";
3
+ export declare const description: string;
4
4
  export declare const inputSchema: z.ZodObject<{
5
5
  title: z.ZodString;
6
6
  description: z.ZodString;
@@ -8,20 +8,23 @@ export declare const inputSchema: z.ZodObject<{
8
8
  labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
9
  milestone: z.ZodOptional<z.ZodNumber>;
10
10
  priority: z.ZodOptional<z.ZodString>;
11
+ effort: z.ZodOptional<z.ZodString>;
11
12
  }, "strip", z.ZodTypeAny, {
12
13
  title: string;
13
14
  description: string;
14
- priority?: string | undefined;
15
15
  assignees?: string[] | undefined;
16
16
  labels?: string[] | undefined;
17
17
  milestone?: number | undefined;
18
+ priority?: string | undefined;
19
+ effort?: string | undefined;
18
20
  }, {
19
21
  title: string;
20
22
  description: string;
21
- priority?: string | undefined;
22
23
  assignees?: string[] | undefined;
23
24
  labels?: string[] | undefined;
24
25
  milestone?: number | undefined;
26
+ priority?: string | undefined;
27
+ effort?: string | undefined;
25
28
  }>;
26
29
  export declare function handler(input: z.infer<typeof inputSchema>): Promise<{
27
30
  content: {
@@ -1 +1 @@
1
- {"version":3,"file":"create_issue.d.ts","sourceRoot":"","sources":["../../src/tools/create_issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,IAAI,iBAAiB,CAAC;AAEnC,eAAO,MAAM,WAAW,mlBAC0jB,CAAC;AAEnlB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;EAStB,CAAC;AAEH,wBAAsB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;GAuJ/D"}
1
+ {"version":3,"file":"create_issue.d.ts","sourceRoot":"","sources":["../../src/tools/create_issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8DxB,eAAO,MAAM,IAAI,iBAAiB,CAAC;AAyBnC,eAAO,MAAM,WAAW,QAGiM,CAAC;AAE1N,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAEH,wBAAsB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;GAwL/D"}
@@ -2,22 +2,93 @@ import { z } from "zod";
2
2
  import { createIssue, updateIssueBody, getDefaultBranch, getRef, createBranch, buildBranchName, createDraftPullRequest } from "../github.js";
3
3
  import { config } from "../config.js";
4
4
  import { git, currentBranch } from "../git.js";
5
- import { addIssueToProject, getProjectMetadata, setProjectFieldValue } from "../projects.js";
5
+ import { addIssueToProject, getProjectMetadata, setProjectFieldValue, getOrgIssueField, setIssueFieldSingleSelect } from "../projects.js";
6
+ // Set a board single-select field (Priority, Effort, …) to `value`. Handles both
7
+ // shapes: a project-native single-select (set on the project item), and a GitHub
8
+ // org-level Issue Field (project field reports no options → set on the issue via
9
+ // setIssueFieldValue, gated on OKFFS_CLASSIC_PAT — #91). Non-fatal: warns and
10
+ // returns null on any miss. Returns the applied value on success.
11
+ async function applyBoardSingleSelect(label, value, itemId, issueNodeId, meta) {
12
+ const native = meta.singleSelectByName.get(label.toLowerCase());
13
+ if (!native) {
14
+ console.warn(`[okffs] ${label} "${value}" not set: the board has no ${label} field.`);
15
+ return null;
16
+ }
17
+ // Project-native single-select with resolvable options.
18
+ if (native.options.size > 0) {
19
+ const optionId = native.options.get(value);
20
+ if (optionId) {
21
+ await setProjectFieldValue(itemId, native.fieldId, optionId);
22
+ return value;
23
+ }
24
+ console.warn(`[okffs] ${label} "${value}" not set — no matching option. Board ${label} options: ${[...native.options.keys()].join(", ")}.`);
25
+ return null;
26
+ }
27
+ // No options via the project API → it's a GitHub org-level Issue Field.
28
+ if (!config.classicPat) {
29
+ console.warn(`[okffs] ${label} "${value}" not set: the board's ${label} is an org-level Issue Field, ` +
30
+ `which okffs can only set with a classic PAT (\`admin:org\`) and OKFFS_CLASSIC_PAT=true (security tradeoff — see docs). ` +
31
+ `Set it manually in the board UI for now.`);
32
+ return null;
33
+ }
34
+ try {
35
+ const orgField = await getOrgIssueField(label);
36
+ if (!orgField) {
37
+ console.warn(`[okffs] ${label} "${value}" not set: no org-level ${label} Issue Field found.`);
38
+ return null;
39
+ }
40
+ const orgOptionId = orgField.options.get(value);
41
+ if (!orgOptionId) {
42
+ console.warn(`[okffs] ${label} "${value}" not set — no matching org Issue Field option. Options: ${[...orgField.options.keys()].join(", ")}.`);
43
+ return null;
44
+ }
45
+ await setIssueFieldSingleSelect(issueNodeId, orgField.fieldId, orgOptionId);
46
+ return value;
47
+ }
48
+ catch (err) {
49
+ // Permission (fine-grained PAT FORBIDDEN) / preview-API errors — never fatal.
50
+ console.warn(`[okffs] ${label} not set via org Issue Field:`, err instanceof Error ? err.message : err);
51
+ return null;
52
+ }
53
+ }
6
54
  export const name = "create_issue";
7
- export const description = "Create a GitHub issue and automatically create a matching branch. Before calling this tool, infer appropriate labels from the issue title and description using GitHub's default labels: bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix. Pass the inferred labels in the labels parameter unless the user has specified their own. If the user mentions that this issue is blocked by, blocking, or a child of another issue, call link_issues after creating this issue to set the relationship. Returns the issue URL, issue number, and branch name.";
55
+ // Priority/Effort inference guidance is woven into the tool description so Claude
56
+ // uses its own judgement to triage the issue it's creating (like it already does
57
+ // for labels), falling back to OKFFS_DEFAULT_* only when it can't tell. Toggle per
58
+ // field with OKFFS_INFER_PRIORITY / OKFFS_INFER_EFFORT (default on).
59
+ function inferenceGuidance() {
60
+ const bits = [];
61
+ if (config.inferPriority) {
62
+ bits.push("infer a `priority` for the issue from its urgency and impact (typical scale: Urgent, High, Medium, Low)");
63
+ }
64
+ if (config.inferEffort) {
65
+ bits.push("infer an `effort` from the expected amount of work (typical scale: High, Medium, Low)");
66
+ }
67
+ if (bits.length === 0)
68
+ return "";
69
+ return (` Also ${bits.join(" and ")}, passing the value(s) in the matching parameter. ` +
70
+ "okffs matches these against the board's actual options and falls back to OKFFS_DEFAULT_PRIORITY / OKFFS_DEFAULT_EFFORT when you omit them — so if you genuinely can't judge, omit the field rather than guessing.");
71
+ }
72
+ export const description = "Create a GitHub issue and automatically create a matching branch. Before calling this tool, infer appropriate labels from the issue title and description using GitHub's default labels: bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix. Pass the inferred labels in the labels parameter unless the user has specified their own." +
73
+ inferenceGuidance() +
74
+ " If the user mentions that this issue is blocked by, blocking, or a child of another issue, call link_issues after creating this issue to set the relationship. Returns the issue URL, issue number, and branch name.";
8
75
  export const inputSchema = z.object({
9
76
  title: z.string().describe("Issue title"),
10
77
  description: z.string().describe("Issue body / description"),
11
78
  assignees: z.array(z.string()).optional().describe("GitHub usernames to assign"),
12
79
  labels: z.array(z.string()).optional().describe("Labels to apply e.g. bug, feature"),
13
80
  milestone: z.number().int().optional().describe("Milestone number to assign"),
14
- priority: z.string().optional().describe("Optional Project board Priority (e.g. High, Medium, Low) — matched against the board's Priority field options. Only applied when OKFFS_PROJECT_AUTO_ADD=true and the board has a Priority field."),
81
+ priority: z.string().optional().describe("Optional Project board Priority (e.g. Urgent, High, Medium, Low) — matched against the board's Priority options (project-native field, or a GitHub org Issue Field when OKFFS_CLASSIC_PAT is set). Only applied when OKFFS_PROJECT_AUTO_ADD=true and a Priority field exists. If omitted, OKFFS_DEFAULT_PRIORITY is used when set."),
82
+ effort: z.string().optional().describe("Optional Project board Effort (e.g. High, Medium, Low) — matched against the board's Effort options (project-native field, or a GitHub org Issue Field when OKFFS_CLASSIC_PAT is set). Only applied when OKFFS_PROJECT_AUTO_ADD=true and an Effort field exists. If omitted, OKFFS_DEFAULT_EFFORT is used when set."),
15
83
  });
16
84
  export async function handler(input) {
17
85
  const resolvedAssignees = input.assignees ?? config.defaultAssignees;
18
86
  const resolvedLabels = [
19
87
  ...new Set([...(input.labels ?? []), ...config.defaultLabels])
20
88
  ];
89
+ // Fall back to OKFFS_DEFAULT_PRIORITY / OKFFS_DEFAULT_EFFORT when not given.
90
+ const resolvedPriority = input.priority ?? config.defaultPriority;
91
+ const resolvedEffort = input.effort ?? config.defaultEffort;
21
92
  const issue = await createIssue(input.title, input.description, resolvedAssignees, resolvedLabels, input.milestone);
22
93
  const branchName = buildBranchName(issue.number, input.title);
23
94
  const defaultBranch = await getDefaultBranch();
@@ -30,39 +101,29 @@ export async function handler(input) {
30
101
  // failure warns with an [okffs] prefix and never blocks issue creation.
31
102
  let addedToBoard = false;
32
103
  let priorityApplied = null;
104
+ let effortApplied = null;
105
+ let boardError = null;
106
+ let boardItemId = null;
33
107
  if (config.projectAutoAdd && config.projectEnabled) {
34
108
  try {
35
109
  const itemId = await addIssueToProject(issue.node_id);
110
+ boardItemId = itemId;
36
111
  addedToBoard = true;
37
- if (input.priority) {
112
+ // Priority and Effort are set the same way — project-native single-select,
113
+ // or a GitHub org-level Issue Field when OKFFS_CLASSIC_PAT is on (#91).
114
+ if (resolvedPriority || resolvedEffort) {
38
115
  const meta = await getProjectMetadata();
39
- const optionId = meta.priorityFieldId
40
- ? meta.priorityOptions.get(input.priority)
41
- : undefined;
42
- if (meta.priorityFieldId && optionId) {
43
- await setProjectFieldValue(itemId, meta.priorityFieldId, optionId);
44
- priorityApplied = input.priority;
116
+ if (resolvedPriority) {
117
+ priorityApplied = await applyBoardSingleSelect("Priority", resolvedPriority, itemId, issue.node_id, meta);
45
118
  }
46
- else if (!meta.priorityFieldId) {
47
- console.warn(`[okffs] Priority "${input.priority}" not set: the board has no Priority field.`);
48
- }
49
- else if (meta.priorityOptions.size === 0) {
50
- // Priority field exists but exposes no options via the project API —
51
- // the hallmark of a GitHub org-level Issue Field (options live under
52
- // organization.issueFields, not on the project single-select field).
53
- // Full read/write support is tracked in #91.
54
- console.warn(`[okffs] Priority "${input.priority}" not set: the board's Priority field looks like an ` +
55
- `org-level Issue Field, whose options aren't settable via the project API yet (see #91). ` +
56
- `Set it manually in the board UI for now.`);
57
- }
58
- else {
59
- const opts = [...meta.priorityOptions.keys()].join(", ");
60
- console.warn(`[okffs] Could not set priority "${input.priority}" — no matching option. Board Priority options: ${opts}.`);
119
+ if (resolvedEffort) {
120
+ effortApplied = await applyBoardSingleSelect("Effort", resolvedEffort, itemId, issue.node_id, meta);
61
121
  }
62
122
  }
63
123
  }
64
124
  catch (err) {
65
- console.warn("[okffs] Failed to add issue to project board:", err instanceof Error ? err.message : err);
125
+ boardError = err instanceof Error ? err.message : String(err);
126
+ console.warn("[okffs] Failed to add issue to project board:", boardError);
66
127
  }
67
128
  }
68
129
  let draftPRUrl = null;
@@ -98,6 +159,35 @@ export async function handler(input) {
98
159
  console.warn("[okffs] Failed to create draft PR:", err instanceof Error ? err.message : err);
99
160
  }
100
161
  }
162
+ // Pin the board Status to the configured initial column (e.g. Backlog). This
163
+ // runs LAST — after the draft PR is created — on purpose: the PR's `Closes #N`
164
+ // link fires GitHub's "PR linked to issue" workflow, which flips a scaffolded
165
+ // issue to "In Progress". Setting our intended status here lets it win that
166
+ // race so freshly-created issues land where okffs means them to (#103).
167
+ // Non-fatal, like the rest of the board handling.
168
+ let initialStatusApplied = null;
169
+ if (config.projectInitialStatus && boardItemId) {
170
+ try {
171
+ const meta = await getProjectMetadata();
172
+ const optionId = meta.statusFieldId
173
+ ? meta.statusOptions.get(config.projectInitialStatus)
174
+ : undefined;
175
+ if (meta.statusFieldId && optionId) {
176
+ await setProjectFieldValue(boardItemId, meta.statusFieldId, optionId);
177
+ initialStatusApplied = config.projectInitialStatus;
178
+ }
179
+ else if (!meta.statusFieldId) {
180
+ console.warn(`[okffs] OKFFS_PROJECT_INITIAL_STATUS set but the board has no Status field.`);
181
+ }
182
+ else {
183
+ const opts = [...meta.statusOptions.keys()].join(", ");
184
+ console.warn(`[okffs] OKFFS_PROJECT_INITIAL_STATUS "${config.projectInitialStatus}" doesn't match a board Status option. Options: ${opts}.`);
185
+ }
186
+ }
187
+ catch (err) {
188
+ console.warn("[okffs] Failed to set initial board status:", err instanceof Error ? err.message : err);
189
+ }
190
+ }
101
191
  const lines = [
102
192
  `Issue #${issue.number} created: ${issue.html_url}`,
103
193
  `Branch: \`${branchName}\``,
@@ -114,13 +204,25 @@ export async function handler(input) {
114
204
  lines.push(`Labels: ${resolvedLabels.join(", ")}${source}`);
115
205
  }
116
206
  if (addedToBoard) {
117
- lines.push(`Board: added to the project${priorityApplied ? ` (priority: ${priorityApplied})` : ""}`);
207
+ const bits = [
208
+ priorityApplied ? `priority: ${priorityApplied}` : null,
209
+ effortApplied ? `effort: ${effortApplied}` : null,
210
+ initialStatusApplied ? `status: ${initialStatusApplied}` : null,
211
+ ].filter(Boolean);
212
+ lines.push(`Board: added to the project${bits.length ? ` (${bits.join(", ")})` : ""}`);
213
+ }
214
+ else if (boardError) {
215
+ // Auto-add was enabled but failed. Surface it here (not just the server log)
216
+ // so it isn't invisible — the issue was still created successfully, which
217
+ // otherwise makes an empty board look like it worked. See #101.
218
+ lines.push(`Board: NOT added — auto-add is on but failed. The issue itself was created fine.`, ` ${boardError}`);
118
219
  }
119
220
  lines.push(``, `To start work:`, ` git fetch origin`, ` git checkout ${branchName}`);
120
221
  // Conversational nudge: prompt the host LLM to offer moving the issue into
121
222
  // the "In Progress" column via update_project_status once work begins.
122
223
  if (addedToBoard) {
123
- lines.push(``, `This issue is on the board in its default column. Want me to move it to "In Progress" and start? ` +
224
+ const where = initialStatusApplied ? `"${initialStatusApplied}"` : "its default column";
225
+ lines.push(``, `This issue is on the board in ${where}. Want me to move it to "In Progress" and start? ` +
124
226
  `(I can call update_project_status for #${issue.number}.)`);
125
227
  }
126
228
  if (config.promptForMetadata && !input.assignees && !input.labels) {
@@ -1 +1 @@
1
- {"version":3,"file":"create_issue.js","sourceRoot":"","sources":["../../src/tools/create_issue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_issue.js","sourceRoot":"","sources":["../../src/tools/create_issue.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const name = "create_pull_request";
3
- export declare const description = "Create a pull request for the current issue branch. Reads the issue, its comments, and commits to generate a PR title and body. Always includes Closes #N. If OKFFS_UPDATE_DOCS is true, updates the project docs (CHANGELOG.md, and when relevant CLAUDE.md, CONTRIBUTING.md, SECURITY.md) and commits them onto the branch before creating the PR. If a PR already exists for the branch (e.g. a draft opened by create_issue under OKFFS_AUTO_PR=true), it is updated and marked ready for review instead of erroring. Posts a summary comment to the issue.";
3
+ export declare const description = "Create a pull request for the current issue branch. Reads the issue, its comments, and commits to generate a PR title and body. Always includes Closes #N. If OKFFS_UPDATE_DOCS is true, writes a per-issue changelog fragment under .changes/unreleased/ (assembled into CHANGELOG.md at release time by prepare_release \u2014 not a direct CHANGELOG.md edit), plus SECURITY.md for security-related changes, and commits them onto the branch before creating the PR. If a PR already exists for the branch (e.g. a draft opened by create_issue under OKFFS_AUTO_PR=true), it is updated and marked ready for review instead of erroring. Posts a summary comment to the issue.";
4
4
  export declare const inputSchema: z.ZodObject<{
5
5
  issue_number: z.ZodNumber;
6
6
  summary: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"create_pull_request.d.ts","sourceRoot":"","sources":["../../src/tools/create_pull_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,WAAW,oiBAC2gB,CAAC;AAEpiB,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,wBAAsB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;GAkM/D"}
1
+ {"version":3,"file":"create_pull_request.d.ts","sourceRoot":"","sources":["../../src/tools/create_pull_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,WAAW,ypBAC2nB,CAAC;AAEppB,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,wBAAsB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC;;;;;GAkM/D"}
@@ -4,7 +4,7 @@ import { config } from "../config.js";
4
4
  import { updateProjectDocs } from "../docs.js";
5
5
  import { git, currentBranch } from "../git.js";
6
6
  export const name = "create_pull_request";
7
- export const description = "Create a pull request for the current issue branch. Reads the issue, its comments, and commits to generate a PR title and body. Always includes Closes #N. If OKFFS_UPDATE_DOCS is true, updates the project docs (CHANGELOG.md, and when relevant CLAUDE.md, CONTRIBUTING.md, SECURITY.md) and commits them onto the branch before creating the PR. If a PR already exists for the branch (e.g. a draft opened by create_issue under OKFFS_AUTO_PR=true), it is updated and marked ready for review instead of erroring. Posts a summary comment to the issue.";
7
+ export const description = "Create a pull request for the current issue branch. Reads the issue, its comments, and commits to generate a PR title and body. Always includes Closes #N. If OKFFS_UPDATE_DOCS is true, writes a per-issue changelog fragment under .changes/unreleased/ (assembled into CHANGELOG.md at release time by prepare_release — not a direct CHANGELOG.md edit), plus SECURITY.md for security-related changes, and commits them onto the branch before creating the PR. If a PR already exists for the branch (e.g. a draft opened by create_issue under OKFFS_AUTO_PR=true), it is updated and marked ready for review instead of erroring. Posts a summary comment to the issue.";
8
8
  export const inputSchema = z.object({
9
9
  issue_number: z.number().int().positive().describe("The issue number to create a PR for"),
10
10
  summary: z.string().optional().describe("Optional summary of what was done — used in PR body and issue comment"),
@@ -1 +1 @@
1
- {"version":3,"file":"create_pull_request.js","sourceRoot":"","sources":["../../src/tools/create_pull_request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_pull_request.js","sourceRoot":"","sources":["../../src/tools/create_pull_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GACtB,ipBAAipB,CAAC;AAEppB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACzF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;CACjH,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAkC;IAC9D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,eAAe,CACnB,KAAK,CAAC,YAAY,EAClB,2BAA2B,KAAK,CAAC,YAAY,4EAA4E,CAC1H,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,YAAY,4BAA4B,EAAE,CAAC;SACrG,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE5C,4EAA4E;IAC5E,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACjD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,aAAa;gBACX,4BAA4B,UAAU,gCAAgC,WAAW,OAAO;oBACxF,oCAAoC,KAAK,CAAC,YAAY,uDAAuD,CAAC;QAClH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,eAAe,CACnB,KAAK,CAAC,YAAY,EAClB,6BAA6B,UAAU,gCAAgC,UAAU,2DAA2D,CAC7I,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,6BAA6B,UAAU,gCAAgC,UAAU,yBAAyB,EAAE,CAAC;SACvJ,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,YAAY,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAE9D,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI;QACnC,CAAC,CAAC,KAAK,CAAC,IAAI;aACP,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;aACzC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC;aACvC,IAAI,EAAE;QACX,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAEhB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC;IAE3D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvE,CAAC,CAAC,oBAAoB,CAAC;IAEzB,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;QAC/C,CAAC,CAAC,cAAc;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,YAAY,CAAC;aAC3C,IAAI,CAAC,aAAa,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,cAAc;QACd,EAAE;QACF,YAAY;QACZ,cAAc;KACf,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,WAAW,GAAG,MAAM,iBAAiB,CAAC;YACpC,OAAO,EAAE,qBAAqB;YAC9B,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,kBAAkB;YAC5C,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,0CAA0C;IAC1C,MAAM,cAAc,GAAG,aAAa,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qCAAqC,UAAU,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3G,MAAM,eAAe,CACnB,KAAK,CAAC,YAAY,EAClB,iDAAiD,UAAU,2EAA2E,CACvI,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iDAAiD,UAAU,aAAa,EAAE,CAAC;SACrH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,uEAAuE;QACvE,qEAAqE;QACrE,8EAA8E;QAC9E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;gBAC7B,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,KAAK,SAAS,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,6CAA6C,KAAK,CAAC,YAAY,6BAA6B,EAC5F,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,0DAA0D;QAC1D,IAAI,CAAC;YACH,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,iCAAiC,UAAU,aAAa,EACxD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACF,MAAM,eAAe,CACnB,KAAK,CAAC,YAAY,EAClB,4CAA4C,UAAU,yDAAyD,UAAU,mDAAmD,CAC7K,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,4CAA4C,UAAU,kDAAkD,UAAU,+CAA+C,EAAE,CAAC;aAC9M,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,cAAc,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,cAAc,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,EAAwC,CAAC;IAC7C,IAAI,MAAc,CAAC;IAEnB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,8BAA8B,QAAQ,CAAC,MAAM,4CAA4C,EACzF,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9D,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAClE,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG;QACd,MAAM,MAAM,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC9B,EAAE;QACF,IAAI;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;IAC7B,MAAM,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc;QACxC,CAAC,CAAC,uLAAuL,UAAU,6BAA6B;QAChO,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,IAAI,MAAM,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,GAAG,YAAY,EAAE,EAAE,CAAC;KACxH,CAAC;AACJ,CAAC"}