@openagt/dashboard 0.37.0 → 0.38.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 (158) hide show
  1. package/dist/client.d.ts +1 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +1 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/computer-name.d.ts +3 -0
  6. package/dist/computer-name.d.ts.map +1 -0
  7. package/dist/computer-name.js +6 -0
  8. package/dist/computer-name.js.map +1 -0
  9. package/dist/daemon-runtime.d.ts.map +1 -1
  10. package/dist/daemon-runtime.js +37 -6
  11. package/dist/daemon-runtime.js.map +1 -1
  12. package/dist/daemon.d.ts.map +1 -1
  13. package/dist/daemon.js +4 -0
  14. package/dist/daemon.js.map +1 -1
  15. package/dist/dashboard/compress.d.ts +11 -0
  16. package/dist/dashboard/compress.d.ts.map +1 -0
  17. package/dist/dashboard/compress.js +40 -0
  18. package/dist/dashboard/compress.js.map +1 -0
  19. package/dist/dashboard/copied-logins.d.ts +54 -0
  20. package/dist/dashboard/copied-logins.d.ts.map +1 -0
  21. package/dist/dashboard/copied-logins.js +60 -0
  22. package/dist/dashboard/copied-logins.js.map +1 -0
  23. package/dist/dashboard/copy-logins.d.ts +5 -1
  24. package/dist/dashboard/copy-logins.d.ts.map +1 -1
  25. package/dist/dashboard/copy-logins.js +9 -3
  26. package/dist/dashboard/copy-logins.js.map +1 -1
  27. package/dist/dashboard/git-hosts.d.ts +2 -0
  28. package/dist/dashboard/git-hosts.d.ts.map +1 -1
  29. package/dist/dashboard/git-hosts.js +1 -1
  30. package/dist/dashboard/git-hosts.js.map +1 -1
  31. package/dist/dashboard/logins-sync.d.ts +146 -0
  32. package/dist/dashboard/logins-sync.d.ts.map +1 -0
  33. package/dist/dashboard/logins-sync.js +344 -0
  34. package/dist/dashboard/logins-sync.js.map +1 -0
  35. package/dist/dashboard/machine-runs.d.ts +78 -0
  36. package/dist/dashboard/machine-runs.d.ts.map +1 -0
  37. package/dist/dashboard/machine-runs.js +154 -0
  38. package/dist/dashboard/machine-runs.js.map +1 -0
  39. package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
  40. package/dist/dashboard/relay-endpoints.js +5 -2
  41. package/dist/dashboard/relay-endpoints.js.map +1 -1
  42. package/dist/dashboard/remote-run.d.ts +17 -3
  43. package/dist/dashboard/remote-run.d.ts.map +1 -1
  44. package/dist/dashboard/remote-run.js +31 -5
  45. package/dist/dashboard/remote-run.js.map +1 -1
  46. package/dist/dashboard/rpc-serve.d.ts +3 -0
  47. package/dist/dashboard/rpc-serve.d.ts.map +1 -1
  48. package/dist/dashboard/rpc-serve.js +8 -9
  49. package/dist/dashboard/rpc-serve.js.map +1 -1
  50. package/dist/dashboard/static.d.ts.map +1 -1
  51. package/dist/dashboard/static.js +4 -2
  52. package/dist/dashboard/static.js.map +1 -1
  53. package/dist/dashboard-bundle/assets/main-BrPlt--h.js +149 -0
  54. package/dist/dashboard-bundle/assets/main-DgwPb5zO.css +2 -0
  55. package/dist/dashboard-bundle/assets/module-D0SUS0dF.js +14 -0
  56. package/dist/dashboard-bundle/host/module.js +1 -1
  57. package/dist/dashboard-bundle/index.html +5 -4
  58. package/dist/dashboard-rpc/accounts.d.ts +17 -1
  59. package/dist/dashboard-rpc/accounts.d.ts.map +1 -1
  60. package/dist/dashboard-rpc/accounts.js +46 -8
  61. package/dist/dashboard-rpc/accounts.js.map +1 -1
  62. package/dist/dashboard-rpc/context.js +1 -1
  63. package/dist/dashboard-rpc/context.js.map +1 -1
  64. package/dist/dashboard-rpc/copied-logins.d.ts +49 -0
  65. package/dist/dashboard-rpc/copied-logins.d.ts.map +1 -0
  66. package/dist/dashboard-rpc/copied-logins.js +179 -0
  67. package/dist/dashboard-rpc/copied-logins.js.map +1 -0
  68. package/dist/dashboard-rpc/index.d.ts +4 -1
  69. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  70. package/dist/dashboard-rpc/index.js +8 -2
  71. package/dist/dashboard-rpc/index.js.map +1 -1
  72. package/dist/dashboard-rpc/logins.d.ts +18 -0
  73. package/dist/dashboard-rpc/logins.d.ts.map +1 -1
  74. package/dist/dashboard-rpc/logins.js +51 -7
  75. package/dist/dashboard-rpc/logins.js.map +1 -1
  76. package/dist/dashboard-rpc/machines.d.ts +7 -2
  77. package/dist/dashboard-rpc/machines.d.ts.map +1 -1
  78. package/dist/dashboard-rpc/machines.js +7 -5
  79. package/dist/dashboard-rpc/machines.js.map +1 -1
  80. package/dist/dashboard-rpc/people.d.ts +16 -0
  81. package/dist/dashboard-rpc/people.d.ts.map +1 -0
  82. package/dist/dashboard-rpc/people.js +32 -0
  83. package/dist/dashboard-rpc/people.js.map +1 -0
  84. package/dist/dashboard-rpc/reads.d.ts +20 -1
  85. package/dist/dashboard-rpc/reads.d.ts.map +1 -1
  86. package/dist/dashboard-rpc/reads.js +74 -8
  87. package/dist/dashboard-rpc/reads.js.map +1 -1
  88. package/dist/dashboard-rpc/relay-dispatch.js +2 -2
  89. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  90. package/dist/dashboard-rpc/server-logins.d.ts +22 -0
  91. package/dist/dashboard-rpc/server-logins.d.ts.map +1 -0
  92. package/dist/dashboard-rpc/server-logins.js +26 -0
  93. package/dist/dashboard-rpc/server-logins.js.map +1 -0
  94. package/dist/dashboard-rpc/test-context.js +1 -1
  95. package/dist/dashboard-rpc/test-context.js.map +1 -1
  96. package/dist/health.d.ts +20 -0
  97. package/dist/health.d.ts.map +1 -0
  98. package/dist/health.js +98 -0
  99. package/dist/health.js.map +1 -0
  100. package/dist/index.d.ts +1 -0
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/module-types/dashboard/components/FilterChips.d.ts +12 -0
  103. package/dist/module-types/dashboard/components/Page.d.ts +12 -0
  104. package/dist/module-types/dashboard/components/SidebarToggle.d.ts +4 -0
  105. package/dist/module-types/dashboard/components/StatTile.d.ts +15 -0
  106. package/dist/module-types/dashboard/components/ui/sheet.d.ts +10 -0
  107. package/dist/module-types/dashboard/components/ui/sidebar.d.ts +71 -0
  108. package/dist/module-types/dashboard/lib/use-mobile.d.ts +4 -0
  109. package/dist/module-types/dashboard/lib/use-modules.d.ts +3 -1
  110. package/dist/module-types/dashboard/module/index.d.ts +51 -1
  111. package/dist/module-types/src/client.d.ts +1 -0
  112. package/dist/module-types/src/computer-name.d.ts +2 -0
  113. package/dist/module-types/src/dashboard/compress.d.ts +10 -0
  114. package/dist/module-types/src/dashboard/copied-logins.d.ts +53 -0
  115. package/dist/module-types/src/dashboard/git-hosts.d.ts +2 -0
  116. package/dist/module-types/src/dashboard/logins-sync.d.ts +145 -0
  117. package/dist/module-types/src/dashboard/machine-runs.d.ts +77 -0
  118. package/dist/module-types/src/dashboard/remote-run.d.ts +17 -3
  119. package/dist/module-types/src/dashboard/rpc-serve.d.ts +3 -0
  120. package/dist/module-types/src/dashboard-rpc/accounts.d.ts +17 -1
  121. package/dist/module-types/src/dashboard-rpc/copied-logins.d.ts +48 -0
  122. package/dist/module-types/src/dashboard-rpc/index.d.ts +4 -1
  123. package/dist/module-types/src/dashboard-rpc/logins.d.ts +18 -0
  124. package/dist/module-types/src/dashboard-rpc/machines.d.ts +7 -2
  125. package/dist/module-types/src/dashboard-rpc/people.d.ts +15 -0
  126. package/dist/module-types/src/dashboard-rpc/reads.d.ts +20 -1
  127. package/dist/module-types/src/dashboard-rpc/server-logins.d.ts +21 -0
  128. package/dist/module-types/src/health.d.ts +19 -0
  129. package/dist/module-types/src/index.d.ts +1 -0
  130. package/dist/module-types/src/overview-layout.d.ts +37 -0
  131. package/dist/module-types/src/registry.d.ts +14 -0
  132. package/dist/module-types/src/store/agent-store.d.ts +15 -1
  133. package/dist/module-types/src/store/git-host.d.ts +6 -0
  134. package/dist/module-types/src/store/runs.d.ts +3 -1
  135. package/dist/module.css +1 -1
  136. package/dist/overview-layout.d.ts +38 -0
  137. package/dist/overview-layout.d.ts.map +1 -0
  138. package/dist/overview-layout.js +61 -0
  139. package/dist/overview-layout.js.map +1 -0
  140. package/dist/registry.d.ts +14 -0
  141. package/dist/registry.d.ts.map +1 -1
  142. package/dist/registry.js +31 -2
  143. package/dist/registry.js.map +1 -1
  144. package/dist/store/agent-store.d.ts +15 -1
  145. package/dist/store/agent-store.d.ts.map +1 -1
  146. package/dist/store/agent-store.js.map +1 -1
  147. package/dist/store/git-host.d.ts +6 -0
  148. package/dist/store/git-host.d.ts.map +1 -1
  149. package/dist/store/git-host.js +14 -0
  150. package/dist/store/git-host.js.map +1 -1
  151. package/dist/store/runs.d.ts +3 -1
  152. package/dist/store/runs.d.ts.map +1 -1
  153. package/dist/store/runs.js +1 -1
  154. package/dist/store/runs.js.map +1 -1
  155. package/package.json +24 -24
  156. package/dist/dashboard-bundle/assets/main-B_YIbzfX.js +0 -148
  157. package/dist/dashboard-bundle/assets/main-COZtHuZ-.css +0 -2
  158. package/dist/dashboard-bundle/assets/module-B_KMN8r0.js +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"copy-logins.js","sourceRoot":"","sources":["../../src/dashboard/copy-logins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copy-logins.js","sourceRoot":"","sources":["../../src/dashboard/copy-logins.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export interface GitHostAccount {
7
7
  runs: boolean;
8
8
  /** Whether the tool could use it when asked. */
9
9
  ok: boolean;
10
+ /** On a server: the computer of the person's whose login it is. */
11
+ from?: string;
10
12
  }
11
13
  /** What a git host's package answers of it. */
12
14
  export interface GitHostProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"git-hosts.d.ts","sourceRoot":"","sources":["../../src/dashboard/git-hosts.ts"],"names":[],"mappings":"AAGA,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,QAAQ,EAAE,OAAO,CAAA;IACjB,oCAAoC;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,gDAAgD;IAChD,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,mFAAmF;IACnF,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,+HAA+H;AAC/H,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU7D;AAMD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CA4BzE"}
