github-issue-tower-defence-management 2.172.1 → 2.173.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/README.md +2 -0
- package/README.test.ts +84 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/index-BZWLanIn.css +2 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-BWYweepF.js → index-B_6CLRC3.js} +2 -2
- package/bin/adapter/entry-points/console/ui-dist/index.html +2 -2
- package/bin/adapter/repositories/GitHubIssueCommentRepository.js +18 -6
- package/bin/adapter/repositories/GitHubIssueCommentRepository.js.map +1 -1
- package/package.json +1 -1
- package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts +4 -3
- package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/index-n0lwI4WL.css +0 -2
package/README.md
CHANGED
|
@@ -397,6 +397,7 @@ startPreparation:
|
|
|
397
397
|
autoRevertReopenedDoneEnabled: false # set to true to auto-revert reopened Done issues to Awaiting Workspace
|
|
398
398
|
awLogDirectoryPath: '/home/user/logs-aw'
|
|
399
399
|
awLogStaleThresholdMinutes: 15
|
|
400
|
+
agentDefinitionsDirectoryPath: '/home/user/agent-definitions'
|
|
400
401
|
labelsAsLlmAgentName:
|
|
401
402
|
- story
|
|
402
403
|
- story:body-condition
|
|
@@ -482,6 +483,7 @@ workflowBlockerResolvedWebhookUrl: 'https://example.com/webhook?url={URL}&msg={M
|
|
|
482
483
|
preparationProcessCheckCommand: 'pgrep -fa "claude-agent.*{URL}"'
|
|
483
484
|
awLogDirectoryPath: '/home/user/logs-aw'
|
|
484
485
|
awLogStaleThresholdMinutes: 15
|
|
486
|
+
agentDefinitionsDirectoryPath: '/home/user/agent-definitions'
|
|
485
487
|
codexHomeCandidates:
|
|
486
488
|
- .codex-dev1
|
|
487
489
|
- .codex-dev2
|
package/README.test.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment node
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import YAML from 'yaml';
|
|
7
|
+
|
|
8
|
+
const readmeText = fs.readFileSync(path.join(__dirname, 'README.md'), 'utf8');
|
|
9
|
+
|
|
10
|
+
const nextSectionHeadingPattern = /^#{2,3} /m;
|
|
11
|
+
|
|
12
|
+
const extractExampleYamlBlockText = (
|
|
13
|
+
markdown: string,
|
|
14
|
+
sectionHeading: string,
|
|
15
|
+
): string => {
|
|
16
|
+
const headingIndex = markdown.indexOf(sectionHeading);
|
|
17
|
+
if (headingIndex === -1) {
|
|
18
|
+
throw new Error(
|
|
19
|
+
`Section heading not found in README.md: ${sectionHeading}`,
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const afterHeading = markdown.slice(headingIndex + sectionHeading.length);
|
|
24
|
+
const nextHeadingMatch = afterHeading.match(nextSectionHeadingPattern);
|
|
25
|
+
const sectionBody = nextHeadingMatch
|
|
26
|
+
? afterHeading.slice(0, nextHeadingMatch.index)
|
|
27
|
+
: afterHeading;
|
|
28
|
+
|
|
29
|
+
const exampleLabelIndex = sectionBody.indexOf('Example:');
|
|
30
|
+
if (exampleLabelIndex === -1) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
`"Example:" line not found within section: ${sectionHeading}`,
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const afterExampleLabel = sectionBody.slice(exampleLabelIndex);
|
|
37
|
+
const fencedYamlBlockMatch = afterExampleLabel.match(
|
|
38
|
+
/```yaml\n([\s\S]*?)\n```/,
|
|
39
|
+
);
|
|
40
|
+
if (!fencedYamlBlockMatch) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Fenced \`\`\`yaml block not found after "Example:" within section: ${sectionHeading}`,
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return fencedYamlBlockMatch[1];
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const parseExampleYamlBlock = (
|
|
50
|
+
sectionHeading: string,
|
|
51
|
+
): Record<string, unknown> => {
|
|
52
|
+
const yamlBlockText = extractExampleYamlBlockText(readmeText, sectionHeading);
|
|
53
|
+
return YAML.parse(yamlBlockText) as Record<string, unknown>;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
describe('README.md Example YAML blocks document agentDefinitionsDirectoryPath', () => {
|
|
57
|
+
test.each<{ sectionHeading: string; isNested: boolean }>([
|
|
58
|
+
{ sectionHeading: '### Schedule Command Config', isNested: true },
|
|
59
|
+
{
|
|
60
|
+
sectionHeading:
|
|
61
|
+
'### startDaemon and notifyFinishedIssuePreparation Commands Config',
|
|
62
|
+
isNested: false,
|
|
63
|
+
},
|
|
64
|
+
])(
|
|
65
|
+
'the "$sectionHeading" Example YAML block declares a non-empty agentDefinitionsDirectoryPath, following the awLogDirectoryPath pattern',
|
|
66
|
+
({ sectionHeading, isNested }) => {
|
|
67
|
+
const parsedExample = parseExampleYamlBlock(sectionHeading);
|
|
68
|
+
const configRoot = isNested
|
|
69
|
+
? (parsedExample.startPreparation as
|
|
70
|
+
Record<string, unknown> | undefined)
|
|
71
|
+
: parsedExample;
|
|
72
|
+
|
|
73
|
+
expect(typeof configRoot?.awLogDirectoryPath).toBe('string');
|
|
74
|
+
expect((configRoot?.awLogDirectoryPath as string).length).toBeGreaterThan(
|
|
75
|
+
0,
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
expect(typeof configRoot?.agentDefinitionsDirectoryPath).toBe('string');
|
|
79
|
+
expect(
|
|
80
|
+
(configRoot?.agentDefinitionsDirectoryPath as string).length,
|
|
81
|
+
).toBeGreaterThan(0);
|
|
82
|
+
},
|
|
83
|
+
);
|
|
84
|
+
});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-input:#e5e5e5;--color-ring:#0a0a0a;--color-background:#fff;--color-foreground:#0a0a0a;--color-primary:#171717;--color-primary-foreground:#fafafa;--color-secondary:#f5f5f5;--color-secondary-foreground:#171717;--color-accent:#f5f5f5;--color-accent-foreground:#171717}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.grow{flex-grow:1}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-input{border-color:var(--color-input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--color-background)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-foreground{color:var(--color-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-primary\/90:hover{background-color:#171717e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:#f5f5f5cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}}html{font-size:clamp(15px,2.1vw,26px)}body{color:#e6edf3;background-color:#0d1117;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.console-app{flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}.console-list-screen{flex:1;min-height:0;overflow-y:auto}.console-tabbar{padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);background:#161b22;border-bottom:2px solid #30363d;flex-direction:column;display:flex}.console-tabbar-top{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;align-items:center;gap:12px;padding:4px 8px;display:flex;overflow-x:auto}.console-tabbar-bottom{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;align-items:stretch;gap:0;padding:0 8px;display:flex;overflow-x:auto}.console-tab{color:#8b949e;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-2px;padding:10px 14px;font-size:.8125rem;font-weight:500;line-height:1.2;text-decoration:none;display:inline-flex}.console-tab:hover{color:#e6edf3}.console-tab[data-active=true]{color:#e6edf3;background:#2f81f726;border-bottom-color:#2f81f7;font-weight:700}.console-tab-badge{text-align:center;color:#e6edf3;background:#484f58;border-radius:20px;min-width:20px;padding:1px 7px;font-size:.6875rem;font-weight:700;line-height:1.5}.console-tab-badge[data-zero=true]{color:#8b949e;background:#30363d}.console-tab-pjname{align-self:center;margin-left:4rem;padding:0 8px}.console-tab-pjname-button{color:#e6edf3;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:3px;padding:2px 4px;font-size:.8125rem;font-weight:600;line-height:1;display:flex}.console-tab-pjname-button:hover{color:#e6edf3;background:#21262d}.console-tab-pjname-arrow{font-size:.625rem}.console-tab-pjname-dropdown{z-index:100;background:#161b22;border:1px solid #30363d;border-radius:6px;min-width:120px;margin:0;padding:4px 0;list-style:none;box-shadow:0 8px 24px #01040980}.console-tab-pjname-option{color:#e6edf3;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:12px 16px;font-size:.7188rem;display:block}.console-tab-pjname-option:hover,.console-tab-pjname-option[data-active=true]{background:#21262d}.console-tab-pjname-button[data-disabled=true],.console-tab-pjname-option[data-disabled=true]{color:#8b949e}.console-tab-pjname-disabled-label{color:#8b949e;margin-left:4px;font-size:.625rem;font-weight:400}.console-tab-project-link{color:#8b949e;border-radius:4px;padding:8px 10px;font-size:.7188rem;text-decoration:none}.console-tab-project-link:hover{color:#e6edf3;background:#21262d}.console-tab-geninfo{color:#8b949e;align-self:center;padding:0 4px;font-size:.6875rem}.console-tab-settings{align-self:center;align-items:center;padding:0 4px;display:inline-flex}.console-project-timer-bar{box-sizing:border-box;background:#2d0000;align-items:center;gap:8px;width:100%;min-height:28px;padding:4px 12px;display:flex;position:relative}.console-project-timer-bar-track{background:#4d0000;border-radius:3px;flex:1;height:6px;overflow:hidden}.console-project-timer-bar-fill{background:#e53e3e;border-radius:3px;height:100%;transition:width .5s linear}.console-project-timer-bar-label{color:#e53e3e;white-space:nowrap;text-align:right;min-width:60px;font-size:.6875rem;font-weight:700}.console-timer-settings-button{color:#8b949e;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:8px 12px;font-size:1rem;line-height:1}.console-timer-settings-button:hover{color:#e6edf3;background:#21262d}.console-timer-settings-button--active{color:#e67e00}.console-timer-settings-overlay{z-index:100;position:fixed;inset:0}.console-timer-settings-backdrop{cursor:default;z-index:-1;background:#01040999;border:none;position:fixed;inset:0}.console-timer-settings-dialog-inner{background:#161b22;border:1px solid #30363d;border-radius:8px;min-width:280px;max-width:400px;max-height:80vh;padding:20px;overflow-y:auto}.console-timer-settings-title{color:#e6edf3;margin:0 0 16px;font-size:.9375rem;font-weight:600}.console-timer-settings-row{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.console-timer-settings-label{color:#c9d1d9;font-size:.875rem}.console-timer-settings-loading{color:#8b949e;padding:8px 0;font-size:.875rem}.console-timer-settings-project-table{border-collapse:collapse;width:100%;margin-bottom:12px}.console-timer-settings-th{color:#8b949e;text-align:left;border-bottom:1px solid #30363d;padding:0 4px 6px;font-size:.6875rem;font-weight:500}.console-timer-settings-th-minutes{text-align:right}.console-timer-settings-project-row td{vertical-align:middle;border-bottom:1px solid #21262d;padding:5px 4px}.console-timer-settings-pjcode{color:#c9d1d9;cursor:pointer;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8125rem;display:block}.console-timer-settings-minutes-cell{white-space:nowrap;text-align:right}.console-timer-settings-minutes-stepper{align-items:center;gap:2px;display:inline-flex}.console-timer-settings-minutes-step-btn{color:#c9d1d9;cursor:pointer;-webkit-user-select:none;user-select:none;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:2px 5px;font-size:.875rem;line-height:1}.console-timer-settings-minutes-step-btn:hover{color:#e6edf3;background:#30363d}.console-timer-settings-minutes-input{color:#e6edf3;text-align:right;background:#0d1117;border:1px solid #30363d;border-radius:4px;width:2.5rem;padding:3px 4px;font-size:.8125rem}.console-timer-settings-minutes-label{color:#8b949e;width:24px;font-size:.75rem;display:inline-block}.console-timer-settings-actions{justify-content:flex-end;margin-top:16px;display:flex}.console-timer-settings-save{color:#fff;cursor:pointer;background:#238636;border:1px solid #f0f6fc1a;border-radius:6px;padding:6px 14px;font-size:.8125rem;font-weight:500}.console-timer-settings-save:hover{background:#2ea043}.console-modal-dialog{z-index:100;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.console-modal-backdrop{cursor:default;z-index:-1;background:#01040999;border:none;width:100%;height:100%;position:fixed;inset:0}.console-modal-inner{background:#161b22;border:1px solid #30363d;border-radius:8px;width:100%;min-width:280px;max-width:400px;max-height:80vh;padding:20px;position:relative;overflow-y:auto}.console-modal-title{color:#e6edf3;margin:0 0 16px;font-size:.9375rem;font-weight:600}.console-modal-input{box-sizing:border-box;color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;outline:none;width:100%;padding:6px 12px;font-size:.875rem}.console-modal-input:focus{border-color:#4493f8;box-shadow:0 0 0 3px #4493f84d}.console-modal-actions{gap:8px;margin-top:16px;display:flex}.console-toggle-switch{cursor:pointer;background:#30363d;border:none;border-radius:12px;flex-shrink:0;align-items:center;width:44px;height:24px;padding:2px;transition:background .2s;display:inline-flex;position:relative}.console-toggle-switch--on{background:#238636}.console-toggle-switch-thumb{background:#e6edf3;border-radius:50%;width:20px;height:20px;transition:transform .2s;display:block}.console-toggle-switch--on .console-toggle-switch-thumb{transform:translate(20px)}.console-toggle-switch:focus-visible{outline-offset:2px;outline:2px solid #58a6ff}.console-tab-settings-button{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;align-self:center;margin-left:4px;padding:8px 12px;font-size:1rem;line-height:1}.console-tab-settings-button:hover{color:#e6edf3;border-color:#58a6ff}.console-settings-modal{z-index:1000;background:#0d1117;flex-direction:column;display:flex;position:fixed;inset:0}.console-settings-modal-bar{background:#161b22;border-bottom:1px solid #30363d;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-settings-modal-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-settings-modal-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-settings-modal-close:hover{color:#e6edf3}.console-settings-modal-body{flex-direction:column;flex:1;gap:16px;padding:24px 18px;display:flex}.console-settings-modal-loading{color:#8b949e;font-size:.875rem}.console-settings-modal-project-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.console-settings-modal-project-row{align-items:center;gap:10px;display:flex}.console-settings-modal-label{color:#e6edf3;flex-shrink:0;min-width:8rem;font-size:.875rem;font-weight:500}.console-settings-modal-input{color:#e6edf3;text-align:right;background:#0d1117;border:1px solid #30363d;border-radius:6px;width:4rem;padding:6px 10px;font-size:.875rem}.console-settings-modal-input:focus{border-color:#58a6ff;outline:none}.console-settings-modal-create-link{color:#58a6ff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;font-size:1rem;line-height:1;text-decoration:none;display:inline-flex}.console-settings-modal-create-link:hover{color:#79c0ff;background:#21262d}.console-settings-modal-error{color:#f85149;font-size:.875rem}.console-settings-modal-row{justify-content:space-between;align-items:center;display:flex}.console-settings-modal-row-label{color:#c9d1d9;font-size:.875rem}.console-settings-modal-actions{gap:8px;display:flex}.console-settings-modal-save{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-settings-modal-save:hover:not(:disabled){background:#2ea043}.console-settings-modal-save:disabled{opacity:.5;cursor:not-allowed}.console-list{margin:0;padding:12px 18px 18px;list-style:none}.console-list-group{list-style:none}.console-item-row .console-item-icon{flex:none}.console-queued-item-title{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;min-width:0;overflow:hidden}.console-queued-item-badges{flex-wrap:wrap;flex:1 1 0;align-items:center;gap:4px;min-width:0;display:flex}.console-queued-item-actions{flex:1 1 0;min-width:0}.console-group-header{background:#0b0f14;border-bottom:1px solid #21262d;justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.console-storytag{white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:2px 8px 2px 4px;font-size:.8125rem;font-weight:700;display:inline-flex}.console-story-name-toggle{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0;display:inline}.console-story-dot{border-radius:999px;width:10px;height:10px;display:inline-block}.console-copy-story-name-button{color:#c9d1d9;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-story-name-button:hover{color:#e6edf3;background-color:#21262d}.console-group-count{color:#8b949e;font-size:.75rem}.console-story-color-palette{flex-wrap:wrap;gap:4px;padding:6px 0;display:flex}.console-story-color-swatch{cursor:pointer;color:#e6edf3;border:2px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:.625rem;display:inline-flex}.console-story-color-swatch:hover{border-color:#e6edf3}.console-story-color-swatch:disabled{opacity:.4;cursor:not-allowed}.console-story-color-swatch-label{font-size:.5rem;line-height:1}.console-item-row{color:#e6edf3;text-align:left;cursor:pointer;background:#161b22;border:1px solid #30363d;border-radius:8px;align-items:flex-start;gap:14px;width:100%;margin-bottom:10px;padding:12px 16px;display:flex}.console-item-row:hover{background:#1a2029;border-color:#484f58}.console-item-row[data-active=true]{background:#1a2029;border-color:#4493f8}.console-item-meta{flex:1;min-width:0}.console-item-title{align-items:center;gap:6px;font-size:.9063rem;font-weight:600;display:flex}.console-item-sub{color:#8b949e;margin-top:3px;font-size:.7813rem;display:block}.console-item-pill{color:#8b949e;border:1px solid #30363d;border-radius:20px;margin-right:6px;padding:1px 8px;font-size:.6875rem;display:inline-block}.console-item-createdat{color:#8b949e;cursor:help}.console-item-fields,.console-item-status-agent{color:#adbac7;flex-wrap:wrap;gap:4px 10px;margin-top:4px;font-size:.7188rem;display:flex}.console-item-field{word-break:break-all;align-items:baseline;gap:4px;min-width:0;display:inline-flex}.console-item-field-label{color:#6e7681;text-transform:uppercase;letter-spacing:.03em;font-size:.625rem}.console-item-executive-summary{color:#8b949e;white-space:pre-line;word-break:break-word;background:#0d1117;border-left:2px solid #30363d;border-radius:0 4px 4px 0;margin-top:6px;padding:6px 8px;font-size:.75rem;display:block}.console-list-message{color:#8b949e;padding:16px;font-size:.875rem}.console-list-empty{text-align:center;color:#8b949e;padding:40px;font-size:.875rem}.console-list-error,.console-detail-fetch-error{color:#f85149}.console-detail-fetch-error-line{margin:0}.console-comment-notloaded,.console-files-notloaded,.console-commits-notloaded,.console-detail-body-notloaded{color:#8b949e}.console-detail{flex-direction:column;flex:1;min-height:0;display:flex}.console-detail-header{background:#0d1117;flex-direction:column;flex-shrink:0;gap:12px;padding:16px 16px 12px;display:flex}.console-detail-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:0 16px 12px;display:flex;overflow-y:auto}.console-detail-topline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-detail-depended-issue-url{flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.8125rem;display:flex}.console-detail-depended-issue-url-label{color:#6e7681;text-transform:uppercase;letter-spacing:.03em;font-size:.625rem}.console-detail-depended-issue-url-link{align-items:center;display:inline-flex}.console-detail-title{align-items:center;gap:8px;margin:0;font-size:1.25rem;display:flex}.console-detail-title-text{flex:1}.console-detail-title-edit{color:#c9d1d9;cursor:pointer;vertical-align:middle;background:#21262d;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-edit:hover{background:#30363d;border-color:#8b949e}.console-detail-title-text--editing{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.console-detail-title-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;min-width:0;padding:6px 10px;font-size:.875rem}.console-detail-title-input:focus{border-color:#58a6ff;outline:none}.console-detail-title-save{color:#fff;cursor:pointer;white-space:nowrap;background:#238636;border:1px solid #2ea043;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-save:hover{background:#2ea043}.console-detail-title-cancel{color:#c9d1d9;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-cancel:hover{background:#30363d;border-color:#8b949e}.console-detail-title-error{color:#f85149;white-space:nowrap;font-size:.875rem}.console-detail-number{color:#8b949e;font-weight:400}.console-detail-closed-label{color:#a371f7;font-size:.8125rem}.console-detail-subbar{align-items:center;gap:12px;font-size:.8125rem;display:flex}.console-detail-link{color:#4493f8}.console-detail-repo{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-copy-url-button{color:#c9d1d9;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-url-button:hover{color:#e6edf3;background-color:#21262d}.console-label-chip,.console-detail-status-chip{border:1px solid #30363d;border-radius:999px;padding:2px 8px;font-size:.75rem;display:inline-block}.console-detail-agent-chip{color:#8b949e;border:1px solid #30363d;border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:400;display:inline-block}.console-detail-pr-status{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.console-related-pr-group{align-items:center;gap:6px;display:inline-flex}.console-related-pr-label{color:#8b949e;font-size:.75rem}.console-detail-ci-missing{opacity:.85;font-weight:400}.console-detail-mergeable-chip{font-weight:600}.console-detail-mergeable-chip-unknown{opacity:.7;font-weight:400}.console-detail-createdat{color:#8b949e;font-size:.75rem}.console-panel{border:1px solid #30363d;border-radius:8px;overflow:clip}.console-panel-header{background:#161b22;justify-content:space-between;align-items:center;display:flex}.console-panel-toggle{color:#e6edf3;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:6px 12px;font-size:.875rem;font-weight:600;display:flex}.console-panel-toggle:hover{background:#1a2029}.console-panel-action{padding:6px 12px}.console-panel-body{padding:12px}.console-markdown{word-break:break-word;font-size:.875rem;line-height:1.5}.console-markdown p{margin:.5em 0}.console-markdown ul{margin:.5em 0;padding-left:1.5em;list-style:outside}.console-markdown ol{margin:.5em 0;padding-left:1.5em;list-style:decimal}.console-markdown li{margin:.25em 0}.console-markdown table{border-collapse:collapse;margin:.5em 0}.console-markdown th,.console-markdown td{border:1px solid #30363d;padding:4px 8px}.console-markdown th{background:#161b22}.console-markdown h1,.console-markdown h2,.console-markdown h3,.console-markdown h4,.console-markdown h5,.console-markdown h6{margin:1em 0 .5em;font-weight:700;line-height:1.25}.console-markdown h1{font-size:1.6em}.console-markdown h2{font-size:1.4em}.console-markdown h3{font-size:1.2em}.console-markdown h4{font-size:1.05em}.console-markdown h5{font-size:.95em}.console-markdown h6{color:#8b949e;font-size:.9em}.console-markdown pre{background:#161b22;border:1px solid #30363d;border-radius:6px;margin:.5em 0;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem;line-height:1.45;overflow-x:auto}.console-markdown code{background:#6e768166;border-radius:4px;padding:.15em .4em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.console-markdown pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.console-markdown-code-block{flex-direction:column;margin:.5em 0;display:flex}.console-markdown-code-block pre{margin:0}.console-markdown-code-copy-host{justify-content:flex-end;margin-bottom:4px;display:flex}.console-copy-code-button{color:#c9d1d9;background-color:#161b22;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-code-button:hover{color:#e6edf3;background-color:#21262d}.console-markdown-inline-code-host{display:inline-block;position:relative}.console-inline-code-copy-trigger{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0;display:inline}.console-inline-code-copy-tooltip{color:#c9d1d9;white-space:nowrap;pointer-events:none;z-index:10;background:#161b22;border-radius:4px;margin-bottom:4px;padding:2px 6px;font-size:.75rem;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.console-markdown blockquote{color:#8b949e;border-left:3px solid #30363d;margin:.5em 0;padding:0 1em}.console-markdown a{color:#4493f8;text-decoration:none}.console-markdown a:hover{text-decoration:underline}.console-markdown-reference-host{display:inline}.console-markdown-reference{vertical-align:baseline;align-items:center;gap:.25em;display:inline-flex}.console-markdown-reference .console-item-icon{flex-shrink:0}.console-markdown-reference-title{text-decoration:none}.console-markdown-reference:hover .console-markdown-reference-title{text-decoration:underline}.console-markdown-reference-number{color:#8b949e;flex-shrink:0;font-size:.75em}.console-markdown hr{border:none;border-top:1px solid #30363d;margin:1em 0}.console-mermaid-error{color:#f85149;font-size:.8125rem}.console-mermaid-enlarge{color:#e6edf3;background:#21262d;border:1px solid #30363d;border-radius:6px;width:100%;margin-top:6px;padding:10px 12px;font-size:.8125rem;display:block}.console-mermaid-modal{z-index:1000;background:#0d1117;flex-direction:column;display:flex;position:fixed;inset:0}.console-mermaid-modal-bar{border-bottom:1px solid #30363d;align-items:center;gap:8px;padding:8px 12px;display:flex}.console-mermaid-modal-button,.console-mermaid-modal-close{color:#e6edf3;background:#21262d;border:1px solid #30363d;border-radius:6px;min-width:44px;min-height:44px;font-size:1.125rem}.console-mermaid-modal-button:disabled{opacity:.4}.console-mermaid-modal-close{margin-left:auto}.console-mermaid-modal-scale{text-align:center;color:#8b949e;min-width:4.5rem;font-size:.875rem}.console-mermaid-modal-viewport{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.console-mermaid-modal-canvas{min-width:100%}.console-comment{white-space:nowrap;background:#161b22;border:1px solid #30363d;border-radius:8px;align-items:baseline;gap:8px;margin-bottom:4px;padding:6px 16px;display:flex;overflow:hidden}.console-comment-toggle{min-width:0;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:baseline;gap:8px;padding:0;display:inline-flex}.console-comment-show-all{color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;margin-bottom:10px;padding:6px 12px;font-size:.75rem;font-weight:600}.console-comment-show-all:hover{background-color:#262c34;border-color:#484f58}.console-comment--expandable{cursor:pointer}.console-comment--expandable:hover{border-color:#484f58}.console-comment-author{color:#e6edf3;flex-shrink:0;font-size:.75rem;font-weight:600}.console-comment-time{color:#8b949e;flex-shrink:0;font-size:.75rem}.console-comment-body-preview{text-overflow:ellipsis;white-space:nowrap;color:#8b949e;flex:1;min-width:0;font-size:.75rem;overflow:hidden}.console-comment.is-expanded{white-space:normal;flex-wrap:wrap;overflow:visible}.console-comment-body-expanded{cursor:default;flex-basis:100%;min-width:0}.console-files,.console-commits{margin:0;padding:0;list-style:none}.console-commit{align-items:center;gap:8px;padding:4px 0;font-size:.8125rem;display:flex}.console-file{flex-direction:column;font-size:.8125rem;display:flex}.console-file-tree,.console-file-tree-children{margin:0;padding:0;list-style:none}.console-file-tree-dir{flex-direction:column;display:flex}.console-file-tree-dir-name{color:#8b949e;align-items:center;gap:6px;padding:4px 0;font-weight:600;display:flex}.console-file-tree-dir-icon{flex:none}.console-file-badge{text-align:center;border:1px solid;border-radius:4px;width:18px;font-size:.6875rem}.console-file-path,.console-commit-message{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-file-add,.console-pr-add{color:#3fb950}.console-file-del,.console-pr-del{color:#f85149}.console-commit-sha{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-detail-dock{background:#161b22;border-top:2px solid #30363d;flex-shrink:0;max-height:45dvh;overflow-y:auto}.console-detail-dock-composer{max-height:50vh;padding:8px 16px 0;overflow-y:auto}.console-actionbar{padding:10px 16px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:#161b22}.console-operation-bar{flex-direction:column;gap:8px;width:100%;display:flex}.console-op-group{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.console-op-group-review{gap:10px}.console-op-group-rare-actions{justify-content:flex-start}.console-op-group-left-pair{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-op-group-bottom-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.console-op-group-stories{max-height:33vh;overflow-y:auto}.console-story-select,.console-agent-select{color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;max-width:100%;padding:9px 12px;font-size:.8125rem;font-weight:600}.console-story-select:hover,.console-agent-select:hover{border-color:#484f58}.console-op-button{color:#e6edf3;white-space:nowrap;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:9px 16px;font-size:.8125rem;font-weight:600}.console-op-button:hover{border-color:#484f58}.console-op-button:disabled{opacity:.4;cursor:not-allowed}.console-op-comment-close-error{color:#f85149;font-size:.875rem}.console-op-requirement{text-align:right;color:#8b949e;width:100%;margin:0;font-size:.75rem}.console-op-button-approve{color:#fff;background:#238636;border-color:#2ea043}.console-op-button-reject{color:#ffd166;background:#7d5000;border-color:#a06800}.console-op-button-wrong{color:#f85149;background:#3a1518;border-color:#f85149}.console-op-button-unneeded{color:#aab0b8;background:#2a2d31;border-color:#6e7681}.console-op-button-snooze{color:#79c0ff;background:#1c2b4a;border-color:#4493f8}.console-op-button-danger{color:#f85149;background:#3a1518;border-color:#f85149}.console-pr-section{border:1px solid #30363d;border-radius:8px;flex-direction:column;gap:10px;padding:12px;display:flex}.console-pr-statbar{color:#8b949e;gap:12px;font-size:.75rem;display:flex}.console-pr-repo{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-detail-screen{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.console-panel-open-link{color:#4493f8;font-size:.8125rem;font-weight:400}.console-composer{margin-top:4px}.console-composer-toggle{color:#8b949e;cursor:pointer;background:0 0;border:none;margin-left:auto;padding:2px 0;font-size:.7813rem;display:block}.console-composer-toggle:hover{color:#e6edf3}.console-composer-form{margin-top:8px}.console-composer-input{box-sizing:border-box;color:#e6edf3;width:100%;font:inherit;resize:vertical;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:8px;font-size:.875rem}.console-composer-attach{align-items:center;gap:8px;padding:0 10px;display:flex}.console-composer-file-input{display:none}.console-composer-attach-button{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:4px 8px;font-size:.75rem}.console-composer-attach-button:disabled{opacity:.6;cursor:default}.console-composer-row{justify-content:flex-end;align-items:center;gap:8px;margin-top:6px;display:flex}.console-composer-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:7px 16px;font-size:.8125rem;font-weight:600}.console-composer-submit:disabled{opacity:.6;cursor:default}.console-composer-status{color:#8b949e;font-size:.75rem}.console-composer-error{color:#f85149}.console-undo-toast,.console-error-toast{z-index:9998;border-radius:10px;gap:12px;max-width:45vw;padding:12px 18px;font-size:.8438rem;display:flex;position:fixed;bottom:12px;left:12px;box-shadow:0 4px 20px #0009}.console-undo-toast{white-space:nowrap;align-items:center}.console-error-toast{white-space:normal;flex-direction:column;max-height:40vh;overflow-y:auto}.console-undo-toast-green{color:#3fb950;background:#0d3320;border:1px solid #2ea043}.console-undo-toast-amber{color:#ffd166;background:#3a2800;border:1px solid #a06800}.console-undo-toast-red{color:#f85149;background:#3a1518;border:1px solid #da3633}.console-undo-toast-gray{color:#aab0b8;background:#2a2d31;border:1px solid #6e7681}.console-undo-toast-blue{color:#79c0ff;background:#0d1f40;border:1px solid #4493f8}.console-undo-toast-error{color:#f85149;background:#3a1518;border:1px solid #f85149}.console-undo-toast-message{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.console-error-toast-message{flex:1;min-width:0}.console-undo-toast-undo,.console-undo-toast-dismiss,.console-error-toast-dismiss,.console-error-toast-retry{cursor:pointer;color:inherit;background:#ffffff1f;border:none;border-radius:6px;flex:none;padding:4px 12px;font-size:.8125rem;font-weight:700}.console-undo-toast-undo:hover,.console-undo-toast-dismiss:hover,.console-error-toast-dismiss:hover,.console-error-toast-retry:hover{background:#ffffff38}.console-error-toast-actions{flex-wrap:wrap;gap:8px;display:flex}.console-undo-toast-countdown{opacity:.7;flex:none;font-size:.6875rem}.console-undo-toast-bar{opacity:.5;background:currentColor;border-radius:0 0 10px 10px;height:3px;transition:width .1s linear;position:absolute;bottom:0;left:0}.console-error-toast-title{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-weight:700;overflow:hidden}.console-action-toast-stack,.console-action-toast-stack-entry{display:contents}.console-action-toast-stack-toggle{z-index:9998;cursor:pointer;color:#c9d1d9;background:#ffffff1f;border:none;border-radius:6px;padding:4px 12px;font-size:.8125rem;font-weight:700;position:fixed;bottom:12px;left:12px}.console-action-toast-stack-toggle:hover{background:#ffffff38}.console-file-row{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:4px 0;font-size:.8125rem;display:flex}.console-file-row:hover{background:#1a2029}.console-file-caret{color:#8b949e;flex:none;width:1em}.console-file-diff{border-collapse:collapse;width:100%;margin:4px 0 8px;font:.8125rem/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}.console-file-diff td{white-space:pre-wrap;word-break:break-word;vertical-align:top;padding:0 10px}.console-diff-ln{text-align:right;color:#6e7681;-webkit-user-select:none;user-select:none;white-space:nowrap;border-right:1px solid #30363d;width:1%;padding:0 8px}.console-file-diff td.console-diff-ln{white-space:nowrap;word-break:normal;overflow-wrap:normal}.console-diff-add td{background:#2ea04326}.console-diff-add .console-diff-code{color:#aff5b4}.console-diff-del td{background:#f8514926}.console-diff-del .console-diff-code{color:#ffdcd7}.console-diff-hunk td{color:#79c0ff;background:#161b22}.console-diff-ctx .console-diff-code{color:#c9d1d9}.console-file-diff-empty{color:#8b949e;padding:8px 14px;font-size:.75rem}.console-file-diff-image{padding:8px 14px}.console-file-diff-image-content{object-fit:contain;object-position:left top;border:1px solid #30363d;border-radius:4px;max-width:100%;max-height:420px}.console-diff-comment-cell{text-align:center;-webkit-user-select:none;user-select:none;width:1%;padding:0 2px}.console-diff-comment-button{color:#6e7681;cursor:pointer;opacity:.6;background:0 0;border:1px solid #30363d;border-radius:4px;width:18px;height:18px;padding:0;font-size:.875rem;line-height:16px}.console-diff-row:hover .console-diff-comment-button,.console-diff-comment-button:focus-visible,.console-diff-comment-button[aria-expanded=true]{opacity:1;color:#fff;background:#1f6feb;border-color:#2f81f7}.console-diff-composer-row td{background:#0d1117;padding:6px 10px}.console-timer-settings-project-row:last-child td{border-bottom:none}.console-diff-composer{background:#161b22;border:1px solid #30363d;border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.console-diff-composer-anchor{color:#8b949e;font-size:.6875rem}.console-diff-composer-input{resize:vertical;color:#c9d1d9;width:100%;font:inherit;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 8px}.console-diff-composer-controls{align-items:center;gap:8px;display:flex}.console-diff-composer-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #238636;border-radius:6px;padding:4px 12px}.console-diff-composer-submit:disabled{opacity:.6;cursor:default}.console-diff-composer-cancel{color:#c9d1d9;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:4px 12px}.console-diff-composer-status{color:#8b949e;font-size:.75rem}.console-diff-composer-error{color:#ff7b72}.console-diff-composer-posted{color:#3fb950;margin:0;font-size:.75rem}.console-pr-header{flex-wrap:wrap;align-items:center;gap:10px;padding-top:4px;display:flex}.console-pr-section-title{color:#e6edf3;font-size:.9375rem;font-weight:600}.console-pr-section-state{color:#8b949e;border:1px solid #6e7681;border-radius:999px;padding:1px 8px;font-size:.6875rem}.console-offline-panel{background:#161b22;border-bottom:2px solid #30363d}.console-offline-panel-header{color:#c9d1d9;border-bottom:1px solid #21262d;padding:8px 16px;font-size:.8125rem;font-weight:600}.console-offline-panel-item{border-bottom:1px solid #21262d;border-left:3px solid #30363d;flex-direction:column;gap:4px;padding:10px 16px;display:flex}.console-offline-panel-item:last-child{border-bottom:none}.console-offline-panel-item-green{background:#0d332066;border-left-color:#2ea043}.console-offline-panel-item-amber{background:#3a280066;border-left-color:#a06800}.console-offline-panel-item-red{background:#3a151866;border-left-color:#da3633}.console-offline-panel-item-gray{background:#2a2d3166;border-left-color:#6e7681}.console-offline-panel-item-blue{background:#0d1f4066;border-left-color:#4493f8}.console-offline-panel-item-error{background:#3a151866;border-left-color:#f85149}.console-offline-panel-item-message{color:#e6edf3;font-size:.8125rem;font-weight:600}.console-offline-panel-item-target{color:#8b949e;font-size:.75rem}.console-offline-panel-item-fetch-error{color:#f85149;font-size:.75rem}.console-offline-panel-item-pr-status{color:#8b949e;font-size:.75rem}.console-offline-panel-item-controls{gap:8px;margin-top:4px;display:flex}.console-offline-panel-confirm{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:4px 12px;font-size:.75rem;font-weight:600}.console-offline-panel-confirm:hover:not(:disabled){background:#2ea043}.console-offline-panel-confirm:disabled{opacity:.4;cursor:not-allowed}.console-offline-panel-discard{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:4px 12px;font-size:.75rem;font-weight:600}.console-offline-panel-discard:hover{color:#f85149;border-color:#f85149}.console-task-create-button{color:#8b949e;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #30363d;border-radius:6px;align-self:center;margin-left:4px;padding:8px 12px;font-size:.8125rem;line-height:1}.console-task-create-button:hover{color:#e6edf3;border-color:#58a6ff}.console-task-create-button:disabled{opacity:.4;cursor:not-allowed}.console-task-create-form{flex-wrap:wrap;align-items:center;gap:4px;margin-left:4px;display:flex}.console-task-create-form-select{color:#e6edf3;cursor:pointer;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:3px 6px;font-size:.8125rem}.console-task-create-form-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-width:160px;padding:3px 8px;font-size:.8125rem}.console-task-create-form-input:focus{border-color:#58a6ff;outline:none}.console-task-create-form-submit,.console-task-create-form-cancel{color:#e6edf3;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:3px 10px;font-size:.8125rem}.console-task-create-form-submit:hover,.console-task-create-form-cancel:hover{border-color:#484f58}.console-task-create-form-submit:disabled,.console-task-create-form-cancel:disabled{opacity:.4;cursor:not-allowed}.console-task-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-task-create-dialog-overlay{cursor:default;background:#01040999;border:none;padding:0;position:absolute;inset:0}.console-task-create-dialog{z-index:1;background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:calc(100vh - 100px);display:flex;position:relative;overflow:hidden}.console-task-create-dialog-bar{background:#161b22;border-bottom:1px solid #30363d;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-task-create-dialog-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-task-create-dialog-bar-actions{align-items:center;gap:4px;display:flex}.console-task-create-dialog-open-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:1.125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-open-link:hover{color:#e6edf3}.console-task-create-dialog-destination-selector{align-items:center;gap:4px;display:flex}.console-task-create-dialog-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-task-create-dialog-close:hover{color:#e6edf3}.console-task-create-dialog-body{flex-direction:column;flex:1;gap:10px;min-height:0;padding:20px 18px;display:flex;overflow-y:auto}.console-task-create-dialog-footer{background:#161b22;border-top:1px solid #30363d;flex-shrink:0;padding:12px 18px}.console-task-create-dialog-section-label{color:#e6edf3;font-size:.875rem;font-weight:500}.console-task-create-dialog-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:72px;padding:8px 10px;font-size:.875rem}.console-task-create-dialog-textarea:focus{border-color:#58a6ff;outline:none}.console-task-create-dialog-option-list{flex-wrap:wrap;flex-shrink:0;gap:6px;max-height:160px;display:flex;overflow-y:auto}.console-task-create-dialog-option-button{color:#c9d1d9;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:20px;padding:4px 10px;font-size:.8125rem}.console-task-create-dialog-option-button:hover{color:#e6edf3;border-color:#58a6ff}.console-task-create-dialog-option-button--selected{color:#fff;background:#1f6feb;border-color:#1f6feb}.console-task-create-dialog-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 10px;font-size:.875rem}.console-task-create-dialog-input:focus{border-color:#58a6ff;outline:none}.console-task-create-dialog-file-input{color:#8b949e;font-size:.8125rem}.console-task-create-dialog-file-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.console-task-create-dialog-file-item{background:#161b22;border:1px solid #30363d;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;display:flex}.console-task-create-dialog-file-thumbnail{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:32px}.console-task-create-dialog-file-name{color:#c9d1d9;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8125rem;overflow:hidden}.console-task-create-dialog-file-remove{color:#8b949e;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:.875rem;line-height:1}.console-task-create-dialog-file-remove:hover{color:#f85149}.console-task-create-dialog-file-remove:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.console-task-create-dialog-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-task-create-dialog-submit:hover:not(:disabled){background:#2ea043}.console-task-create-dialog-submit:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-cancel{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 16px;font-size:.875rem}.console-task-create-dialog-cancel:hover:not(:disabled){border-color:#484f58}.console-task-create-dialog-cancel:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-fleet-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:.8125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-fleet-link:hover{color:#e6edf3}.console-task-create-dialog-new-issue-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:.8125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-new-issue-link:hover{color:#e6edf3}.console-fleet-task-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-panel-caret{color:#8b949e;font-size:.75rem}.console-panel-title{color:#e6edf3;font-size:.875rem;font-weight:600}.console-airplane-mode{border-radius:6px;align-items:center;gap:8px;padding:4px 8px;font-size:.8125rem;display:flex}.console-airplane-mode--on,.console-airplane-mode--syncing{background:#161b22;border:1px solid #30363d}.console-airplane-mode--error{background:#161b22;border:1px solid #f85149}.console-airplane-mode--off{background:0 0}.console-airplane-mode-label{color:#8b949e}.console-airplane-mode-retry,.console-airplane-mode-toggle{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-airplane-mode-progress{color:#8b949e}.console-airplane-mode-error-label{color:#f85149}.console-tab-label{font-size:.8125rem}.console-tab-fleet-task-create-link{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.8125rem;text-decoration:none}.console-item-opened{background:#161b22}.console-item-status-badge{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-list-row{border-bottom:1px solid #21262d}.console-queued-item-row{border-bottom:1px solid #21262d;align-items:center;gap:8px;padding:4px 8px;display:flex}.console-queued-item-badge{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-prs-agent-filter{align-items:center;gap:8px;padding:4px 8px;display:flex}.console-story-list-container{flex-direction:column;gap:0;display:flex}.console-story-list{flex-direction:column;display:flex}.console-story-list-row{border-bottom:1px solid #21262d}.console-story-list-row-main{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.console-story-count{color:#8b949e;font-size:.75rem}.console-story-description{color:#8b949e;padding:0 8px 4px;font-size:.8125rem}.console-add-story-section{padding:8px}.console-inline-input-form{flex-direction:column;gap:4px;padding:4px 0;display:flex}.console-inline-input-form-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:60px;padding:6px 10px;font-size:.875rem}.console-inline-input-form-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 10px;font-size:.875rem}.console-story-delete-confirm{padding:8px}.console-story-delete-confirm-message{color:#e6edf3;margin-bottom:8px;font-size:.875rem}.console-story-delete-confirm-actions{gap:8px;display:flex}.console-story-reorder-panel{flex-direction:column;gap:4px;padding:8px;display:flex}.console-story-reorder-row{border:1px solid #30363d;border-radius:4px;align-items:center;gap:8px;padding:4px;display:flex}.console-story-reorder-name{color:#e6edf3;flex:1;font-size:.875rem}.console-story-reorder-progress{color:#8b949e;font-size:.75rem}.console-story-reorder-error{color:#f85149;font-size:.875rem}.console-markdown-view{color:#e6edf3;font-size:.875rem;line-height:1.5}.console-markdown-empty{color:#8b949e;font-size:.875rem;font-style:italic}.console-markdown-reference-plain{color:#4493f8;font-size:.875rem}.console-mermaid{padding:8px 0}.console-mermaid-loading{color:#8b949e;font-size:.875rem}.console-mermaid-source{color:#8b949e;background:#161b22;border-radius:4px;padding:8px;font-family:monospace;font-size:.8125rem}.console-mermaid-rendered{overflow-x:auto}.console-file-stat{color:#e6edf3;align-items:center;gap:4px;font-size:.8125rem;display:flex}.console-files-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-files-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-comment-list{flex-direction:column;gap:8px;display:flex}.console-comment-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-comment-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-comment-create-workflow-issue{padding:4px 0}.console-workflow-issue-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-workflow-issue-create-dialog-overlay{cursor:default;background:#01040999;border:none;padding:0;position:absolute;inset:0}.console-workflow-issue-create-dialog{z-index:1;background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:calc(100vh - 100px);display:flex;position:relative;overflow:hidden}.console-workflow-issue-create-dialog-bar{background:#161b22;border-bottom:1px solid #30363d;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-workflow-issue-create-dialog-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-workflow-issue-create-dialog-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-workflow-issue-create-dialog-close:hover{color:#e6edf3}.console-workflow-issue-create-dialog-body{flex-direction:column;flex:1;gap:10px;min-height:0;padding:20px 18px;display:flex;overflow-y:auto}.console-workflow-issue-create-dialog-section-label{color:#e6edf3;font-size:.875rem;font-weight:500}.console-workflow-issue-create-dialog-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:72px;padding:8px 10px;font-size:.875rem}.console-workflow-issue-create-dialog-textarea:focus{border-color:#58a6ff;outline:none}.console-workflow-issue-create-dialog-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.console-workflow-issue-create-dialog-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-workflow-issue-create-dialog-submit:hover:not(:disabled){background:#2ea043}.console-workflow-issue-create-dialog-submit:disabled{opacity:.5;cursor:not-allowed}.console-workflow-issue-create-dialog-cancel{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 16px;font-size:.875rem}.console-workflow-issue-create-dialog-cancel:hover:not(:disabled){border-color:#484f58}.console-workflow-issue-create-dialog-cancel:disabled{opacity:.5;cursor:not-allowed}.console-commits-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-commits-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-commit-author,.console-commit-time{color:#8b949e;font-size:.75rem}.console-detail-body-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-pr-branch{color:#8b949e;background:#161b22;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.8125rem}.console-pr-files-count{color:#8b949e;font-size:.75rem}.console-pr-body-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-detail-ci-chip{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-outofdate-chip{color:#d29922;border:1px solid #d29922;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-mergeable-chip-ok{color:#3fb950;border:1px solid #3fb950;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-mergeable-chip-conflict{color:#f85149;border:1px solid #f85149;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-story-list-container{flex-direction:column;align-items:stretch;gap:12px;padding:12px 16px 16px;display:flex}.console-story-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.console-story-list-row{background:#161b22;border:1px solid #30363d;border-radius:8px;flex-direction:column;gap:6px;padding:10px 14px;display:flex}.console-story-list-row-main{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.console-story-count{text-align:center;color:#e6edf3;background:#484f58;border-radius:20px;flex-shrink:0;min-width:20px;padding:1px 7px;font-size:.6875rem;font-weight:700;line-height:1.5}.console-story-description{color:#8b949e;margin:0;font-size:.8125rem;line-height:1.4}.console-add-story-section{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.console-inline-input-form{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.console-inline-input-form-input{color:#e6edf3;min-width:180px;font:inherit;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;padding:7px 10px;font-size:.875rem}.console-inline-input-form-input:focus{border-color:#4493f8;outline:none}.console-inline-input-form-textarea{color:#e6edf3;min-width:240px;font:inherit;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;padding:7px 10px;font-size:.875rem}.console-inline-input-form-textarea:focus{border-color:#4493f8;outline:none}.console-story-delete-confirm{background:#1c1006;border:1px solid #a06800;border-radius:6px;flex-direction:column;gap:8px;padding:10px 14px;display:flex}.console-story-delete-confirm-message{color:#ffd166;margin:0;font-size:.875rem}.console-story-delete-confirm-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-story-task-list{border-top:1px solid #21262d;flex-direction:column;gap:0;margin:4px 0 0;padding:0;list-style:none;display:flex}.console-story-task-row{border-bottom:1px solid #21262d;grid-template-columns:1fr auto auto auto auto auto;align-items:baseline;gap:8px;padding:5px 4px;font-size:.7813rem;display:grid}.console-story-task-row:last-child{border-bottom:none}.console-story-task-title{color:#4493f8;text-overflow:ellipsis;white-space:nowrap;text-align:left;min-width:0;text-decoration:none;overflow:hidden}.console-story-task-title:hover{text-decoration:underline}.console-story-task-status,.console-story-task-agent,.console-story-task-next-action-date,.console-story-task-next-action-hour{color:#8b949e;white-space:nowrap;flex-shrink:0;font-size:.75rem}.console-story-task-depended-urls{color:#8b949e;text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:.6875rem;overflow:hidden}.console-story-chevron{color:#8b949e;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:.625rem;line-height:1}.console-story-chevron:hover{color:#e6edf3}.console-story-overflow-container{flex-shrink:0;margin-left:auto;position:relative}.console-story-overflow-btn{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:2px 6px;font-size:1rem;line-height:1}.console-story-overflow-btn:hover{color:#e6edf3;background:#21262d;border-color:#30363d}.console-story-overflow-menu{z-index:100;background:#161b22;border:1px solid #30363d;border-radius:6px;min-width:160px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #01040980}.console-story-overflow-option{color:#e6edf3;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:8px 16px;font-size:.8125rem;display:block}.console-story-overflow-option:hover{background:#21262d}.console-story-overflow-option:disabled{opacity:.4;cursor:not-allowed}.console-story-overflow-option--danger{color:#f85149}.console-story-overflow-separator{border:none;border-top:1px solid #30363d;margin:4px 0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
package/bin/adapter/entry-points/console/ui-dist/assets/{index-BWYweepF.js → index-B_6CLRC3.js}
RENAMED
|
@@ -94,6 +94,6 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
94
94
|
`).map(e=>`> ${e}`).join(`
|
|
95
95
|
`),ef=e=>e.split(`
|
|
96
96
|
`).find(e=>e.trim()!==``)??``,tf=e=>`${e.author}:${e.createdAt}:${e.body}`,nf=({comment:e,buildImageProxyUrl:t,renderReferenceLink:n,repoContext:r,onCommentCheckboxToggle:i})=>{let a=(0,y.useRef)(null);(0,y.useEffect)(()=>{let e=a.current;if(!e)return;let t=e=>e.stopPropagation();return e.addEventListener(`click`,t),()=>e.removeEventListener(`click`,t)},[]);let o=(0,y.useMemo)(()=>i===void 0?void 0:t=>i(e,t),[e,i]);return(0,x.jsx)(`div`,{ref:a,className:`console-comment-body-expanded`,children:(0,x.jsx)(Nd,{body:e.body,buildImageProxyUrl:t,renderReferenceLink:n,repoContext:r,onCheckboxToggle:o})})},rf=({comments:e,isLoading:t,error:n,now:r,buildImageProxyUrl:i,renderReferenceLink:a,repoContext:o,persistenceKey:s=null,issueUrl:c,issueTitle:l,storyEntries:u,agentOptions:d,onCreateIssueFromComment:f,onCommentCheckboxToggle:p})=>{let[m,h]=(0,y.useState)(!1),[g,_]=(0,y.useState)(null),[v,b]=(0,y.useState)(()=>s==null?new Set:Kn(s)),S=e.length>0?tf(e[e.length-1]):null;(0,y.useEffect)(()=>{S!==null&&b(e=>new Set([...e,S]))},[S]),(0,y.useEffect)(()=>{s!=null&&qn(s,v)},[s,v]);let ee=e=>{b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};if(n!==null)return(0,x.jsx)(`p`,{className:`console-comment-notloaded`,children:`Not loaded.`});if(t)return(0,x.jsx)(`p`,{className:`console-comment-loading`,children:`Loading comments...`});if(e.length===0)return(0,x.jsx)(`p`,{className:`console-comment-empty`,children:`No comments.`});let C=!m&&e.length>1;return(0,x.jsxs)(`div`,{className:`console-comment-list`,children:[C&&(0,x.jsxs)(`button`,{type:`button`,className:`console-comment-show-all`,onClick:()=>{h(!0),b(t=>new Set([...t,...e.map(tf)]))},children:[`Show all `,e.length]}),e.map(e=>{let t=tf(e),n=v.has(t);return(0,x.jsxs)(`article`,{className:`console-comment${n?` is-expanded`:C?` console-comment--expandable`:``}`,children:[(0,x.jsxs)(`button`,{type:`button`,className:`console-comment-toggle`,onClick:()=>ee(t),"aria-expanded":n,children:[(0,x.jsx)(`span`,{className:`console-comment-author`,children:e.author}),(0,x.jsx)(`span`,{className:`console-comment-time`,children:k(e.createdAt,r)}),!n&&(0,x.jsx)(`span`,{className:`console-comment-body-preview`,children:ef(e.body)})]}),f!==void 0&&(0,x.jsx)(`button`,{type:`button`,className:`console-comment-create-workflow-issue`,onClick:t=>{t.stopPropagation(),_(e)},title:`Create workflow improvement issue from this comment`,children:`+`}),n&&(0,x.jsx)(nf,{comment:e,buildImageProxyUrl:i,renderReferenceLink:a,repoContext:o,onCommentCheckboxToggle:p})]},t)}),g!==null&&f!==void 0&&(0,x.jsx)(me,{storyEntries:u??[],agentOptions:d??[],initialDestination:`workflow`,onSubmitProject:f.onSubmitProject,onSubmitWorkflow:f.onSubmitWorkflow,onClose:()=>_(null),initialDraft:{title:``,body:(()=>{let e=$d(g.body);return c!=null&&l!=null?`${c}\n\n${l}\n\n\n\n\n\n${e}`:l==null?e:`${l}\n\n\n\n\n\n${e}`})(),storyName:null,agentOptionId:null}})]})},af=e=>e.slice(0,7),of=e=>e.split(`
|
|
97
|
-
`)[0],sf=({commits:e,isLoading:t,error:n,now:r})=>n===null?t?(0,x.jsx)(`p`,{className:`console-commits-loading`,children:`Loading commits...`}):e.length===0?(0,x.jsx)(`p`,{className:`console-commits-empty`,children:`No commits.`}):(0,x.jsx)(`ul`,{className:`console-commits`,children:e.map(e=>(0,x.jsxs)(`li`,{className:`console-commit`,children:[(0,x.jsx)(`span`,{className:`console-commit-message`,children:of(e.message)}),(0,x.jsx)(`span`,{className:`console-commit-sha`,children:af(e.sha)}),(0,x.jsx)(`span`,{className:`console-commit-author`,children:e.author}),(0,x.jsx)(`span`,{className:`console-commit-time`,children:k(e.authoredAt,r)})]},e.sha))}):(0,x.jsx)(`p`,{className:`console-commits-notloaded`,children:`Not loaded.`}),cf=({url:e,label:t=`Copy URL`})=>(0,x.jsx)(cd,{value:e,idleText:`Copy URL`,idleAriaLabel:t,copiedAriaLabel:`URL copied to clipboard`,className:`console-copy-url-button`}),lf=e=>{let t=new Map;for(let n of e){let e=t.get(n.message);if(e===void 0){t.set(n.message,[n.section]);continue}e.push(n.section)}return Array.from(t,([e,t])=>({message:e,sections:t}))},uf=e=>e.length<=1?e.join(``):`${e.slice(0,-1).join(`, `)} and ${e[e.length-1]}`,df=({failures:e})=>e.length===0?null:(0,x.jsx)(`div`,{role:`alert`,className:`console-detail-fetch-error`,children:lf(e).map(e=>(0,x.jsxs)(`p`,{className:`console-detail-fetch-error-line`,children:[`Failed to load `,uf(e.sections),`:`,` `,e.message]},e.message))}),ff=({title:e,onTitleRename:t})=>{let[n,r]=(0,y.useState)(e),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(e),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(null),f=(0,y.useRef)(e);(0,y.useEffect)(()=>{let t=e!==f.current;f.current=e,!i&&t&&r(e)},[e,i]);let p=()=>{s(n),d(null),a(!0)},m=()=>{a(!1),d(null)},h=async()=>{let e=o.trim();if(e===``||e===n){a(!1);return}l(!0),d(null);try{await t(e),r(e),a(!1)}catch(e){d(e instanceof Error?e.message:`Failed to rename`)}finally{l(!1)}};return i?(0,x.jsxs)(`span`,{className:`console-detail-title-text console-detail-title-text--editing`,children:[(0,x.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`?h():e.key===`Escape`&&m()},disabled:c,className:`console-detail-title-input`,"aria-label":`Edit title`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>void h(),disabled:c,className:`console-detail-title-save`,children:`Save`}),(0,x.jsx)(`button`,{type:`button`,onClick:m,disabled:c,className:`console-detail-title-cancel`,children:`Cancel`}),u!==null&&(0,x.jsx)(`span`,{className:`console-detail-title-error`,role:`alert`,children:u})]}):(0,x.jsxs)(`span`,{className:`console-detail-title-text`,children:[n,(0,x.jsx)(`button`,{type:`button`,onClick:p,className:`console-detail-title-edit`,"aria-label":`Edit title`,children:`Edit`})]})},pf={MERGEABLE:{color:`GREEN`,label:`No conflict`,title:`This pull request has no merge conflicts`,modifier:`console-detail-mergeable-chip-ok`},CONFLICTING:{color:`RED`,label:`Conflict`,title:`This pull request has merge conflicts`,modifier:`console-detail-mergeable-chip-conflict`},UNKNOWN:{color:`GRAY`,label:`Checking merge status`,title:`GitHub has not finished computing the merge status yet`,modifier:`console-detail-mergeable-chip-unknown`}},mf=({mergeableStatus:e})=>{let t=pf[e],n=fe(t.color);return(0,x.jsx)(`span`,{className:`console-detail-status-chip console-detail-mergeable-chip ${t.modifier}`,style:{color:n.fg,borderColor:n.border,backgroundColor:n.bg},title:t.title,children:t.label})},hf=e=>{let t=fe(e);return{color:t.fg,borderColor:t.border,backgroundColor:t.bg}},gf=({isPassedAllCiJob:e,isCiStateSuccess:t,isBranchOutOfDate:n,missingRequiredCheckNames:r})=>{let i=e&&t,a=i?`GREEN`:`RED`,o=i?`CI passing`:`CI failing`,s=!i&&r.length>0?`missing: ${r.join(`, `)}`:null;return(0,x.jsxs)(`span`,{className:`console-detail-pr-status`,children:[(0,x.jsxs)(`span`,{className:`console-detail-status-chip console-detail-ci-chip`,style:hf(a),title:s??o,children:[o,s!==null&&(0,x.jsxs)(`span`,{className:`console-detail-ci-missing`,children:[` `,`(`,s,`)`]})]}),n&&(0,x.jsx)(`span`,{className:`console-detail-status-chip console-detail-outofdate-chip`,style:hf(`YELLOW`),title:`This branch is out of date with the base branch`,children:`Out of date`})]})},_f=({pullRequest:e,body:t,bodyIsLoading:n,files:r,filesAreLoading:i,filesError:a,commits:o,commitsAreLoading:s,commitsError:c,now:l,buildImageProxyUrl:u,renderReferenceLink:d,onAddInlineComment:f})=>{let p=e.summary,m=aa(e.url),h=m===null?void 0:{owner:m.owner,repo:m.repo},g=i||a!==null?null:r.length,_=s||c!==null?null:o.length;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`console-pr-header`,children:[(0,x.jsx)(`a`,{href:e.url,className:`console-pr-section-title`,target:`_blank`,rel:`noopener noreferrer`,children:p?.title??e.url}),e.isDraft&&(0,x.jsx)(`span`,{className:`console-pr-section-state`,children:`draft`}),(0,x.jsx)(mf,{mergeableStatus:e.mergeableStatus}),(0,x.jsx)(gf,{isPassedAllCiJob:e.isPassedAllCiJob,isCiStateSuccess:e.isCiStateSuccess,isBranchOutOfDate:e.isBranchOutOfDate,missingRequiredCheckNames:e.missingRequiredCheckNames}),(0,x.jsx)(`a`,{href:e.url,className:`console-panel-open-link`,target:`_blank`,rel:`noopener noreferrer`,children:`open`}),(0,x.jsx)(cf,{url:e.url,label:`Copy PR URL`}),(0,x.jsxs)(`div`,{className:`console-pr-statbar`,children:[m!==null&&(0,x.jsxs)(`span`,{className:`console-pr-repo`,children:[m.owner,`/`,m.repo]}),e.branchName!==null&&(0,x.jsx)(`span`,{className:`console-pr-branch`,children:e.branchName}),p!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`span`,{className:`console-pr-add`,children:[`+`,p.additions]}),(0,x.jsxs)(`span`,{className:`console-pr-del`,children:[`-`,p.deletions]}),(0,x.jsxs)(`span`,{className:`console-pr-files-count`,children:[p.changedFiles,` files`]})]})]})]}),(0,x.jsx)(Pd,{title:`Description`,children:n?(0,x.jsx)(`p`,{className:`console-pr-body-loading`,children:`Loading description...`}):(0,x.jsx)(Nd,{body:p?.body??t,buildImageProxyUrl:u,renderReferenceLink:d,repoContext:h})}),(0,x.jsx)(Pd,{title:`Changed files`,count:g,children:(0,x.jsx)(Qd,{files:r,isLoading:i,error:a,buildImageProxyUrl:u,onAddInlineComment:f})}),(0,x.jsx)(Pd,{title:`Commits`,count:_,defaultCollapsed:!0,children:(0,x.jsx)(sf,{commits:o,isLoading:s,error:c,now:l})})]})},vf=({item:e,storyName:t,storyColorEnum:n,overlayStatus:r,statusOptions:i,state:a,body:o,bodyIsLoading:s,bodyError:c,comments:l,commentsAreLoading:u,commentsError:d,files:f,filesAreLoading:p,filesError:m,commits:h,commitsAreLoading:g,commitsError:_,stateError:v,pullRequestStatus:y,pullRequestStatusError:b,relatedPullRequests:S,relatedPullRequestsError:ee,now:C,commentComposer:w,operationBar:T,buildImageProxyUrl:E,renderReferenceLink:te,onAddInlineComment:D,onTitleRename:ne,onBodyCheckboxToggle:O,onCommentCheckboxToggle:re,storyEntries:A,agentOptions:j,onCreateIssueFromComment:ae})=>{let oe=a?.state??`open`,se=a?.merged??!1,M=!e.isPr&&oe===`closed`?`Closed`:null,N=oa(e.nameWithOwner)??void 0,ce=fe(n),le=r===null?e.status===null?null:{name:e.status,color:i.find(t=>t.name===e.status)?.color??`GRAY`}:r,ue=le===null?null:fe(le.color),P=p||m!==null?null:f.length,de=u||d!==null?null:l.length,pe=g||_!==null?null:h.length,me=!u&&d===null&&l.length>0,F=(e,t)=>{let n=aa(e);return n===null?e:`${t}#${n.number}`},I=e=>F(e,`PR `),L=[],he=new Map;for(let t of e.dependedIssueUrls){let e=he.get(t)??0;he.set(t,e+1),L.push({url:t,occurrenceKey:`${t}#${e}`})}let ge=[{section:`item state`,message:v},{section:`pull request status`,message:e.isPr?b:null},{section:`description`,message:c},{section:`comments`,message:d},{section:`changed files`,message:e.isPr?m:null},{section:`commits`,message:e.isPr?_:null},{section:`related pull requests`,message:e.isPr?null:ee},...S.flatMap(e=>[{section:`changed files of ${I(e.pullRequest.url)}`,message:e.filesError},{section:`commits of ${I(e.pullRequest.url)}`,message:e.commitsError}])].flatMap(e=>e.message===null?[]:[{section:e.section,message:e.message}]),_e=e.isPr&&y?.found?[{url:e.url,mergeableStatus:y.mergeableStatus}]:[];return(0,x.jsxs)(`article`,{className:`console-detail`,children:[(0,x.jsxs)(`div`,{className:`console-detail-header`,children:[(0,x.jsxs)(`h2`,{className:`console-detail-title`,children:[(0,x.jsx)(Oe,{isPr:e.isPr,state:oe,merged:se,isDraft:!1,stateReason:``}),ne==null?(0,x.jsx)(`span`,{className:`console-detail-title-text`,children:e.title}):(0,x.jsx)(ff,{title:e.title,onTitleRename:ne}),(0,x.jsx)(`span`,{className:`console-detail-number`,children:e.isPr?`PR #${e.number}`:`#${e.number}`})]}),(0,x.jsxs)(`div`,{className:`console-detail-topline`,children:[le!==null&&ue!==null&&(0,x.jsx)(`span`,{className:`console-detail-status-chip`,style:{color:ue.fg,borderColor:ue.border,backgroundColor:ue.bg},children:le.name}),e.agent!==null&&e.agent!==``&&(0,x.jsx)(`span`,{className:`console-detail-agent-chip`,children:e.agent}),t!==null&&(0,x.jsxs)(`span`,{className:`console-storytag`,children:[(0,x.jsx)(`span`,{className:`console-story-dot`,style:{backgroundColor:ce.dot}}),t]}),e.isPr&&y?.found&&(0,x.jsx)(gf,{isPassedAllCiJob:y.isPassedAllCiJob,isCiStateSuccess:y.isCiStateSuccess,isBranchOutOfDate:y.isBranchOutOfDate,missingRequiredCheckNames:y.missingRequiredCheckNames}),!e.isPr&&S.map(e=>(0,x.jsxs)(`span`,{className:`console-related-pr-group`,children:[S.length>1&&(0,x.jsx)(`span`,{className:`console-related-pr-label`,children:I(e.pullRequest.url)}),(0,x.jsx)(gf,{isPassedAllCiJob:e.pullRequest.isPassedAllCiJob,isCiStateSuccess:e.pullRequest.isCiStateSuccess,isBranchOutOfDate:e.pullRequest.isBranchOutOfDate,missingRequiredCheckNames:e.pullRequest.missingRequiredCheckNames}),(0,x.jsx)(mf,{mergeableStatus:e.pullRequest.mergeableStatus})]},e.pullRequest.url)),_e.map(e=>(0,x.jsx)(mf,{mergeableStatus:e.mergeableStatus},e.url)),M!==null&&(0,x.jsx)(`span`,{className:`console-detail-closed-label`,children:M})]}),e.dependedIssueUrls.length>0&&(0,x.jsxs)(`div`,{className:`console-detail-depended-issue-url`,children:[(0,x.jsx)(`span`,{className:`console-detail-depended-issue-url-label`,children:`Depended Issue URL`}),L.map(({url:e,occurrenceKey:t})=>{let n=F(e,``);return(0,x.jsx)(`span`,{className:`console-detail-depended-issue-url-link`,children:te?.(e,n)??(0,x.jsx)(`a`,{className:`console-markdown-reference console-markdown-reference-plain`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:n})},t)})]}),(0,x.jsx)(df,{failures:ge}),(0,x.jsxs)(`div`,{className:`console-detail-subbar`,children:[(0,x.jsxs)(`a`,{href:e.url,className:`console-detail-link`,target:`_blank`,rel:`noopener noreferrer`,children:[`#`,e.number]}),(0,x.jsx)(`span`,{className:`console-detail-repo`,children:e.repo}),(0,x.jsxs)(`span`,{className:`console-detail-createdat`,title:ie(e.createdAt),children:[`opened `,k(e.createdAt,C)]}),(0,x.jsx)(cf,{url:e.url}),e.labels.map(e=>(0,x.jsx)(`span`,{className:`console-label-chip`,children:e},e))]})]}),(0,x.jsxs)(`div`,{className:`console-detail-body`,children:[(0,x.jsx)(Pd,{title:`Description`,defaultCollapsed:me,headerAction:(0,x.jsx)(`a`,{href:e.url,className:`console-panel-open-link`,target:`_blank`,rel:`noopener noreferrer`,children:`open`}),children:c===null?s?(0,x.jsx)(`p`,{className:`console-detail-body-loading`,children:`Loading description...`}):(0,x.jsx)(Nd,{body:o,buildImageProxyUrl:E,renderReferenceLink:te,repoContext:N,onCheckboxToggle:O}):(0,x.jsx)(`p`,{className:`console-detail-body-notloaded`,children:`Not loaded.`})},me?`desc-collapsed`:`desc-open`),e.isPr&&(0,x.jsx)(Pd,{title:`Changed files`,count:P,children:(0,x.jsx)(Qd,{files:f,isLoading:p,error:m,onAddInlineComment:D})}),(0,x.jsx)(Pd,{title:`Comments`,count:de,children:(0,x.jsx)(rf,{comments:l,isLoading:u,error:d,now:C,buildImageProxyUrl:E,renderReferenceLink:te,repoContext:N,persistenceKey:e.url,issueUrl:e.url,issueTitle:e.title,storyEntries:A,agentOptions:j,onCreateIssueFromComment:ae,onCommentCheckboxToggle:re})}),e.isPr&&(0,x.jsx)(Pd,{title:`Commits`,count:pe,defaultCollapsed:!0,children:(0,x.jsx)(sf,{commits:h,isLoading:g,error:_,now:C})}),!e.isPr&&S.map(e=>(0,x.jsx)(_f,{pullRequest:e.pullRequest,body:e.pullRequest.summary?.body??``,bodyIsLoading:!1,files:e.files,filesAreLoading:e.filesAreLoading,filesError:e.filesError,commits:e.commits,commitsAreLoading:e.commitsAreLoading,commitsError:e.commitsError,now:C,buildImageProxyUrl:E,renderReferenceLink:te,onAddInlineComment:D},e.pullRequest.url))]}),(0,x.jsxs)(`div`,{className:`console-detail-dock`,children:[(0,x.jsx)(`div`,{className:`console-detail-dock-composer`,children:w}),(0,x.jsx)(`div`,{className:`console-actionbar`,children:T})]})]})},yf=({className:e,ariaLabel:t,placeholder:n,currentOption:r,options:i,onSelect:a})=>{let o=(0,y.useRef)({ready:!1,currentOptionId:r?.id??null});return(0,y.useLayoutEffect)(()=>{o.current.ready=!0,o.current.currentOptionId=r?.id??null}),(0,x.jsxs)(`select`,{className:e,defaultValue:r?.id??``,onChange:e=>{if(!o.current.ready||e.target.value===(o.current.currentOptionId??``))return;let t=i.find(t=>t.id===e.target.value);t!==void 0&&a(t)},"aria-label":t,children:[(0,x.jsx)(`option`,{value:``,children:n}),i.map(e=>(0,x.jsx)(`option`,{value:e.id,children:e.name},e.id))]})},bf=({agentOptions:e,currentAgentName:t,currentAgentOptionId:n,onSetAgent:r})=>{if(e.length===0)return null;let i=n==null?t===null?null:e.find(e=>e.name===t)??null:e.find(e=>e.id===n)??null;return(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(yf,{className:`console-agent-select`,ariaLabel:`Set agent`,placeholder:`— agent —`,currentOption:i,options:e,onSelect:r},i?.id??`none`)})},xf=({onClose:e,onCommentAndClose:t,onOkAndClose:n,isDraftEmpty:r})=>{let[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(null),c=async e=>{if(!(e===void 0||i)){a(!0),s(null);try{await e()}catch(e){s(e instanceof Error?e.message:`failed to post`)}finally{a(!1)}}};return(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>e(`close_not_planned`),children:`Close as not planned`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>e(`close`),children:`Close`}),n!==void 0&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,disabled:i,onClick:()=>{c(n)},children:`OK & Close`}),t!==void 0&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,disabled:i||r===!0,onClick:()=>{c(t)},children:`Comment & Close`}),o!==null&&(0,x.jsx)(`span`,{role:`alert`,className:`console-op-comment-close-error`,children:o})]})},Sf=({onDeleteAllComments:e,onDeleteStory:t,storyNameForDeletion:n})=>{let[r,i]=(0,y.useState)(!1),[a,o]=(0,y.useState)(!1),[s,c]=(0,y.useState)(!1),[l,u]=(0,y.useState)(null),d=()=>{e(),i(!1)},f=()=>{o(!0),u(null)},p=async e=>{if(t){c(!0),u(null);try{await t(e)}catch(e){u(e instanceof Error?e.message:String(e)),c(!1)}}};return(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>i(e=>!e),children:`⚠`}),r&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:d,children:`Delete All Comments`}),t!=null&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:f,disabled:a,children:`Delete Story`})]}),a&&(0,x.jsxs)(`div`,{className:`console-story-delete-confirm`,role:`dialog`,"aria-modal":`true`,"aria-label":`Confirm story deletion`,children:[(0,x.jsxs)(`p`,{className:`console-story-delete-confirm-message`,children:[`Delete story option "`,n,`" from the GitHub custom field?`]}),l!==null&&(0,x.jsx)(`p`,{role:`alert`,className:`console-list-error`,children:l}),(0,x.jsxs)(`div`,{className:`console-story-delete-confirm-actions`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>void p(!0),disabled:s,children:s?`Deleting…`:`Delete with child tasks`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>void p(!1),disabled:s,children:s?`Deleting…`:`Keep child tasks`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>{o(!1),u(null)},disabled:s,children:`Cancel`})]})]})]})},Cf=({isManualTriage:e,onSetNextActionDate:t})=>(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1hour`),children:`+1h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_3hours`),children:`+3h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_6hours`),children:`+6h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1day`),children:`+1d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_2days`),children:`+2d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_3days`),children:`+3d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_5days`),children:`+5d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1week`),children:e?`+1w skip`:`+1w`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1month`),children:`+1mo`})]}),wf=[{action:`unnecessary`,label:`Unnecessary`,variant:`unneeded`},{action:`totally_wrong`,label:`Totally wrong`,variant:`wrong`},{action:`request_changes`,label:`Reject`,variant:`reject`},{action:`approve_and_merge`,label:`Approve & Merge`,variant:`approve`}],Tf=`Reject needs an inline comment on the diff.`,Ef=({onReview:e,rejectEnabled:t})=>(0,x.jsxs)(`div`,{className:`console-op-group console-op-group-review`,children:[!t&&(0,x.jsx)(`p`,{className:`console-op-requirement`,children:Tf}),wf.map(n=>{let r=n.action===`request_changes`&&!t;return(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-${n.variant}`,disabled:r,onClick:()=>e(n.action),children:n.label},n.action)})]}),Df=({onSetDependedIssueUrl:e})=>{let[t,n]=(0,y.useState)(!1),[r,i]=(0,y.useState)(``),[a,o]=(0,y.useState)(!1),[s,c]=(0,y.useState)(null);return(0,x.jsxs)(`div`,{className:`console-op-group console-op-group-rare-actions`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>{n(e=>!e),c(null)},title:`Rare actions`,children:`⋯`}),t&&e!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`input`,{type:`url`,className:`console-settings-modal-input`,placeholder:`Depended issue URL`,value:r,onChange:e=>i(e.target.value),disabled:a}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:async()=>{if(e!==null&&r.trim()!==``){o(!0),c(null);try{await e(r.trim()),i(``),n(!1)}catch(e){c(e instanceof Error?e.message:`Failed to set depended issue URL`)}finally{o(!1)}}},disabled:a||r.trim()===``,children:a?`...`:`Set Depended Issue`})]}),s!==null&&(0,x.jsx)(`p`,{className:`console-settings-modal-error`,children:s})]})},Of=(e,t)=>{let n=t.toLowerCase();return e.find(e=>e.name.toLowerCase()===n)??null},kf=({statusOptions:e,onSetStatus:t,onSetInTmuxByHuman:n})=>{let r=Ce.map(t=>({name:t,option:Of(e,t)})).filter(e=>e.option!==null);return r.length===0?null:(0,x.jsx)(`div`,{className:`console-op-group`,children:r.map(({name:e,option:r})=>{let i=fe(r.color),a=e===xe;return(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,style:{color:i.fg,borderColor:i.border,backgroundColor:i.bg},onClick:()=>a?n(r):t(r),children:r.name},r.id)})})},Af=({storyOptions:e,currentStoryName:t,currentStoryOptionId:n,onSetStory:r})=>{if(e.length===0)return null;let i=n===null?t===null?null:e.find(e=>e.name===t)??null:e.find(e=>e.id===n)??null;return(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(yf,{className:`console-story-select`,ariaLabel:`Set story`,placeholder:`— story —`,currentOption:i,options:e,onSelect:r},i?.id??`none`)})},jf=({tab:e,hasPullRequest:t,rejectEnabled:n,statusOptions:r,storyOptions:i,currentStoryName:a,currentStoryOptionId:o,agentOptions:s,currentAgentName:c,currentAgentOptionId:l,handlers:u,storyNameForDeletion:d,onCommentAndClose:f,onOkAndClose:p,isDraftEmpty:m,isVisible:h})=>{let[g,_]=(0,y.useState)(!1);return h?(0,x.jsxs)(`div`,{className:`console-operation-bar`,children:[t&&(0,x.jsx)(Ef,{onReview:u.onReview,rejectEnabled:n}),(0,x.jsx)(Cf,{isManualTriage:we(e),onSetNextActionDate:u.onSetNextActionDate}),(0,x.jsx)(kf,{statusOptions:r,onSetStatus:u.onSetStatus,onSetInTmuxByHuman:u.onSetInTmuxByHuman}),g&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Af,{storyOptions:i,currentStoryName:a,currentStoryOptionId:o,onSetStory:u.onSetStory}),(0,x.jsx)(bf,{agentOptions:s,currentAgentName:c,currentAgentOptionId:l,onSetAgent:u.onSetAgent})]}),(0,x.jsxs)(`div`,{className:`console-op-group-bottom-row`,children:[(0,x.jsxs)(`div`,{className:`console-op-group-left-pair`,children:[(i.length>0||s.length>0)&&(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>_(e=>!e),title:`Change agent or story`,children:`⚙`})}),(0,x.jsx)(Df,{onSetDependedIssueUrl:u.onSetDependedIssueUrl}),(0,x.jsx)(Sf,{onDeleteAllComments:u.onDeleteAllComments,onDeleteStory:u.onDeleteStory,storyNameForDeletion:d})]}),(0,x.jsx)(xf,{onClose:u.onClose,onCommentAndClose:f,onOkAndClose:p,isDraftEmpty:m})]})]}):null},Mf=(e,t,n,r)=>{let i=t===null?void 0:e.peek(t),[a,o]=(0,y.useState)(i??r),[s,c]=(0,y.useState)(t!==null&&i===void 0),[l,u]=(0,y.useState)(null);return(0,y.useEffect)(()=>{if(t===null||n===null)return;let r=e.peek(t);if(r!==void 0){o(r),c(!1),u(null);return}let i=!1;return c(!0),u(null),e.load(t,n).then(e=>{i||(o(e),c(!1))}).catch(e=>{i||(u(e instanceof Error?e.message:String(e)),c(!1))}),()=>{i=!0}},[e,t,n]),{data:a,isLoading:s,error:l}},Nf=[],Pf=[],Ff=[],If=[],Lf={state:`open`,merged:!1,isPullRequest:!1,title:``},Rf={found:!1,isConflicted:!1,mergeableStatus:`UNKNOWN`,isPassedAllCiJob:!1,isCiStateSuccess:!1,isBranchOutOfDate:!1,missingRequiredCheckNames:[]},zf=(e,t,n)=>{let r=t===null?null:`${t.repo}#${t.number}`,i=t===null?null:t.url,a=t?.isPr??!1,o=Mf(e.body,r,i,``),s=Mf(e.state,r,i,Lf),c=Mf(e.comments,r,i,Nf),l=Mf(e.files,a?r:null,a?i:null,Pf),u=Mf(e.commits,a?r:null,a?i:null,Ff),d=Mf(e.prStatus,a?r:null,a?i:null,Rf),f=!a&&((t?.relatedOpenPullRequestUrls.length??0)>0||n===`prs`),p=Mf(e.relatedPrs,f?r:null,f?i:null,If),[m,h]=(0,y.useState)([]);return(0,y.useEffect)(()=>{if(a||p.data.length===0){h([]);return}let t=!1,n=p.data.map(e=>({pullRequest:e,files:Pf,filesAreLoading:!0,filesError:null,commits:Ff,commitsAreLoading:!0,commitsError:null}));h(n);let r=(e,n)=>{t||h(t=>t.map(t=>t.pullRequest.url===e?{...t,...n}:t))};for(let t of p.data){let n=t.url;e.files.load(n,t.url).then(e=>r(t.url,{files:e,filesAreLoading:!1})).catch(e=>r(t.url,{filesAreLoading:!1,filesError:e instanceof Error?e.message:String(e)})),e.commits.load(n,t.url).then(e=>r(t.url,{commits:e,commitsAreLoading:!1})).catch(e=>r(t.url,{commitsAreLoading:!1,commitsError:e instanceof Error?e.message:String(e)}))}return()=>{t=!0}},[e,a,p.data]),{state:s.data,body:o.data,bodyIsLoading:o.isLoading,bodyError:o.error,comments:c.data,commentsAreLoading:c.isLoading,commentsError:c.error,files:l.data,filesAreLoading:l.isLoading,filesError:l.error,commits:u.data,commitsAreLoading:u.isLoading,commitsError:u.error,stateError:s.error,pullRequestStatus:a?d.data:null,pullRequestStatusError:a?d.error:null,relatedPullRequests:m,relatedPullRequestsError:a?null:p.error}},Bf=e=>JSON.stringify([e.author,e.createdAt,e.body]),Vf=(e,t)=>{let n=new Set(e.map(Bf));return[...e,...t.filter(e=>!n.has(Bf(e)))]},Q=({href:e,fallbackText:t,state:n})=>{if(n===null||n.title.trim()===``)return(0,x.jsx)(`a`,{className:`console-markdown-reference console-markdown-reference-plain`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:t});let r=aa(e);return(0,x.jsxs)(`a`,{className:`console-markdown-reference`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:[(0,x.jsx)(Oe,{...sa(n)}),(0,x.jsx)(`span`,{className:`console-markdown-reference-title`,children:n.title}),r!==null&&(0,x.jsxs)(`span`,{className:`console-markdown-reference-number`,children:[`#`,r.number]})]})},Hf=(e,t)=>{let[n,r]=(0,y.useState)(()=>e.peek(t)??null);return(0,y.useEffect)(()=>{let n=e.peek(t);if(n!==void 0){r(n);return}let i=!1;return r(null),e.load(t,t).then(e=>{i||r(e)}).catch(()=>{i||r(null)}),()=>{i=!0}},[e,t]),n},Uf=({cache:e,href:t,fallbackText:n})=>{let r=Hf(e,t);return(0,x.jsx)(Q,{href:t,fallbackText:n,state:r})},Wf=e=>({itemUrl:e.url,projectItemId:e.projectItemId,itemNumber:e.number,repo:e.repo,nameWithOwner:e.nameWithOwner,isPr:e.isPr}),Gf=(e,t,n,r,i)=>({...Wf(t),apiPath:ni,requestBody:ai(e,t,n,r,i)}),Kf=(e,t,n,r)=>({...Wf(t),apiPath:ri,requestBody:oi(e,t,n,r)}),qf=(e,t)=>({...Wf(t),apiPath:ii,requestBody:si(e,t)}),Jf=(e,t,n)=>({...Wf(t),apiPath:an,requestBody:ci(e,t,n)}),Yf=e=>({...Wf(e),apiPath:xn,requestBody:li(e)}),Xf=(e,t,n)=>[Jf(e,t,`ok`),Kf(e,t,`set_status`,{statusName:n.name})],Zf=`blue`,Qf=e=>`Commented — ${Ye(e)}`,$f=`ok`,ep=(e,t,n)=>{e===void 0?console.error(t,n):e(t,String(n))},$=(e,t,n)=>el(e,t)===n?e:tl(e,t),tp=({tab:e,item:t,caches:n,operations:r,pjcode:i,isAirplaneModeOn:a,onOfflineActionsCreate:o,statusOptions:s,storyOptions:c,agentOptions:l,storyColors:u,storyName:d,storyOptionId:f,overlayStatus:p,now:m,initialCommentDraft:h,onCommentDraftChange:g,onQueueAction:_,onCommentError:v,onDeleteStory:b,storyNameForDeletion:S,storyEntries:ee,onCreateIssueFromComment:C})=>{let w=zf(n,t,e),T=(0,y.useCallback)(e=>ua(e,t.url),[t.url]),E=(0,y.useCallback)((e,t)=>(0,x.jsx)(Uf,{cache:n.state,href:e,fallbackText:t}),[n.state]),te=t.isPr||t.relatedOpenPullRequestUrls.length>0||w.relatedPullRequests.length>0,[D,ne]=(0,y.useState)([]),O=(0,y.useCallback)(async(e,t,n,r)=>{ne(i=>[...i,{path:e,line:t,side:n,body:r}])},[]),[k,re]=(0,y.useState)([]),[ie,A]=(0,y.useState)(null),[j,ae]=(0,y.useState)({}),oe=(0,y.useRef)({}),se=(0,y.useRef)({}),M=(0,y.useCallback)(async e=>{let n=n=>(o({payloads:[Jf(n,t,e)],message:Qf(t),color:Zf}),`held_offline`);if(a&&i!=null)return n(i);try{let n=await r.addComment(t,e);return re(e=>[...e,n]),n}catch(e){if(tr(e)&&i!=null)return n(i);throw e}},[a,t,o,r,i]),N={onReview:e=>{let n=t.isPr?t.url:w.relatedPullRequests[0]?.pullRequest.url??t.relatedOpenPullRequestUrls[0]??t.url,a=e===`request_changes`?D:[];_({kind:{type:`review`,action:e},item:t,commit:()=>r.reviewPullRequest(t,n,e,a),offline:i==null?void 0:[Gf(i,t,n,e,a)],overlayPatch:{done:!0}})},onSetNextActionDate:e=>{_({kind:{type:`next_action_date`,action:e},item:t,commit:()=>r.setNextActionDate(t,e),offline:i==null?void 0:[Kf(i,t,e)],overlayPatch:{done:!0}})},onSetStory:e=>{_({kind:{type:`set_story`,optionName:e.name},item:t,commit:()=>r.setStory(t,e),offline:i==null?void 0:[Kf(i,t,`set_story`,{storyOptionId:e.id})],overlayPatch:{done:!0,story:{id:e.id,name:e.name,color:e.color}}})},onSetAgent:e=>{_({kind:{type:`set_agent`,optionName:e.name},item:t,commit:()=>r.setAgent(t,e),offline:i==null?void 0:[Kf(i,t,`set_agent`,{agentOptionId:e.id})],overlayPatch:{done:!0}})},onSetStatus:e=>{_({kind:{type:`set_status`,optionName:e.name},item:t,commit:()=>r.setStatus(t,e),offline:i==null?void 0:[Kf(i,t,`set_status`,{statusName:e.name})],overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onSetInTmuxByHuman:e=>{_({kind:{type:`set_in_tmux_by_human`,optionName:e.name},item:t,commit:()=>r.setInTmuxByHuman(t,e),offline:i==null?void 0:[qf(i,t)],overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onClose:e=>{_({kind:{type:`close`,action:e},item:t,commit:()=>r.closeIssue(t,e),offline:i==null?void 0:[Kf(i,t,e)],overlayPatch:{done:!0}})},onOkAndAwaitingWorkspace:e=>{_({kind:{type:`ok_and_awaiting_workspace`},item:t,commit:n=>r.okAndMoveToAwaitingWorkspace(t,e,n),offline:i==null?void 0:Xf(i,t,e),overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onDeleteAllComments:()=>{_({kind:{type:`delete_all_comments`},item:t,commit:()=>r.deleteAllComments(t),offline:[Yf(t)]})},onDeleteStory:b??null,onSetDependedIssueUrl:i==null?null:async e=>{await r.setDependedIssueUrl(t,e)}},ce=(0,y.useCallback)(async e=>{await r.issueRename(t,e)},[t,r]),le=(0,y.useCallback)(e=>{let n=tl(ie??w.body,e),i=el(n,e);A(n);let a=()=>{let t=oe.current[e]??el(w.body,e);A(n=>$(n??w.body,e,t))};r.issueBodyUpdate?.(t,n).then(()=>{oe.current[e]=i,a()},e=>{a(),console.error(`Failed to persist description checkbox toggle`,e)})},[ie,w.body,t,r]),ue=(0,y.useCallback)((e,n)=>{let i=tl(j[e.id]??e.body,n),a=el(i,n);ae(t=>({...t,[e.id]:i}));let o=`${e.id}:${n}`,s=()=>{let t=se.current[o]??el(e.body,n);ae(r=>({...r,[e.id]:$(r[e.id]??e.body,n,t)}))};r.issueCommentBodyUpdate?.(t,e.id,i).then(()=>{se.current[o]=a,s()},e=>{s(),console.error(`Failed to persist comment checkbox toggle`,e)})},[j,t,r]),P=s.find(e=>e.name===`Awaiting Workspace`)??null,de=P===null?void 0:async e=>(g?.(``),await new Promise((n,o)=>{let s=!1,c=(e,t)=>{throw ep(v,e,t),o(t),t};_({kind:{type:`set_status`,optionName:P.name},item:t,commit:async a=>{if(a>0||s){try{await r.setStatus(t,P)}catch(e){if(tr(e)&&i!=null)throw new nr(1,e);c(`Comment already posted, but retrying the move to Awaiting Workspace status failed: ${String(e)}`,e)}try{await r.onAfterMoveToAwaitingWorkspace?.()}catch(e){ep(v,`Comment posted and status set to Awaiting Workspace, but a post-success refresh action failed: ${String(e)}`,e)}return}try{let i=await r.addCommentAndMoveToAwaitingWorkspace(t,e,P);re(e=>[...e,i]),n(i)}catch(e){let t=e instanceof nr;if(tr(t?e.cause:e)&&i!=null)throw n(`held_offline`),e;if(s=!0,t)throw o(e),e;c(`Comment may already be posted; moving to Awaiting Workspace status failed: ${String(e)}`,e)}},offline:i==null?void 0:[Jf(i,t,e),Kf(i,t,`set_status`,{statusName:P.name})],revertAdvance:()=>g?.(e),overlayPatch:{done:!0,status:{name:P.name,color:P.color}}}),a&&i!=null&&n(`held_offline`)})),fe=(0,y.useRef)(``),[pe,me]=(0,y.useState)((h??``).trim().length===0),[F,L]=(0,y.useState)(!0),he=(0,y.useCallback)(e=>{fe.current=e,me(e.trim().length===0),g?.(e)},[g]),ge=async e=>{if(i==null){await M(e),N.onClose(`close`);return}_({kind:{type:`close`,action:`close`},item:t,commit:n=>rr([async()=>{let n=await r.addComment(t,e);re(e=>[...e,n])},()=>r.closeIssue(t,`close`)],n),offline:[Jf(i,t,e),Kf(i,t,`close`)],overlayPatch:{done:!0}})},_e=async()=>{let e=fe.current.trim();e.length!==0&&await ge(e)},ve=async()=>{_({kind:{type:`ok_and_close`},item:t,commit:e=>rr([async()=>{await r.addComment(t,$f)},()=>r.closeIssue(t,`close`)],e),offline:i==null?void 0:[Jf(i,t,$f),Kf(i,t,`close`)],overlayPatch:{done:!0}})},R=d??(t.story.trim()===``?null:t.story),z=f==null?null:I(u,f),ye=f??t.storyOptionId??null,be=ie??w.body,xe=Vf(w.comments,k).map(e=>j[e.id]===void 0?e:{...e,body:j[e.id]});return(0,x.jsx)(vf,{item:t,storyName:R,storyColorEnum:z,overlayStatus:p,statusOptions:s,state:w.state,stateError:w.stateError,body:be,bodyIsLoading:w.bodyIsLoading,bodyError:w.bodyError,comments:xe,commentsAreLoading:w.commentsAreLoading,commentsError:w.commentsError,files:w.files,filesAreLoading:w.filesAreLoading,filesError:w.filesError,commits:w.commits,commitsAreLoading:w.commitsAreLoading,commitsError:w.commitsError,pullRequestStatus:w.pullRequestStatus,pullRequestStatusError:w.pullRequestStatusError,relatedPullRequests:w.relatedPullRequests,relatedPullRequestsError:w.relatedPullRequestsError,now:m,buildImageProxyUrl:T,renderReferenceLink:E,onAddInlineComment:O,onTitleRename:ce,onBodyCheckboxToggle:le,onCommentCheckboxToggle:ue,storyEntries:ee,agentOptions:l,onCreateIssueFromComment:C,commentComposer:(0,x.jsx)(V,{initiallyOpen:!0,initialDraft:h,onSubmit:M,onDraftChange:he,onOkAndAwaitingWorkspace:P===null?void 0:()=>N.onOkAndAwaitingWorkspace(P),onSubmitAndMoveToAwaitingWorkspace:de,onUploadFile:e=>r.uploadAttachment(t,e),onOpenChange:L}),operationBar:(0,x.jsx)(jf,{tab:e,item:t,hasPullRequest:te,rejectEnabled:D.length>0,statusOptions:s,storyOptions:c,currentStoryName:R,currentStoryOptionId:ye,agentOptions:l,currentAgentName:t.agent,currentAgentOptionId:t.agentOptionId??null,handlers:N,storyNameForDeletion:S,onCommentAndClose:_e,onOkAndClose:ve,isDraftEmpty:pe,isVisible:F})})},np=()=>{let e={};for(let t of A)e[t.name]=0;return e},rp=`console`,ip=()=>({issueUrl:null,uploadedMarkdownByFileName:new Map,commentedFileNames:new Set}),ap=(e,t,n)=>{let r=[];return t.length>0&&r.push(`${t.length} file(s) failed to upload: ${t.join(`, `)}`),n!==null&&r.push(`the summary comment failed to post: ${n}`),`Task ${e} was created, but ${r.join(`; and `)}.`},op=(e,t)=>e.title!==t.title||e.body!==t.body||e.storyName!==t.storyName||e.agentOptionId!==t.agentOptionId,sp=async(e,t,{title:n,storyName:r,agentOptionId:i,body:a,files:o},s)=>{let c=s.issueUrl;if(c===null){try{c=await vn({pjcode:e,title:n,storyName:r??``,nameWithOwner:t,agentOptionId:i??null,body:a??null})}catch(e){throw console.error(`createIssueWithAttachments: failed to create issue`,e),Error(`Failed to create the task. Please try again.`)}s.issueUrl=c}let l=o.filter(e=>!s.uploadedMarkdownByFileName.has(e.name)),u=await Promise.allSettled(l.map(async t=>{let n=ln(new Uint8Array(await t.arrayBuffer())),r=await un({pjcode:e,url:c,fileName:t.name,contentBase64:n});return{fileName:t.name,markdown:r}})),d=[];u.forEach((e,t)=>{e.status===`fulfilled`?s.uploadedMarkdownByFileName.set(e.value.fileName,e.value.markdown):d.push(l[t].name)});let f=Array.from(s.uploadedMarkdownByFileName.keys()).filter(e=>!s.commentedFileNames.has(e)),p=null;if(f.length>0)try{let t=await sn({pjcode:e,url:c,body:f.map(e=>s.uploadedMarkdownByFileName.get(e)).join(`
|
|
97
|
+
`)[0],sf=({commits:e,isLoading:t,error:n,now:r})=>n===null?t?(0,x.jsx)(`p`,{className:`console-commits-loading`,children:`Loading commits...`}):e.length===0?(0,x.jsx)(`p`,{className:`console-commits-empty`,children:`No commits.`}):(0,x.jsx)(`ul`,{className:`console-commits`,children:e.map(e=>(0,x.jsxs)(`li`,{className:`console-commit`,children:[(0,x.jsx)(`span`,{className:`console-commit-message`,children:of(e.message)}),(0,x.jsx)(`span`,{className:`console-commit-sha`,children:af(e.sha)}),(0,x.jsx)(`span`,{className:`console-commit-author`,children:e.author}),(0,x.jsx)(`span`,{className:`console-commit-time`,children:k(e.authoredAt,r)})]},e.sha))}):(0,x.jsx)(`p`,{className:`console-commits-notloaded`,children:`Not loaded.`}),cf=({url:e,label:t=`Copy URL`})=>(0,x.jsx)(cd,{value:e,idleText:`Copy URL`,idleAriaLabel:t,copiedAriaLabel:`URL copied to clipboard`,className:`console-copy-url-button`}),lf=e=>{let t=new Map;for(let n of e){let e=t.get(n.message);if(e===void 0){t.set(n.message,[n.section]);continue}e.push(n.section)}return Array.from(t,([e,t])=>({message:e,sections:t}))},uf=e=>e.length<=1?e.join(``):`${e.slice(0,-1).join(`, `)} and ${e[e.length-1]}`,df=({failures:e})=>e.length===0?null:(0,x.jsx)(`div`,{role:`alert`,className:`console-detail-fetch-error`,children:lf(e).map(e=>(0,x.jsxs)(`p`,{className:`console-detail-fetch-error-line`,children:[`Failed to load `,uf(e.sections),`:`,` `,e.message]},e.message))}),ff=({title:e,onTitleRename:t})=>{let[n,r]=(0,y.useState)(e),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(e),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(null),f=(0,y.useRef)(e);(0,y.useEffect)(()=>{let t=e!==f.current;f.current=e,!i&&t&&r(e)},[e,i]);let p=()=>{s(n),d(null),a(!0)},m=()=>{a(!1),d(null)},h=async()=>{let e=o.trim();if(e===``||e===n){a(!1);return}l(!0),d(null);try{await t(e),r(e),a(!1)}catch(e){d(e instanceof Error?e.message:`Failed to rename`)}finally{l(!1)}};return i?(0,x.jsxs)(`span`,{className:`console-detail-title-text console-detail-title-text--editing`,children:[(0,x.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`?h():e.key===`Escape`&&m()},disabled:c,className:`console-detail-title-input`,"aria-label":`Edit title`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>void h(),disabled:c,className:`console-detail-title-save`,children:`Save`}),(0,x.jsx)(`button`,{type:`button`,onClick:m,disabled:c,className:`console-detail-title-cancel`,children:`Cancel`}),u!==null&&(0,x.jsx)(`span`,{className:`console-detail-title-error`,role:`alert`,children:u})]}):(0,x.jsxs)(`span`,{className:`console-detail-title-text`,children:[n,(0,x.jsx)(`button`,{type:`button`,onClick:p,className:`console-detail-title-edit`,"aria-label":`Edit title`,children:`Edit`})]})},pf={MERGEABLE:{color:`GREEN`,label:`No conflict`,title:`This pull request has no merge conflicts`,modifier:`console-detail-mergeable-chip-ok`},CONFLICTING:{color:`RED`,label:`Conflict`,title:`This pull request has merge conflicts`,modifier:`console-detail-mergeable-chip-conflict`},UNKNOWN:{color:`GRAY`,label:`Checking merge status`,title:`GitHub has not finished computing the merge status yet`,modifier:`console-detail-mergeable-chip-unknown`}},mf=({mergeableStatus:e})=>{let t=pf[e],n=fe(t.color);return(0,x.jsx)(`span`,{className:`console-detail-status-chip console-detail-mergeable-chip ${t.modifier}`,style:{color:n.fg,borderColor:n.border,backgroundColor:n.bg},title:t.title,children:t.label})},hf=e=>{let t=fe(e);return{color:t.fg,borderColor:t.border,backgroundColor:t.bg}},gf=({isPassedAllCiJob:e,isCiStateSuccess:t,isBranchOutOfDate:n,missingRequiredCheckNames:r})=>{let i=e&&t,a=i?`GREEN`:`RED`,o=i?`CI passing`:`CI failing`,s=!i&&r.length>0?`missing: ${r.join(`, `)}`:null;return(0,x.jsxs)(`span`,{className:`console-detail-pr-status`,children:[(0,x.jsxs)(`span`,{className:`console-detail-status-chip console-detail-ci-chip`,style:hf(a),title:s??o,children:[o,s!==null&&(0,x.jsxs)(`span`,{className:`console-detail-ci-missing`,children:[` `,`(`,s,`)`]})]}),n&&(0,x.jsx)(`span`,{className:`console-detail-status-chip console-detail-outofdate-chip`,style:hf(`YELLOW`),title:`This branch is out of date with the base branch`,children:`Out of date`})]})},_f=({pullRequest:e,body:t,bodyIsLoading:n,files:r,filesAreLoading:i,filesError:a,commits:o,commitsAreLoading:s,commitsError:c,now:l,buildImageProxyUrl:u,renderReferenceLink:d,onAddInlineComment:f})=>{let p=e.summary,m=aa(e.url),h=m===null?void 0:{owner:m.owner,repo:m.repo},g=i||a!==null?null:r.length,_=s||c!==null?null:o.length;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`console-pr-header`,children:[(0,x.jsx)(`a`,{href:e.url,className:`console-pr-section-title`,target:`_blank`,rel:`noopener noreferrer`,children:p?.title??e.url}),e.isDraft&&(0,x.jsx)(`span`,{className:`console-pr-section-state`,children:`draft`}),(0,x.jsx)(mf,{mergeableStatus:e.mergeableStatus}),(0,x.jsx)(gf,{isPassedAllCiJob:e.isPassedAllCiJob,isCiStateSuccess:e.isCiStateSuccess,isBranchOutOfDate:e.isBranchOutOfDate,missingRequiredCheckNames:e.missingRequiredCheckNames}),(0,x.jsx)(`a`,{href:e.url,className:`console-panel-open-link`,target:`_blank`,rel:`noopener noreferrer`,children:`open`}),(0,x.jsx)(cf,{url:e.url,label:`Copy PR URL`}),(0,x.jsxs)(`div`,{className:`console-pr-statbar`,children:[m!==null&&(0,x.jsxs)(`span`,{className:`console-pr-repo`,children:[m.owner,`/`,m.repo]}),e.branchName!==null&&(0,x.jsx)(`span`,{className:`console-pr-branch`,children:e.branchName}),p!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`span`,{className:`console-pr-add`,children:[`+`,p.additions]}),(0,x.jsxs)(`span`,{className:`console-pr-del`,children:[`-`,p.deletions]}),(0,x.jsxs)(`span`,{className:`console-pr-files-count`,children:[p.changedFiles,` files`]})]})]})]}),(0,x.jsx)(Pd,{title:`Description`,children:n?(0,x.jsx)(`p`,{className:`console-pr-body-loading`,children:`Loading description...`}):(0,x.jsx)(Nd,{body:p?.body??t,buildImageProxyUrl:u,renderReferenceLink:d,repoContext:h})}),(0,x.jsx)(Pd,{title:`Changed files`,count:g,children:(0,x.jsx)(Qd,{files:r,isLoading:i,error:a,buildImageProxyUrl:u,onAddInlineComment:f})}),(0,x.jsx)(Pd,{title:`Commits`,count:_,defaultCollapsed:!0,children:(0,x.jsx)(sf,{commits:o,isLoading:s,error:c,now:l})})]})},vf=({item:e,storyName:t,storyColorEnum:n,overlayStatus:r,statusOptions:i,state:a,body:o,bodyIsLoading:s,bodyError:c,comments:l,commentsAreLoading:u,commentsError:d,files:f,filesAreLoading:p,filesError:m,commits:h,commitsAreLoading:g,commitsError:_,stateError:v,pullRequestStatus:y,pullRequestStatusError:b,relatedPullRequests:S,relatedPullRequestsError:ee,now:C,commentComposer:w,operationBar:T,buildImageProxyUrl:E,renderReferenceLink:te,onAddInlineComment:D,onTitleRename:ne,onBodyCheckboxToggle:O,onCommentCheckboxToggle:re,storyEntries:A,agentOptions:j,onCreateIssueFromComment:ae})=>{let oe=a?.state??`open`,se=a?.merged??!1,M=!e.isPr&&oe===`closed`?`Closed`:null,N=oa(e.nameWithOwner)??void 0,ce=fe(n),le=r===null?e.status===null?null:{name:e.status,color:i.find(t=>t.name===e.status)?.color??`GRAY`}:r,ue=le===null?null:fe(le.color),P=p||m!==null?null:f.length,de=u||d!==null?null:l.length,pe=g||_!==null?null:h.length,me=!u&&d===null&&l.length>0,F=(e,t)=>{let n=aa(e);return n===null?e:`${t}#${n.number}`},I=e=>F(e,`PR `),L=[],he=new Map;for(let t of e.dependedIssueUrls){let e=he.get(t)??0;he.set(t,e+1),L.push({url:t,occurrenceKey:`${t}#${e}`})}let ge=[{section:`item state`,message:v},{section:`pull request status`,message:e.isPr?b:null},{section:`description`,message:c},{section:`comments`,message:d},{section:`changed files`,message:e.isPr?m:null},{section:`commits`,message:e.isPr?_:null},{section:`related pull requests`,message:e.isPr?null:ee},...S.flatMap(e=>[{section:`changed files of ${I(e.pullRequest.url)}`,message:e.filesError},{section:`commits of ${I(e.pullRequest.url)}`,message:e.commitsError}])].flatMap(e=>e.message===null?[]:[{section:e.section,message:e.message}]),_e=e.isPr&&y?.found?[{url:e.url,mergeableStatus:y.mergeableStatus}]:[];return(0,x.jsxs)(`article`,{className:`console-detail`,children:[(0,x.jsxs)(`div`,{className:`console-detail-header`,children:[(0,x.jsxs)(`h2`,{className:`console-detail-title`,children:[(0,x.jsx)(Oe,{isPr:e.isPr,state:oe,merged:se,isDraft:!1,stateReason:``}),ne==null?(0,x.jsx)(`span`,{className:`console-detail-title-text`,children:e.title}):(0,x.jsx)(ff,{title:e.title,onTitleRename:ne}),(0,x.jsx)(`span`,{className:`console-detail-number`,children:e.isPr?`PR #${e.number}`:`#${e.number}`})]}),(0,x.jsxs)(`div`,{className:`console-detail-topline`,children:[le!==null&&ue!==null&&(0,x.jsx)(`span`,{className:`console-detail-status-chip`,style:{color:ue.fg,borderColor:ue.border,backgroundColor:ue.bg},children:le.name}),e.agent!==null&&e.agent!==``&&(0,x.jsx)(`span`,{className:`console-detail-agent-chip`,children:e.agent}),t!==null&&(0,x.jsxs)(`span`,{className:`console-storytag`,children:[(0,x.jsx)(`span`,{className:`console-story-dot`,style:{backgroundColor:ce.dot}}),t]}),e.isPr&&y?.found&&(0,x.jsx)(gf,{isPassedAllCiJob:y.isPassedAllCiJob,isCiStateSuccess:y.isCiStateSuccess,isBranchOutOfDate:y.isBranchOutOfDate,missingRequiredCheckNames:y.missingRequiredCheckNames}),!e.isPr&&S.map(e=>(0,x.jsxs)(`span`,{className:`console-related-pr-group`,children:[S.length>1&&(0,x.jsx)(`span`,{className:`console-related-pr-label`,children:I(e.pullRequest.url)}),(0,x.jsx)(gf,{isPassedAllCiJob:e.pullRequest.isPassedAllCiJob,isCiStateSuccess:e.pullRequest.isCiStateSuccess,isBranchOutOfDate:e.pullRequest.isBranchOutOfDate,missingRequiredCheckNames:e.pullRequest.missingRequiredCheckNames}),(0,x.jsx)(mf,{mergeableStatus:e.pullRequest.mergeableStatus})]},e.pullRequest.url)),_e.map(e=>(0,x.jsx)(mf,{mergeableStatus:e.mergeableStatus},e.url)),M!==null&&(0,x.jsx)(`span`,{className:`console-detail-closed-label`,children:M})]}),e.dependedIssueUrls.length>0&&(0,x.jsxs)(`div`,{className:`console-detail-depended-issue-url`,children:[(0,x.jsx)(`span`,{className:`console-detail-depended-issue-url-label`,children:`Depended Issue URL`}),L.map(({url:e,occurrenceKey:t})=>{let n=F(e,``);return(0,x.jsx)(`span`,{className:`console-detail-depended-issue-url-link`,children:te?.(e,n)??(0,x.jsx)(`a`,{className:`console-markdown-reference console-markdown-reference-plain`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:n})},t)})]}),(0,x.jsx)(df,{failures:ge}),(0,x.jsxs)(`div`,{className:`console-detail-subbar`,children:[(0,x.jsxs)(`a`,{href:e.url,className:`console-detail-link`,target:`_blank`,rel:`noopener noreferrer`,children:[`#`,e.number]}),(0,x.jsx)(`span`,{className:`console-detail-repo`,children:e.repo}),(0,x.jsxs)(`span`,{className:`console-detail-createdat`,title:ie(e.createdAt),children:[`opened `,k(e.createdAt,C)]}),(0,x.jsx)(cf,{url:e.url}),e.labels.map(e=>(0,x.jsx)(`span`,{className:`console-label-chip`,children:e},e))]})]}),(0,x.jsxs)(`div`,{className:`console-detail-body`,children:[(0,x.jsx)(Pd,{title:`Description`,defaultCollapsed:me,headerAction:(0,x.jsx)(`a`,{href:e.url,className:`console-panel-open-link`,target:`_blank`,rel:`noopener noreferrer`,children:`open`}),children:c===null?s?(0,x.jsx)(`p`,{className:`console-detail-body-loading`,children:`Loading description...`}):(0,x.jsx)(Nd,{body:o,buildImageProxyUrl:E,renderReferenceLink:te,repoContext:N,onCheckboxToggle:O}):(0,x.jsx)(`p`,{className:`console-detail-body-notloaded`,children:`Not loaded.`})},me?`desc-collapsed`:`desc-open`),e.isPr&&(0,x.jsx)(Pd,{title:`Changed files`,count:P,children:(0,x.jsx)(Qd,{files:f,isLoading:p,error:m,onAddInlineComment:D})}),(0,x.jsx)(Pd,{title:`Comments`,count:de,children:(0,x.jsx)(rf,{comments:l,isLoading:u,error:d,now:C,buildImageProxyUrl:E,renderReferenceLink:te,repoContext:N,persistenceKey:e.url,issueUrl:e.url,issueTitle:e.title,storyEntries:A,agentOptions:j,onCreateIssueFromComment:ae,onCommentCheckboxToggle:re})}),e.isPr&&(0,x.jsx)(Pd,{title:`Commits`,count:pe,defaultCollapsed:!0,children:(0,x.jsx)(sf,{commits:h,isLoading:g,error:_,now:C})}),!e.isPr&&S.map(e=>(0,x.jsx)(_f,{pullRequest:e.pullRequest,body:e.pullRequest.summary?.body??``,bodyIsLoading:!1,files:e.files,filesAreLoading:e.filesAreLoading,filesError:e.filesError,commits:e.commits,commitsAreLoading:e.commitsAreLoading,commitsError:e.commitsError,now:C,buildImageProxyUrl:E,renderReferenceLink:te,onAddInlineComment:D},e.pullRequest.url))]}),(0,x.jsxs)(`div`,{className:`console-detail-dock`,children:[(0,x.jsx)(`div`,{className:`console-detail-dock-composer`,children:w}),(0,x.jsx)(`div`,{className:`console-actionbar`,children:T})]})]})},yf=({className:e,ariaLabel:t,placeholder:n,currentOption:r,options:i,onSelect:a})=>{let o=(0,y.useRef)({ready:!1,currentOptionId:r?.id??null});return(0,y.useLayoutEffect)(()=>{o.current.ready=!0,o.current.currentOptionId=r?.id??null}),(0,x.jsxs)(`select`,{className:e,defaultValue:r?.id??``,onChange:e=>{if(!o.current.ready||e.target.value===(o.current.currentOptionId??``))return;let t=i.find(t=>t.id===e.target.value);t!==void 0&&a(t)},"aria-label":t,children:[(0,x.jsx)(`option`,{value:``,children:n}),i.map(e=>(0,x.jsx)(`option`,{value:e.id,children:e.name},e.id))]})},bf=({agentOptions:e,currentAgentName:t,currentAgentOptionId:n,onSetAgent:r})=>{if(e.length===0)return null;let i=n==null?t===null?null:e.find(e=>e.name===t)??null:e.find(e=>e.id===n)??null;return(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(yf,{className:`console-agent-select`,ariaLabel:`Set agent`,placeholder:`— agent —`,currentOption:i,options:e,onSelect:r},i?.id??`none`)})},xf=({onClose:e,onCommentAndClose:t,onOkAndClose:n,isDraftEmpty:r})=>{let[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(null),c=async e=>{if(!(e===void 0||i)){a(!0),s(null);try{await e()}catch(e){s(e instanceof Error?e.message:`failed to post`)}finally{a(!1)}}};return(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>e(`close_not_planned`),children:`Close as not planned`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>e(`close`),children:`Close`}),n!==void 0&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,disabled:i,onClick:()=>{c(n)},children:`OK & Close`}),t!==void 0&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,disabled:i||r===!0,onClick:()=>{c(t)},children:`Comment & Close`}),o!==null&&(0,x.jsx)(`span`,{role:`alert`,className:`console-op-comment-close-error`,children:o})]})},Sf=({onDeleteAllComments:e,onDeleteStory:t,storyNameForDeletion:n})=>{let[r,i]=(0,y.useState)(!1),[a,o]=(0,y.useState)(!1),[s,c]=(0,y.useState)(!1),[l,u]=(0,y.useState)(null),d=()=>{e(),i(!1)},f=()=>{o(!0),u(null)},p=async e=>{if(t){c(!0),u(null);try{await t(e)}catch(e){u(e instanceof Error?e.message:String(e)),c(!1)}}};return(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>i(e=>!e),children:`⚠`}),r&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:d,children:`Delete All Comments`}),t!=null&&(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:f,disabled:a,children:`Delete Story`})]}),a&&(0,x.jsxs)(`div`,{className:`console-story-delete-confirm`,role:`dialog`,"aria-modal":`true`,"aria-label":`Confirm story deletion`,children:[(0,x.jsxs)(`p`,{className:`console-story-delete-confirm-message`,children:[`Delete story option "`,n,`" from the GitHub custom field?`]}),l!==null&&(0,x.jsx)(`p`,{role:`alert`,className:`console-list-error`,children:l}),(0,x.jsxs)(`div`,{className:`console-story-delete-confirm-actions`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>void p(!0),disabled:s,children:s?`Deleting…`:`Delete with child tasks`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-danger`,onClick:()=>void p(!1),disabled:s,children:s?`Deleting…`:`Keep child tasks`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>{o(!1),u(null)},disabled:s,children:`Cancel`})]})]})]})},Cf=({isManualTriage:e,onSetNextActionDate:t})=>(0,x.jsxs)(`div`,{className:`console-op-group`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1hour`),children:`+1h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_3hours`),children:`+3h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_6hours`),children:`+6h`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1day`),children:`+1d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_2days`),children:`+2d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_3days`),children:`+3d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_5days`),children:`+5d`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1week`),children:e?`+1w skip`:`+1w`}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-snooze`,onClick:()=>t(`snooze_1month`),children:`+1mo`})]}),wf=[{action:`unnecessary`,label:`Unnecessary`,variant:`unneeded`},{action:`totally_wrong`,label:`Totally wrong`,variant:`wrong`},{action:`request_changes`,label:`Reject`,variant:`reject`},{action:`approve_and_merge`,label:`Approve & Merge`,variant:`approve`}],Tf=`Reject needs an inline comment on the diff.`,Ef=({onReview:e,rejectEnabled:t})=>(0,x.jsxs)(`div`,{className:`console-op-group console-op-group-review`,children:[!t&&(0,x.jsx)(`p`,{className:`console-op-requirement`,children:Tf}),wf.map(n=>{let r=n.action===`request_changes`&&!t;return(0,x.jsx)(`button`,{type:`button`,className:`console-op-button console-op-button-${n.variant}`,disabled:r,onClick:()=>e(n.action),children:n.label},n.action)})]}),Df=({onSetDependedIssueUrl:e})=>{let[t,n]=(0,y.useState)(!1),[r,i]=(0,y.useState)(``),[a,o]=(0,y.useState)(!1),[s,c]=(0,y.useState)(null);return(0,x.jsxs)(`div`,{className:`console-op-group console-op-group-rare-actions`,children:[(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>{n(e=>!e),c(null)},title:`Rare actions`,children:`⋯`}),t&&e!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`input`,{type:`url`,className:`console-settings-modal-input`,placeholder:`Depended issue URL`,value:r,onChange:e=>i(e.target.value),disabled:a}),(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:async()=>{if(e!==null&&r.trim()!==``){o(!0),c(null);try{await e(r.trim()),i(``),n(!1)}catch(e){c(e instanceof Error?e.message:`Failed to set depended issue URL`)}finally{o(!1)}}},disabled:a||r.trim()===``,children:a?`...`:`Set Depended Issue`})]}),s!==null&&(0,x.jsx)(`p`,{className:`console-settings-modal-error`,children:s})]})},Of=(e,t)=>{let n=t.toLowerCase();return e.find(e=>e.name.toLowerCase()===n)??null},kf=({statusOptions:e,onSetStatus:t,onSetInTmuxByHuman:n})=>{let r=Ce.map(t=>({name:t,option:Of(e,t)})).filter(e=>e.option!==null);return r.length===0?null:(0,x.jsx)(`div`,{className:`console-op-group`,children:r.map(({name:e,option:r})=>{let i=fe(r.color),a=e===xe;return(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,style:{color:i.fg,borderColor:i.border,backgroundColor:i.bg},onClick:()=>a?n(r):t(r),children:r.name},r.id)})})},Af=({storyOptions:e,currentStoryName:t,currentStoryOptionId:n,onSetStory:r})=>{if(e.length===0)return null;let i=n===null?t===null?null:e.find(e=>e.name===t)??null:e.find(e=>e.id===n)??null;return(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(yf,{className:`console-story-select`,ariaLabel:`Set story`,placeholder:`— story —`,currentOption:i,options:e,onSelect:r},i?.id??`none`)})},jf=({tab:e,hasPullRequest:t,rejectEnabled:n,statusOptions:r,storyOptions:i,currentStoryName:a,currentStoryOptionId:o,agentOptions:s,currentAgentName:c,currentAgentOptionId:l,handlers:u,storyNameForDeletion:d,onCommentAndClose:f,onOkAndClose:p,isDraftEmpty:m,isVisible:h})=>{let[g,_]=(0,y.useState)(!1);return h?(0,x.jsxs)(`div`,{className:`console-operation-bar`,children:[t&&(0,x.jsx)(Ef,{onReview:u.onReview,rejectEnabled:n}),(0,x.jsx)(Cf,{isManualTriage:we(e),onSetNextActionDate:u.onSetNextActionDate}),(0,x.jsx)(kf,{statusOptions:r,onSetStatus:u.onSetStatus,onSetInTmuxByHuman:u.onSetInTmuxByHuman}),g&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Af,{storyOptions:i,currentStoryName:a,currentStoryOptionId:o,onSetStory:u.onSetStory}),(0,x.jsx)(bf,{agentOptions:s,currentAgentName:c,currentAgentOptionId:l,onSetAgent:u.onSetAgent})]}),(0,x.jsxs)(`div`,{className:`console-op-group-bottom-row`,children:[(0,x.jsxs)(`div`,{className:`console-op-group-left-pair`,children:[(i.length>0||s.length>0)&&(0,x.jsx)(`div`,{className:`console-op-group`,children:(0,x.jsx)(`button`,{type:`button`,className:`console-op-button`,onClick:()=>_(e=>!e),title:`Change agent or story`,children:`⚙`})}),(0,x.jsx)(Df,{onSetDependedIssueUrl:u.onSetDependedIssueUrl}),(0,x.jsx)(Sf,{onDeleteAllComments:u.onDeleteAllComments,onDeleteStory:u.onDeleteStory,storyNameForDeletion:d})]}),(0,x.jsx)(xf,{onClose:u.onClose,onCommentAndClose:f,onOkAndClose:p,isDraftEmpty:m})]})]}):null},Mf=(e,t,n,r)=>{let i=t===null?void 0:e.peek(t),[a,o]=(0,y.useState)(i??r),[s,c]=(0,y.useState)(t!==null&&i===void 0),[l,u]=(0,y.useState)(null);return(0,y.useEffect)(()=>{if(t===null||n===null)return;let r=e.peek(t);if(r!==void 0){o(r),c(!1),u(null);return}let i=!1;return c(!0),u(null),e.load(t,n).then(e=>{i||(o(e),c(!1))}).catch(e=>{i||(u(e instanceof Error?e.message:String(e)),c(!1))}),()=>{i=!0}},[e,t,n]),{data:a,isLoading:s,error:l}},Nf=[],Pf=[],Ff=[],If=[],Lf={state:`open`,merged:!1,isPullRequest:!1,title:``},Rf={found:!1,isConflicted:!1,mergeableStatus:`UNKNOWN`,isPassedAllCiJob:!1,isCiStateSuccess:!1,isBranchOutOfDate:!1,missingRequiredCheckNames:[]},zf=(e,t,n)=>{let r=t===null?null:`${t.repo}#${t.number}`,i=t===null?null:t.url,a=t?.isPr??!1,o=Mf(e.body,r,i,``),s=Mf(e.state,r,i,Lf),c=Mf(e.comments,r,i,Nf),l=Mf(e.files,a?r:null,a?i:null,Pf),u=Mf(e.commits,a?r:null,a?i:null,Ff),d=Mf(e.prStatus,a?r:null,a?i:null,Rf),f=!a&&((t?.relatedOpenPullRequestUrls.length??0)>0||n===`prs`),p=Mf(e.relatedPrs,f?r:null,f?i:null,If),[m,h]=(0,y.useState)([]);return(0,y.useEffect)(()=>{if(a||p.data.length===0){h([]);return}let t=!1,n=p.data.map(e=>({pullRequest:e,files:Pf,filesAreLoading:!0,filesError:null,commits:Ff,commitsAreLoading:!0,commitsError:null}));h(n);let r=(e,n)=>{t||h(t=>t.map(t=>t.pullRequest.url===e?{...t,...n}:t))};for(let t of p.data){let n=t.url;e.files.load(n,t.url).then(e=>r(t.url,{files:e,filesAreLoading:!1})).catch(e=>r(t.url,{filesAreLoading:!1,filesError:e instanceof Error?e.message:String(e)})),e.commits.load(n,t.url).then(e=>r(t.url,{commits:e,commitsAreLoading:!1})).catch(e=>r(t.url,{commitsAreLoading:!1,commitsError:e instanceof Error?e.message:String(e)}))}return()=>{t=!0}},[e,a,p.data]),{state:s.data,body:o.data,bodyIsLoading:o.isLoading,bodyError:o.error,comments:c.data,commentsAreLoading:c.isLoading,commentsError:c.error,files:l.data,filesAreLoading:l.isLoading,filesError:l.error,commits:u.data,commitsAreLoading:u.isLoading,commitsError:u.error,stateError:s.error,pullRequestStatus:a?d.data:null,pullRequestStatusError:a?d.error:null,relatedPullRequests:m,relatedPullRequestsError:a?null:p.error}},Bf=e=>JSON.stringify([e.author,e.createdAt,e.body]),Vf=(e,t)=>{let n=new Set(e.map(Bf));return[...e,...t.filter(e=>!n.has(Bf(e)))]},Q=({href:e,fallbackText:t,state:n})=>{if(n===null||n.title.trim()===``)return(0,x.jsx)(`a`,{className:`console-markdown-reference console-markdown-reference-plain`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:t});let r=aa(e);return(0,x.jsxs)(`a`,{className:`console-markdown-reference`,href:e,target:`_blank`,rel:`noopener noreferrer`,children:[(0,x.jsx)(Oe,{...sa(n)}),(0,x.jsx)(`span`,{className:`console-markdown-reference-title`,children:n.title}),r!==null&&(0,x.jsxs)(`span`,{className:`console-markdown-reference-number`,children:[`#`,r.number]})]})},Hf=(e,t)=>{let[n,r]=(0,y.useState)(()=>e.peek(t)??null);return(0,y.useEffect)(()=>{let n=e.peek(t);if(n!==void 0){r(n);return}let i=!1;return r(null),e.load(t,t).then(e=>{i||r(e)}).catch(()=>{i||r(null)}),()=>{i=!0}},[e,t]),n},Uf=({cache:e,href:t,fallbackText:n})=>{let r=Hf(e,t);return(0,x.jsx)(Q,{href:t,fallbackText:n,state:r})},Wf=e=>({itemUrl:e.url,projectItemId:e.projectItemId,itemNumber:e.number,repo:e.repo,nameWithOwner:e.nameWithOwner,isPr:e.isPr}),Gf=(e,t,n,r,i)=>({...Wf(t),apiPath:ni,requestBody:ai(e,t,n,r,i)}),Kf=(e,t,n,r)=>({...Wf(t),apiPath:ri,requestBody:oi(e,t,n,r)}),qf=(e,t)=>({...Wf(t),apiPath:ii,requestBody:si(e,t)}),Jf=(e,t,n)=>({...Wf(t),apiPath:an,requestBody:ci(e,t,n)}),Yf=(e,t,n)=>({...Wf(t),apiPath:Vn,requestBody:{pjcode:e,issueUrl:t.url,dependedIssueUrl:n}}),Xf=e=>({...Wf(e),apiPath:xn,requestBody:li(e)}),Zf=(e,t,n)=>[Jf(e,t,`ok`),Kf(e,t,`set_status`,{statusName:n.name})],Qf=`blue`,$f=e=>`Commented — ${Ye(e)}`,ep=`ok`,$=(e,t,n)=>{e===void 0?console.error(t,n):e(t,String(n))},tp=(e,t,n)=>el(e,t)===n?e:tl(e,t),np=({tab:e,item:t,caches:n,operations:r,pjcode:i,isAirplaneModeOn:a,onOfflineActionsCreate:o,statusOptions:s,storyOptions:c,agentOptions:l,storyColors:u,storyName:d,storyOptionId:f,overlayStatus:p,now:m,initialCommentDraft:h,onCommentDraftChange:g,onQueueAction:_,onCommentError:v,onDeleteStory:b,storyNameForDeletion:S,storyEntries:ee,onCreateIssueFromComment:C})=>{let w=zf(n,t,e),T=(0,y.useCallback)(e=>ua(e,t.url),[t.url]),E=(0,y.useCallback)((e,t)=>(0,x.jsx)(Uf,{cache:n.state,href:e,fallbackText:t}),[n.state]),te=t.isPr||t.relatedOpenPullRequestUrls.length>0||w.relatedPullRequests.length>0,[D,ne]=(0,y.useState)([]),O=(0,y.useCallback)(async(e,t,n,r)=>{ne(i=>[...i,{path:e,line:t,side:n,body:r}])},[]),[k,re]=(0,y.useState)([]),[ie,A]=(0,y.useState)(null),[j,ae]=(0,y.useState)({}),oe=(0,y.useRef)({}),se=(0,y.useRef)({}),M=(0,y.useCallback)(async e=>{let n=n=>(o({payloads:[Jf(n,t,e)],message:$f(t),color:Qf}),`held_offline`);if(a&&i!=null)return n(i);try{let n=await r.addComment(t,e);return re(e=>[...e,n]),n}catch(e){if(tr(e)&&i!=null)return n(i);throw e}},[a,t,o,r,i]),N={onReview:e=>{let n=t.isPr?t.url:w.relatedPullRequests[0]?.pullRequest.url??t.relatedOpenPullRequestUrls[0]??t.url,a=e===`request_changes`?D:[];_({kind:{type:`review`,action:e},item:t,commit:()=>r.reviewPullRequest(t,n,e,a),offline:i==null?void 0:[Gf(i,t,n,e,a)],overlayPatch:{done:!0}})},onSetNextActionDate:e=>{_({kind:{type:`next_action_date`,action:e},item:t,commit:()=>r.setNextActionDate(t,e),offline:i==null?void 0:[Kf(i,t,e)],overlayPatch:{done:!0}})},onSetStory:e=>{_({kind:{type:`set_story`,optionName:e.name},item:t,commit:()=>r.setStory(t,e),offline:i==null?void 0:[Kf(i,t,`set_story`,{storyOptionId:e.id})],overlayPatch:{done:!0,story:{id:e.id,name:e.name,color:e.color}}})},onSetAgent:e=>{_({kind:{type:`set_agent`,optionName:e.name},item:t,commit:()=>r.setAgent(t,e),offline:i==null?void 0:[Kf(i,t,`set_agent`,{agentOptionId:e.id})],overlayPatch:{done:!0}})},onSetStatus:e=>{_({kind:{type:`set_status`,optionName:e.name},item:t,commit:()=>r.setStatus(t,e),offline:i==null?void 0:[Kf(i,t,`set_status`,{statusName:e.name})],overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onSetInTmuxByHuman:e=>{_({kind:{type:`set_in_tmux_by_human`,optionName:e.name},item:t,commit:()=>r.setInTmuxByHuman(t,e),offline:i==null?void 0:[qf(i,t)],overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onClose:e=>{_({kind:{type:`close`,action:e},item:t,commit:()=>r.closeIssue(t,e),offline:i==null?void 0:[Kf(i,t,e)],overlayPatch:{done:!0}})},onOkAndAwaitingWorkspace:e=>{_({kind:{type:`ok_and_awaiting_workspace`},item:t,commit:n=>r.okAndMoveToAwaitingWorkspace(t,e,n),offline:i==null?void 0:Zf(i,t,e),overlayPatch:{done:!0,status:{name:e.name,color:e.color}}})},onDeleteAllComments:()=>{_({kind:{type:`delete_all_comments`},item:t,commit:()=>r.deleteAllComments(t),offline:[Xf(t)]})},onDeleteStory:b??null,onSetDependedIssueUrl:i==null?null:async e=>{if(P===null){await r.setDependedIssueUrl(t,e);return}let n=P;_({kind:{type:`set_status`,optionName:n.name},item:t,commit:i=>rr([()=>r.setDependedIssueUrl(t,e),()=>r.setStatus(t,n)],i),offline:[Yf(i,t,e),Kf(i,t,`set_status`,{statusName:n.name})],overlayPatch:{done:!0,status:{name:n.name,color:n.color}}})}},ce=(0,y.useCallback)(async e=>{await r.issueRename(t,e)},[t,r]),le=(0,y.useCallback)(e=>{let n=tl(ie??w.body,e),i=el(n,e);A(n);let a=()=>{let t=oe.current[e]??el(w.body,e);A(n=>tp(n??w.body,e,t))};r.issueBodyUpdate?.(t,n).then(()=>{oe.current[e]=i,a()},e=>{a(),console.error(`Failed to persist description checkbox toggle`,e)})},[ie,w.body,t,r]),ue=(0,y.useCallback)((e,n)=>{let i=tl(j[e.id]??e.body,n),a=el(i,n);ae(t=>({...t,[e.id]:i}));let o=`${e.id}:${n}`,s=()=>{let t=se.current[o]??el(e.body,n);ae(r=>({...r,[e.id]:tp(r[e.id]??e.body,n,t)}))};r.issueCommentBodyUpdate?.(t,e.id,i).then(()=>{se.current[o]=a,s()},e=>{s(),console.error(`Failed to persist comment checkbox toggle`,e)})},[j,t,r]),P=s.find(e=>e.name===`Awaiting Workspace`)??null,de=P===null?void 0:async e=>(g?.(``),await new Promise((n,o)=>{let s=!1,c=(e,t)=>{throw $(v,e,t),o(t),t};_({kind:{type:`set_status`,optionName:P.name},item:t,commit:async a=>{if(a>0||s){try{await r.setStatus(t,P)}catch(e){if(tr(e)&&i!=null)throw new nr(1,e);c(`Comment already posted, but retrying the move to Awaiting Workspace status failed: ${String(e)}`,e)}try{await r.onAfterMoveToAwaitingWorkspace?.()}catch(e){$(v,`Comment posted and status set to Awaiting Workspace, but a post-success refresh action failed: ${String(e)}`,e)}return}try{let i=await r.addCommentAndMoveToAwaitingWorkspace(t,e,P);re(e=>[...e,i]),n(i)}catch(e){let t=e instanceof nr;if(tr(t?e.cause:e)&&i!=null)throw n(`held_offline`),e;if(s=!0,t)throw o(e),e;c(`Comment may already be posted; moving to Awaiting Workspace status failed: ${String(e)}`,e)}},offline:i==null?void 0:[Jf(i,t,e),Kf(i,t,`set_status`,{statusName:P.name})],revertAdvance:()=>g?.(e),overlayPatch:{done:!0,status:{name:P.name,color:P.color}}}),a&&i!=null&&n(`held_offline`)})),fe=(0,y.useRef)(``),[pe,me]=(0,y.useState)((h??``).trim().length===0),[F,L]=(0,y.useState)(!0),he=(0,y.useCallback)(e=>{fe.current=e,me(e.trim().length===0),g?.(e)},[g]),ge=async e=>{if(i==null){await M(e),N.onClose(`close`);return}_({kind:{type:`close`,action:`close`},item:t,commit:n=>rr([async()=>{let n=await r.addComment(t,e);re(e=>[...e,n])},()=>r.closeIssue(t,`close`)],n),offline:[Jf(i,t,e),Kf(i,t,`close`)],overlayPatch:{done:!0}})},_e=async()=>{let e=fe.current.trim();e.length!==0&&await ge(e)},ve=async()=>{_({kind:{type:`ok_and_close`},item:t,commit:e=>rr([async()=>{await r.addComment(t,ep)},()=>r.closeIssue(t,`close`)],e),offline:i==null?void 0:[Jf(i,t,ep),Kf(i,t,`close`)],overlayPatch:{done:!0}})},R=d??(t.story.trim()===``?null:t.story),z=f==null?null:I(u,f),ye=f??t.storyOptionId??null,be=ie??w.body,xe=Vf(w.comments,k).map(e=>j[e.id]===void 0?e:{...e,body:j[e.id]});return(0,x.jsx)(vf,{item:t,storyName:R,storyColorEnum:z,overlayStatus:p,statusOptions:s,state:w.state,stateError:w.stateError,body:be,bodyIsLoading:w.bodyIsLoading,bodyError:w.bodyError,comments:xe,commentsAreLoading:w.commentsAreLoading,commentsError:w.commentsError,files:w.files,filesAreLoading:w.filesAreLoading,filesError:w.filesError,commits:w.commits,commitsAreLoading:w.commitsAreLoading,commitsError:w.commitsError,pullRequestStatus:w.pullRequestStatus,pullRequestStatusError:w.pullRequestStatusError,relatedPullRequests:w.relatedPullRequests,relatedPullRequestsError:w.relatedPullRequestsError,now:m,buildImageProxyUrl:T,renderReferenceLink:E,onAddInlineComment:O,onTitleRename:ce,onBodyCheckboxToggle:le,onCommentCheckboxToggle:ue,storyEntries:ee,agentOptions:l,onCreateIssueFromComment:C,commentComposer:(0,x.jsx)(V,{initiallyOpen:!0,initialDraft:h,onSubmit:M,onDraftChange:he,onOkAndAwaitingWorkspace:P===null?void 0:()=>N.onOkAndAwaitingWorkspace(P),onSubmitAndMoveToAwaitingWorkspace:de,onUploadFile:e=>r.uploadAttachment(t,e),onOpenChange:L}),operationBar:(0,x.jsx)(jf,{tab:e,item:t,hasPullRequest:te,rejectEnabled:D.length>0,statusOptions:s,storyOptions:c,currentStoryName:R,currentStoryOptionId:ye,agentOptions:l,currentAgentName:t.agent,currentAgentOptionId:t.agentOptionId??null,handlers:N,storyNameForDeletion:S,onCommentAndClose:_e,onOkAndClose:ve,isDraftEmpty:pe,isVisible:F})})},rp=()=>{let e={};for(let t of A)e[t.name]=0;return e},ip=`console`,ap=()=>({issueUrl:null,uploadedMarkdownByFileName:new Map,commentedFileNames:new Set}),op=(e,t,n)=>{let r=[];return t.length>0&&r.push(`${t.length} file(s) failed to upload: ${t.join(`, `)}`),n!==null&&r.push(`the summary comment failed to post: ${n}`),`Task ${e} was created, but ${r.join(`; and `)}.`},sp=(e,t)=>e.title!==t.title||e.body!==t.body||e.storyName!==t.storyName||e.agentOptionId!==t.agentOptionId,cp=async(e,t,{title:n,storyName:r,agentOptionId:i,body:a,files:o},s)=>{let c=s.issueUrl;if(c===null){try{c=await vn({pjcode:e,title:n,storyName:r??``,nameWithOwner:t,agentOptionId:i??null,body:a??null})}catch(e){throw console.error(`createIssueWithAttachments: failed to create issue`,e),Error(`Failed to create the task. Please try again.`)}s.issueUrl=c}let l=o.filter(e=>!s.uploadedMarkdownByFileName.has(e.name)),u=await Promise.allSettled(l.map(async t=>{let n=ln(new Uint8Array(await t.arrayBuffer())),r=await un({pjcode:e,url:c,fileName:t.name,contentBase64:n});return{fileName:t.name,markdown:r}})),d=[];u.forEach((e,t)=>{e.status===`fulfilled`?s.uploadedMarkdownByFileName.set(e.value.fileName,e.value.markdown):d.push(l[t].name)});let f=Array.from(s.uploadedMarkdownByFileName.keys()).filter(e=>!s.commentedFileNames.has(e)),p=null;if(f.length>0)try{let t=await sn({pjcode:e,url:c,body:f.map(e=>s.uploadedMarkdownByFileName.get(e)).join(`
|
|
98
98
|
|
|
99
|
-
`)});if(t.posted)for(let e of f)s.commentedFileNames.add(e);else p=t.error}catch(e){console.error(`createIssueWithAttachments: comment post threw`,e),p=`posting the summary comment failed unexpectedly`}if(d.length>0||p!==null)throw Error(ap(c,d,p))},cp=()=>{let e=Ei(),t=Jr(),n=Bt(),r=n.status===`on`?n.snapshot:null,{snapshots:i,isLoading:a,error:o,refreshSingleTab:s}=Pr(e,r),{timerMode:c,projectMinutes:l,isOpen:u,draftTimerMode:d,draftProjectMinutes:f,openSettings:p,closeSettings:m,saveSettings:h,toggleDraftTimerMode:g,changeDraftMinutes:_}=qi(),{pjcodes:v,projectUrls:b,fleetTaskCreateUrl:S,nameWithOwnerByPjcode:C,disabledPjcodes:w,workflowStoryEntries:E,workflowAgentOptions:te,isLoading:D}=Oi(c&&r===null,a),{isTimerExpired:ne}=Mi(e),O=wi(e??rp),k=ji(v),re=gr(k.isOpen),ie=(0,y.useMemo)(()=>bi(O.overlay,i),[O.overlay,i]),j=(0,y.useMemo)(()=>{let e=np();for(let t of A){let n=i[t.name];n!==null&&(t.name===`stories`?e[t.name]=n.stories.filter(e=>e.color!==`GRAY`).length:e[t.name]=hi(n.items,ie,t.name))}return e},[i,ie]),ae=ti(e,j,(0,y.useMemo)(()=>{let e=new Set;for(let t of A){let n=i[t.name];n!==null&&!n.fromCache&&e.add(t.name)}return e},[i]),(0,y.useMemo)(()=>{let e=np();for(let t of A){let n=i[t.name];n!==null&&(e[t.name]=t.name===`stories`?n.stories.filter(e=>e.color!==`GRAY`).length:n.items.length)}return e},[i])),{activeTab:M,selectedItemKey:N,openItem:ce,closeItem:le}=ae,ue=Gi(ae.selectTab),{explicitlySelectedPjcode:de,notifyExplicitSelection:fe}=Kr(e),pe=ki((0,y.useCallback)(e=>{fe(e),lr(`/projects/${e}`)},[fe]));Fr(e,M,v,a,c&&r===null);let F=(0,y.useRef)(Yi()),I=(0,y.useCallback)(e=>{N!==null&&(e?F.current.set(N,e):F.current.delete(N),Xi(F.current))},[N]),ge=zr(r),_e=di(e,ge,(0,y.useCallback)(()=>s(`queued`),[s])),R=cr({isAirplaneModeOn:n.status===`on`}),[z,ye]=(0,y.useState)(()=>Date.now());(0,y.useEffect)(()=>{let e=setInterval(()=>{ye(Date.now())},1e3);return()=>{clearInterval(e)}},[]);let[be,xe]=(0,y.useState)(!1),[Se,Ce]=(0,y.useState)(!1),[we,Te]=(0,y.useState)({title:``,body:null,storyName:null,agentOptionId:null}),[Ee,De]=(0,y.useState)({title:``,body:null,storyName:null,agentOptionId:null}),[Oe,ke]=(0,y.useState)(null),[Ae,Ne]=(0,y.useState)(null),[Pe,Ie]=(0,y.useState)(()=>navigator.onLine);(0,y.useEffect)(()=>{let e=()=>Ie(!0),t=()=>Ie(!1);return window.addEventListener(`online`,e),window.addEventListener(`offline`,t),()=>{window.removeEventListener(`online`,e),window.removeEventListener(`offline`,t)}},[]);let[Le,Re]=(0,y.useState)(new Map),[ze,Be]=(0,y.useState)(new Map),[Ve,He]=(0,y.useState)(new Set);(0,y.useEffect)(()=>{if(Pe&&R.offlineActions.length!==0)for(let e of R.offlineActions)Le.has(e.id)||Ve.has(e.id)||(Re(t=>new Map(t).set(e.id,null)),ge.client.fetchIssueState(e.itemUrl).then(t=>{Re(n=>new Map(n).set(e.id,t)),e.isPr&&(Be(t=>new Map(t).set(e.id,null)),ge.client.fetchPullRequestStatus(e.itemUrl).then(t=>{Be(n=>new Map(n).set(e.id,t))}).catch(e=>{console.warn(`Failed to fetch PR status for offline action:`,e)}))}).catch(t=>{console.warn(`Failed to fetch current state for offline action:`,t),He(t=>new Set(t).add(e.id))}))},[Pe,R.offlineActions,ge.client,Le,Ve]);let[Ue,We]=(0,y.useState)(!1),Ge=(0,y.useCallback)(async e=>{We(!0);try{await R.confirmOfflineAction(e)}finally{We(!1)}},[R]),qe=(0,y.useMemo)(()=>R.offlineActions.map(e=>{let t=Le.get(e.id)??null,n=ze.get(e.id)??null,r=Ve.has(e.id);return{id:e.id,message:e.message,color:e.color,itemNumber:e.itemNumber,nameWithOwner:e.nameWithOwner,isPr:e.isPr,currentTitle:r?null:t?.title??null,currentState:r||t===null?null:t.merged?`closed`:t.state,currentPrStatus:n,fetchError:r}}),[R.offlineActions,Le,ze,Ve]),Je=i[M],Ye=(0,y.useMemo)(()=>Je===null?[]:gi(Je.items,ie,M),[Je,ie,M]),[Xe,et]=(0,y.useState)(null),tt=(0,y.useMemo)(()=>{if(M!==`prs`)return{};let e={};for(let t of Ye)t.agent!==null&&t.agent!==``&&(e[t.agent]=(e[t.agent]??0)+1);return e},[Ye,M]);(0,y.useEffect)(()=>{M===`prs`&&Xe!==null&&(tt[Xe]??0)===0&&et(null)},[tt,Xe,M]);let nt=(0,y.useMemo)(()=>M!==`prs`||Xe===null?Ye:Ye.filter(e=>e.agent===Xe),[Ye,M,Xe]),rt=(0,y.useMemo)(()=>nt.map(e=>pi(e)),[nt]),it=Je?.storyOrder??[],at=(0,y.useMemo)(()=>ve(nt,O.overlay,it,Je?.generatedAt??null),[nt,O.overlay,it,Je]),ot=Je?.storyColors??{},st=Je?.statusOptions??[],lt=Je?.agentOptions??[],ut=Je?.storyOptions??[],dt=Je?.generatedAt??null,ft=Je?.fromCache??!1,[mt,ht]=(0,y.useState)(null),gt=(0,y.useMemo)(()=>{if(N===null||Je===null)return null;let e=Je.items.find(e=>e.projectItemId===N);if(e!==void 0)return e;for(let e of Je.stories){let t=e.items.find(e=>e.projectItemId===N);if(t!==void 0)return t}return null},[N,Je]);Gr(ge,gt,Ye),(0,y.useEffect)(()=>{N!==null&&window.scrollTo({top:0})},[N]),(0,y.useEffect)(()=>{if(e===null&&c&&v.length>0){let e=se(v,null,l);e!==null&&ur(`/projects/${e}/todo-by-human`)}},[e,c,v,l]),dr(c,ne,j.prs,j[`todo-by-human`],e,v,l,i.prs!==null,i[`todo-by-human`]!==null,i.prs?.fromCache??!1,i[`todo-by-human`]?.fromCache??!1,de,R.enqueueSequence,N),Ki(c,e,nt,N,ae.openItem);let _t=j[M],vt=(0,y.useRef)({tab:M,count:_t});(0,y.useEffect)(()=>{let e=vt.current;if(vt.current={tab:M,count:_t},e.tab===M&&e.count>0&&_t===0){let e=Yr(M,j);e!==null&&(ue(e),le())}},[M,_t,j,ue,le]);let yt=gt===null?null:_i(O.overlay,gt,i[M]?.generatedAt??null),bt=gt===null?null:L(gt,O.overlay,i[M]?.generatedAt??null),xt=gt===null?null:he(gt,O.overlay,i[M]?.generatedAt??null),St=(0,y.useCallback)(e=>{let t=Zi(rt,e);t===null?le():ce(t)},[rt,ce,le]),Ct=(0,y.useCallback)(e=>{let t=pi(e.item),n=e.overlayPatch;R.enqueue({message:$e(e.kind,e.item,M),color:Ze(e.kind),commit:e.commit,offline:e.offline,revertAdvance:e.revertAdvance,optimistic:n===void 0?void 0:()=>O.patchOverlay(t,n,M),revertOptimistic:n===void 0?void 0:()=>O.revertOverlayEntry(t),advance:()=>{e.onAdvance?.(),!e.skipAdvance&&Qe(e.kind,M)&&St(t)}})},[R,M,St,O]),wt=Wi((0,y.useCallback)(e=>{if(N===null||e===null)return;let t=e===`next`?Qi(rt,N):$i(rt,N);t!==null&&ce(t)},[N,rt,ce])),[Tt,Et]=(0,y.useState)(()=>localStorage.getItem(`console-story-show-archived`)===`true`),Dt=(0,y.useCallback)(()=>{Et(e=>{let t=!e;return localStorage.setItem(`console-story-show-archived`,String(t)),t})},[]),[Ot,kt]=(0,y.useState)(()=>localStorage.getItem(`console-story-show-done`)===`true`),At=(0,y.useCallback)(()=>{kt(e=>{let t=!e;return localStorage.setItem(`console-story-show-done`,String(t)),t})},[]),jt=i.stories,Mt=jt?.stories??[],Nt=mt!==null&&mt.generatedAt===jt?.generatedAt?mt.stories:Mt,Pt=jt?.defaultNameWithOwner??null,Ft=Pt===null?null:`https://github.com/${Pt}/issues/new`,It=(0,y.useMemo)(()=>gt===null||!gt.labels.includes(`story`)?null:Nt.find(e=>e.storyName===gt.story)??null,[gt,Nt]),Lt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);if(Pt===null)throw Error(`No repository configured for this project.`);await vn({pjcode:e,title:n,storyName:t,nameWithOwner:Pt})},[e,Pt]),Rt=(0,y.useCallback)(({storyName:t,agentOptionId:n,title:r,body:i,files:a})=>{if(e===null||Pt===null)return Promise.resolve();let o=e,s=Pt,c={title:r,storyName:t,agentOptionId:n,body:i,files:a},l=Oe!==null&&!op(Oe.params,c)?Oe.progress:ip();return R.enqueue({message:`Creating task — "${r}"`,color:`blue`,commit:()=>sp(o,s,c,l).catch(e=>{throw ke({params:c,reason:e instanceof Error?e.message:String(e),progress:l}),xe(!0),e}),advance:()=>{}}),De({title:``,body:null,storyName:null,agentOptionId:null}),Promise.resolve()},[e,Pt,R,Oe]),zt=(0,y.useCallback)(({title:t,body:n,storyName:r,agentOptionId:i,files:a})=>{if(S===null||e===null)return Promise.resolve();let o=S.match(/github\.com\/([^/]+\/[^/]+)/);if(o===null)return Promise.resolve();let s=o[1],c=e,l={title:t,storyName:r,agentOptionId:i,body:n,files:a},u=Ae!==null&&!op(Ae.params,l)?Ae.progress:ip();return R.enqueue({message:`Creating task — "${t}"`,color:`blue`,commit:()=>sp(c,s,l,u).catch(e=>{throw Ne({params:l,reason:e instanceof Error?e.message:String(e),progress:u}),Ce(!0),e}),advance:()=>{}}),Te({title:``,body:null,storyName:null,agentOptionId:null}),Promise.resolve()},[S,e,R,Ae]),Vt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await bn({pjcode:e,storyOptionId:t,direction:n});let r=Nt.findIndex(e=>e.storyOptionId===t);if(r!==-1){let e=r+(n===`up`?-1:1);if(e>=0&&e<Nt.length){let t=[...Nt],n=t[r];t[r]=t[e],t[e]=n,ht({generatedAt:jt?.generatedAt,stories:t})}}},[e,Nt,jt?.generatedAt]),Ht=(0,y.useCallback)(async t=>{if(e===null)throw Error(`No project specified in the URL path.`);let n=await fn({pjcode:e,storyName:t});if(n.length>0){let e=n.map(e=>{let t=Nt.find(t=>t.storyOptionId===e.id);return{storyOptionId:e.id,storyName:e.name,color:e.color,description:t?.description??``,openItemCount:t?.openItemCount??0,storyViewUrl:t?.storyViewUrl??null,items:t?.items??[]}});ht({generatedAt:jt?.generatedAt,stories:e})}},[e,Nt,jt?.generatedAt]),Ut=(0,y.useCallback)((e,t)=>{De({title:t,body:null,storyName:e,agentOptionId:null}),xe(!0)},[]),[Wt,B]=(0,y.useState)({}),[Gt,Kt]=(0,y.useState)(null),[qt,Jt]=(0,y.useState)({}),Yt=(0,y.useCallback)((t,n)=>{let r=Nt.find(e=>e.storyOptionId===t)?.color;if(Kt(t),B(e=>({...e,[t]:n})),Jt(e=>{let n={...e};return delete n[t],n}),e===null||Pt===null){B(e=>r===void 0?e:{...e,[t]:r}),Jt(e=>({...e,[t]:`No project or repository configured.`})),Kt(e=>e===t?null:e);return}_n({pjcode:e,storyOptionId:t,newColor:n,nameWithOwner:Pt}).catch(e=>{B(e=>r===void 0?e:{...e,[t]:r}),Jt(n=>({...n,[t]:e instanceof Error?e.message:String(e)}))}).finally(()=>{Kt(e=>e===t?null:e)})},[e,Pt,Nt]),Xt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await wn({pjcode:e,storyOptionId:t,deleteChildTasks:n}),ht({generatedAt:jt?.generatedAt,stories:Nt.filter(e=>e.storyOptionId!==t)})},[e,Nt,jt?.generatedAt]),Zt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await En({pjcode:e,storyOptionId:t,newName:n});let r=Nt.map(e=>e.storyOptionId===t?{...e,storyName:n}:e);ht({generatedAt:jt?.generatedAt,stories:r})},[e,Nt,jt?.generatedAt]),Qt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await On({pjcode:e,storyOptionId:t,description:n});let r=Nt.map(e=>e.storyOptionId===t?{...e,description:n}:e);ht({generatedAt:jt?.generatedAt,stories:r})},[e,Nt,jt?.generatedAt]),$t=zi(Ye,ge.comments,M===`prs`),en=(0,y.useCallback)((t,n)=>{Ct({kind:{type:`ok_and_awaiting_workspace`},item:t,commit:e=>_e.okAndMoveToAwaitingWorkspace(t,n,e),offline:e===null?void 0:Xf(e,t,n),skipAdvance:!0,overlayPatch:{done:!0,status:{name:n.name,color:n.color}}})},[Ct,_e,e]),tn=(0,y.useCallback)(()=>{re.save(),k.save()},[re,k]);return(0,x.jsxs)(`main`,{className:`console-app`,children:[(0,x.jsx)(ct,{pendingEntries:R.pending,errorEntries:R.error,displayLimit:4,onUndo:R.undo,onDismiss:R.dismiss,onDismissError:R.dismissError}),(0,x.jsx)(pt,{actions:qe,isOnline:Pe,isConfirming:Ue,onConfirm:Ge,onDiscard:R.discardOfflineAction}),k.isOpen&&(0,x.jsx)(ee,{pjcodes:v,inputValues:k.inputValues,onChangeInput:k.changeInput,isLoading:k.isLoading,isSaving:k.isSaving,error:k.error,nameWithOwnerByPjcode:C,showExecutiveSummaryAndActionButtonOnAwaitingOwnerList:re.draftShowExecutiveSummaryAndActionButton,onChangeShowExecutiveSummaryAndActionButtonOnAwaitingOwnerList:re.toggleDraft,onSave:tn,onClose:k.close}),(0,x.jsx)(oe,{activeTab:M,counts:j,pjcode:e,pjcodes:v,disabledPjcodes:w,generatedAt:dt,fromCache:ft,tabHref:ae.tabHref,onSelectTab:ue,onSelectProject:pe,settingsButton:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(P,{isOpen:u,isTimerActive:c,timerMode:d,projectMinutes:f,pjcodes:v,isLoadingPjcodes:D,onOpen:p,onToggleTimerMode:g,onChangeMinutes:_,onSave:h,onClose:m}),(0,x.jsx)(`button`,{type:`button`,className:`console-tab-settings-button`,"aria-label":`Open max settings`,onClick:k.open,children:`⚙`}),e!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{type:`button`,className:`console-task-create-button`,disabled:Pt===null||Nt.length===0,onClick:()=>xe(!0),"aria-label":`Create new task`,title:`Create new task`,children:(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,x.jsx)(`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,x.jsx)(`path`,{d:`M18.375 2.625a2.121 2.121 0 0 1 3 3L7 18l-4 1 1-4Z`})]})}),be&&(0,x.jsx)(me,{storyEntries:Nt,agentOptions:lt,workflowStoryEntries:E??void 0,workflowAgentOptions:te??void 0,initialDestination:`project`,onSubmitProject:Rt,onSubmitWorkflow:S===null?void 0:zt,onClose:()=>{xe(!1),ke(null)},initialDraft:Oe===null?Ee:{title:Oe.params.title,body:Oe.params.body,storyName:Oe.params.storyName,agentOptionId:Oe.params.agentOptionId,files:Oe.params.files},initialSubmitError:Oe?.reason??null,onDraftChange:De,fleetTaskCreateUrl:S,newIssueUrl:Ft})]})]}),airplaneModeEnabled:t.airplaneMode||n.status!==`off`,airplaneModeStatus:n.status,airplaneModeProgress:n.progress,airplaneModeCapturedAt:r?.capturedAt??null,airplaneModeFailures:n.failures,airplaneModeRetryTargetUrls:n.retryTargetUrls,onAirplaneModeStartSync:n.startSync,onAirplaneModeTurnOff:n.turnOff,onAirplaneModeRetryFailed:n.retryFailed,projectUrl:e===null?null:b?.[e]??null,onFleetTaskCreate:S===null?null:()=>Ce(!0),now:z}),Se&&(0,x.jsx)(me,{storyEntries:Nt,agentOptions:lt,workflowStoryEntries:E??void 0,workflowAgentOptions:te??void 0,initialDraft:Ae===null?we:{title:Ae.params.title,body:Ae.params.body,storyName:Ae.params.storyName,agentOptionId:Ae.params.agentOptionId,files:Ae.params.files},initialSubmitError:Ae?.reason??null,onDraftChange:Te,initialDestination:`workflow`,onSubmitProject:Rt,onSubmitWorkflow:zt,onClose:()=>{Ce(!1),Ne(null)},containerClassName:`console-fleet-task-create-dialog-container`}),(0,x.jsx)(T,{timerEndsAt:Je?.timerEndsAt??null,timerTotalSeconds:Je?.timerTotalSeconds??null,now:z}),M===`stories`&>===null?(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(Ke,{stories:Nt,isLoading:a,error:o,showArchived:Tt,showDone:Ot,onCreateIssue:Lt,onAddStory:Ht,onSelectColor:Yt,onToggleArchived:Dt,onToggleDone:At,onReorderStory:Vt,onDeleteStory:Xt,onRenameStory:Zt,onUpdateDescription:Qt,onStoryTaskCreateEdit:Ut,optimisticColors:Wt,colorChangeInFlight:Gt,colorErrors:qt,onOpenItem:e=>ae.openItem(e.projectItemId)})}):gt===null?M===`queued`?(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(Fe,{rows:at,storyColors:ot,statusOptions:st,agentOptions:lt,activeItemId:null,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId)})}):M===`prs`?(0,x.jsxs)(`div`,{className:`console-list-screen`,children:[(0,x.jsx)(Me,{agentOptions:lt,agentCounts:tt,selectedAgent:Xe,onAgentChange:et}),(0,x.jsx)(je,{rows:at,storyColors:ot,statusOptions:st,activeItemId:null,now:z,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId),executiveSummaries:re.showExecutiveSummaryAndActionButton?$t:void 0,onOkAndAwaitingWorkspace:re.showExecutiveSummaryAndActionButton?en:void 0})]}):(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(je,{rows:at,storyColors:ot,statusOptions:st,activeItemId:null,now:z,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId)})}):(0,x.jsx)(`div`,{className:`console-detail-screen`,ref:wt,children:(0,x.jsx)(tp,{tab:M,item:gt,caches:ge,operations:_e,pjcode:e,isAirplaneModeOn:n.status===`on`,onOfflineActionsCreate:R.offlineActionsCreate,statusOptions:st,storyOptions:ut,agentOptions:lt,storyEntries:Nt,storyColors:ot,storyName:bt,storyOptionId:xt,overlayStatus:yt,now:z,initialCommentDraft:F.current.get(gt.projectItemId)??``,onCommentDraftChange:I,onQueueAction:Ct,onCommentError:(e,t)=>R.showError(e,t),onDeleteStory:It===null?null:async e=>{await Xt(It.storyOptionId,e),N!==null&&St(N)},storyNameForDeletion:It?.storyName??null,onCreateIssueFromComment:S===null?void 0:{onSubmitProject:Rt,onSubmitWorkflow:zt}},gt.projectItemId)})]})};`serviceWorker`in navigator&&navigator.serviceWorker.register(`/sw.js`).catch(e=>{console.warn(`Service worker registration failed:`,e)});var lp=document.getElementById(`root`);if(lp===null)throw Error(`Root container #root not found`);(0,b.createRoot)(lp).render((0,x.jsx)(y.StrictMode,{children:(0,x.jsx)(cp,{})}));
|
|
99
|
+
`)});if(t.posted)for(let e of f)s.commentedFileNames.add(e);else p=t.error}catch(e){console.error(`createIssueWithAttachments: comment post threw`,e),p=`posting the summary comment failed unexpectedly`}if(d.length>0||p!==null)throw Error(op(c,d,p))},lp=()=>{let e=Ei(),t=Jr(),n=Bt(),r=n.status===`on`?n.snapshot:null,{snapshots:i,isLoading:a,error:o,refreshSingleTab:s}=Pr(e,r),{timerMode:c,projectMinutes:l,isOpen:u,draftTimerMode:d,draftProjectMinutes:f,openSettings:p,closeSettings:m,saveSettings:h,toggleDraftTimerMode:g,changeDraftMinutes:_}=qi(),{pjcodes:v,projectUrls:b,fleetTaskCreateUrl:S,nameWithOwnerByPjcode:C,disabledPjcodes:w,workflowStoryEntries:E,workflowAgentOptions:te,isLoading:D}=Oi(c&&r===null,a),{isTimerExpired:ne}=Mi(e),O=wi(e??ip),k=ji(v),re=gr(k.isOpen),ie=(0,y.useMemo)(()=>bi(O.overlay,i),[O.overlay,i]),j=(0,y.useMemo)(()=>{let e=rp();for(let t of A){let n=i[t.name];n!==null&&(t.name===`stories`?e[t.name]=n.stories.filter(e=>e.color!==`GRAY`).length:e[t.name]=hi(n.items,ie,t.name))}return e},[i,ie]),ae=ti(e,j,(0,y.useMemo)(()=>{let e=new Set;for(let t of A){let n=i[t.name];n!==null&&!n.fromCache&&e.add(t.name)}return e},[i]),(0,y.useMemo)(()=>{let e=rp();for(let t of A){let n=i[t.name];n!==null&&(e[t.name]=t.name===`stories`?n.stories.filter(e=>e.color!==`GRAY`).length:n.items.length)}return e},[i])),{activeTab:M,selectedItemKey:N,openItem:ce,closeItem:le}=ae,ue=Gi(ae.selectTab),{explicitlySelectedPjcode:de,notifyExplicitSelection:fe}=Kr(e),pe=ki((0,y.useCallback)(e=>{fe(e),lr(`/projects/${e}`)},[fe]));Fr(e,M,v,a,c&&r===null);let F=(0,y.useRef)(Yi()),I=(0,y.useCallback)(e=>{N!==null&&(e?F.current.set(N,e):F.current.delete(N),Xi(F.current))},[N]),ge=zr(r),_e=di(e,ge,(0,y.useCallback)(()=>s(`queued`),[s])),R=cr({isAirplaneModeOn:n.status===`on`}),[z,ye]=(0,y.useState)(()=>Date.now());(0,y.useEffect)(()=>{let e=setInterval(()=>{ye(Date.now())},1e3);return()=>{clearInterval(e)}},[]);let[be,xe]=(0,y.useState)(!1),[Se,Ce]=(0,y.useState)(!1),[we,Te]=(0,y.useState)({title:``,body:null,storyName:null,agentOptionId:null}),[Ee,De]=(0,y.useState)({title:``,body:null,storyName:null,agentOptionId:null}),[Oe,ke]=(0,y.useState)(null),[Ae,Ne]=(0,y.useState)(null),[Pe,Ie]=(0,y.useState)(()=>navigator.onLine);(0,y.useEffect)(()=>{let e=()=>Ie(!0),t=()=>Ie(!1);return window.addEventListener(`online`,e),window.addEventListener(`offline`,t),()=>{window.removeEventListener(`online`,e),window.removeEventListener(`offline`,t)}},[]);let[Le,Re]=(0,y.useState)(new Map),[ze,Be]=(0,y.useState)(new Map),[Ve,He]=(0,y.useState)(new Set);(0,y.useEffect)(()=>{if(Pe&&R.offlineActions.length!==0)for(let e of R.offlineActions)Le.has(e.id)||Ve.has(e.id)||(Re(t=>new Map(t).set(e.id,null)),ge.client.fetchIssueState(e.itemUrl).then(t=>{Re(n=>new Map(n).set(e.id,t)),e.isPr&&(Be(t=>new Map(t).set(e.id,null)),ge.client.fetchPullRequestStatus(e.itemUrl).then(t=>{Be(n=>new Map(n).set(e.id,t))}).catch(e=>{console.warn(`Failed to fetch PR status for offline action:`,e)}))}).catch(t=>{console.warn(`Failed to fetch current state for offline action:`,t),He(t=>new Set(t).add(e.id))}))},[Pe,R.offlineActions,ge.client,Le,Ve]);let[Ue,We]=(0,y.useState)(!1),Ge=(0,y.useCallback)(async e=>{We(!0);try{await R.confirmOfflineAction(e)}finally{We(!1)}},[R]),qe=(0,y.useMemo)(()=>R.offlineActions.map(e=>{let t=Le.get(e.id)??null,n=ze.get(e.id)??null,r=Ve.has(e.id);return{id:e.id,message:e.message,color:e.color,itemNumber:e.itemNumber,nameWithOwner:e.nameWithOwner,isPr:e.isPr,currentTitle:r?null:t?.title??null,currentState:r||t===null?null:t.merged?`closed`:t.state,currentPrStatus:n,fetchError:r}}),[R.offlineActions,Le,ze,Ve]),Je=i[M],Ye=(0,y.useMemo)(()=>Je===null?[]:gi(Je.items,ie,M),[Je,ie,M]),[Xe,et]=(0,y.useState)(null),tt=(0,y.useMemo)(()=>{if(M!==`prs`)return{};let e={};for(let t of Ye)t.agent!==null&&t.agent!==``&&(e[t.agent]=(e[t.agent]??0)+1);return e},[Ye,M]);(0,y.useEffect)(()=>{M===`prs`&&Xe!==null&&(tt[Xe]??0)===0&&et(null)},[tt,Xe,M]);let nt=(0,y.useMemo)(()=>M!==`prs`||Xe===null?Ye:Ye.filter(e=>e.agent===Xe),[Ye,M,Xe]),rt=(0,y.useMemo)(()=>nt.map(e=>pi(e)),[nt]),it=Je?.storyOrder??[],at=(0,y.useMemo)(()=>ve(nt,O.overlay,it,Je?.generatedAt??null),[nt,O.overlay,it,Je]),ot=Je?.storyColors??{},st=Je?.statusOptions??[],lt=Je?.agentOptions??[],ut=Je?.storyOptions??[],dt=Je?.generatedAt??null,ft=Je?.fromCache??!1,[mt,ht]=(0,y.useState)(null),gt=(0,y.useMemo)(()=>{if(N===null||Je===null)return null;let e=Je.items.find(e=>e.projectItemId===N);if(e!==void 0)return e;for(let e of Je.stories){let t=e.items.find(e=>e.projectItemId===N);if(t!==void 0)return t}return null},[N,Je]);Gr(ge,gt,Ye),(0,y.useEffect)(()=>{N!==null&&window.scrollTo({top:0})},[N]),(0,y.useEffect)(()=>{if(e===null&&c&&v.length>0){let e=se(v,null,l);e!==null&&ur(`/projects/${e}/todo-by-human`)}},[e,c,v,l]),dr(c,ne,j.prs,j[`todo-by-human`],e,v,l,i.prs!==null,i[`todo-by-human`]!==null,i.prs?.fromCache??!1,i[`todo-by-human`]?.fromCache??!1,de,R.enqueueSequence,N),Ki(c,e,nt,N,ae.openItem);let _t=j[M],vt=(0,y.useRef)({tab:M,count:_t});(0,y.useEffect)(()=>{let e=vt.current;if(vt.current={tab:M,count:_t},e.tab===M&&e.count>0&&_t===0){let e=Yr(M,j);e!==null&&(ue(e),le())}},[M,_t,j,ue,le]);let yt=gt===null?null:_i(O.overlay,gt,i[M]?.generatedAt??null),bt=gt===null?null:L(gt,O.overlay,i[M]?.generatedAt??null),xt=gt===null?null:he(gt,O.overlay,i[M]?.generatedAt??null),St=(0,y.useCallback)(e=>{let t=Zi(rt,e);t===null?le():ce(t)},[rt,ce,le]),Ct=(0,y.useCallback)(e=>{let t=pi(e.item),n=e.overlayPatch;R.enqueue({message:$e(e.kind,e.item,M),color:Ze(e.kind),commit:e.commit,offline:e.offline,revertAdvance:e.revertAdvance,optimistic:n===void 0?void 0:()=>O.patchOverlay(t,n,M),revertOptimistic:n===void 0?void 0:()=>O.revertOverlayEntry(t),advance:()=>{e.onAdvance?.(),!e.skipAdvance&&Qe(e.kind,M)&&St(t)}})},[R,M,St,O]),wt=Wi((0,y.useCallback)(e=>{if(N===null||e===null)return;let t=e===`next`?Qi(rt,N):$i(rt,N);t!==null&&ce(t)},[N,rt,ce])),[Tt,Et]=(0,y.useState)(()=>localStorage.getItem(`console-story-show-archived`)===`true`),Dt=(0,y.useCallback)(()=>{Et(e=>{let t=!e;return localStorage.setItem(`console-story-show-archived`,String(t)),t})},[]),[Ot,kt]=(0,y.useState)(()=>localStorage.getItem(`console-story-show-done`)===`true`),At=(0,y.useCallback)(()=>{kt(e=>{let t=!e;return localStorage.setItem(`console-story-show-done`,String(t)),t})},[]),jt=i.stories,Mt=jt?.stories??[],Nt=mt!==null&&mt.generatedAt===jt?.generatedAt?mt.stories:Mt,Pt=jt?.defaultNameWithOwner??null,Ft=Pt===null?null:`https://github.com/${Pt}/issues/new`,It=(0,y.useMemo)(()=>gt===null||!gt.labels.includes(`story`)?null:Nt.find(e=>e.storyName===gt.story)??null,[gt,Nt]),Lt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);if(Pt===null)throw Error(`No repository configured for this project.`);await vn({pjcode:e,title:n,storyName:t,nameWithOwner:Pt})},[e,Pt]),Rt=(0,y.useCallback)(({storyName:t,agentOptionId:n,title:r,body:i,files:a})=>{if(e===null||Pt===null)return Promise.resolve();let o=e,s=Pt,c={title:r,storyName:t,agentOptionId:n,body:i,files:a},l=Oe!==null&&!sp(Oe.params,c)?Oe.progress:ap();return R.enqueue({message:`Creating task — "${r}"`,color:`blue`,commit:()=>cp(o,s,c,l).catch(e=>{throw ke({params:c,reason:e instanceof Error?e.message:String(e),progress:l}),xe(!0),e}),advance:()=>{}}),De({title:``,body:null,storyName:null,agentOptionId:null}),Promise.resolve()},[e,Pt,R,Oe]),zt=(0,y.useCallback)(({title:t,body:n,storyName:r,agentOptionId:i,files:a})=>{if(S===null||e===null)return Promise.resolve();let o=S.match(/github\.com\/([^/]+\/[^/]+)/);if(o===null)return Promise.resolve();let s=o[1],c=e,l={title:t,storyName:r,agentOptionId:i,body:n,files:a},u=Ae!==null&&!sp(Ae.params,l)?Ae.progress:ap();return R.enqueue({message:`Creating task — "${t}"`,color:`blue`,commit:()=>cp(c,s,l,u).catch(e=>{throw Ne({params:l,reason:e instanceof Error?e.message:String(e),progress:u}),Ce(!0),e}),advance:()=>{}}),Te({title:``,body:null,storyName:null,agentOptionId:null}),Promise.resolve()},[S,e,R,Ae]),Vt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await bn({pjcode:e,storyOptionId:t,direction:n});let r=Nt.findIndex(e=>e.storyOptionId===t);if(r!==-1){let e=r+(n===`up`?-1:1);if(e>=0&&e<Nt.length){let t=[...Nt],n=t[r];t[r]=t[e],t[e]=n,ht({generatedAt:jt?.generatedAt,stories:t})}}},[e,Nt,jt?.generatedAt]),Ht=(0,y.useCallback)(async t=>{if(e===null)throw Error(`No project specified in the URL path.`);let n=await fn({pjcode:e,storyName:t});if(n.length>0){let e=n.map(e=>{let t=Nt.find(t=>t.storyOptionId===e.id);return{storyOptionId:e.id,storyName:e.name,color:e.color,description:t?.description??``,openItemCount:t?.openItemCount??0,storyViewUrl:t?.storyViewUrl??null,items:t?.items??[]}});ht({generatedAt:jt?.generatedAt,stories:e})}},[e,Nt,jt?.generatedAt]),Ut=(0,y.useCallback)((e,t)=>{De({title:t,body:null,storyName:e,agentOptionId:null}),xe(!0)},[]),[Wt,B]=(0,y.useState)({}),[Gt,Kt]=(0,y.useState)(null),[qt,Jt]=(0,y.useState)({}),Yt=(0,y.useCallback)((t,n)=>{let r=Nt.find(e=>e.storyOptionId===t)?.color;if(Kt(t),B(e=>({...e,[t]:n})),Jt(e=>{let n={...e};return delete n[t],n}),e===null||Pt===null){B(e=>r===void 0?e:{...e,[t]:r}),Jt(e=>({...e,[t]:`No project or repository configured.`})),Kt(e=>e===t?null:e);return}_n({pjcode:e,storyOptionId:t,newColor:n,nameWithOwner:Pt}).catch(e=>{B(e=>r===void 0?e:{...e,[t]:r}),Jt(n=>({...n,[t]:e instanceof Error?e.message:String(e)}))}).finally(()=>{Kt(e=>e===t?null:e)})},[e,Pt,Nt]),Xt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await wn({pjcode:e,storyOptionId:t,deleteChildTasks:n}),ht({generatedAt:jt?.generatedAt,stories:Nt.filter(e=>e.storyOptionId!==t)})},[e,Nt,jt?.generatedAt]),Zt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await En({pjcode:e,storyOptionId:t,newName:n});let r=Nt.map(e=>e.storyOptionId===t?{...e,storyName:n}:e);ht({generatedAt:jt?.generatedAt,stories:r})},[e,Nt,jt?.generatedAt]),Qt=(0,y.useCallback)(async(t,n)=>{if(e===null)throw Error(`No project specified in the URL path.`);await On({pjcode:e,storyOptionId:t,description:n});let r=Nt.map(e=>e.storyOptionId===t?{...e,description:n}:e);ht({generatedAt:jt?.generatedAt,stories:r})},[e,Nt,jt?.generatedAt]),$t=zi(Ye,ge.comments,M===`prs`),en=(0,y.useCallback)((t,n)=>{Ct({kind:{type:`ok_and_awaiting_workspace`},item:t,commit:e=>_e.okAndMoveToAwaitingWorkspace(t,n,e),offline:e===null?void 0:Zf(e,t,n),skipAdvance:!0,overlayPatch:{done:!0,status:{name:n.name,color:n.color}}})},[Ct,_e,e]),tn=(0,y.useCallback)(()=>{re.save(),k.save()},[re,k]);return(0,x.jsxs)(`main`,{className:`console-app`,children:[(0,x.jsx)(ct,{pendingEntries:R.pending,errorEntries:R.error,displayLimit:4,onUndo:R.undo,onDismiss:R.dismiss,onDismissError:R.dismissError}),(0,x.jsx)(pt,{actions:qe,isOnline:Pe,isConfirming:Ue,onConfirm:Ge,onDiscard:R.discardOfflineAction}),k.isOpen&&(0,x.jsx)(ee,{pjcodes:v,inputValues:k.inputValues,onChangeInput:k.changeInput,isLoading:k.isLoading,isSaving:k.isSaving,error:k.error,nameWithOwnerByPjcode:C,showExecutiveSummaryAndActionButtonOnAwaitingOwnerList:re.draftShowExecutiveSummaryAndActionButton,onChangeShowExecutiveSummaryAndActionButtonOnAwaitingOwnerList:re.toggleDraft,onSave:tn,onClose:k.close}),(0,x.jsx)(oe,{activeTab:M,counts:j,pjcode:e,pjcodes:v,disabledPjcodes:w,generatedAt:dt,fromCache:ft,tabHref:ae.tabHref,onSelectTab:ue,onSelectProject:pe,settingsButton:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(P,{isOpen:u,isTimerActive:c,timerMode:d,projectMinutes:f,pjcodes:v,isLoadingPjcodes:D,onOpen:p,onToggleTimerMode:g,onChangeMinutes:_,onSave:h,onClose:m}),(0,x.jsx)(`button`,{type:`button`,className:`console-tab-settings-button`,"aria-label":`Open max settings`,onClick:k.open,children:`⚙`}),e!==null&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{type:`button`,className:`console-task-create-button`,disabled:Pt===null||Nt.length===0,onClick:()=>xe(!0),"aria-label":`Create new task`,title:`Create new task`,children:(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,x.jsx)(`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,x.jsx)(`path`,{d:`M18.375 2.625a2.121 2.121 0 0 1 3 3L7 18l-4 1 1-4Z`})]})}),be&&(0,x.jsx)(me,{storyEntries:Nt,agentOptions:lt,workflowStoryEntries:E??void 0,workflowAgentOptions:te??void 0,initialDestination:`project`,onSubmitProject:Rt,onSubmitWorkflow:S===null?void 0:zt,onClose:()=>{xe(!1),ke(null)},initialDraft:Oe===null?Ee:{title:Oe.params.title,body:Oe.params.body,storyName:Oe.params.storyName,agentOptionId:Oe.params.agentOptionId,files:Oe.params.files},initialSubmitError:Oe?.reason??null,onDraftChange:De,fleetTaskCreateUrl:S,newIssueUrl:Ft})]})]}),airplaneModeEnabled:t.airplaneMode||n.status!==`off`,airplaneModeStatus:n.status,airplaneModeProgress:n.progress,airplaneModeCapturedAt:r?.capturedAt??null,airplaneModeFailures:n.failures,airplaneModeRetryTargetUrls:n.retryTargetUrls,onAirplaneModeStartSync:n.startSync,onAirplaneModeTurnOff:n.turnOff,onAirplaneModeRetryFailed:n.retryFailed,projectUrl:e===null?null:b?.[e]??null,onFleetTaskCreate:S===null?null:()=>Ce(!0),now:z}),Se&&(0,x.jsx)(me,{storyEntries:Nt,agentOptions:lt,workflowStoryEntries:E??void 0,workflowAgentOptions:te??void 0,initialDraft:Ae===null?we:{title:Ae.params.title,body:Ae.params.body,storyName:Ae.params.storyName,agentOptionId:Ae.params.agentOptionId,files:Ae.params.files},initialSubmitError:Ae?.reason??null,onDraftChange:Te,initialDestination:`workflow`,onSubmitProject:Rt,onSubmitWorkflow:zt,onClose:()=>{Ce(!1),Ne(null)},containerClassName:`console-fleet-task-create-dialog-container`}),(0,x.jsx)(T,{timerEndsAt:Je?.timerEndsAt??null,timerTotalSeconds:Je?.timerTotalSeconds??null,now:z}),M===`stories`&>===null?(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(Ke,{stories:Nt,isLoading:a,error:o,showArchived:Tt,showDone:Ot,onCreateIssue:Lt,onAddStory:Ht,onSelectColor:Yt,onToggleArchived:Dt,onToggleDone:At,onReorderStory:Vt,onDeleteStory:Xt,onRenameStory:Zt,onUpdateDescription:Qt,onStoryTaskCreateEdit:Ut,optimisticColors:Wt,colorChangeInFlight:Gt,colorErrors:qt,onOpenItem:e=>ae.openItem(e.projectItemId)})}):gt===null?M===`queued`?(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(Fe,{rows:at,storyColors:ot,statusOptions:st,agentOptions:lt,activeItemId:null,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId)})}):M===`prs`?(0,x.jsxs)(`div`,{className:`console-list-screen`,children:[(0,x.jsx)(Me,{agentOptions:lt,agentCounts:tt,selectedAgent:Xe,onAgentChange:et}),(0,x.jsx)(je,{rows:at,storyColors:ot,statusOptions:st,activeItemId:null,now:z,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId),executiveSummaries:re.showExecutiveSummaryAndActionButton?$t:void 0,onOkAndAwaitingWorkspace:re.showExecutiveSummaryAndActionButton?en:void 0})]}):(0,x.jsx)(`div`,{className:`console-list-screen`,children:(0,x.jsx)(je,{rows:at,storyColors:ot,statusOptions:st,activeItemId:null,now:z,isLoading:a,error:o,onSelectItem:e=>ae.openItem(e.projectItemId)})}):(0,x.jsx)(`div`,{className:`console-detail-screen`,ref:wt,children:(0,x.jsx)(np,{tab:M,item:gt,caches:ge,operations:_e,pjcode:e,isAirplaneModeOn:n.status===`on`,onOfflineActionsCreate:R.offlineActionsCreate,statusOptions:st,storyOptions:ut,agentOptions:lt,storyEntries:Nt,storyColors:ot,storyName:bt,storyOptionId:xt,overlayStatus:yt,now:z,initialCommentDraft:F.current.get(gt.projectItemId)??``,onCommentDraftChange:I,onQueueAction:Ct,onCommentError:(e,t)=>R.showError(e,t),onDeleteStory:It===null?null:async e=>{await Xt(It.storyOptionId,e),N!==null&&St(N)},storyNameForDeletion:It?.storyName??null,onCreateIssueFromComment:S===null?void 0:{onSubmitProject:Rt,onSubmitWorkflow:zt}},gt.projectItemId)})]})};`serviceWorker`in navigator&&navigator.serviceWorker.register(`/sw.js`).catch(e=>{console.warn(`Service worker registration failed:`,e)});var up=document.getElementById(`root`);if(up===null)throw Error(`Root container #root not found`);(0,b.createRoot)(up).render((0,x.jsx)(y.StrictMode,{children:(0,x.jsx)(lp,{})}));
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
7
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
8
8
|
<title>TDPM Console</title>
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-B_6CLRC3.js"></script>
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BZWLanIn.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
|
@@ -89,6 +89,13 @@ class GitHubIssueCommentRepository {
|
|
|
89
89
|
return;
|
|
90
90
|
await this.commentCacheRepository.setSingle(this.commentCacheKey(owner, repo, issueNumber), { pages });
|
|
91
91
|
}
|
|
92
|
+
async withCommentCacheLock(key, fn) {
|
|
93
|
+
if (this.commentCacheRepository) {
|
|
94
|
+
await this.commentCacheRepository.withLock(key, fn);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
await fn();
|
|
98
|
+
}
|
|
92
99
|
async fetchCommentsPage(url, headers) {
|
|
93
100
|
let attempt = 0;
|
|
94
101
|
for (;;) {
|
|
@@ -117,8 +124,7 @@ class GitHubIssueCommentRepository {
|
|
|
117
124
|
: {};
|
|
118
125
|
const PER_PAGE = 100;
|
|
119
126
|
const comments = [];
|
|
120
|
-
const
|
|
121
|
-
let cacheWasUpdated = false;
|
|
127
|
+
const newlyFetchedPages = {};
|
|
122
128
|
let page = 1;
|
|
123
129
|
let hasNextPage = true;
|
|
124
130
|
while (hasNextPage) {
|
|
@@ -179,7 +185,7 @@ class GitHubIssueCommentRepository {
|
|
|
179
185
|
hasNextPage = linkHeader.includes('rel="next"');
|
|
180
186
|
const etag = response.headers.get('ETag');
|
|
181
187
|
if (etag) {
|
|
182
|
-
|
|
188
|
+
newlyFetchedPages[pageKey] = {
|
|
183
189
|
etag,
|
|
184
190
|
comments: pageComments.map((c) => ({
|
|
185
191
|
author: c.author,
|
|
@@ -190,12 +196,18 @@ class GitHubIssueCommentRepository {
|
|
|
190
196
|
})),
|
|
191
197
|
hasNextPage,
|
|
192
198
|
};
|
|
193
|
-
cacheWasUpdated = true;
|
|
194
199
|
}
|
|
195
200
|
page++;
|
|
196
201
|
}
|
|
197
|
-
if (
|
|
198
|
-
await this.
|
|
202
|
+
if (Object.keys(newlyFetchedPages).length > 0) {
|
|
203
|
+
await this.withCommentCacheLock(this.commentCacheKey(owner, repo, issueNumber), async () => {
|
|
204
|
+
const freshCache = await this.readCommentPageCache(owner, repo, issueNumber);
|
|
205
|
+
const freshPages = freshCache ? freshCache.pages : {};
|
|
206
|
+
await this.writeCommentPageCache(owner, repo, issueNumber, {
|
|
207
|
+
...freshPages,
|
|
208
|
+
...newlyFetchedPages,
|
|
209
|
+
});
|
|
210
|
+
});
|
|
199
211
|
}
|
|
200
212
|
return comments;
|
|
201
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubIssueCommentRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/GitHubIssueCommentRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GitHubIssueCommentRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/GitHubIssueCommentRepository.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IssueCommentRepository } from '../../domain/usecases/adapter-interfaces/IssueCommentRepository';
|
|
2
2
|
import { Issue } from '../../domain/entities/Issue';
|
|
3
3
|
import { Comment } from '../../domain/entities/Comment';
|
|
4
|
+
import { LocalStorageCacheRepository } from './LocalStorageCacheRepository';
|
|
4
5
|
import { Sleep } from './issue/githubRateLimitRetry';
|
|
5
6
|
export declare const FETCH_COMMENTS_TRANSIENT_ERROR_MAX_RETRIES = 3;
|
|
6
7
|
export declare const FETCH_COMMENTS_TRANSIENT_ERROR_BASE_BACKOFF_MS = 1000;
|
|
@@ -14,9 +15,8 @@ export declare class GitHubCommentCreateHttpError extends Error {
|
|
|
14
15
|
readonly statusCode: number;
|
|
15
16
|
constructor(statusCode: number, message: string);
|
|
16
17
|
}
|
|
17
|
-
type CommentCacheRepository = {
|
|
18
|
-
|
|
19
|
-
setSingle<T>(key: string, value: T): Promise<void>;
|
|
18
|
+
type CommentCacheRepository = Pick<LocalStorageCacheRepository, 'getSingle' | 'setSingle'> & {
|
|
19
|
+
withLock(key: string, fn: () => Promise<unknown>): Promise<unknown>;
|
|
20
20
|
};
|
|
21
21
|
export declare class GitHubIssueCommentRepository implements IssueCommentRepository {
|
|
22
22
|
private readonly token;
|
|
@@ -27,6 +27,7 @@ export declare class GitHubIssueCommentRepository implements IssueCommentReposit
|
|
|
27
27
|
private commentCacheKey;
|
|
28
28
|
private readCommentPageCache;
|
|
29
29
|
private writeCommentPageCache;
|
|
30
|
+
private withCommentCacheLock;
|
|
30
31
|
private fetchCommentsPage;
|
|
31
32
|
getCommentsFromIssue(issue: Issue): Promise<Comment[]>;
|
|
32
33
|
createComment(issue: Issue, commentContent: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubIssueCommentRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GitHubIssueCommentRepository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"GitHubIssueCommentRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GitHubIssueCommentRepository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAM5E,OAAO,EAUL,KAAK,EACN,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAC5D,eAAO,MAAM,8CAA8C,OAAO,CAAC;AAEnE,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,iCAAiC;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,kCAAkC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AA4BD,KAAK,sBAAsB,GAAG,IAAI,CAChC,2BAA2B,EAC3B,WAAW,GAAG,WAAW,CAC1B,GAAG;IACF,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE,CAAC;AA0CF,qBAAa,4BAA6B,YAAW,sBAAsB;IAEvE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,KAAK,EAAE,MAAM,EACb,sBAAsB,GAAE,sBAAsB,GAAG,IAAW,EAC5D,KAAK,GAAE,KAAiB;IAG3C,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;YAQT,oBAAoB;YAYpB,qBAAqB;YAarB,oBAAoB;YAWpB,iBAAiB;IAsBzB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiJtD,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DlE,aAAa,CACjB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;CAoFjB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-input:#e5e5e5;--color-ring:#0a0a0a;--color-background:#fff;--color-foreground:#0a0a0a;--color-primary:#171717;--color-primary-foreground:#fafafa;--color-secondary:#f5f5f5;--color-secondary-foreground:#171717;--color-accent:#f5f5f5;--color-accent-foreground:#171717}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.grow{flex-grow:1}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-input{border-color:var(--color-input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--color-background)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-foreground{color:var(--color-foreground)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-primary\/90:hover{background-color:#171717e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:#f5f5f5cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}}html{font-size:clamp(15px,2.1vw,26px)}body{color:#e6edf3;background-color:#0d1117;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.console-app{flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}.console-list-screen{flex:1;min-height:0;overflow-y:auto}.console-tabbar{padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);background:#161b22;border-bottom:2px solid #30363d;flex-direction:column;display:flex}.console-tabbar-top{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;align-items:center;gap:12px;padding:4px 8px;display:flex;overflow-x:auto}.console-tabbar-bottom{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;align-items:stretch;gap:0;padding:0 8px;display:flex;overflow-x:auto}.console-tab{color:#8b949e;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-2px;padding:10px 14px;font-size:.8125rem;font-weight:500;line-height:1.2;text-decoration:none;display:inline-flex}.console-tab:hover{color:#e6edf3}.console-tab[data-active=true]{color:#e6edf3;background:#2f81f726;border-bottom-color:#2f81f7;font-weight:700}.console-tab-badge{text-align:center;color:#e6edf3;background:#484f58;border-radius:20px;min-width:20px;padding:1px 7px;font-size:.6875rem;font-weight:700;line-height:1.5}.console-tab-badge[data-zero=true]{color:#8b949e;background:#30363d}.console-tab-pjname{align-self:center;margin-left:4rem;padding:0 8px}.console-tab-pjname-button{color:#e6edf3;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:3px;padding:2px 4px;font-size:.8125rem;font-weight:600;line-height:1;display:flex}.console-tab-pjname-button:hover{color:#e6edf3;background:#21262d}.console-tab-pjname-arrow{font-size:.625rem}.console-tab-pjname-dropdown{z-index:100;background:#161b22;border:1px solid #30363d;border-radius:6px;min-width:120px;margin:0;padding:4px 0;list-style:none;box-shadow:0 8px 24px #01040980}.console-tab-pjname-option{color:#e6edf3;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:12px 16px;font-size:.7188rem;display:block}.console-tab-pjname-option:hover,.console-tab-pjname-option[data-active=true]{background:#21262d}.console-tab-pjname-button[data-disabled=true],.console-tab-pjname-option[data-disabled=true]{color:#8b949e}.console-tab-pjname-disabled-label{color:#8b949e;margin-left:4px;font-size:.625rem;font-weight:400}.console-tab-project-link{color:#8b949e;border-radius:4px;padding:8px 10px;font-size:.7188rem;text-decoration:none}.console-tab-project-link:hover{color:#e6edf3;background:#21262d}.console-tab-geninfo{color:#8b949e;align-self:center;padding:0 4px;font-size:.6875rem}.console-tab-settings{align-self:center;align-items:center;padding:0 4px;display:inline-flex}.console-project-timer-bar{box-sizing:border-box;background:#2d0000;align-items:center;gap:8px;width:100%;min-height:28px;padding:4px 12px;display:flex;position:relative}.console-project-timer-bar-track{background:#4d0000;border-radius:3px;flex:1;height:6px;overflow:hidden}.console-project-timer-bar-fill{background:#e53e3e;border-radius:3px;height:100%;transition:width .5s linear}.console-project-timer-bar-label{color:#e53e3e;white-space:nowrap;text-align:right;min-width:60px;font-size:.6875rem;font-weight:700}.console-timer-settings-button{color:#8b949e;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:8px 12px;font-size:1rem;line-height:1}.console-timer-settings-button:hover{color:#e6edf3;background:#21262d}.console-timer-settings-button--active{color:#e67e00}.console-timer-settings-overlay{z-index:100;position:fixed;inset:0}.console-timer-settings-backdrop{cursor:default;z-index:-1;background:#01040999;border:none;position:fixed;inset:0}.console-timer-settings-dialog-inner{background:#161b22;border:1px solid #30363d;border-radius:8px;min-width:280px;max-width:400px;max-height:80vh;padding:20px;overflow-y:auto}.console-timer-settings-title{color:#e6edf3;margin:0 0 16px;font-size:.9375rem;font-weight:600}.console-timer-settings-row{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.console-timer-settings-label{color:#c9d1d9;font-size:.875rem}.console-timer-settings-loading{color:#8b949e;padding:8px 0;font-size:.875rem}.console-timer-settings-project-table{border-collapse:collapse;width:100%;margin-bottom:12px}.console-timer-settings-th{color:#8b949e;text-align:left;border-bottom:1px solid #30363d;padding:0 4px 6px;font-size:.6875rem;font-weight:500}.console-timer-settings-th-minutes{text-align:right}.console-timer-settings-project-row td{vertical-align:middle;border-bottom:1px solid #21262d;padding:5px 4px}.console-timer-settings-pjcode{color:#c9d1d9;cursor:pointer;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8125rem;display:block}.console-timer-settings-minutes-cell{white-space:nowrap;text-align:right}.console-timer-settings-minutes-stepper{align-items:center;gap:2px;display:inline-flex}.console-timer-settings-minutes-step-btn{color:#c9d1d9;cursor:pointer;-webkit-user-select:none;user-select:none;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:2px 5px;font-size:.875rem;line-height:1}.console-timer-settings-minutes-step-btn:hover{color:#e6edf3;background:#30363d}.console-timer-settings-minutes-input{color:#e6edf3;text-align:right;background:#0d1117;border:1px solid #30363d;border-radius:4px;width:2.5rem;padding:3px 4px;font-size:.8125rem}.console-timer-settings-minutes-label{color:#8b949e;width:24px;font-size:.75rem;display:inline-block}.console-timer-settings-actions{justify-content:flex-end;margin-top:16px;display:flex}.console-timer-settings-save{color:#fff;cursor:pointer;background:#238636;border:1px solid #f0f6fc1a;border-radius:6px;padding:6px 14px;font-size:.8125rem;font-weight:500}.console-timer-settings-save:hover{background:#2ea043}.console-modal-dialog{z-index:100;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.console-modal-backdrop{cursor:default;z-index:-1;background:#01040999;border:none;width:100%;height:100%;position:fixed;inset:0}.console-modal-inner{background:#161b22;border:1px solid #30363d;border-radius:8px;width:100%;min-width:280px;max-width:400px;max-height:80vh;padding:20px;position:relative;overflow-y:auto}.console-modal-title{color:#e6edf3;margin:0 0 16px;font-size:.9375rem;font-weight:600}.console-modal-input{box-sizing:border-box;color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;outline:none;width:100%;padding:6px 12px;font-size:.875rem}.console-modal-input:focus{border-color:#4493f8;box-shadow:0 0 0 3px #4493f84d}.console-modal-actions{gap:8px;margin-top:16px;display:flex}.console-toggle-switch{cursor:pointer;background:#30363d;border:none;border-radius:12px;flex-shrink:0;align-items:center;width:44px;height:24px;padding:2px;transition:background .2s;display:inline-flex;position:relative}.console-toggle-switch--on{background:#238636}.console-toggle-switch-thumb{background:#e6edf3;border-radius:50%;width:20px;height:20px;transition:transform .2s;display:block}.console-toggle-switch--on .console-toggle-switch-thumb{transform:translate(20px)}.console-toggle-switch:focus-visible{outline-offset:2px;outline:2px solid #58a6ff}.console-tab-settings-button{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;align-self:center;margin-left:4px;padding:8px 12px;font-size:1rem;line-height:1}.console-tab-settings-button:hover{color:#e6edf3;border-color:#58a6ff}.console-settings-modal{z-index:1000;background:#0d1117;flex-direction:column;display:flex;position:fixed;inset:0}.console-settings-modal-bar{background:#161b22;border-bottom:1px solid #30363d;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-settings-modal-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-settings-modal-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-settings-modal-close:hover{color:#e6edf3}.console-settings-modal-body{flex-direction:column;flex:1;gap:16px;padding:24px 18px;display:flex}.console-settings-modal-loading{color:#8b949e;font-size:.875rem}.console-settings-modal-project-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.console-settings-modal-project-row{align-items:center;gap:10px;display:flex}.console-settings-modal-label{color:#e6edf3;flex-shrink:0;min-width:8rem;font-size:.875rem;font-weight:500}.console-settings-modal-input{color:#e6edf3;text-align:right;background:#0d1117;border:1px solid #30363d;border-radius:6px;width:4rem;padding:6px 10px;font-size:.875rem}.console-settings-modal-input:focus{border-color:#58a6ff;outline:none}.console-settings-modal-create-link{color:#58a6ff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;font-size:1rem;line-height:1;text-decoration:none;display:inline-flex}.console-settings-modal-create-link:hover{color:#79c0ff;background:#21262d}.console-settings-modal-error{color:#f85149;font-size:.875rem}.console-settings-modal-row{justify-content:space-between;align-items:center;display:flex}.console-settings-modal-row-label{color:#c9d1d9;font-size:.875rem}.console-settings-modal-actions{gap:8px;display:flex}.console-settings-modal-save{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-settings-modal-save:hover:not(:disabled){background:#2ea043}.console-settings-modal-save:disabled{opacity:.5;cursor:not-allowed}.console-list{margin:0;padding:12px 18px 18px;list-style:none}.console-list-group{list-style:none}.console-item-row .console-item-icon{flex:none}.console-queued-item-title{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;min-width:0;overflow:hidden}.console-queued-item-badges{flex-wrap:wrap;flex:1 1 0;align-items:center;gap:4px;min-width:0;display:flex}.console-queued-item-actions{flex:1 1 0;min-width:0}.console-group-header{background:#0b0f14;border-bottom:1px solid #21262d;justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.console-storytag{white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:2px 8px 2px 4px;font-size:.8125rem;font-weight:700;display:inline-flex}.console-story-name-toggle{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0;display:inline}.console-story-dot{border-radius:999px;width:10px;height:10px;display:inline-block}.console-copy-story-name-button{color:#c9d1d9;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-story-name-button:hover{color:#e6edf3;background-color:#21262d}.console-group-count{color:#8b949e;font-size:.75rem}.console-story-color-palette{flex-wrap:wrap;gap:4px;padding:6px 0;display:flex}.console-story-color-swatch{cursor:pointer;color:#e6edf3;border:2px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:.625rem;display:inline-flex}.console-story-color-swatch:hover{border-color:#e6edf3}.console-story-color-swatch:disabled{opacity:.4;cursor:not-allowed}.console-story-color-swatch-label{font-size:.5rem;line-height:1}.console-item-row{color:#e6edf3;text-align:left;cursor:pointer;background:#161b22;border:1px solid #30363d;border-radius:8px;align-items:flex-start;gap:14px;width:100%;margin-bottom:10px;padding:12px 16px;display:flex}.console-item-row:hover{background:#1a2029;border-color:#484f58}.console-item-row[data-active=true]{background:#1a2029;border-color:#4493f8}.console-item-meta{flex:1;min-width:0}.console-item-title{align-items:center;gap:6px;font-size:.9063rem;font-weight:600;display:flex}.console-item-sub{color:#8b949e;margin-top:3px;font-size:.7813rem;display:block}.console-item-pill{color:#8b949e;border:1px solid #30363d;border-radius:20px;margin-right:6px;padding:1px 8px;font-size:.6875rem;display:inline-block}.console-item-createdat{color:#8b949e;cursor:help}.console-item-fields,.console-item-status-agent{color:#adbac7;flex-wrap:wrap;gap:4px 10px;margin-top:4px;font-size:.7188rem;display:flex}.console-item-field{word-break:break-all;align-items:baseline;gap:4px;min-width:0;display:inline-flex}.console-item-field-label{color:#6e7681;text-transform:uppercase;letter-spacing:.03em;font-size:.625rem}.console-item-executive-summary{color:#8b949e;white-space:pre-line;word-break:break-word;background:#0d1117;border-left:2px solid #30363d;border-radius:0 4px 4px 0;margin-top:6px;padding:6px 8px;font-size:.75rem;display:block}.console-list-message{color:#8b949e;padding:16px;font-size:.875rem}.console-list-empty{text-align:center;color:#8b949e;padding:40px;font-size:.875rem}.console-list-error,.console-detail-fetch-error{color:#f85149}.console-detail-fetch-error-line{margin:0}.console-comment-notloaded,.console-files-notloaded,.console-commits-notloaded,.console-detail-body-notloaded{color:#8b949e}.console-detail{flex-direction:column;flex:1;min-height:0;display:flex}.console-detail-header{background:#0d1117;flex-direction:column;flex-shrink:0;gap:12px;padding:16px 16px 12px;display:flex}.console-detail-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:0 16px 12px;display:flex;overflow-y:auto}.console-detail-topline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-detail-depended-issue-url{flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.8125rem;display:flex}.console-detail-depended-issue-url-label{color:#6e7681;text-transform:uppercase;letter-spacing:.03em;font-size:.625rem}.console-detail-depended-issue-url-link{align-items:center;display:inline-flex}.console-detail-title{align-items:center;gap:8px;margin:0;font-size:1.25rem;display:flex}.console-detail-title-text{flex:1}.console-detail-title-edit{color:#c9d1d9;cursor:pointer;vertical-align:middle;background:#21262d;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-edit:hover{background:#30363d;border-color:#8b949e}.console-detail-title-text--editing{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.console-detail-title-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;min-width:0;padding:6px 10px;font-size:.875rem}.console-detail-title-input:focus{border-color:#58a6ff;outline:none}.console-detail-title-save{color:#fff;cursor:pointer;white-space:nowrap;background:#238636;border:1px solid #2ea043;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-save:hover{background:#2ea043}.console-detail-title-cancel{color:#c9d1d9;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem;font-weight:600;line-height:22px}.console-detail-title-cancel:hover{background:#30363d;border-color:#8b949e}.console-detail-title-error{color:#f85149;white-space:nowrap;font-size:.875rem}.console-detail-number{color:#8b949e;font-weight:400}.console-detail-closed-label{color:#a371f7;font-size:.8125rem}.console-detail-subbar{align-items:center;gap:12px;font-size:.8125rem;display:flex}.console-detail-link{color:#4493f8}.console-detail-repo{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-copy-url-button{color:#c9d1d9;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-url-button:hover{color:#e6edf3;background-color:#21262d}.console-label-chip,.console-detail-status-chip{border:1px solid #30363d;border-radius:999px;padding:2px 8px;font-size:.75rem;display:inline-block}.console-detail-agent-chip{color:#8b949e;border:1px solid #30363d;border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:400;display:inline-block}.console-detail-pr-status{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.console-related-pr-group{align-items:center;gap:6px;display:inline-flex}.console-related-pr-label{color:#8b949e;font-size:.75rem}.console-detail-ci-missing{opacity:.85;font-weight:400}.console-detail-mergeable-chip{font-weight:600}.console-detail-mergeable-chip-unknown{opacity:.7;font-weight:400}.console-detail-createdat{color:#8b949e;font-size:.75rem}.console-panel{border:1px solid #30363d;border-radius:8px;overflow:clip}.console-panel-header{background:#161b22;justify-content:space-between;align-items:center;display:flex}.console-panel-toggle{color:#e6edf3;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:6px 12px;font-size:.875rem;font-weight:600;display:flex}.console-panel-toggle:hover{background:#1a2029}.console-panel-action{padding:6px 12px}.console-panel-body{padding:12px}.console-markdown{word-break:break-word;font-size:.875rem;line-height:1.5}.console-markdown p{margin:.5em 0}.console-markdown ul{margin:.5em 0;padding-left:1.5em;list-style:outside}.console-markdown ol{margin:.5em 0;padding-left:1.5em;list-style:decimal}.console-markdown li{margin:.25em 0}.console-markdown table{border-collapse:collapse;margin:.5em 0}.console-markdown th,.console-markdown td{border:1px solid #30363d;padding:4px 8px}.console-markdown th{background:#161b22}.console-markdown h1,.console-markdown h2,.console-markdown h3,.console-markdown h4,.console-markdown h5,.console-markdown h6{margin:1em 0 .5em;font-weight:700;line-height:1.25}.console-markdown h1{font-size:1.6em}.console-markdown h2{font-size:1.4em}.console-markdown h3{font-size:1.2em}.console-markdown h4{font-size:1.05em}.console-markdown h5{font-size:.95em}.console-markdown h6{color:#8b949e;font-size:.9em}.console-markdown pre{background:#161b22;border:1px solid #30363d;border-radius:6px;margin:.5em 0;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem;line-height:1.45;overflow-x:auto}.console-markdown code{background:#6e768166;border-radius:4px;padding:.15em .4em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.console-markdown pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.console-markdown-code-block{flex-direction:column;margin:.5em 0;display:flex}.console-markdown-code-block pre{margin:0}.console-markdown-code-copy-host{justify-content:flex-end;margin-bottom:4px;display:flex}.console-copy-code-button{color:#c9d1d9;background-color:#161b22;border:1px solid #30363d;border-radius:6px;height:24px;padding:0 8px;font-size:.75rem}.console-copy-code-button:hover{color:#e6edf3;background-color:#21262d}.console-markdown-inline-code-host{display:inline-block;position:relative}.console-inline-code-copy-trigger{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0;display:inline}.console-inline-code-copy-tooltip{color:#c9d1d9;white-space:nowrap;pointer-events:none;z-index:10;background:#161b22;border-radius:4px;margin-bottom:4px;padding:2px 6px;font-size:.75rem;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.console-markdown blockquote{color:#8b949e;border-left:3px solid #30363d;margin:.5em 0;padding:0 1em}.console-markdown a{color:#4493f8;text-decoration:none}.console-markdown a:hover{text-decoration:underline}.console-markdown-reference-host{display:inline}.console-markdown-reference{vertical-align:baseline;align-items:center;gap:.25em;display:inline-flex}.console-markdown-reference .console-item-icon{flex-shrink:0}.console-markdown-reference-title{text-decoration:none}.console-markdown-reference:hover .console-markdown-reference-title{text-decoration:underline}.console-markdown-reference-number{color:#8b949e;flex-shrink:0;font-size:.75em}.console-markdown hr{border:none;border-top:1px solid #30363d;margin:1em 0}.console-mermaid-error{color:#f85149;font-size:.8125rem}.console-mermaid-enlarge{color:#e6edf3;background:#21262d;border:1px solid #30363d;border-radius:6px;width:100%;margin-top:6px;padding:10px 12px;font-size:.8125rem;display:block}.console-mermaid-modal{z-index:1000;background:#0d1117;flex-direction:column;display:flex;position:fixed;inset:0}.console-mermaid-modal-bar{border-bottom:1px solid #30363d;align-items:center;gap:8px;padding:8px 12px;display:flex}.console-mermaid-modal-button,.console-mermaid-modal-close{color:#e6edf3;background:#21262d;border:1px solid #30363d;border-radius:6px;min-width:44px;min-height:44px;font-size:1.125rem}.console-mermaid-modal-button:disabled{opacity:.4}.console-mermaid-modal-close{margin-left:auto}.console-mermaid-modal-scale{text-align:center;color:#8b949e;min-width:4.5rem;font-size:.875rem}.console-mermaid-modal-viewport{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.console-mermaid-modal-canvas{min-width:100%}.console-comment{white-space:nowrap;background:#161b22;border:1px solid #30363d;border-radius:8px;align-items:baseline;gap:8px;margin-bottom:4px;padding:6px 16px;display:flex;overflow:hidden}.console-comment-toggle{min-width:0;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:baseline;gap:8px;padding:0;display:inline-flex}.console-comment-show-all{color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;margin-bottom:10px;padding:6px 12px;font-size:.75rem;font-weight:600}.console-comment-show-all:hover{background-color:#262c34;border-color:#484f58}.console-comment--expandable{cursor:pointer}.console-comment--expandable:hover{border-color:#484f58}.console-comment-author{color:#e6edf3;flex-shrink:0;font-size:.75rem;font-weight:600}.console-comment-time{color:#8b949e;flex-shrink:0;font-size:.75rem}.console-comment-body-preview{text-overflow:ellipsis;white-space:nowrap;color:#8b949e;flex:1;min-width:0;font-size:.75rem;overflow:hidden}.console-comment.is-expanded{white-space:normal;flex-wrap:wrap;overflow:visible}.console-comment-body-expanded{cursor:default;flex-basis:100%;min-width:0}.console-files,.console-commits{margin:0;padding:0;list-style:none}.console-commit{align-items:center;gap:8px;padding:4px 0;font-size:.8125rem;display:flex}.console-file{flex-direction:column;font-size:.8125rem;display:flex}.console-file-tree,.console-file-tree-children{margin:0;padding:0;list-style:none}.console-file-tree-dir{flex-direction:column;display:flex}.console-file-tree-dir-name{color:#8b949e;align-items:center;gap:6px;padding:4px 0;font-weight:600;display:flex}.console-file-tree-dir-icon{flex:none}.console-file-badge{text-align:center;border:1px solid;border-radius:4px;width:18px;font-size:.6875rem}.console-file-path,.console-commit-message{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-file-add,.console-pr-add{color:#3fb950}.console-file-del,.console-pr-del{color:#f85149}.console-commit-sha{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-detail-dock{background:#161b22;border-top:2px solid #30363d;flex-shrink:0;max-height:45dvh;overflow-y:auto}.console-detail-dock-composer{max-height:50vh;padding:8px 16px 0;overflow-y:auto}.console-actionbar{padding:10px 16px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:#161b22}.console-operation-bar{flex-direction:column;gap:8px;width:100%;display:flex}.console-op-group{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.console-op-group-review{gap:10px}.console-op-group-rare-actions{justify-content:flex-start}.console-op-group-left-pair{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-op-group-bottom-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.console-op-group-stories{max-height:33vh;overflow-y:auto}.console-story-select,.console-agent-select{color:#e6edf3;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;max-width:100%;padding:9px 12px;font-size:.8125rem;font-weight:600}.console-story-select:hover,.console-agent-select:hover{border-color:#484f58}.console-op-button{color:#e6edf3;white-space:nowrap;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:9px 16px;font-size:.8125rem;font-weight:600}.console-op-button:hover{border-color:#484f58}.console-op-button:disabled{opacity:.4;cursor:not-allowed}.console-op-comment-close-error{color:#f85149;font-size:.875rem}.console-op-requirement{text-align:right;color:#8b949e;width:100%;margin:0;font-size:.75rem}.console-op-button-approve{color:#fff;background:#238636;border-color:#2ea043}.console-op-button-reject{color:#ffd166;background:#7d5000;border-color:#a06800}.console-op-button-wrong{color:#f85149;background:#3a1518;border-color:#f85149}.console-op-button-unneeded{color:#aab0b8;background:#2a2d31;border-color:#6e7681}.console-op-button-snooze{color:#79c0ff;background:#1c2b4a;border-color:#4493f8}.console-op-button-danger{color:#f85149;background:#3a1518;border-color:#f85149}.console-pr-section{border:1px solid #30363d;border-radius:8px;flex-direction:column;gap:10px;padding:12px;display:flex}.console-pr-statbar{color:#8b949e;gap:12px;font-size:.75rem;display:flex}.console-pr-repo{color:#8b949e;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.console-detail-screen{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.console-panel-open-link{color:#4493f8;font-size:.8125rem;font-weight:400}.console-composer{margin-top:4px}.console-composer-toggle{color:#8b949e;cursor:pointer;background:0 0;border:none;margin-left:auto;padding:2px 0;font-size:.7813rem;display:block}.console-composer-toggle:hover{color:#e6edf3}.console-composer-form{margin-top:8px}.console-composer-input{box-sizing:border-box;color:#e6edf3;width:100%;font:inherit;resize:vertical;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:8px;font-size:.875rem}.console-composer-attach{align-items:center;gap:8px;padding:0 10px;display:flex}.console-composer-file-input{display:none}.console-composer-attach-button{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:4px 8px;font-size:.75rem}.console-composer-attach-button:disabled{opacity:.6;cursor:default}.console-composer-row{justify-content:flex-end;align-items:center;gap:8px;margin-top:6px;display:flex}.console-composer-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:7px 16px;font-size:.8125rem;font-weight:600}.console-composer-submit:disabled{opacity:.6;cursor:default}.console-composer-status{color:#8b949e;font-size:.75rem}.console-composer-error{color:#f85149}.console-undo-toast,.console-error-toast{z-index:9998;border-radius:10px;gap:12px;max-width:45vw;padding:12px 18px;font-size:.8438rem;display:flex;position:fixed;bottom:12px;left:12px;box-shadow:0 4px 20px #0009}.console-undo-toast{white-space:nowrap;align-items:center}.console-error-toast{white-space:normal;flex-direction:column;max-height:40vh;overflow-y:auto}.console-undo-toast-green{color:#3fb950;background:#0d3320;border:1px solid #2ea043}.console-undo-toast-amber{color:#ffd166;background:#3a2800;border:1px solid #a06800}.console-undo-toast-red{color:#f85149;background:#3a1518;border:1px solid #da3633}.console-undo-toast-gray{color:#aab0b8;background:#2a2d31;border:1px solid #6e7681}.console-undo-toast-blue{color:#79c0ff;background:#0d1f40;border:1px solid #4493f8}.console-undo-toast-error{color:#f85149;background:#3a1518;border:1px solid #f85149}.console-undo-toast-message{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.console-error-toast-message{flex:1;min-width:0}.console-undo-toast-undo,.console-undo-toast-dismiss,.console-error-toast-dismiss,.console-error-toast-retry{cursor:pointer;color:inherit;background:#ffffff1f;border:none;border-radius:6px;flex:none;padding:4px 12px;font-size:.8125rem;font-weight:700}.console-undo-toast-undo:hover,.console-undo-toast-dismiss:hover,.console-error-toast-dismiss:hover,.console-error-toast-retry:hover{background:#ffffff38}.console-error-toast-actions{flex-wrap:wrap;gap:8px;display:flex}.console-undo-toast-countdown{opacity:.7;flex:none;font-size:.6875rem}.console-undo-toast-bar{opacity:.5;background:currentColor;border-radius:0 0 10px 10px;height:3px;transition:width .1s linear;position:absolute;bottom:0;left:0}.console-error-toast-title{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-weight:700;overflow:hidden}.console-action-toast-stack,.console-action-toast-stack-entry{display:contents}.console-action-toast-stack-toggle{z-index:9998;cursor:pointer;color:#c9d1d9;background:#ffffff1f;border:none;border-radius:6px;padding:4px 12px;font-size:.8125rem;font-weight:700;position:fixed;bottom:12px;left:12px}.console-action-toast-stack-toggle:hover{background:#ffffff38}.console-file-row{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:4px 0;font-size:.8125rem;display:flex}.console-file-row:hover{background:#1a2029}.console-file-caret{color:#8b949e;flex:none;width:1em}.console-file-diff{border-collapse:collapse;width:100%;margin:4px 0 8px;font:.8125rem/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}.console-file-diff td{white-space:pre-wrap;word-break:break-word;vertical-align:top;padding:0 10px}.console-diff-ln{text-align:right;color:#6e7681;-webkit-user-select:none;user-select:none;white-space:nowrap;border-right:1px solid #30363d;width:1%;padding:0 8px}.console-file-diff td.console-diff-ln{white-space:nowrap;word-break:normal;overflow-wrap:normal}.console-diff-add td{background:#2ea04326}.console-diff-add .console-diff-code{color:#aff5b4}.console-diff-del td{background:#f8514926}.console-diff-del .console-diff-code{color:#ffdcd7}.console-diff-hunk td{color:#79c0ff;background:#161b22}.console-diff-ctx .console-diff-code{color:#c9d1d9}.console-file-diff-empty{color:#8b949e;padding:8px 14px;font-size:.75rem}.console-file-diff-image{padding:8px 14px}.console-file-diff-image-content{object-fit:contain;object-position:left top;border:1px solid #30363d;border-radius:4px;max-width:100%;max-height:420px}.console-diff-comment-cell{text-align:center;-webkit-user-select:none;user-select:none;width:1%;padding:0 2px}.console-diff-comment-button{color:#6e7681;cursor:pointer;opacity:.6;background:0 0;border:1px solid #30363d;border-radius:4px;width:18px;height:18px;padding:0;font-size:.875rem;line-height:16px}.console-diff-row:hover .console-diff-comment-button,.console-diff-comment-button:focus-visible,.console-diff-comment-button[aria-expanded=true]{opacity:1;color:#fff;background:#1f6feb;border-color:#2f81f7}.console-diff-composer-row td{background:#0d1117;padding:6px 10px}.console-timer-settings-project-row:last-child td{border-bottom:none}.console-diff-composer{background:#161b22;border:1px solid #30363d;border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.console-diff-composer-anchor{color:#8b949e;font-size:.6875rem}.console-diff-composer-input{resize:vertical;color:#c9d1d9;width:100%;font:inherit;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 8px}.console-diff-composer-controls{align-items:center;gap:8px;display:flex}.console-diff-composer-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #238636;border-radius:6px;padding:4px 12px}.console-diff-composer-submit:disabled{opacity:.6;cursor:default}.console-diff-composer-cancel{color:#c9d1d9;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:4px 12px}.console-diff-composer-status{color:#8b949e;font-size:.75rem}.console-diff-composer-error{color:#ff7b72}.console-diff-composer-posted{color:#3fb950;margin:0;font-size:.75rem}.console-pr-header{flex-wrap:wrap;align-items:center;gap:10px;padding-top:4px;display:flex}.console-pr-section-title{color:#e6edf3;font-size:.9375rem;font-weight:600}.console-pr-section-state{color:#8b949e;border:1px solid #6e7681;border-radius:999px;padding:1px 8px;font-size:.6875rem}.console-offline-panel{background:#161b22;border-bottom:2px solid #30363d}.console-offline-panel-header{color:#c9d1d9;border-bottom:1px solid #21262d;padding:8px 16px;font-size:.8125rem;font-weight:600}.console-offline-panel-item{border-bottom:1px solid #21262d;border-left:3px solid #30363d;flex-direction:column;gap:4px;padding:10px 16px;display:flex}.console-offline-panel-item:last-child{border-bottom:none}.console-offline-panel-item-green{background:#0d332066;border-left-color:#2ea043}.console-offline-panel-item-amber{background:#3a280066;border-left-color:#a06800}.console-offline-panel-item-red{background:#3a151866;border-left-color:#da3633}.console-offline-panel-item-gray{background:#2a2d3166;border-left-color:#6e7681}.console-offline-panel-item-blue{background:#0d1f4066;border-left-color:#4493f8}.console-offline-panel-item-error{background:#3a151866;border-left-color:#f85149}.console-offline-panel-item-message{color:#e6edf3;font-size:.8125rem;font-weight:600}.console-offline-panel-item-target{color:#8b949e;font-size:.75rem}.console-offline-panel-item-fetch-error{color:#f85149;font-size:.75rem}.console-offline-panel-item-pr-status{color:#8b949e;font-size:.75rem}.console-offline-panel-item-controls{gap:8px;margin-top:4px;display:flex}.console-offline-panel-confirm{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:4px 12px;font-size:.75rem;font-weight:600}.console-offline-panel-confirm:hover:not(:disabled){background:#2ea043}.console-offline-panel-confirm:disabled{opacity:.4;cursor:not-allowed}.console-offline-panel-discard{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:4px 12px;font-size:.75rem;font-weight:600}.console-offline-panel-discard:hover{color:#f85149;border-color:#f85149}.console-task-create-button{color:#8b949e;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #30363d;border-radius:6px;align-self:center;margin-left:4px;padding:8px 12px;font-size:.8125rem;line-height:1}.console-task-create-button:hover{color:#e6edf3;border-color:#58a6ff}.console-task-create-button:disabled{opacity:.4;cursor:not-allowed}.console-task-create-form{flex-wrap:wrap;align-items:center;gap:4px;margin-left:4px;display:flex}.console-task-create-form-select{color:#e6edf3;cursor:pointer;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:3px 6px;font-size:.8125rem}.console-task-create-form-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-width:160px;padding:3px 8px;font-size:.8125rem}.console-task-create-form-input:focus{border-color:#58a6ff;outline:none}.console-task-create-form-submit,.console-task-create-form-cancel{color:#e6edf3;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:3px 10px;font-size:.8125rem}.console-task-create-form-submit:hover,.console-task-create-form-cancel:hover{border-color:#484f58}.console-task-create-form-submit:disabled,.console-task-create-form-cancel:disabled{opacity:.4;cursor:not-allowed}.console-task-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-task-create-dialog-overlay{cursor:default;background:#01040999;border:none;padding:0;position:absolute;inset:0}.console-task-create-dialog{z-index:1;background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:calc(100vh - 100px);display:flex;position:relative;overflow:hidden}.console-task-create-dialog-bar{background:#161b22;border-bottom:1px solid #30363d;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-task-create-dialog-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-task-create-dialog-bar-actions{align-items:center;gap:4px;display:flex}.console-task-create-dialog-open-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:1.125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-open-link:hover{color:#e6edf3}.console-task-create-dialog-destination-selector{align-items:center;gap:4px;display:flex}.console-task-create-dialog-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-task-create-dialog-close:hover{color:#e6edf3}.console-task-create-dialog-body{flex-direction:column;flex:1;gap:10px;min-height:0;padding:20px 18px;display:flex;overflow-y:auto}.console-task-create-dialog-footer{background:#161b22;border-top:1px solid #30363d;flex-shrink:0;padding:12px 18px}.console-task-create-dialog-section-label{color:#e6edf3;font-size:.875rem;font-weight:500}.console-task-create-dialog-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:72px;padding:8px 10px;font-size:.875rem}.console-task-create-dialog-textarea:focus{border-color:#58a6ff;outline:none}.console-task-create-dialog-option-list{flex-wrap:wrap;flex-shrink:0;gap:6px;max-height:160px;display:flex;overflow-y:auto}.console-task-create-dialog-option-button{color:#c9d1d9;cursor:pointer;white-space:nowrap;background:#21262d;border:1px solid #30363d;border-radius:20px;padding:4px 10px;font-size:.8125rem}.console-task-create-dialog-option-button:hover{color:#e6edf3;border-color:#58a6ff}.console-task-create-dialog-option-button--selected{color:#fff;background:#1f6feb;border-color:#1f6feb}.console-task-create-dialog-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 10px;font-size:.875rem}.console-task-create-dialog-input:focus{border-color:#58a6ff;outline:none}.console-task-create-dialog-file-input{color:#8b949e;font-size:.8125rem}.console-task-create-dialog-file-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.console-task-create-dialog-file-item{background:#161b22;border:1px solid #30363d;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;display:flex}.console-task-create-dialog-file-thumbnail{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:32px}.console-task-create-dialog-file-name{color:#c9d1d9;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8125rem;overflow:hidden}.console-task-create-dialog-file-remove{color:#8b949e;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:.875rem;line-height:1}.console-task-create-dialog-file-remove:hover{color:#f85149}.console-task-create-dialog-file-remove:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.console-task-create-dialog-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-task-create-dialog-submit:hover:not(:disabled){background:#2ea043}.console-task-create-dialog-submit:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-cancel{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 16px;font-size:.875rem}.console-task-create-dialog-cancel:hover:not(:disabled){border-color:#484f58}.console-task-create-dialog-cancel:disabled{opacity:.5;cursor:not-allowed}.console-task-create-dialog-fleet-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:.8125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-fleet-link:hover{color:#e6edf3}.console-task-create-dialog-new-issue-link{color:#8b949e;align-items:center;padding:4px 8px;font-size:.8125rem;line-height:1;text-decoration:none;display:inline-flex}.console-task-create-dialog-new-issue-link:hover{color:#e6edf3}.console-fleet-task-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-panel-caret{color:#8b949e;font-size:.75rem}.console-panel-title{color:#e6edf3;font-size:.875rem;font-weight:600}.console-airplane-mode{border-radius:6px;align-items:center;gap:8px;padding:4px 8px;font-size:.8125rem;display:flex}.console-airplane-mode--on,.console-airplane-mode--syncing{background:#161b22;border:1px solid #30363d}.console-airplane-mode--error{background:#161b22;border:1px solid #f85149}.console-airplane-mode--off{background:0 0}.console-airplane-mode-label{color:#8b949e}.console-airplane-mode-retry,.console-airplane-mode-toggle{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-airplane-mode-progress{color:#8b949e}.console-airplane-mode-error-label{color:#f85149}.console-tab-label{font-size:.8125rem}.console-tab-fleet-task-create-link{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.8125rem;text-decoration:none}.console-item-opened{background:#161b22}.console-item-status-badge{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-list-row{border-bottom:1px solid #21262d}.console-queued-item-row{border-bottom:1px solid #21262d;align-items:center;gap:8px;padding:4px 8px;display:flex}.console-queued-item-badge{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-prs-agent-filter{align-items:center;gap:8px;padding:4px 8px;display:flex}.console-story-list-container{flex-direction:column;gap:0;display:flex}.console-story-list{flex-direction:column;display:flex}.console-story-list-row{border-bottom:1px solid #21262d}.console-story-list-row-main{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.console-story-count{color:#8b949e;font-size:.75rem}.console-story-description{color:#8b949e;padding:0 8px 4px;font-size:.8125rem}.console-add-story-section{padding:8px}.console-inline-input-form{flex-direction:column;gap:4px;padding:4px 0;display:flex}.console-inline-input-form-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:60px;padding:6px 10px;font-size:.875rem}.console-inline-input-form-input{color:#e6edf3;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:6px 10px;font-size:.875rem}.console-story-delete-confirm{padding:8px}.console-story-delete-confirm-message{color:#e6edf3;margin-bottom:8px;font-size:.875rem}.console-story-delete-confirm-actions{gap:8px;display:flex}.console-story-reorder-panel{flex-direction:column;gap:4px;padding:8px;display:flex}.console-story-reorder-row{border:1px solid #30363d;border-radius:4px;align-items:center;gap:8px;padding:4px;display:flex}.console-story-reorder-name{color:#e6edf3;flex:1;font-size:.875rem}.console-story-reorder-progress{color:#8b949e;font-size:.75rem}.console-story-reorder-error{color:#f85149;font-size:.875rem}.console-markdown-view{color:#e6edf3;font-size:.875rem;line-height:1.5}.console-markdown-empty{color:#8b949e;font-size:.875rem;font-style:italic}.console-markdown-reference-plain{color:#4493f8;font-size:.875rem}.console-mermaid{padding:8px 0}.console-mermaid-loading{color:#8b949e;font-size:.875rem}.console-mermaid-source{color:#8b949e;background:#161b22;border-radius:4px;padding:8px;font-family:monospace;font-size:.8125rem}.console-mermaid-rendered{overflow-x:auto}.console-file-stat{color:#e6edf3;align-items:center;gap:4px;font-size:.8125rem;display:flex}.console-files-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-files-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-comment-list{flex-direction:column;gap:8px;display:flex}.console-comment-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-comment-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-comment-create-workflow-issue{padding:4px 0}.console-workflow-issue-create-dialog-container{z-index:1000;justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:0}.console-workflow-issue-create-dialog-overlay{cursor:default;background:#01040999;border:none;padding:0;position:absolute;inset:0}.console-workflow-issue-create-dialog{z-index:1;background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:calc(100vh - 100px);display:flex;position:relative;overflow:hidden}.console-workflow-issue-create-dialog-bar{background:#161b22;border-bottom:1px solid #30363d;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.console-workflow-issue-create-dialog-title{color:#e6edf3;font-size:1rem;font-weight:600}.console-workflow-issue-create-dialog-close{color:#8b949e;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.125rem;line-height:1}.console-workflow-issue-create-dialog-close:hover{color:#e6edf3}.console-workflow-issue-create-dialog-body{flex-direction:column;flex:1;gap:10px;min-height:0;padding:20px 18px;display:flex;overflow-y:auto}.console-workflow-issue-create-dialog-section-label{color:#e6edf3;font-size:.875rem;font-weight:500}.console-workflow-issue-create-dialog-textarea{color:#e6edf3;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;min-height:72px;padding:8px 10px;font-size:.875rem}.console-workflow-issue-create-dialog-textarea:focus{border-color:#58a6ff;outline:none}.console-workflow-issue-create-dialog-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.console-workflow-issue-create-dialog-submit{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500}.console-workflow-issue-create-dialog-submit:hover:not(:disabled){background:#2ea043}.console-workflow-issue-create-dialog-submit:disabled{opacity:.5;cursor:not-allowed}.console-workflow-issue-create-dialog-cancel{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 16px;font-size:.875rem}.console-workflow-issue-create-dialog-cancel:hover:not(:disabled){border-color:#484f58}.console-workflow-issue-create-dialog-cancel:disabled{opacity:.5;cursor:not-allowed}.console-commits-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-commits-empty{color:#8b949e;padding:8px;font-size:.875rem;font-style:italic}.console-commit-author,.console-commit-time{color:#8b949e;font-size:.75rem}.console-detail-body-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-pr-branch{color:#8b949e;background:#161b22;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.8125rem}.console-pr-files-count{color:#8b949e;font-size:.75rem}.console-pr-body-loading{color:#8b949e;padding:8px;font-size:.875rem}.console-detail-ci-chip{color:#8b949e;border:1px solid #30363d;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-outofdate-chip{color:#d29922;border:1px solid #d29922;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-mergeable-chip-ok{color:#3fb950;border:1px solid #3fb950;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-detail-mergeable-chip-conflict{color:#f85149;border:1px solid #f85149;border-radius:4px;padding:2px 6px;font-size:.75rem}.console-story-list-container{flex-direction:column;align-items:stretch;gap:12px;padding:12px 16px 16px;display:flex}.console-story-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.console-story-list-row{background:#161b22;border:1px solid #30363d;border-radius:8px;flex-direction:column;gap:6px;padding:10px 14px;display:flex}.console-story-list-row-main{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.console-story-count{text-align:center;color:#e6edf3;background:#484f58;border-radius:20px;flex-shrink:0;min-width:20px;padding:1px 7px;font-size:.6875rem;font-weight:700;line-height:1.5}.console-story-description{color:#8b949e;margin:0;font-size:.8125rem;line-height:1.4}.console-add-story-section{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.console-inline-input-form{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.console-inline-input-form-input{color:#e6edf3;min-width:180px;font:inherit;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;padding:7px 10px;font-size:.875rem}.console-inline-input-form-input:focus{border-color:#4493f8;outline:none}.console-inline-input-form-textarea{color:#e6edf3;min-width:240px;font:inherit;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;padding:7px 10px;font-size:.875rem}.console-inline-input-form-textarea:focus{border-color:#4493f8;outline:none}.console-story-delete-confirm{background:#1c1006;border:1px solid #a06800;border-radius:6px;flex-direction:column;gap:8px;padding:10px 14px;display:flex}.console-story-delete-confirm-message{color:#ffd166;margin:0;font-size:.875rem}.console-story-delete-confirm-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.console-story-task-list{border-top:1px solid #21262d;flex-direction:column;gap:0;margin:4px 0 0;padding:0;list-style:none;display:flex}.console-story-task-row{border-bottom:1px solid #21262d;grid-template-columns:1fr auto auto auto auto auto;align-items:baseline;gap:8px;padding:5px 4px;font-size:.7813rem;display:grid}.console-story-task-row:last-child{border-bottom:none}.console-story-task-title{color:#4493f8;text-overflow:ellipsis;white-space:nowrap;text-align:left;min-width:0;text-decoration:none;overflow:hidden}.console-story-task-title:hover{text-decoration:underline}.console-story-task-status,.console-story-task-agent,.console-story-task-next-action-date,.console-story-task-next-action-hour{color:#8b949e;white-space:nowrap;flex-shrink:0;font-size:.75rem}.console-story-task-depended-urls{color:#8b949e;text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:.6875rem;overflow:hidden}.console-story-chevron{color:#8b949e;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:.625rem;line-height:1}.console-story-chevron:hover{color:#e6edf3}.console-story-overflow-container{flex-shrink:0;margin-left:auto;position:relative}.console-story-overflow-btn{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:2px 6px;font-size:1rem;line-height:1}.console-story-overflow-btn:hover{color:#e6edf3;background:#21262d;border-color:#30363d}.console-story-overflow-menu{z-index:100;background:#161b22;border:1px solid #30363d;border-radius:6px;min-width:160px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #01040980}.console-story-overflow-option{color:#e6edf3;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:8px 16px;font-size:.8125rem;display:block}.console-story-overflow-option:hover{background:#21262d}.console-story-overflow-option:disabled{opacity:.4;cursor:not-allowed}.console-story-overflow-option--danger{color:#f85149}.console-story-overflow-separator{border:none;border-top:1px solid #30363d;margin:4px 0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|