@openagt/dashboard 0.33.1 → 0.35.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.
Files changed (130) hide show
  1. package/dist/built-in.d.ts.map +1 -1
  2. package/dist/built-in.js +1 -1
  3. package/dist/built-in.js.map +1 -1
  4. package/dist/daemon.d.ts.map +1 -1
  5. package/dist/daemon.js +3 -0
  6. package/dist/daemon.js.map +1 -1
  7. package/dist/dashboard/copy-logins.js +5 -5
  8. package/dist/dashboard/copy-logins.js.map +1 -1
  9. package/dist/dashboard/git-hosts.d.ts +38 -0
  10. package/dist/dashboard/git-hosts.d.ts.map +1 -0
  11. package/dist/dashboard/git-hosts.js +53 -0
  12. package/dist/dashboard/git-hosts.js.map +1 -0
  13. package/dist/dashboard/machine-logins.d.ts +2 -2
  14. package/dist/dashboard/machine-logins.js +2 -2
  15. package/dist/dashboard/person.d.ts +1 -1
  16. package/dist/dashboard/person.js +1 -1
  17. package/dist/dashboard/relay-endpoints.d.ts +4 -3
  18. package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
  19. package/dist/dashboard/relay-endpoints.js +13 -5
  20. package/dist/dashboard/relay-endpoints.js.map +1 -1
  21. package/dist/dashboard/remote-run.d.ts +16 -4
  22. package/dist/dashboard/remote-run.d.ts.map +1 -1
  23. package/dist/dashboard/remote-run.js +41 -8
  24. package/dist/dashboard/remote-run.js.map +1 -1
  25. package/dist/dashboard/send-skills.js +1 -1
  26. package/dist/dashboard/send-skills.js.map +1 -1
  27. package/dist/dashboard/start-branch.js +1 -1
  28. package/dist/dashboard/start-branch.js.map +1 -1
  29. package/dist/dashboard-bundle/assets/main-DN0tccor.css +2 -0
  30. package/dist/dashboard-bundle/assets/main-DRAtR1K3.js +148 -0
  31. package/dist/dashboard-bundle/assets/module-BO3UMgK4.js +14 -0
  32. package/dist/dashboard-bundle/host/module.js +1 -1
  33. package/dist/dashboard-bundle/index.html +3 -3
  34. package/dist/dashboard-rpc/accounts.d.ts +82 -0
  35. package/dist/dashboard-rpc/accounts.d.ts.map +1 -0
  36. package/dist/dashboard-rpc/accounts.js +224 -0
  37. package/dist/dashboard-rpc/accounts.js.map +1 -0
  38. package/dist/dashboard-rpc/index.d.ts +3 -1
  39. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  40. package/dist/dashboard-rpc/index.js +6 -2
  41. package/dist/dashboard-rpc/index.js.map +1 -1
  42. package/dist/dashboard-rpc/logins.d.ts +98 -0
  43. package/dist/dashboard-rpc/logins.d.ts.map +1 -0
  44. package/dist/dashboard-rpc/logins.js +203 -0
  45. package/dist/dashboard-rpc/logins.js.map +1 -0
  46. package/dist/dashboard-rpc/machines.d.ts +24 -2
  47. package/dist/dashboard-rpc/machines.d.ts.map +1 -1
  48. package/dist/dashboard-rpc/machines.js +37 -7
  49. package/dist/dashboard-rpc/machines.js.map +1 -1
  50. package/dist/dashboard-rpc/projects.js +1 -1
  51. package/dist/dashboard-rpc/projects.js.map +1 -1
  52. package/dist/dashboard-rpc/skills.d.ts +3 -4
  53. package/dist/dashboard-rpc/skills.d.ts.map +1 -1
  54. package/dist/dashboard-rpc/skills.js +4 -1
  55. package/dist/dashboard-rpc/skills.js.map +1 -1
  56. package/dist/local-bin.d.ts +8 -0
  57. package/dist/local-bin.d.ts.map +1 -0
  58. package/dist/local-bin.js +16 -0
  59. package/dist/local-bin.js.map +1 -0
  60. package/dist/module-types/dashboard/components/Waiting.d.ts +10 -0
  61. package/dist/module-types/dashboard/lib/machines.d.ts +2 -0
  62. package/dist/module-types/dashboard/lib/settings-crumb.d.ts +15 -0
  63. package/dist/module-types/dashboard/lib/use-narrow.d.ts +3 -0
  64. package/dist/module-types/dashboard/module/index.d.ts +22 -7
  65. package/dist/module-types/dashboard/rpc/machines.d.ts +7 -0
  66. package/dist/module-types/src/dashboard/git-hosts.d.ts +37 -0
  67. package/dist/module-types/src/dashboard/machine-logins.d.ts +2 -2
  68. package/dist/module-types/src/dashboard/person.d.ts +1 -1
  69. package/dist/module-types/src/dashboard/remote-run.d.ts +16 -4
  70. package/dist/module-types/src/dashboard-rpc/accounts.d.ts +81 -0
  71. package/dist/module-types/src/dashboard-rpc/index.d.ts +3 -1
  72. package/dist/module-types/src/dashboard-rpc/logins.d.ts +97 -0
  73. package/dist/module-types/src/dashboard-rpc/machines.d.ts +24 -2
  74. package/dist/module-types/src/dashboard-rpc/skills.d.ts +3 -4
  75. package/dist/module-types/src/project-hooks.d.ts +5 -0
  76. package/dist/module-types/src/project-skills/apply.d.ts +35 -0
  77. package/dist/module-types/src/project-skills/branch.d.ts +29 -0
  78. package/dist/module-types/src/project-skills/catalogue.d.ts +39 -0
  79. package/dist/module-types/src/project-skills/change.d.ts +29 -0
  80. package/dist/module-types/src/project-skills/commit.d.ts +16 -0
  81. package/dist/module-types/src/project-skills/project.d.ts +42 -0
  82. package/dist/module-types/src/project-skills/skill-file.d.ts +16 -0
  83. package/dist/module-types/src/registry.d.ts +15 -0
  84. package/dist/project-hooks.d.ts +5 -0
  85. package/dist/project-hooks.d.ts.map +1 -1
  86. package/dist/project-hooks.js +4 -1
  87. package/dist/project-hooks.js.map +1 -1
  88. package/dist/project-skills/apply.d.ts +36 -0
  89. package/dist/project-skills/apply.d.ts.map +1 -0
  90. package/dist/project-skills/apply.js +89 -0
  91. package/dist/project-skills/apply.js.map +1 -0
  92. package/dist/project-skills/branch.d.ts +30 -0
  93. package/dist/project-skills/branch.d.ts.map +1 -0
  94. package/dist/project-skills/branch.js +82 -0
  95. package/dist/project-skills/branch.js.map +1 -0
  96. package/dist/project-skills/catalogue.d.ts +40 -0
  97. package/dist/project-skills/catalogue.d.ts.map +1 -0
  98. package/dist/project-skills/catalogue.js +39 -0
  99. package/dist/project-skills/catalogue.js.map +1 -0
  100. package/dist/project-skills/change.d.ts +30 -0
  101. package/dist/project-skills/change.d.ts.map +1 -0
  102. package/dist/project-skills/change.js +29 -0
  103. package/dist/project-skills/change.js.map +1 -0
  104. package/dist/project-skills/commit.d.ts +17 -0
  105. package/dist/project-skills/commit.d.ts.map +1 -0
  106. package/dist/project-skills/commit.js +40 -0
  107. package/dist/project-skills/commit.js.map +1 -0
  108. package/dist/project-skills/project.d.ts +43 -0
  109. package/dist/project-skills/project.d.ts.map +1 -0
  110. package/dist/project-skills/project.js +60 -0
  111. package/dist/project-skills/project.js.map +1 -0
  112. package/dist/project-skills/skill-file.d.ts +17 -0
  113. package/dist/project-skills/skill-file.d.ts.map +1 -0
  114. package/dist/project-skills/skill-file.js +39 -0
  115. package/dist/project-skills/skill-file.js.map +1 -0
  116. package/dist/project-skills/test-project.d.ts +6 -0
  117. package/dist/project-skills/test-project.d.ts.map +1 -0
  118. package/dist/project-skills/test-project.js +31 -0
  119. package/dist/project-skills/test-project.js.map +1 -0
  120. package/dist/quota-boundary.d.ts.map +1 -1
  121. package/dist/quota-boundary.js +7 -3
  122. package/dist/quota-boundary.js.map +1 -1
  123. package/dist/registry.d.ts +15 -0
  124. package/dist/registry.d.ts.map +1 -1
  125. package/dist/registry.js +36 -2
  126. package/dist/registry.js.map +1 -1
  127. package/package.json +32 -16
  128. package/dist/dashboard-bundle/assets/main-BJEMTscF.js +0 -144
  129. package/dist/dashboard-bundle/assets/main-aHhLUwxc.css +0 -2
  130. package/dist/dashboard-bundle/assets/module-D7LI75mm.js +0 -14