1
+ {"version":3,"file":"git-hosts.d.ts","sourceRoot":"","sources":["../../src/dashboard/git-hosts.ts"],"names":[],"mappings":"AAGA,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,QAAQ,EAAE,OAAO,CAAA;IACjB,oCAAoC;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,gDAAgD;IAChD,EAAE,EAAE,OAAO,CAAA;IACX,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,mFAAmF;IACnF,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,+HAA+H;AAC/H,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU7D;AAMD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CA4BzE"}
@@ -1,5 +1,5 @@
1
1
  // A git host as its package answers for it (`<command> accounts`), read off what the package
2
- // printed, and the host a project's remote is on: what Settings › Git hosts is drawn from.
2
+ // printed, and the host a project's remote is on: what the git hosts of Settings › Accounts are drawn from.
3
3
  /** The host of a git remote's address: `git@host:path`, `ssh://user@host/path`, `https://host/path`. None for a local path. */
4
4
  export function remoteHost(remote) {
5
5
  const url = remote.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"git-hosts.js","sourceRoot":"","sources":["../../src/dashboard/git-hosts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-hosts.js","sourceRoot":"","sources":["../../src/dashboard/git-hosts.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,4GAA4G;AAoC5G,+HAA+H;AAC/H,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IACzB,MAAM,GAAG,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;QAClC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAiC,CAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACrF,MAAM,QAAQ,GAAqB,EAAE,CAAA;IACrC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,GAA8B,CAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;IACtI,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAkD,CAAA;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IACjD,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,cAAc;QACxD,4EAA4E;QAC5E,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI;QACrC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;QACpC,QAAQ;QACR,GAAG,CAAC,OAAO,SAAS,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxL,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAA;AACH,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { type Mint } from '@openagt/agent-driver-claude';
2
+ import { type CodexLogin, type CodexLoginOptions } from '@openagt/agent-driver-codex';
3
+ import { type MachineRecord, type Preferences } from '../registry.js';
4
+ import { type MachineAccess } from './remote-run.js';
5
+ import { type CopiedKind, type UsageWindow } from './copied-logins.js';
6
+ /**
7
+ * A computer's side of a server that uses its logins (`copied-logins.ts` is the server's side).
8
+ * Once the person said so for a server of their own, this computer keeps the server's logins as
9
+ * its own: every account it is logged in to, a coding agent's or a git host's, gets a login of the
10
+ * server's own there, and a login that changes here changes there.
11
+ *
12
+ * A login is never shared by both: each computer renews its own, and a login renewed on one
13
+ * computer would log the other one out. What can go as it is goes as it is, with nothing to
14
+ * press: a git host's token, which its host never renews, and a Claude account added here, which
15
+ * is a login made for a computer nobody sits at already. What cannot is made anew for the server,
16
+ * in this computer's browser, with one press of the person's: their own Claude login (Claude
17
+ * Code's `setup-token`), and any Codex account (a sign-in of its own). Nothing here is logged out.
18
+ *
19
+ * What the person no longer has here stays there until they say: kept, or taken off. A login
20
+ * taken off there is deleted there and ends nothing.
21
+ *
22
+ * The person's settings follow the same way: what they change here is changed there, the next
23
+ * minute. A setting changed on the server's own page stays, until the same one changes here.
24
+ */
25
+ /** One of this computer's accounts, as a server gets it. */
26
+ export interface LocalLogin {
27
+ kind: CopiedKind;
28
+ host?: string;
29
+ /** Which account it is here: `own` for the agent's own login, else its name here, or its login at the git host. */
30
+ source: string;
31
+ name: string;
32
+ /** Who the account is: another one under the same `source` is a switch. */
33
+ who: string;
34
+ /** A git host's account this computer's runs use. */
35
+ runs?: boolean;
36
+ /** The login as it is, for one that can go as it is; none for one made anew for the server. */
37
+ secret?: () => Promise<string>;
38
+ }
39
+ /** How one of this computer's accounts stands on a server. */
40
+ export interface LoginThere {
41
+ kind: CopiedKind;
42
+ host?: string;
43
+ source: string;
44
+ name: string;
45
+ /**
46
+ * `there`: the server has it. `allow`: it waits for the person's press, which makes the server a
47
+ * login of its own. `switched`: the server has another account of this one's, which the
48
+ * person no longer is here: the press makes this one's. `failed`: it did not get there.
49
+ */
50
+ state: 'there' | 'allow' | 'switched' | 'failed';
51
+ /** `switched`: the account the server has. */
52
+ was?: string;
53
+ error?: string;
54
+ }
55
+ /** One of this computer's servers, and how its logins stand there. */
56
+ export interface ServerLogins {
57
+ machineId: string;
58
+ label: string;
59
+ /** The person said the server uses this computer's logins. */
60
+ on: boolean;
61
+ /** It answered when last asked. */
62
+ reachable: boolean;
63
+ logins: LoginThere[];
64
+ /** What the server has of this computer's that this computer no longer has: the person keeps it there, or takes it off. */
65
+ left: {
66
+ kind: CopiedKind;
67
+ host?: string;
68
+ source: string;
69
+ name: string;
70
+ }[];
71
+ /** The press under way: the login being made, and the page it signs in at. */
72
+ allowing?: {
73
+ name: string;
74
+ url?: string;
75
+ };
76
+ /** Why the last press stopped. */
77
+ failed?: string;
78
+ }
79
+ /** What the sync reaches for, swapped in tests. */
80
+ export declare const syncWiring: {
81
+ /** The environment the daemon was started with: whose saved machines, whose logins. */
82
+ env: NodeJS.ProcessEnv;
83
+ machines: () => Promise<MachineRecord[]>;
84
+ /** Whether a machine is a server, and answers. */
85
+ facts: (machine: MachineAccess) => Promise<{
86
+ server?: true;
87
+ version?: string;
88
+ }>;
89
+ call: (machine: MachineAccess, fn: string, args: unknown[]) => Promise<{
90
+ ok: true;
91
+ ret: unknown;
92
+ } | {
93
+ ok: false;
94
+ error: string;
95
+ }>;
96
+ /** This computer's own logins. */
97
+ local: () => Promise<LocalLogin[]>;
98
+ /** How full each of this computer's accounts is, as its own page reads it. */
99
+ usage: () => Promise<{
100
+ kind: CopiedKind;
101
+ source: string;
102
+ windows: UsageWindow[];
103
+ at: number;
104
+ }[]>;
105
+ /** This computer's settings. */
106
+ preferences: () => Promise<Preferences>;
107
+ mint: Mint;
108
+ loginCodex: (opts: CodexLoginOptions) => Promise<CodexLogin>;
109
+ computer: () => string;
110
+ };
111
+ /** The person's own Claude login here, as Claude Code keeps who it is: none when it is logged in to no account. */
112
+ export declare function claudeOwnAccount(env?: NodeJS.ProcessEnv): {
113
+ name: string;
114
+ who: string;
115
+ } | undefined;
116
+ /** Every account this computer is logged in to: its coding agents' and its git hosts'. */
117
+ export declare function localLogins(env?: NodeJS.ProcessEnv): Promise<LocalLogin[]>;
118
+ /** Bring every server that uses this computer's logins up to them, and note how each stands; a saved machine that is no server of the person's is left out. */
119
+ export declare function syncLogins(): Promise<ServerLogins[]>;
120
+ /** The servers as last read, with the press under way on each: read anew when none were read yet. */
121
+ export declare function serverLogins(): Promise<ServerLogins[]>;
122
+ /**
123
+ * The person's press for a server: each of this computer's accounts that waits for it gets a
124
+ * login of the server's own, made in this computer's browser, one after the other. Answers at
125
+ * once; how it goes is in {@link serverLogins}.
126
+ */
127
+ export declare function allowLogins(machineId: string): Promise<{
128
+ ok: true;
129
+ } | {
130
+ ok: false;
131
+ error: string;
132
+ }>;
133
+ /** Keep, or take off, a login the server has of this computer's that this computer no longer has. */
134
+ export declare function settleLeft(machineId: string, which: {
135
+ kind: CopiedKind;
136
+ host?: string;
137
+ source: string;
138
+ }, keep: boolean): Promise<{
139
+ ok: true;
140
+ } | {
141
+ ok: false;
142
+ error: string;
143
+ }>;
144
+ /** Keep every server that uses this computer's logins up to them, from now on: a minute apart, the first a moment after the start. */
145
+ export declare function startLoginsSync(env: NodeJS.ProcessEnv): () => void;
146
+ //# sourceMappingURL=logins-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logins-sync.d.ts","sourceRoot":"","sources":["../../src/dashboard/logins-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,344 @@
1
+ import { chmodSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
2
+ import { mkdtemp, readFile, rm } from 'node:fs/promises';
3
+ import { homedir, tmpdir } from 'node:os';
4
+ import { computerName } from '../computer-name.js';
5
+ import { dirname, join } from 'node:path';
6
+ import { readAccounts, OWN_NAME } from '@openagt/agent-driver';
7
+ import { claudeAccountsPath, mintClaude } from '@openagt/agent-driver-claude';
8
+ import { codexAccountsPath, codexWho, loginCodex, personalCodexHome, accountFolder } from '@openagt/agent-driver-codex';
9
+ import { listMachines, readPreferences } from '../registry.js';
10
+ import { machineCall, remoteFacts } from './remote-run.js';
11
+ import { markOf } from './machine-logins.js';
12
+ import { isKind, isWord } from './copied-logins.js';
13
+ import { onAgentAccounts } from '../dashboard-rpc/accounts.js';
14
+ import { gitHostPackages, onGitHosts } from '../dashboard-rpc/logins.js';
15
+ /** What the sync reaches for, swapped in tests. */
16
+ export const syncWiring = {
17
+ env: process.env,
18
+ machines: () => listMachines(undefined, syncWiring.env),
19
+ facts: machine => remoteFacts(machine),
20
+ call: (machine, fn, args) => machineCall(machine, fn, args),
21
+ local: () => localLogins(syncWiring.env),
22
+ usage: ownUsage,
23
+ preferences: () => readPreferences(undefined, syncWiring.env),
24
+ mint: mintClaude,
25
+ loginCodex,
26
+ computer: computerName,
27
+ };
28
+ /** The person's own Claude login here, as Claude Code keeps who it is: none when it is logged in to no account. */
29
+ export function claudeOwnAccount(env = process.env) {
30
+ try {
31
+ const account = JSON.parse(readFileSync(join(env['CLAUDE_CONFIG_DIR'] ?? env['HOME'] ?? homedir(), '.claude.json'), 'utf8')).oauthAccount;
32
+ const who = [account?.['accountUuid'], account?.['emailAddress']].find((value) => typeof value === 'string' && value.trim() !== '');
33
+ if (who === undefined)
34
+ return undefined;
35
+ const name = [account?.['displayName'], account?.['emailAddress']].find((value) => typeof value === 'string' && value.trim() !== '');
36
+ return { name: name?.trim() ?? 'Claude', who };
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }
42
+ /** The git hosts this computer's runs work with, with the accounts their tools know, as Settings shows them. */
43
+ async function gitHostAccounts() {
44
+ return (await onGitHosts()).hosts.flatMap(row => (row.provider ? [{ host: row.host, accounts: row.provider.accounts }] : []));
45
+ }
46
+ /** An account's token at a git host, as its package hands it out. */
47
+ async function gitToken(host, login) {
48
+ const said = await gitHostPackages.run(host, ['token', '--user', login]);
49
+ if (!said.ok)
50
+ throw new Error(said.error);
51
+ const token = said.output?.token;
52
+ if (typeof token !== 'string' || !token)
53
+ throw new Error(`${host} gave no token for ${login}`);
54
+ return token;
55
+ }
56
+ /**
57
+ * How full each of this computer's Claude accounts is, as its own page reads it: what a server's
58
+ * page shows of them, where a login made for the server cannot read it. A server reads Codex's itself.
59
+ */
60
+ async function ownUsage() {
61
+ const view = await onAgentAccounts('claude');
62
+ return view.accounts.filter(row => row.windows.length > 0).map(row => ({ kind: 'claude', source: row.own ? 'own' : row.id, windows: row.windows, at: row.asOf ?? view.now }));
63
+ }
64
+ /** Every account this computer is logged in to: its coding agents' and its git hosts'. */
65
+ export async function localLogins(env = process.env) {
66
+ const logins = [];
67
+ for (const account of readAccounts(claudeAccountsPath(env))) {
68
+ if (account.login === undefined) {
69
+ const own = claudeOwnAccount(env);
70
+ if (own)
71
+ logins.push({ kind: 'claude', source: 'own', name: account.name === OWN_NAME ? own.name : account.name, who: own.who });
72
+ }
73
+ else {
74
+ const login = account.login;
75
+ logins.push({ kind: 'claude', source: account.name, name: account.name, who: markOf(login), secret: async () => login });
76
+ }
77
+ }
78
+ for (const account of readAccounts(codexAccountsPath(env))) {
79
+ const own = account.login === undefined;
80
+ const who = await codexWho(own ? personalCodexHome(env) : accountFolder(account, env)).catch(() => ({}));
81
+ if (who.key === undefined)
82
+ continue;
83
+ logins.push({ kind: 'codex', source: own ? 'own' : account.name, name: own && account.name === OWN_NAME ? (who.name ?? 'Codex') : account.name, who: who.key });
84
+ }
85
+ for (const { host, accounts } of await gitHostAccounts().catch(() => [])) {
86
+ for (const account of accounts) {
87
+ if (!account.ok)
88
+ continue;
89
+ logins.push({ kind: 'git', host, source: account.login, name: account.login, who: account.login, runs: account.runs, secret: () => gitToken(host, account.login) });
90
+ }
91
+ }
92
+ return logins;
93
+ }
94
+ /** The same account of this computer's, here and there. */
95
+ const same = (a, b) => a.kind === b.kind && (a.host ?? '') === (b.host ?? '') && a.source === b.source;
96
+ /** What a server says it keeps, as far as it reads as such: it is another computer's data. */
97
+ function readThere(ret) {
98
+ const { ok, logins, error } = (ret && typeof ret === 'object' ? ret : {});
99
+ if (ok !== true)
100
+ return typeof error === 'string' ? error : 'The server answered something else than its logins.';
101
+ if (!Array.isArray(logins))
102
+ return [];
103
+ return logins.flatMap(entry => {
104
+ const { kind, host, source, name, who, from, kept } = (entry ?? {});
105
+ if (!isKind(kind) || !isWord(source) || !isWord(name) || !isWord(who) || !isWord(from))
106
+ return [];
107
+ return [{ kind, ...(isWord(host) ? { host } : {}), source, name, who, from, ...(kept === true ? { kept: true } : {}) }];
108
+ });
109
+ }
110
+ /** What a call to the server came to: done, or why not in its words. */
111
+ function outcome(said) {
112
+ if (!said.ok)
113
+ return said;
114
+ const { ok, error } = (said.ret && typeof said.ret === 'object' ? said.ret : {});
115
+ return ok === true ? { ok: true } : { ok: false, error: typeof error === 'string' ? error : 'The server answered something else than expected.' };
116
+ }
117
+ const access = (machine) => ({ url: machine.url, key: machine.key, ...(machine.pin ? { pin: machine.pin } : {}) });
118
+ /** The servers as last read, by machine, and the press under way on one. */
119
+ const last = new Map();
120
+ const allowing = new Map();
121
+ const pressFailed = new Map();
122
+ /**
123
+ * Bring one server's logins up to this computer's: what can go as it is is handed over when the
124
+ * server lacks it or has another; how full each account is goes with it. Answers how they stand.
125
+ */
126
+ async function syncServer(machine, local, usage) {
127
+ const base = { machineId: machine.id, label: machine.label, on: machine.logins === true, ...(allowing.get(machine.id) ? { allowing: allowing.get(machine.id) } : {}), ...(pressFailed.has(machine.id) ? { failed: pressFailed.get(machine.id) } : {}) };
128
+ const unreached = { ...base, reachable: false, logins: [], left: [] };
129
+ if (!machine.logins)
130
+ return { ...base, reachable: true, logins: [], left: [] };
131
+ const said = await syncWiring.call(access(machine), 'onCopiedLogins', []);
132
+ if (!said.ok)
133
+ return unreached;
134
+ const there = readThere(said.ret);
135
+ if (typeof there === 'string')
136
+ return { ...unreached, reachable: true, failed: there };
137
+ const me = syncWiring.computer();
138
+ const mine = there.filter(login => login.from === me && !login.kept);
139
+ const logins = [];
140
+ for (const login of local) {
141
+ const has = mine.find(other => same(other, login));
142
+ const row = { kind: login.kind, ...(login.host !== undefined ? { host: login.host } : {}), source: login.source, name: login.name };
143
+ if (has?.who === login.who) {
144
+ logins.push({ ...row, state: 'there' });
145
+ continue;
146
+ }
147
+ if (!login.secret) {
148
+ logins.push({ ...row, state: has ? 'switched' : 'allow', ...(has ? { was: has.name } : {}) });
149
+ continue;
150
+ }
151
+ const secret = await login.secret().then((value) => ({ ok: true, value }), (err) => ({ ok: false, error: err instanceof Error ? err.message : String(err) }));
152
+ const given = secret.ok ? await hand(machine, login, secret.value) : secret;
153
+ logins.push(given.ok ? { ...row, state: 'there' } : { ...row, state: 'failed', error: given.error });
154
+ }
155
+ const left = mine.filter(login => !local.some(other => same(other, login))).map(({ kind, host, source, name }) => ({ kind, ...(host !== undefined ? { host } : {}), source, name }));
156
+ const readings = usage.filter(reading => logins.some(login => login.state === 'there' && login.kind === reading.kind && login.source === reading.source));
157
+ if (readings.length > 0)
158
+ await syncWiring.call(access(machine), 'sendCopiedUsage', [readings]);
159
+ await followSettings(machine);
160
+ return { ...base, reachable: true, logins, left };
161
+ }
162
+ /**
163
+ * The settings that are the person's wherever they open OpenAgent: how it looks, what it tells
164
+ * them, what a run starts with. Never this computer's own: its editor, its browser bridge, where
165
+ * its projects' runs start from.
166
+ */
167
+ const FOLLOWING = ['theme', 'notifyBrowser', 'notifyNewActivity', 'notifyHumanIntervention', 'driver', 'model', 'effort', 'publish', 'postMergeCleanup', 'nameRuns', 'showThinking', 'recentsSort', 'customPresets', 'onboardingDismissed', 'overviewLayouts'];
168
+ /** Where the settings each server was last sent are kept: beside OpenAgent's other files. */
169
+ function sentPath() {
170
+ const env = syncWiring.env;
171
+ return env['XDG_CONFIG_HOME'] ? join(env['XDG_CONFIG_HOME'], 'openagent-sent-settings.json') : join(env['HOME'] ?? homedir(), '.openagent-sent-settings.json');
172
+ }
173
+ function readSent() {
174
+ try {
175
+ const sent = JSON.parse(readFileSync(sentPath(), 'utf8'));
176
+ return sent && typeof sent === 'object' && !Array.isArray(sent) ? sent : {};
177
+ }
178
+ catch {
179
+ return {};
180
+ }
181
+ }
182
+ function writeSent(sent) {
183
+ const path = sentPath();
184
+ mkdirSync(dirname(path), { recursive: true });
185
+ const next = `${path}.${process.pid}.new`;
186
+ writeFileSync(next, `${JSON.stringify(sent, null, 2)}\n`, { mode: 0o600 });
187
+ chmodSync(next, 0o600);
188
+ renameSync(next, path);
189
+ }
190
+ /**
191
+ * Send a server the settings changed here since it was last sent them, and only those: one the
192
+ * person changed on the server's own page stays there until the same one changes here. One no
193
+ * longer set here is emptied there; a switch left unset keeps what it is.
194
+ */
195
+ async function followSettings(machine) {
196
+ const now = await syncWiring.preferences().catch(() => undefined);
197
+ if (!now)
198
+ return;
199
+ const mine = Object.fromEntries(FOLLOWING.flatMap(key => (now[key] !== undefined ? [[key, now[key]]] : [])));
200
+ const sent = readSent();
201
+ const before = sent[machine.id];
202
+ const patch = {};
203
+ for (const key of FOLLOWING) {
204
+ const value = mine[key];
205
+ if (before !== undefined && JSON.stringify(value) === JSON.stringify(before[key]))
206
+ continue;
207
+ if (value !== undefined)
208
+ patch[key] = value;
209
+ else if (before?.[key] !== undefined && typeof before[key] !== 'boolean')
210
+ patch[key] = Array.isArray(before[key]) ? [] : '';
211
+ }
212
+ if (Object.keys(patch).length === 0) {
213
+ if (before === undefined)
214
+ writeSent({ ...sent, [machine.id]: mine });
215
+ return;
216
+ }
217
+ if (outcome(await syncWiring.call(access(machine), 'patchPreferences', [patch])).ok)
218
+ writeSent({ ...readSent(), [machine.id]: mine });
219
+ }
220
+ /** Hand one login to a server: what it is, and the login itself. */
221
+ async function hand(machine, login, secret) {
222
+ const given = { kind: login.kind, ...(login.host !== undefined ? { host: login.host } : {}), source: login.source, name: login.name, who: login.who, from: syncWiring.computer(), ...(login.runs ? { runs: true } : {}) };
223
+ return outcome(await syncWiring.call(access(machine), 'sendCopiedLogin', [given, secret]));
224
+ }
225
+ /** Bring every server that uses this computer's logins up to them, and note how each stands; a saved machine that is no server of the person's is left out. */
226
+ export async function syncLogins() {
227
+ const machines = (await syncWiring.machines()).filter(machine => machine.owner === undefined);
228
+ const servers = [];
229
+ let local;
230
+ let usage;
231
+ for (const machine of machines) {
232
+ if (!(await syncWiring.facts(access(machine))).server) {
233
+ last.delete(machine.id);
234
+ continue;
235
+ }
236
+ local ??= await syncWiring.local();
237
+ usage ??= machine.logins ? await syncWiring.usage().catch(() => []) : undefined;
238
+ const server = await syncServer(machine, local, usage ?? []);
239
+ last.set(machine.id, server);
240
+ servers.push(server);
241
+ }
242
+ for (const id of last.keys())
243
+ if (!machines.some(machine => machine.id === id))
244
+ last.delete(id);
245
+ return servers;
246
+ }
247
+ /** The servers as last read, with the press under way on each: read anew when none were read yet. */
248
+ export async function serverLogins() {
249
+ if (last.size === 0)
250
+ await syncLogins();
251
+ return [...last.values()].map(server => {
252
+ const press = allowing.get(server.machineId);
253
+ const failed = pressFailed.get(server.machineId);
254
+ const { allowing: _was, failed: _old, ...rest } = server;
255
+ return { ...rest, ...(press ? { allowing: press } : {}), ...(failed !== undefined ? { failed } : {}) };
256
+ });
257
+ }
258
+ /** Make the server a login of its own for one account of this computer's: in this computer's browser, with the person's press. */
259
+ async function makeFor(machine, login) {
260
+ const press = (url) => void allowing.set(machine.id, { name: login.name, ...(url !== undefined ? { url } : {}) });
261
+ press();
262
+ if (login.kind === 'claude') {
263
+ const minted = await syncWiring.mint();
264
+ if (!minted.ok)
265
+ return minted;
266
+ return hand(machine, login, minted.login);
267
+ }
268
+ const dir = await mkdtemp(join(tmpdir(), 'openagent-codex-'));
269
+ try {
270
+ const signed = await syncWiring.loginCodex({ dir, onUrl: url => press(url) });
271
+ if (!signed.ok)
272
+ return signed;
273
+ if (signed.who.key !== login.who)
274
+ return { ok: false, error: `The browser signed in to ${signed.who.name ?? 'another account'}, not ${login.name}. Copy the link into a private window, and sign in to ${login.name} there.` };
275
+ return hand(machine, login, await readFile(join(dir, signed.login, 'auth.json'), 'utf8'));
276
+ }
277
+ finally {
278
+ await rm(dir, { recursive: true, force: true });
279
+ }
280
+ }
281
+ /**
282
+ * The person's press for a server: each of this computer's accounts that waits for it gets a
283
+ * login of the server's own, made in this computer's browser, one after the other. Answers at
284
+ * once; how it goes is in {@link serverLogins}.
285
+ */
286
+ export async function allowLogins(machineId) {
287
+ const machine = (await syncWiring.machines()).find(saved => saved.id === machineId);
288
+ if (!machine?.logins)
289
+ return { ok: false, error: 'That server does not use this computer\'s logins.' };
290
+ if (allowing.has(machineId))
291
+ return { ok: false, error: 'Logins are being made for it: finish in the browser, or wait for it to end.' };
292
+ const waiting = (last.get(machineId)?.logins ?? []).filter(login => login.state === 'allow' || login.state === 'switched');
293
+ const local = (await syncWiring.local()).filter(login => waiting.some(w => same(w, login)));
294
+ if (local.length === 0)
295
+ return { ok: true };
296
+ pressFailed.delete(machineId);
297
+ allowing.set(machineId, { name: local[0].name });
298
+ void (async () => {
299
+ try {
300
+ for (const login of local) {
301
+ const made = await makeFor(machine, login);
302
+ if (!made.ok) {
303
+ pressFailed.set(machineId, `${login.name}: ${made.error}`);
304
+ break;
305
+ }
306
+ }
307
+ }
308
+ catch (err) {
309
+ pressFailed.set(machineId, err instanceof Error ? err.message : String(err));
310
+ }
311
+ finally {
312
+ allowing.delete(machineId);
313
+ await syncLogins().catch(() => []);
314
+ }
315
+ })();
316
+ return { ok: true };
317
+ }
318
+ /** Keep, or take off, a login the server has of this computer's that this computer no longer has. */
319
+ export async function settleLeft(machineId, which, keep) {
320
+ const machine = (await syncWiring.machines()).find(saved => saved.id === machineId);
321
+ if (!machine)
322
+ return { ok: false, error: 'That server is no longer saved.' };
323
+ const done = outcome(await syncWiring.call(access(machine), keep ? 'sendKeepCopiedLogin' : 'sendForgetCopiedLogin', [{ kind: which.kind, ...(which.host !== undefined ? { host: which.host } : {}), source: which.source }]));
324
+ await syncLogins().catch(() => []);
325
+ return done;
326
+ }
327
+ /** How often the servers are brought up to this computer's logins. */
328
+ const EVERY_MS = 60_000;
329
+ /** Keep every server that uses this computer's logins up to them, from now on: a minute apart, the first a moment after the start. */
330
+ export function startLoginsSync(env) {
331
+ syncWiring.env = env;
332
+ let stopped = false;
333
+ const run = () => void syncLogins().catch(() => []);
334
+ const first = setTimeout(run, 5_000);
335
+ const timer = setInterval(() => !stopped && run(), EVERY_MS);
336
+ first.unref();
337
+ timer.unref();
338
+ return () => {
339
+ stopped = true;
340
+ clearTimeout(first);
341
+ clearInterval(timer);
342
+ };
343
+ }
344
+ //# sourceMappingURL=logins-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logins-sync.js","sourceRoot":"","sources":["../../src/dashboard/logins-sync.ts"],"names":[],"mappings":"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"}