@@ -1 +1 @@
1
- import{$ as e,$t as t,A as n,At as r,B as i,Bt as a,Ct as o,Dt as s,E as c,F as l,Ft as u,G as d,Gt as f,H as p,Hn as m,Ht as h,I as g,In as _,It as v,J as y,K as b,L as x,Ln as S,Lt as C,M as w,Mt as T,N as E,O as D,Ot as O,P as k,Pt as A,Q as j,R as M,Rn as N,Rt as P,St as F,T as I,Tt as L,U as R,V as z,Vt as B,W as V,Wn as H,Wt as U,X as W,Y as G,Z as K,Zt as q,a as J,c as Y,d as X,dt as Z,f as Q,ft as $,g as ee,h as te,i as ne,in as re,it as ie,j as ae,k as oe,kt as se,l as ce,ln as le,m as ue,n as de,nn as fe,nt as pe,o as me,on as he,p as ge,pt as _e,q as ve,r as ye,rn as be,rt as xe,s as Se,st as Ce,t as we,tn as Te,u as Ee,w as De,wt as Oe,z as ke,zt as Ae}from"../assets/module-D7LI75mm.js";export{Z as AddMachineDialog,pe as Badge,_ as Button,G as Card,W as CardContent,K as CardHeader,j as CardTitle,e as CardTitleLink,xe as Checkbox,ie as ConfirmDialog,oe as ContextMenu,n as ContextMenuTrigger,$ as Dialog,ae as DiffStat,O as DropdownMenu,se as DropdownMenuCheckboxItem,r as DropdownMenuContent,T as DropdownMenuItem,A as DropdownMenuSeparator,u as DropdownMenuSub,v as DropdownMenuSubContent,C as DropdownMenuSubTrigger,P as DropdownMenuTrigger,I as FileIcon,U as Input,X as InviteDialog,z as Label,ee as LinkActions,H as MAX_SPEND_OFFSET,Ce as Markdown,we as ModuleHostContext,c as PaneActions,D as PaneTitle,Y as Pieces,E as Popover,k as PopoverContent,l as PopoverTrigger,Q as QrCode,a as RadioGroup,B as RadioGroupItem,h as RadioGroupOption,w as RangeSlider,Ae as ScrollArea,g as Select,x as SelectContent,M as SelectItem,ke as SelectTrigger,i as SelectValue,o as Separator,ge as SettingsRow,ue as SettingsSection,te as SettingsSelectRow,F as Skeleton,De as StartAgentButton,y as Switch,p as Table,R as TableBody,V as TableCell,d as TableHead,b as TableHeader,ve as TableRow,_e as Textarea,Oe as Tooltip,L as TooltipContent,s as TooltipTrigger,S as buttonVariants,N as cn,de as defineModule,t as forgetRemembered,be as formatAge,re as formatDateTime,he as formatDuration,le as formatRelative,ye as moduleHost,J as pathsIn,m as reachedByLine,f as useAction,q as useCodingAgents,me as useFileNames,ce as useHighlighted,Te as useLoaded,ne as useModuleHost,Ee as useNarrow,fe as usePolled,Se as useSchedule};
1
+ import{$ as e,$t as t,B as n,Bt as r,D as i,Dt as a,Et as o,F as s,Ft as c,G as l,H as u,Hn as d,Ht as f,I as p,In as m,It as h,J as g,K as _,L as v,Ln as y,Lt as b,M as x,N as S,Nt as C,O as w,Ot as T,P as E,Pt as D,Q as O,R as k,Rt as A,Tt as j,U as M,Un as N,Ut as P,V as F,Vn as I,Vt as L,W as R,X as z,Y as B,Yn as V,Yt as H,Z as U,Zt as W,_ as G,a as K,at as q,c as J,d as Y,en as X,et as Z,f as Q,g as $,h as ee,ht as te,i as ne,in as re,j as ie,jt as ae,k as oe,kt as se,l as ce,mt as le,n as ue,nn as de,nt as fe,o as pe,ot as me,p as he,pt as ge,q as _e,qn as ve,r as ye,s as be,sn as xe,st as Se,t as Ce,tn as we,tt as Te,u as Ee,ut as De,v as Oe,y as ke,z as Ae,zn as je,zt as Me}from"../assets/module-BO3UMgK4.js";export{ge as AddMachineDialog,q as Badge,I as Button,O as Card,e as CardContent,Z as CardHeader,Te as CardTitle,fe as CardTitleLink,me as Checkbox,Se as ConfirmDialog,x as ContextMenu,S as ContextMenuTrigger,le as Dialog,E as DiffStat,a as DropdownMenu,T as DropdownMenuCheckboxItem,se as DropdownMenuContent,ae as DropdownMenuItem,C as DropdownMenuSeparator,D as DropdownMenuSub,c as DropdownMenuSubContent,h as DropdownMenuSubTrigger,b as DropdownMenuTrigger,w as FileIcon,f as Input,Q as InviteDialog,R as Label,ke as LinkActions,V as MAX_SPEND_OFFSET,De as Markdown,Ce as ModuleHostContext,oe as PaneActions,ie as PaneTitle,J as Pieces,p as Popover,v as PopoverContent,k as PopoverTrigger,he as QrCode,Me as RadioGroup,r as RadioGroupItem,L as RadioGroupOption,s as RangeSlider,A as ScrollArea,Ae as Select,n as SelectContent,F as SelectItem,u as SelectTrigger,M as SelectValue,o as Separator,$ as SettingsRow,G as SettingsSection,Oe as SettingsSelectRow,j as Skeleton,i as StartAgentButton,U as Switch,l as Table,_ as TableBody,_e as TableCell,g as TableHead,B as TableHeader,z as TableRow,te as Textarea,m as Tooltip,y as TooltipContent,je as TooltipTrigger,Ee as Waiting,d as buttonVariants,N as cn,ue as defineModule,W as forgetRemembered,we as formatAge,de as formatDateTime,re as formatDuration,xe as formatRelative,ye as moduleHost,K as pathsIn,ve as reachedByLine,P as useAction,H as useCodingAgents,pe as useFileNames,ce as useHighlighted,t as useLoaded,ne as useModuleHost,Y as useNarrow,X as usePolled,be as useSchedule,ee as useSettingsCrumb};
@@ -27,14 +27,14 @@
27
27
  "@openagt/dashboard/module": "/host/module.js"
28
28
  }
29
29
  }</script>
30
- <script type="module" crossorigin src="/assets/main-BJEMTscF.js"></script>
30
+ <script type="module" crossorigin src="/assets/main-DRAtR1K3.js"></script>
31
31
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/react-CZI7_Jkm.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/react-dom-cJyBB_A4.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/client-CbBRB9m4.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-By8HlURe.js">
36
- <link rel="modulepreload" crossorigin href="/assets/module-D7LI75mm.js">
37
- <link rel="stylesheet" crossorigin href="/assets/main-aHhLUwxc.css">
36
+ <link rel="modulepreload" crossorigin href="/assets/module-BO3UMgK4.js">
37
+ <link rel="stylesheet" crossorigin href="/assets/main-DN0tccor.css">
38
38
  </head>
39
39
  <body>
40
40
  <div id="root"></div>
@@ -0,0 +1,82 @@
1
+ import { type AgentAccount, type DriverRateWindow } from '@openagt/agent-driver';
2
+ import { type Mint } from '@openagt/agent-driver-claude';
3
+ import { type CodexLogin, type CodexLoginOptions, type CodexWho } from '@openagt/agent-driver-codex';
4
+ /** The agents with accounts: Claude Code's and Codex's. */
5
+ export type AccountsAgent = 'claude' | 'codex';
6
+ /** One of an account's usage windows, by how long it lasts. */
7
+ export interface AccountWindow {
8
+ /** `5 h`, `week`, `month`. */
9
+ label: string;
10
+ /** How much of it is gone, 0-100. */
11
+ percent: number;
12
+ }
13
+ /** One account as the page shows it. */
14
+ export interface AccountRow {
15
+ /** The account as the file names it: what the page sends back to act on it. */
16
+ id: string;
17
+ /** Its name as shown: the person's own goes by the agent's name for them until they give it one. */
18
+ name: string;
19
+ /** The person's own login, which the agent keeps: it is never removed. */
20
+ own: boolean;
21
+ /** When an added one was added, ISO 8601. */
22
+ added?: string;
23
+ /** How full it is, shortest window first; none when nothing said it yet. */
24
+ windows: AccountWindow[];
25
+ /** When those were said, epoch ms, when not now: an added Claude account is known from its last run. */
26
+ asOf?: number;
27
+ /** Until when a limit keeps it out, epoch ms. */
28
+ limitedUntil?: number;
29
+ /** `in-use`: the first one a run takes now; `next`: the one after it; `limited`: a limit keeps it out. */
30
+ state?: 'in-use' | 'next' | 'limited';
31
+ }
32
+ /** An account being added: the browser is open on the agent's page, or the login is being kept. */
33
+ export interface AccountAdding {
34
+ name: string;
35
+ /** The page to sign in at, when the agent gave one: what a person copies into a private window when the browser is signed in to another account. */
36
+ url?: string;
37
+ }
38
+ export interface AccountsView {
39
+ accounts: AccountRow[];
40
+ adding?: AccountAdding;
41
+ /** Why the last add did not go through. */
42
+ failed?: string;
43
+ /** The daemon's clock, so "free in 2 h" is counted from the same now. */
44
+ now: number;
45
+ }
46
+ /** What the RPCs reach for, swapped in tests: the logins, where each agent keeps who the person is, how full a Codex account is. */
47
+ export declare const accountsWiring: {
48
+ mint: Mint;
49
+ claudeJson: () => string;
50
+ path: (agent: AccountsAgent) => string;
51
+ now: () => number;
52
+ loginCodex: (opts: CodexLoginOptions) => Promise<CodexLogin>;
53
+ codexDir: () => string;
54
+ codexOwnHome: () => string;
55
+ codexFolder: (account: AgentAccount) => string;
56
+ codexWho: (home: string) => Promise<CodexWho>;
57
+ codexUsage: (home: string) => Promise<DriverRateWindow[]>;
58
+ };
59
+ /** An agent's accounts in the order runs try them, each with how full it is and whether a limit keeps it out. */
60
+ export declare function onAgentAccounts(agent: AccountsAgent): Promise<AccountsView>;
61
+ export type AccountResult = {
62
+ ok: true;
63
+ } | {
64
+ ok: false;
65
+ error: string;
66
+ };
67
+ /**
68
+ * Add an account: this computer's browser opens on the agent's page, the person signs in there to
69
+ * the account being added, and its login is kept under `name`. Answers at once; the page follows it
70
+ * in {@link onAgentAccounts}.
71
+ */
72
+ export declare function sendAddAgentAccount(agent: AccountsAgent, name: string): Promise<AccountResult>;
73
+ /**
74
+ * Remove an added account. A Claude login is not ended: it is good until its year is over, or until
75
+ * it is taken back on claude.ai. A Codex account's folder, its login in it, goes with it.
76
+ */
77
+ export declare function sendRemoveAgentAccount(agent: AccountsAgent, name: string): Promise<AccountResult>;
78
+ /** Runs try `name` first from now on. */
79
+ export declare function sendUseAgentAccountFirst(agent: AccountsAgent, name: string): Promise<AccountResult>;
80
+ /** The person's own login under the name they give it. */
81
+ export declare function sendNameOwnAgentAccount(agent: AccountsAgent, name: string): Promise<AccountResult>;
82
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { rm } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { addAccount, isLimited, nameOwnAccount, nameRefused, OWN_NAME, readAccounts, removeAccount, useFirst } from '@openagt/agent-driver';
6
+ import { claudeAccountsPath, mintClaude } from '@openagt/agent-driver-claude';
7
+ import { accountFolder, codexAccountsDir, codexAccountsPath, codexWho, loginCodex, personalCodexHome, readCodexUsage } from '@openagt/agent-driver-codex';
8
+ import { contextQuota } from './context.js';
9
+ /** What the RPCs reach for, swapped in tests: the logins, where each agent keeps who the person is, how full a Codex account is. */
10
+ export const accountsWiring = {
11
+ mint: mintClaude,
12
+ claudeJson: () => join(process.env['CLAUDE_CONFIG_DIR'] ?? process.env['HOME'] ?? homedir(), '.claude.json'),
13
+ path: agent => (agent === 'codex' ? codexAccountsPath(process.env) : claudeAccountsPath(process.env)),
14
+ now: Date.now,
15
+ loginCodex,
16
+ codexDir: () => codexAccountsDir(process.env),
17
+ codexOwnHome: () => personalCodexHome(process.env),
18
+ codexFolder: account => accountFolder(account, process.env),
19
+ codexWho,
20
+ codexUsage: home => readCodexUsage({ home }),
21
+ };
22
+ const adding = new Map();
23
+ const failed = new Map();
24
+ /** The person's own name as Claude Code knows it: its account's display name, else its email. */
25
+ function claudeOwnName() {
26
+ try {
27
+ const account = JSON.parse(readFileSync(accountsWiring.claudeJson(), 'utf8')).oauthAccount;
28
+ const name = typeof account?.displayName === 'string' && account.displayName.trim() ? account.displayName.trim() : account?.emailAddress;
29
+ return typeof name === 'string' && name.trim() ? name.trim() : undefined;
30
+ }
31
+ catch {
32
+ return undefined;
33
+ }
34
+ }
35
+ /** The person's own name as the agent knows it. */
36
+ async function ownName(agent) {
37
+ return agent === 'codex' ? (await accountsWiring.codexWho(accountsWiring.codexOwnHome())).name : claudeOwnName();
38
+ }
39
+ /** How long a Codex reading is kept: the page asks every few seconds, and each reading starts a Codex. */
40
+ const CODEX_KEPT_MS = 60_000;
41
+ const codexKept = new Map();
42
+ /** How full the Codex account logged in at `home` is: read now, or less than a minute ago. None when Codex could not say. */
43
+ function codexUsage(home, now) {
44
+ const kept = codexKept.get(home);
45
+ if (kept && now - kept.at < CODEX_KEPT_MS && now >= kept.at)
46
+ return kept.windows;
47
+ const windows = accountsWiring.codexUsage(home).catch(() => undefined);
48
+ codexKept.set(home, { at: now, windows });
49
+ return windows;
50
+ }
51
+ /** What a window is called by how long it lasts. */
52
+ const LABELS = { five_hour: '5 h', seven_day: 'week', thirty_day: 'month' };
53
+ const ORDER = ['5 h', 'week', 'month'];
54
+ /** A turn's or an agent's windows as the page names them, shortest first; a window gone past its reset is empty again. */
55
+ function windowsOf(windows, now) {
56
+ return windows
57
+ .filter(w => LABELS[w.window] !== undefined)
58
+ .map(w => ({ label: LABELS[w.window], percent: w.resetsAt <= now ? 0 : w.percentUsed }))
59
+ .sort((a, b) => ORDER.indexOf(a.label) - ORDER.indexOf(b.label));
60
+ }
61
+ /** Claude Code's own `/usage` reading of the person's login, as the page names its windows. */
62
+ function liveClaude(windows) {
63
+ const session = windows.find(w => w.kind === 'session');
64
+ const week = windows.find(w => w.kind === 'week');
65
+ return [...(session ? [{ label: '5 h', percent: session.percentUsed }] : []), ...(week ? [{ label: 'week', percent: week.percentUsed }] : [])];
66
+ }
67
+ /** One account's row. Claude's own login is read live where Claude Code lets it be (`/usage`), an added one from its last run; every Codex one live. */
68
+ async function row(agent, account, liveOwn, now) {
69
+ const own = account.login === undefined;
70
+ const name = own && account.name === OWN_NAME ? ((await ownName(agent)) ?? OWN_NAME) : account.name;
71
+ const said = () => ({ windows: windowsOf(account.windows ?? [], now), ...(account.windowsAt !== undefined ? { asOf: account.windowsAt } : {}) });
72
+ let reading;
73
+ if (agent === 'claude')
74
+ reading = own && liveOwn.length > 0 ? { windows: liveClaude(liveOwn) } : said();
75
+ else {
76
+ const live = await codexUsage(own ? accountsWiring.codexOwnHome() : accountsWiring.codexFolder(account), now);
77
+ reading = live ? { windows: windowsOf(live, now) } : said();
78
+ }
79
+ return {
80
+ id: account.name,
81
+ name,
82
+ own,
83
+ ...(account.added !== undefined ? { added: account.added } : {}),
84
+ ...reading,
85
+ ...(isLimited(account, now) ? { limitedUntil: account.limitedUntil } : {}),
86
+ };
87
+ }
88
+ /** An agent's accounts in the order runs try them, each with how full it is and whether a limit keeps it out. */
89
+ export async function onAgentAccounts(agent) {
90
+ const now = accountsWiring.now();
91
+ const liveOwn = agent === 'claude'
92
+ ? await contextQuota()
93
+ .read()
94
+ .then(view => view.windows)
95
+ .catch(() => [])
96
+ : [];
97
+ const rows = await Promise.all(readAccounts(accountsWiring.path(agent)).map(account => row(agent, account, liveOwn, now)));
98
+ // The first free one is the one a run takes; with one account there is no order to say.
99
+ if (rows.length > 1) {
100
+ const free = rows.filter(r => r.limitedUntil === undefined);
101
+ for (const r of rows)
102
+ if (r.limitedUntil !== undefined)
103
+ r.state = 'limited';
104
+ if (free[0])
105
+ free[0].state = 'in-use';
106
+ if (free[1])
107
+ free[1].state = 'next';
108
+ }
109
+ const beingAdded = adding.get(agent);
110
+ const lastFailed = failed.get(agent);
111
+ return {
112
+ accounts: rows,
113
+ ...(beingAdded ? { adding: beingAdded } : {}),
114
+ ...(lastFailed !== undefined ? { failed: lastFailed } : {}),
115
+ now,
116
+ };
117
+ }
118
+ /** The name refused before the browser opens: empty, or one an account has, the person's own by the name it shows. */
119
+ async function nameTaken(agent, name) {
120
+ const accounts = readAccounts(accountsWiring.path(agent));
121
+ const own = accounts.find(a => a.login === undefined);
122
+ const shown = own && own.name === OWN_NAME ? await ownName(agent) : undefined;
123
+ return nameRefused(name, shown !== undefined ? [...accounts, { name: shown }] : accounts);
124
+ }
125
+ /** Who each Codex account already on the list is: a new one that is one of them is refused. */
126
+ async function codexKeys() {
127
+ const homes = readAccounts(accountsWiring.path('codex')).map(a => (a.login === undefined ? accountsWiring.codexOwnHome() : accountsWiring.codexFolder(a)));
128
+ const keys = await Promise.all(homes.map(home => accountsWiring.codexWho(home).then(who => who.key)));
129
+ return keys.filter((key) => key !== undefined);
130
+ }
131
+ /** Sign the account in, and keep it under `name`. Why not, when it did not go through. */
132
+ async function signIn(agent, name) {
133
+ const path = accountsWiring.path(agent);
134
+ if (agent === 'claude') {
135
+ const minted = await accountsWiring.mint();
136
+ if (!minted.ok)
137
+ return minted.error;
138
+ addAccount(name, minted.login, path, new Date(accountsWiring.now()));
139
+ return undefined;
140
+ }
141
+ const signed = await accountsWiring.loginCodex({
142
+ dir: accountsWiring.codexDir(),
143
+ onUrl: url => void adding.set(agent, { name, url }),
144
+ });
145
+ if (!signed.ok)
146
+ return signed.error;
147
+ const folder = join(accountsWiring.codexDir(), signed.login);
148
+ // The browser may have been signed in to an account on the list already: that one is not added twice.
149
+ if (signed.who.key !== undefined && (await codexKeys()).includes(signed.who.key)) {
150
+ await rm(folder, { recursive: true, force: true });
151
+ return 'That account is on the list already. If the browser was signed in to it, copy the link into a private window and sign in to the other account there.';
152
+ }
153
+ try {
154
+ addAccount(name, signed.login, path, new Date(accountsWiring.now()));
155
+ }
156
+ catch (err) {
157
+ await rm(folder, { recursive: true, force: true });
158
+ throw err;
159
+ }
160
+ return undefined;
161
+ }
162
+ /**
163
+ * Add an account: this computer's browser opens on the agent's page, the person signs in there to
164
+ * the account being added, and its login is kept under `name`. Answers at once; the page follows it
165
+ * in {@link onAgentAccounts}.
166
+ */
167
+ export async function sendAddAgentAccount(agent, name) {
168
+ const busy = adding.get(agent);
169
+ if (busy)
170
+ return {
171
+ ok: false,
172
+ error: `${busy.name}'s account is being added: sign in in the page the browser opened, or wait for it to end.`,
173
+ };
174
+ const refused = await nameTaken(agent, name);
175
+ if (refused)
176
+ return { ok: false, error: refused };
177
+ const said = name.trim();
178
+ adding.set(agent, { name: said });
179
+ failed.delete(agent);
180
+ void signIn(agent, said)
181
+ .then(error => {
182
+ if (error !== undefined)
183
+ failed.set(agent, error);
184
+ })
185
+ .catch((err) => {
186
+ failed.set(agent, err instanceof Error ? err.message : String(err));
187
+ })
188
+ .finally(() => {
189
+ adding.delete(agent);
190
+ });
191
+ return { ok: true };
192
+ }
193
+ /**
194
+ * Remove an added account. A Claude login is not ended: it is good until its year is over, or until
195
+ * it is taken back on claude.ai. A Codex account's folder, its login in it, goes with it.
196
+ */
197
+ export async function sendRemoveAgentAccount(agent, name) {
198
+ const gone = readAccounts(accountsWiring.path(agent)).find(a => a.name === name && a.login !== undefined);
199
+ const done = change(() => removeAccount(name, accountsWiring.path(agent)));
200
+ if (done.ok && gone && agent === 'codex')
201
+ await rm(accountsWiring.codexFolder(gone), { recursive: true, force: true });
202
+ return done;
203
+ }
204
+ /** Runs try `name` first from now on. */
205
+ export async function sendUseAgentAccountFirst(agent, name) {
206
+ return change(() => useFirst(name, accountsWiring.path(agent)));
207
+ }
208
+ /** The person's own login under the name they give it. */
209
+ export async function sendNameOwnAgentAccount(agent, name) {
210
+ return change(() => nameOwnAccount(name, accountsWiring.path(agent)));
211
+ }
212
+ function change(act) {
213
+ try {
214
+ act();
215
+ return { ok: true };
216
+ }
217
+ catch (err) {
218
+ return {
219
+ ok: false,
220
+ error: err instanceof Error ? err.message : String(err),
221
+ };
222
+ }
223
+ }
224
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/dashboard-rpc/accounts.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@ export { onPreferences, savePreferences, patchPreferences, onProjectPresets, sav
6
6
  export { type EditorInfo } from '../dashboard/open-in-app.js';
7
7
  export { onQuota } from './quota.js';
8
8
  export { onModels } from './models.js';
9
- export { onMachines, sendAddMachine, sendRemoveMachine, onMachinesReachable, onMachineVersions, sendProjectToMachine, onProjectOnMachine, onComputersThrough, sendAddComputerThrough, onMachinePerson, sendRemoveMachineDevice, sendMachineLineLink, sendMachineTold, onMachineLogins, sendMachineLogins, type Machine, type MachineLoginsResult, type AddMachineResult, type MachineVersions, type ProjectOnMachine, type ComputersThrough, type MachinePerson } from './machines.js';
9
+ export { onMachines, sendAddMachine, sendRemoveMachine, onMachinesReachable, onMachineVersions, sendProjectToMachine, onProjectOnMachine, onComputersThrough, sendAddComputerThrough, onMachinePerson, sendRemoveMachineDevice, sendRenameMachine, sendLetMachineIn, sendMachineLineLink, sendMachineTold, onMachineLogins, sendMachineLogins, type Machine, type MachineLoginsResult, type AddMachineResult, type MachineVersions, type ProjectOnMachine, type ComputersThrough, type MachinePerson } from './machines.js';
10
10
  export { onModules, runModuleCommand, runComputerCommand, runComputerCommandOn, readModule, type DashboardModule, type ModuleCommandResult, type ModuleReadResult } from './modules.js';
11
11
  export { onProjectSkills, sendChangeSkills, sendProjectSkills, type ProjectSkills, type ProjectSkill, type ChangeSkillsResult } from './skills.js';
12
12
  export { onPerson, type Person } from './person.js';
13
+ export { onGitHosts, sendUseGitHostAccount, sendGitHostLogin, sendGitHostInstall, onAgentState, sendAgentFix, onProjectAccounts, sendProjectAccounts, type GitHostsView, type GitHostRow, type GitHostAccount, type GitHostProvider, type AgentState, type ProjectAccountsView, type ProjectAgentAccounts } from './logins.js';
14
+ export { onAgentAccounts, sendAddAgentAccount, sendRemoveAgentAccount, sendUseAgentAccountFirst, sendNameOwnAgentAccount, type AccountsAgent, type AccountRow, type AccountWindow, type AccountAdding, type AccountsView, type AccountResult } from './accounts.js';
13
15
  import { streamAgentEvents } from './events.js';
14
16
  /** One RPC: called with whatever the browser sent, answering with whatever JSON.stringify keeps. */
15
17
  export type RpcHandler = (...args: never[]) => unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC3W,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC7Q,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACzG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AACnQ,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AACtd,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACvL,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAClJ,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAYnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAA;AAEtD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAOnD,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,0BAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/index.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,12 @@ export { onProjects, sendAddProject, sendStartedAgain, onCloneTarget, sendAddPro
9
9
  export { onPreferences, savePreferences, patchPreferences, onProjectPresets, saveProjectPresets, onEditors, } from './preferences.js';
10
10
  export { onQuota } from './quota.js';
11
11
  export { onModels } from './models.js';
12
- export { onMachines, sendAddMachine, sendRemoveMachine, onMachinesReachable, onMachineVersions, sendProjectToMachine, onProjectOnMachine, onComputersThrough, sendAddComputerThrough, onMachinePerson, sendRemoveMachineDevice, sendMachineLineLink, sendMachineTold, onMachineLogins, sendMachineLogins } from './machines.js';
12
+ export { onMachines, sendAddMachine, sendRemoveMachine, onMachinesReachable, onMachineVersions, sendProjectToMachine, onProjectOnMachine, onComputersThrough, sendAddComputerThrough, onMachinePerson, sendRemoveMachineDevice, sendRenameMachine, sendLetMachineIn, sendMachineLineLink, sendMachineTold, onMachineLogins, sendMachineLogins } from './machines.js';
13
13
  export { onModules, runModuleCommand, runComputerCommand, runComputerCommandOn, readModule } from './modules.js';
14
14
  export { onProjectSkills, sendChangeSkills, sendProjectSkills } from './skills.js';
15
15
  export { onPerson } from './person.js';
16
+ export { onGitHosts, sendUseGitHostAccount, sendGitHostLogin, sendGitHostInstall, onAgentState, sendAgentFix, onProjectAccounts, sendProjectAccounts } from './logins.js';
17
+ export { onAgentAccounts, sendAddAgentAccount, sendRemoveAgentAccount, sendUseAgentAccountFirst, sendNameOwnAgentAccount } from './accounts.js';
16
18
  import * as reads from './reads.js';
17
19
  import * as control from './control.js';
18
20
  import * as projects from './projects.js';
@@ -23,6 +25,8 @@ import * as machines from './machines.js';
23
25
  import * as modules from './modules.js';
24
26
  import * as skills from './skills.js';
25
27
  import * as person from './person.js';
28
+ import * as accounts from './accounts.js';
29
+ import * as logins from './logins.js';
26
30
  import { streamAgentEvents } from './events.js';
27
31
  /**
28
32
  * Every RPC the mount will answer, by name.
@@ -36,7 +40,7 @@ import { streamAgentEvents } from './events.js';
36
40
  * `Object` and answered 200 with whatever it was handed, and `__proto__` / `toString` / `valueOf`
37
41
  * were reachable too — 500s rather than the 404 a name that is not an RPC has to get.
38
42
  */
39
- export const RPC_HANDLERS = Object.assign(Object.create(null), Object.fromEntries([reads, control, projects, preferences, quota, models, machines, modules, skills, person]
43
+ export const RPC_HANDLERS = Object.assign(Object.create(null), Object.fromEntries([reads, control, projects, preferences, quota, models, machines, modules, skills, person, accounts, logins]
40
44
  .flatMap(module => Object.entries(module))
41
45
  .filter((entry) => typeof entry[1] === 'function')));
42
46
  /** The live event stream, which is a subscription rather than a call — see `rpc-serve.ts`. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard-rpc/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard-rpc/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { runPackageCommand, type ProvidedCommand } from '@openagt/agent-data';
2
+ import type { DriverFix, DriverReadiness } from '@openagt/agent-driver';
3
+ import { type DriverName } from '../driver-names.js';
4
+ import { type AccountResult } from './accounts.js';
5
+ import { type GitHostProvider } from '../dashboard/git-hosts.js';
6
+ export type { GitHostAccount, GitHostProvider } from '../dashboard/git-hosts.js';
7
+ /** One host the projects' remotes are on: which projects, and its package's answer, or none when no package answers for it. */
8
+ export interface GitHostRow {
9
+ host: string;
10
+ /** The projects whose remote is there, by name. */
11
+ projects: string[];
12
+ provider?: GitHostProvider;
13
+ }
14
+ export interface GitHostsView {
15
+ hosts: GitHostRow[];
16
+ }
17
+ /** What the RPCs reach for, swapped in tests. */
18
+ export declare const loginsWiring: {
19
+ /** The origin remote's address of the project at `root`. */
20
+ origin: (root: string) => Promise<string | undefined>;
21
+ /** The project's git host package's command. */
22
+ gitHost: (root: string) => Promise<ProvidedCommand | undefined>;
23
+ run: typeof runPackageCommand;
24
+ ready: (driver: DriverName) => Promise<DriverReadiness>;
25
+ /** Run a fix's command to its end; rejects with its last lines. */
26
+ fix: (command: string) => Promise<void>;
27
+ driver: () => Promise<DriverName>;
28
+ };
29
+ /** The hosts the projects' remotes are on, in the projects' order, each with its package's answer. A project with no remote is on none. */
30
+ export declare function onGitHosts(): Promise<GitHostsView>;
31
+ /** Runs use `login` at `host` from now on; the terminal's own account stays as it is. */
32
+ export declare function sendUseGitHostAccount(host: string, login: string): Promise<AccountResult>;
33
+ /** Log another account in at `host`, in the browser: the code the person types, and where. */
34
+ export declare function sendGitHostLogin(host: string): Promise<{
35
+ ok: true;
36
+ code: string;
37
+ url: string;
38
+ } | {
39
+ ok: false;
40
+ error: string;
41
+ }>;
42
+ /** Install the tool `host`'s package works through, with the command it declared; the card follows it. */
43
+ export declare function sendGitHostInstall(host: string): Promise<AccountResult>;
44
+ /** How the coding agent's CLI is on this computer, and what a press does about what is missing. */
45
+ export interface AgentState {
46
+ driver: DriverName;
47
+ /** Installed and logged in, or it could not say otherwise. */
48
+ ready: boolean;
49
+ /** What is in the way, in words. */
50
+ problem?: string;
51
+ /** What a press does about it, when the agent's package declared a command for it. */
52
+ fix?: DriverFix;
53
+ /** A press's fix going on. */
54
+ fixing?: DriverFix['kind'];
55
+ /** Why the last press's fix failed. */
56
+ failed?: string;
57
+ }
58
+ /** The coding agent picked in Settings, or `driver`: installed, logged in, and what a press fixes. */
59
+ export declare function onAgentState(driver?: string): Promise<AgentState>;
60
+ /**
61
+ * Fix what is in the way of `driver`: the command its package declared for it, run here, the
62
+ * install to its end, the login until the browser said yes. Answers at once; the page follows it
63
+ * in {@link onAgentState}.
64
+ */
65
+ export declare function sendAgentFix(driver: string): Promise<AccountResult>;
66
+ /** A project's own accounts, beside the computer's: shown for a kind the computer has two or more of, or that the project names already. */
67
+ export interface ProjectAccountsView {
68
+ gitHost?: {
69
+ host: string;
70
+ name: string;
71
+ /** The host's word for a pull request. */
72
+ requestWord: string;
73
+ accounts: string[];
74
+ /** The computer's runs' account. */
75
+ computer?: string;
76
+ /** The project's own, when it names one. */
77
+ project?: string;
78
+ };
79
+ claude?: ProjectAgentAccounts;
80
+ codex?: ProjectAgentAccounts;
81
+ }
82
+ /** One agent's accounts a project may pick from, and its own few. */
83
+ export interface ProjectAgentAccounts {
84
+ accounts: {
85
+ id: string;
86
+ name: string;
87
+ }[];
88
+ /** The project's own few, by id, when it names some. */
89
+ project?: string[];
90
+ }
91
+ export declare function onProjectAccounts(projectId: string): Promise<ProjectAccountsView | null>;
92
+ /** Change a project's own accounts: a value sets one, `null` goes back to the computer's. Kept on this computer, never in the repository. */
93
+ export declare function sendProjectAccounts(projectId: string, change: {
94
+ gitHost?: string | null;
95
+ claude?: string[] | null;
96
+ codex?: string[] | null;
97
+ }): Promise<AccountResult>;
98
+ //# sourceMappingURL=logins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logins.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/logins.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKvE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAElE,OAAO,EAAmB,KAAK,aAAa,EAAsB,MAAM,eAAe,CAAA;AAEvF,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE1F,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAShF,+HAA+H;AAC/H,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED,iDAAiD;AACjD,eAAO,MAAM,YAAY,EAAE;IACzB,4DAA4D;IAC5D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACrD,gDAAgD;IAChD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA;IAC/D,GAAG,EAAE,OAAO,iBAAiB,CAAA;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACvD,mEAAmE;IACnE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CAelC,CAAA;AAUD,2IAA2I;AAC3I,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CA2BxD;AAcD,yFAAyF;AACzF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG/F;AAED,8FAA8F;AAC9F,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAKpI;AAED,0GAA0G;AAC1G,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG7E;AAED,mGAAmG;AACnG,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,CAAA;IACd,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sFAAsF;IACtF,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,8BAA8B;IAC9B,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC1B,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAKD,sGAAsG;AACtG,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAYvE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAazE;AA+BD,4IAA4I;AAC5I,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,0CAA0C;QAC1C,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,oCAAoC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,4CAA4C;QAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,KAAK,CAAC,EAAE,oBAAoB,CAAA;CAC7B;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxC,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAmB9F;AAED,6IAA6I;AAC7I,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAmB3K"}