@openagt/dashboard 0.10.0 → 0.12.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 (193) hide show
  1. package/README.md +1 -6
  2. package/dist/built-in.d.ts +18 -2
  3. package/dist/built-in.d.ts.map +1 -1
  4. package/dist/built-in.js +29 -6
  5. package/dist/built-in.js.map +1 -1
  6. package/dist/cli.d.ts +4 -10
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +11 -67
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client.d.ts +2 -1
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +3 -4
  13. package/dist/client.js.map +1 -1
  14. package/dist/clone-project.d.ts +69 -0
  15. package/dist/clone-project.d.ts.map +1 -0
  16. package/dist/clone-project.js +124 -0
  17. package/dist/clone-project.js.map +1 -0
  18. package/dist/daemon-runtime.d.ts +12 -12
  19. package/dist/daemon-runtime.d.ts.map +1 -1
  20. package/dist/daemon-runtime.js +96 -35
  21. package/dist/daemon-runtime.js.map +1 -1
  22. package/dist/daemon.d.ts +3 -14
  23. package/dist/daemon.d.ts.map +1 -1
  24. package/dist/daemon.js +15 -26
  25. package/dist/daemon.js.map +1 -1
  26. package/dist/dashboard/bridge-endpoints.d.ts +5 -5
  27. package/dist/dashboard/bridge-endpoints.js +5 -5
  28. package/dist/dashboard/http.d.ts +1 -1
  29. package/dist/dashboard/http.js +1 -1
  30. package/dist/dashboard/machine-call.d.ts +10 -0
  31. package/dist/dashboard/machine-call.d.ts.map +1 -0
  32. package/dist/dashboard/machine-call.js +86 -0
  33. package/dist/dashboard/machine-call.js.map +1 -0
  34. package/dist/dashboard/module-serve.d.ts +6 -0
  35. package/dist/dashboard/module-serve.d.ts.map +1 -1
  36. package/dist/dashboard/module-serve.js +24 -8
  37. package/dist/dashboard/module-serve.js.map +1 -1
  38. package/dist/dashboard/relay-endpoints.d.ts +26 -17
  39. package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
  40. package/dist/dashboard/relay-endpoints.js +70 -27
  41. package/dist/dashboard/relay-endpoints.js.map +1 -1
  42. package/dist/dashboard/remote-run.d.ts +77 -32
  43. package/dist/dashboard/remote-run.d.ts.map +1 -1
  44. package/dist/dashboard/remote-run.js +120 -42
  45. package/dist/dashboard/remote-run.js.map +1 -1
  46. package/dist/dashboard/rpc-serve.d.ts +28 -25
  47. package/dist/dashboard/rpc-serve.d.ts.map +1 -1
  48. package/dist/dashboard/rpc-serve.js +26 -22
  49. package/dist/dashboard/rpc-serve.js.map +1 -1
  50. package/dist/dashboard/screen.d.ts +53 -0
  51. package/dist/dashboard/screen.d.ts.map +1 -0
  52. package/dist/dashboard/screen.js +175 -0
  53. package/dist/dashboard/screen.js.map +1 -0
  54. package/dist/dashboard/server.d.ts +18 -19
  55. package/dist/dashboard/server.d.ts.map +1 -1
  56. package/dist/dashboard/server.js +57 -84
  57. package/dist/dashboard/server.js.map +1 -1
  58. package/dist/dashboard/types.d.ts +11 -16
  59. package/dist/dashboard/types.d.ts.map +1 -1
  60. package/dist/dashboard/web-start-endpoints.d.ts +2 -2
  61. package/dist/dashboard/web-start-endpoints.js +1 -1
  62. package/dist/dashboard-bundle/assets/main-BHMlP40v.css +2 -0
  63. package/dist/dashboard-bundle/assets/main-D0qZC1r-.js +140 -0
  64. package/dist/dashboard-bundle/assets/{module-gKz-ZvkG.js → module-ZjyA5WUg.js} +4 -4
  65. package/dist/dashboard-bundle/host/module.js +1 -1
  66. package/dist/dashboard-bundle/index.html +3 -3
  67. package/dist/dashboard-rpc/context.d.ts +4 -4
  68. package/dist/dashboard-rpc/context.js +5 -5
  69. package/dist/dashboard-rpc/context.js.map +1 -1
  70. package/dist/dashboard-rpc/control.d.ts +1 -1
  71. package/dist/dashboard-rpc/control.js +7 -7
  72. package/dist/dashboard-rpc/control.js.map +1 -1
  73. package/dist/dashboard-rpc/events.d.ts +1 -1
  74. package/dist/dashboard-rpc/events.js +1 -1
  75. package/dist/dashboard-rpc/index.d.ts +3 -3
  76. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  77. package/dist/dashboard-rpc/index.js +5 -5
  78. package/dist/dashboard-rpc/index.js.map +1 -1
  79. package/dist/dashboard-rpc/machines.d.ts +52 -0
  80. package/dist/dashboard-rpc/machines.d.ts.map +1 -0
  81. package/dist/dashboard-rpc/machines.js +82 -0
  82. package/dist/dashboard-rpc/machines.js.map +1 -0
  83. package/dist/dashboard-rpc/modules.d.ts +12 -4
  84. package/dist/dashboard-rpc/modules.d.ts.map +1 -1
  85. package/dist/dashboard-rpc/modules.js +24 -5
  86. package/dist/dashboard-rpc/modules.js.map +1 -1
  87. package/dist/dashboard-rpc/projects.d.ts +18 -0
  88. package/dist/dashboard-rpc/projects.d.ts.map +1 -1
  89. package/dist/dashboard-rpc/projects.js +27 -5
  90. package/dist/dashboard-rpc/projects.js.map +1 -1
  91. package/dist/dashboard-rpc/reads.d.ts +3 -4
  92. package/dist/dashboard-rpc/reads.d.ts.map +1 -1
  93. package/dist/dashboard-rpc/reads.js +5 -6
  94. package/dist/dashboard-rpc/reads.js.map +1 -1
  95. package/dist/dashboard-rpc/relay-agent.d.ts +3 -3
  96. package/dist/dashboard-rpc/relay-agent.js +3 -3
  97. package/dist/dashboard-rpc/relay-dispatch.d.ts +4 -4
  98. package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -1
  99. package/dist/dashboard-rpc/relay-dispatch.js +7 -7
  100. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  101. package/dist/dashboard-rpc/test-context.js +1 -1
  102. package/dist/dashboard-rpc/test-context.js.map +1 -1
  103. package/dist/events.d.ts +4 -3
  104. package/dist/events.d.ts.map +1 -1
  105. package/dist/loopback-host.d.ts +3 -5
  106. package/dist/loopback-host.d.ts.map +1 -1
  107. package/dist/loopback-host.js +3 -5
  108. package/dist/loopback-host.js.map +1 -1
  109. package/dist/machine-link.d.ts +21 -0
  110. package/dist/machine-link.d.ts.map +1 -0
  111. package/dist/machine-link.js +20 -0
  112. package/dist/machine-link.js.map +1 -0
  113. package/dist/module-server.d.ts +1 -1
  114. package/dist/module-types/dashboard/components/QrCode.d.ts +8 -0
  115. package/dist/module-types/dashboard/lib/draft-handoff.d.ts +5 -9
  116. package/dist/module-types/dashboard/module/index.d.ts +56 -4
  117. package/dist/module-types/dashboard/rpc/modules.d.ts +1 -0
  118. package/dist/module-types/src/built-in.d.ts +18 -2
  119. package/dist/module-types/src/client.d.ts +2 -1
  120. package/dist/module-types/src/clone-project.d.ts +68 -0
  121. package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +5 -5
  122. package/dist/module-types/src/dashboard/http.d.ts +1 -1
  123. package/dist/module-types/src/dashboard/machine-call.d.ts +9 -0
  124. package/dist/module-types/src/dashboard/module-serve.d.ts +6 -0
  125. package/dist/module-types/src/dashboard/remote-run.d.ts +77 -32
  126. package/dist/module-types/src/dashboard/rpc-serve.d.ts +28 -25
  127. package/dist/module-types/src/dashboard/types.d.ts +11 -16
  128. package/dist/module-types/src/dashboard-rpc/context.d.ts +4 -4
  129. package/dist/module-types/src/dashboard-rpc/control.d.ts +1 -1
  130. package/dist/module-types/src/dashboard-rpc/events.d.ts +1 -1
  131. package/dist/module-types/src/dashboard-rpc/index.d.ts +3 -3
  132. package/dist/module-types/src/dashboard-rpc/machines.d.ts +51 -0
  133. package/dist/module-types/src/dashboard-rpc/modules.d.ts +12 -4
  134. package/dist/module-types/src/dashboard-rpc/projects.d.ts +18 -0
  135. package/dist/module-types/src/dashboard-rpc/reads.d.ts +3 -4
  136. package/dist/module-types/src/dashboard-rpc/relay-agent.d.ts +3 -3
  137. package/dist/module-types/src/events.d.ts +4 -3
  138. package/dist/module-types/src/loopback-host.d.ts +3 -5
  139. package/dist/module-types/src/machine-link.d.ts +20 -0
  140. package/dist/module-types/src/pick-directory.d.ts +2 -0
  141. package/dist/module-types/src/project-modules.d.ts +12 -3
  142. package/dist/module-types/src/registry.d.ts +59 -16
  143. package/dist/module-types/src/repository-address.d.ts +22 -0
  144. package/dist/module-types/src/screens.d.ts +13 -0
  145. package/dist/module-types/src/store/agent-store.d.ts +2 -2
  146. package/dist/module-types/src/version.d.ts +1 -0
  147. package/dist/package-services.d.ts +27 -0
  148. package/dist/package-services.d.ts.map +1 -0
  149. package/dist/package-services.js +62 -0
  150. package/dist/package-services.js.map +1 -0
  151. package/dist/pick-directory.d.ts +2 -0
  152. package/dist/pick-directory.d.ts.map +1 -1
  153. package/dist/pick-directory.js +7 -1
  154. package/dist/pick-directory.js.map +1 -1
  155. package/dist/project-modules.d.ts +12 -3
  156. package/dist/project-modules.d.ts.map +1 -1
  157. package/dist/project-modules.js +20 -2
  158. package/dist/project-modules.js.map +1 -1
  159. package/dist/registry.d.ts +59 -16
  160. package/dist/registry.d.ts.map +1 -1
  161. package/dist/registry.js +91 -20
  162. package/dist/registry.js.map +1 -1
  163. package/dist/repository-address.d.ts +23 -0
  164. package/dist/repository-address.d.ts.map +1 -0
  165. package/dist/repository-address.js +38 -0
  166. package/dist/repository-address.js.map +1 -0
  167. package/dist/screens.d.ts +14 -0
  168. package/dist/screens.d.ts.map +1 -0
  169. package/dist/screens.js +40 -0
  170. package/dist/screens.js.map +1 -0
  171. package/dist/store/agent-store.d.ts +2 -2
  172. package/dist/store/agent-store.d.ts.map +1 -1
  173. package/dist/version.d.ts +2 -0
  174. package/dist/version.d.ts.map +1 -0
  175. package/dist/version.js +26 -0
  176. package/dist/version.js.map +1 -0
  177. package/package.json +15 -11
  178. package/dist/dashboard-bundle/assets/main-Q7JMdMJI.css +0 -2
  179. package/dist/dashboard-bundle/assets/main-fDZWGOub.js +0 -140
  180. package/dist/dashboard-rpc/devices.d.ts +0 -9
  181. package/dist/dashboard-rpc/devices.d.ts.map +0 -1
  182. package/dist/dashboard-rpc/devices.js +0 -12
  183. package/dist/dashboard-rpc/devices.js.map +0 -1
  184. package/dist/install.d.ts +0 -31
  185. package/dist/install.d.ts.map +0 -1
  186. package/dist/install.js +0 -54
  187. package/dist/install.js.map +0 -1
  188. package/dist/module-types/src/dashboard-rpc/devices.d.ts +0 -8
  189. package/dist/module-types/src/openagent-gitignore.d.ts +0 -11
  190. package/dist/openagent-gitignore.d.ts +0 -12
  191. package/dist/openagent-gitignore.d.ts.map +0 -1
  192. package/dist/openagent-gitignore.js +0 -19
  193. package/dist/openagent-gitignore.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pick-directory.d.ts","sourceRoot":"","sources":["../src/pick-directory.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,kIAAkI;AAClI,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAExE,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;AA2ElF;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,YAA+B,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAW9B"}
1
+ {"version":3,"file":"pick-directory.d.ts","sourceRoot":"","sources":["../src/pick-directory.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,kIAAkI;AAClI,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAExE,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;AA2ElF,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAG5H;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,YAA+B,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAW9B"}
@@ -61,6 +61,12 @@ const nodeDialogRunner = (command, args) => new Promise(done => {
61
61
  done({ code: error ? exitCode(error) : 0, stdout: String(stdout), stderr: String(stderr) });
62
62
  });
63
63
  });
64
+ /** Whether this computer has a screen a folder dialog can open on: asked before one is offered. */
65
+ export function canPickDirectory(platform = process.platform, env = process.env) {
66
+ if (platform === 'darwin' || platform === 'win32')
67
+ return true;
68
+ return platform === 'linux' && Boolean(env.DISPLAY || env.WAYLAND_DISPLAY);
69
+ }
64
70
  /**
65
71
  * Open the OS folder picker and wait for the user's choice.
66
72
  *
@@ -76,7 +82,7 @@ export async function pickDirectory(platform = process.platform, run = nodeDialo
76
82
  if (platform === 'linux') {
77
83
  // A dialog needs a screen to appear on, and a daemon started over SSH or inside a container has
78
84
  // none — saying so beats spawning a helper that can only fail.
79
- if (!env.DISPLAY && !env.WAYLAND_DISPLAY)
85
+ if (!canPickDirectory(platform, env))
80
86
  return { ok: false, error: 'The machine running OpenAgent has no desktop session, so no folder dialog can open there.' };
81
87
  return openDialog(linuxDialogs(env.HOME ?? '.'), run);
82
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pick-directory.js","sourceRoot":"","sources":["../src/pick-directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pick-directory.js","sourceRoot":"","sources":["../src/pick-directory.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ import { type PackageCommandResult } from '@openagt/agent-data';
4
4
  * `exports["./dashboard"]`, and optionally its server part, named by `exports["./server"]`.
5
5
  * Any dependency of the project that exports `./dashboard` is a module, whoever wrote it, and the
6
6
  * packages OpenAgent brings itself come the same way, for the projects that have them
7
- * (`built-in.ts`).
7
+ * (`built-in.ts`). A package that is this computer's is a module of no project: see
8
+ * {@link readComputerModules}.
8
9
  */
9
10
  export interface ProjectModule {
10
11
  /** The package's name. */
@@ -15,7 +16,7 @@ export interface ProjectModule {
15
16
  dir: string;
16
17
  /** The module's browser part's file name inside {@link dir}. */
17
18
  entry: string;
18
- /** The package's commands, by name, as absolute paths: what the module may run in this project. */
19
+ /** The package's commands, by name, as absolute paths: what the module may run, in this project or, for one of the computer's, in none. */
19
20
  bins: Record<string, string>;
20
21
  /** The module's server part, an absolute path inside the package, when it has one. */
21
22
  server?: string;
@@ -29,6 +30,13 @@ export interface ProjectModule {
29
30
  export declare function readProjectModules(root: string): Promise<ProjectModule[]>;
30
31
  /** The one module of this project that `name` names, or undefined. */
31
32
  export declare function findProjectModule(root: string, name: string): Promise<ProjectModule | undefined>;
33
+ /**
34
+ * The modules that are this computer's and no project's: the ones among the packages OpenAgent
35
+ * brings for the computer (`built-in.ts`). They are there with no project added. Sorted by name.
36
+ */
37
+ export declare function readComputerModules(): Promise<ProjectModule[]>;
38
+ /** The one module of this computer's that `name` names, or undefined. */
39
+ export declare function findComputerModule(name: string): Promise<ProjectModule | undefined>;
32
40
  /**
33
41
  * The file a module serves at `rel`, a path relative to its module's directory: its module, its
34
42
  * stylesheet, a chunk. `undefined` for a path that leaves that directory (symlinks resolved) or
@@ -43,7 +51,8 @@ export type ModuleCommandResult = PackageCommandResult;
43
51
  * (`npx @openagt/skill-logs@0.1`), so the module and the agent see the same thing and OpenAgent knows neither.
44
52
  *
45
53
  * `command` picks one of the package's commands; a package with exactly one needs none. The
46
- * command runs with Node (a package's commands are Node scripts), in the project root, never
54
+ * command runs with Node (a package's commands are Node scripts), in `root` (the project's, or
55
+ * the person's home folder for a module of the computer's), never
47
56
  * through a shell, bounded in time and output. Refused: a command the package does not have, too
48
57
  * many or too long arguments. A command that exits non-zero answers its last stderr line; one that
49
58
  * prints no JSON says so.
@@ -1 +1 @@
1
- {"version":3,"file":"project-modules.d.ts","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAuB,MAAM,qBAAqB,CAAA;AAGpH;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4GAA4G;IAC5G,GAAG,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AA4BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAO/E;AAgBD,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtG;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKhG;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAMtD;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
1
+ {"version":3,"file":"project-modules.d.ts","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAuB,MAAM,qBAAqB,CAAA;AAGpH;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4GAA4G;IAC5G,GAAG,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,2IAA2I;IAC3I,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AA4BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAO/E;AAgBD,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtG;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAOpE;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEzF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKhG;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAMtD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
@@ -1,7 +1,7 @@
1
1
  import { realpath, stat } from 'node:fs/promises';
2
2
  import { dirname, join, normalize, sep } from 'node:path';
3
3
  import { packageBins, runPackageCommand } from '@openagt/agent-data';
4
- import { builtInPackagesOf, ownPackages } from './built-in.js';
4
+ import { builtInPackagesOf, computerPackages, ownPackages } from './built-in.js';
5
5
  /** The file an `exports[key]` entry names: a plain path, or the first of `conditions` it has. */
6
6
  function exportedFile(exports, key, conditions) {
7
7
  if (!exports || typeof exports !== 'object' || Array.isArray(exports))
@@ -64,6 +64,23 @@ async function readModule({ name, dir: pkgDir, manifest: pkg }) {
64
64
  export async function findProjectModule(root, name) {
65
65
  return (await readProjectModules(root)).find(module => module.package === name);
66
66
  }
67
+ /**
68
+ * The modules that are this computer's and no project's: the ones among the packages OpenAgent
69
+ * brings for the computer (`built-in.ts`). They are there with no project added. Sorted by name.
70
+ */
71
+ export async function readComputerModules() {
72
+ const modules = [];
73
+ for (const pkg of await computerPackages()) {
74
+ const module = await readModule(pkg);
75
+ if (module)
76
+ modules.push(module);
77
+ }
78
+ return modules.sort((a, b) => a.package.localeCompare(b.package));
79
+ }
80
+ /** The one module of this computer's that `name` names, or undefined. */
81
+ export async function findComputerModule(name) {
82
+ return (await readComputerModules()).find(module => module.package === name);
83
+ }
67
84
  /**
68
85
  * The file a module serves at `rel`, a path relative to its module's directory: its module, its
69
86
  * stylesheet, a chunk. `undefined` for a path that leaves that directory (symlinks resolved) or
@@ -86,7 +103,8 @@ const MAX_ARG_LENGTH = 4096;
86
103
  * (`npx @openagt/skill-logs@0.1`), so the module and the agent see the same thing and OpenAgent knows neither.
87
104
  *
88
105
  * `command` picks one of the package's commands; a package with exactly one needs none. The
89
- * command runs with Node (a package's commands are Node scripts), in the project root, never
106
+ * command runs with Node (a package's commands are Node scripts), in `root` (the project's, or
107
+ * the person's home folder for a module of the computer's), never
90
108
  * through a shell, bounded in time and output. Refused: a command the package does not have, too
91
109
  * many or too long arguments. A command that exits non-zero answers its last stderr line; one that
92
110
  * prints no JSON says so.
@@ -1 +1 @@
1
- {"version":3,"file":"project-modules.js","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-modules.js","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ import { type PublishPick } from './publish-levels.js';
3
3
  * The multi-project registry (#390): the list of projects the user has
4
4
  * installed OpenAgent into, kept as a single JSON file `.bashrc`-style —
5
5
  * `$HOME/.openagent.json` — so it is the user's responsibility to re-create
6
- * per machine. The same file also holds the user's dashboard preferences (#410),
7
- * so the daemon owns one user file and the UI never needs localStorage.
6
+ * per machine. The same file also holds the user's dashboard preferences (#410)
7
+ * and the machines they saved, so the daemon owns one user file and the UI never
8
+ * needs localStorage.
8
9
  */
9
10
  /** One registered project. */
10
11
  export interface ProjectRecord {
@@ -15,6 +16,25 @@ export interface ProjectRecord {
15
16
  /** ISO timestamp the project was added. */
16
17
  addedAt: string;
17
18
  }
19
+ /**
20
+ * A saved machine: another computer running OpenAgent that a run can be sent to. Kept in this
21
+ * file, the person's own, so every browser on this computer shows the same machines and the
22
+ * key that reaches one never leaves the two machines.
23
+ */
24
+ export interface MachineRecord {
25
+ /** The machine's address, which is also what names it: saving the same address again replaces it. */
26
+ id: string;
27
+ /** The name the person gave it, or its host when they gave none. */
28
+ label: string;
29
+ /** Where its OpenAgent answers, as an origin (`http://studio.local:4201`). */
30
+ url: string;
31
+ /** This computer's own key on that machine. Never handed to a browser. */
32
+ key: string;
33
+ /** Where this computer was let in there, and where it takes itself out when the machine is removed. */
34
+ door: string;
35
+ /** What the machine's key is known by, when its link said: every call goes only to a machine that shows that key. */
36
+ pin?: string;
37
+ }
18
38
  /**
19
39
  * The dashboard's Global options (#410), persisted next to the project list so they
20
40
  * survive restarts without localStorage — the daemon reads/writes them, the SPA reads
@@ -104,11 +124,16 @@ export interface Registry {
104
124
  projects: ProjectRecord[];
105
125
  preferences: Preferences;
106
126
  /**
107
- * The shared daemon token (#1051): generated on the first non-loopback bind and reused after.
108
- * A top-level field, deliberately not a {@link Preferences} one, so it is never shipped to the
109
- * browser bundle. Absent on a loopback-only machine.
127
+ * The browser bridge's key (#1237): generated when the bridge is first switched on and reused
128
+ * after. A top-level field, deliberately not a {@link Preferences} one, so it is never shipped
129
+ * to the browser bundle. Absent on a machine that never had the bridge on.
110
130
  */
111
- daemonToken?: string;
131
+ bridgeToken?: string;
132
+ /**
133
+ * The saved machines. Top-level like {@link bridgeToken}, and for the same reason: each one
134
+ * carries a key, so the list is never part of what the browser is handed.
135
+ */
136
+ machines?: MachineRecord[];
112
137
  }
113
138
  /** A read/write handle for the user preferences, wired into the dashboard's context by the daemon. */
114
139
  export interface PreferencesStore {
@@ -122,7 +147,7 @@ export interface PreferencesStore {
122
147
  }
123
148
  /** The registry file name: a single file under `$XDG_CONFIG_HOME` (dotted under `$HOME`). */
124
149
  export declare const REGISTRY_FILE = "openagent.json";
125
- /** Owner read/write only: the file holds the daemon token (#1051). */
150
+ /** Owner read/write only: the file holds the bridge's key and the saved machines' keys. */
126
151
  export declare const REGISTRY_FILE_MODE = 384;
127
152
  /**
128
153
  * Deterministic, URL-safe id for a project path: the sanitized basename plus a
@@ -151,7 +176,7 @@ export interface RegistryFs {
151
176
  rename?(from: string, to: string): Promise<void>;
152
177
  /**
153
178
  * Narrow a file's permissions. Optional, and best-effort at the call site: this file holds the
154
- * daemon token (#1051), so it is written owner-only — but a
179
+ * bridge's key and the saved machines' keys, so it is written owner-only — but a
155
180
  * filesystem that cannot express that (Windows, a FAT volume) must not fail the write.
156
181
  */
157
182
  chmod?(path: string, mode: number): Promise<void>;
@@ -205,15 +230,33 @@ export declare function writePreferences(preferences: Preferences, fs?: Registry
205
230
  */
206
231
  export declare function patchPreferences(patch: Preferences, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<Preferences>;
207
232
  /**
208
- * The shared daemon token (#1051): read the persisted one, or generate + persist it now. Called
209
- * only on a non-loopback bind, so a loopback-only machine never grows one. Serialized with the
210
- * other mutators so two concurrent binds can't each write a different token. `base64url` of 32
211
- * random bytes: URL-safe, so it drops straight into a `?token=` without encoding.
233
+ * The browser bridge's key (#1237): read the persisted one, or generate + persist it now. Called
234
+ * only with the bridge switched on, so a machine that never had it on never grows one. Serialized
235
+ * with the other mutators so two concurrent starts can't each write a different key.
236
+ */
237
+ export declare function ensureBridgeToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string>;
238
+ /** The persisted bridge key, or `undefined` when none exists. A pure read: it never generates one. */
239
+ export declare function readBridgeToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
240
+ /** The saved machines, newest first. Forgiving like every read of this file: none on a bad file. */
241
+ export declare function listMachines(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord[]>;
242
+ /**
243
+ * Save a machine, newest first. One per address: saving an address again replaces its name and
244
+ * its key, which is how a machine whose key changed is fixed. Answers the stored record, and the
245
+ * records it took the place of (the one saved at that address before, the oldest past the cap):
246
+ * each still holds a key the caller takes out of its machine.
212
247
  */
213
- export declare function ensureDaemonToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string>;
214
- /** The persisted daemon token (#1051), or `undefined` when none exists. A pure read, so a process
215
- * that only prints the reachable URL never generates one. */
216
- export declare function readDaemonToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
248
+ export declare function addMachine(machine: {
249
+ url: string;
250
+ key: string;
251
+ door: string;
252
+ pin?: string;
253
+ label?: string;
254
+ }, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<{
255
+ record: MachineRecord;
256
+ displaced: MachineRecord[];
257
+ }>;
258
+ /** Take a saved machine off the list, by id. Answers the one that was there. */
259
+ export declare function removeMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
217
260
  /** A {@link PreferencesStore} bound to the real registry file, wired by the daemon so the
218
261
  * dashboard's preferences RPCs read/write the user's home file.
219
262
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/registry.js CHANGED
@@ -3,6 +3,8 @@ import { randomBytes } from 'node:crypto';
3
3
  import { isDriverName } from './driver-names.js';
4
4
  import { isPublishPick } from './publish-levels.js';
5
5
  import { nodeFs } from './node-fs.js';
6
+ /** The cap on saved machines and on a name's length, so a hand-edited file cannot bloat. */
7
+ const MACHINE_LIMITS = { count: 50, label: 60 };
6
8
  /** The cap on saved custom presets, and the per-field lengths — enough for real prompts, bounded
7
9
  * so a hand-edited or hostile registry can't bloat the home file. */
8
10
  const CUSTOM_PRESET_LIMITS = { count: 30, label: 80, prompt: 20_000 };
@@ -10,7 +12,7 @@ const CUSTOM_PRESET_LIMITS = { count: 30, label: 80, prompt: 20_000 };
10
12
  const START_FROM_LIMIT = 200;
11
13
  /** The registry file name: a single file under `$XDG_CONFIG_HOME` (dotted under `$HOME`). */
12
14
  export const REGISTRY_FILE = 'openagent.json';
13
- /** Owner read/write only: the file holds the daemon token (#1051). */
15
+ /** Owner read/write only: the file holds the bridge's key and the saved machines' keys. */
14
16
  export const REGISTRY_FILE_MODE = 0o600;
15
17
  /**
16
18
  * Deterministic, URL-safe id for a project path: the sanitized basename plus a
@@ -166,6 +168,27 @@ export function sanitizeCustomPresets(value) {
166
168
  }
167
169
  return out;
168
170
  }
171
+ /** Keep well-formed machines, one per address (first wins), names and count capped. */
172
+ function sanitizeMachines(value) {
173
+ if (!Array.isArray(value))
174
+ return [];
175
+ const machines = [];
176
+ const seen = new Set();
177
+ for (const raw of value) {
178
+ if (machines.length >= MACHINE_LIMITS.count)
179
+ break;
180
+ if (typeof raw !== 'object' || raw === null)
181
+ continue;
182
+ const { label, url, key, door, pin } = raw;
183
+ if (typeof label !== 'string' || typeof url !== 'string' || typeof key !== 'string' || typeof door !== 'string')
184
+ continue;
185
+ if (!url || !key || !door || seen.has(url))
186
+ continue;
187
+ seen.add(url);
188
+ machines.push({ id: url, label: label.trim().slice(0, MACHINE_LIMITS.label) || url, url, key, door, ...(typeof pin === 'string' && pin ? { pin } : {}) });
189
+ }
190
+ return machines;
191
+ }
169
192
  /**
170
193
  * Read the whole registry. Forgiving: a missing / unreadable / malformed file — or one in a shape
171
194
  * this no longer writes — yields an empty registry, never throws. Projects are deduped by resolved
@@ -184,11 +207,13 @@ export async function readRegistry(fs = nodeRegistryFs(), env = process.env) {
184
207
  return empty;
185
208
  const obj = parsed;
186
209
  const projects = Array.isArray(obj.projects) ? dedupeProjects(obj.projects) : [];
210
+ const machines = sanitizeMachines(obj.machines);
187
211
  return {
188
212
  projects,
189
213
  preferences: sanitizePreferences(obj.preferences),
190
- // #1051: kept only as a non-empty string, so a hand-edited registry can't smuggle a junk token.
191
- ...(typeof obj.daemonToken === 'string' && obj.daemonToken ? { daemonToken: obj.daemonToken } : {}),
214
+ // Kept only as a non-empty string, so a hand-edited registry can't smuggle a junk key.
215
+ ...(typeof obj.bridgeToken === 'string' && obj.bridgeToken ? { bridgeToken: obj.bridgeToken } : {}),
216
+ ...(machines.length ? { machines } : {}),
192
217
  };
193
218
  }
194
219
  /**
@@ -201,18 +226,19 @@ export async function readRegistry(fs = nodeRegistryFs(), env = process.env) {
201
226
  * now only ever damages the temp file. The temp is left behind on failure rather than swept up:
202
227
  * one stray file is the cheaper half of that trade.
203
228
  *
204
- * Written owner-only (#1095): the file carries the daemon token, so a default-umask 0644 in a
229
+ * Written owner-only (#1095): the file carries the bridge's key and the saved machines' keys, so a default-umask 0644 in a
205
230
  * shared home would hand it to every other account on the machine.
206
231
  * The mode is set on the temp file, before the rename — narrowing after it would leave a window
207
232
  * where the real path is readable. Best-effort: a filesystem with no permission bits still writes.
208
233
  */
209
234
  async function writeRegistry(registry, fs, env) {
210
235
  const file = registryPath(env);
211
- const { projects, preferences, daemonToken } = registry;
236
+ const { projects, preferences, bridgeToken, machines } = registry;
212
237
  const contents = {
213
238
  projects,
214
239
  preferences,
215
- ...(daemonToken ? { daemonToken } : {}),
240
+ ...(bridgeToken ? { bridgeToken } : {}),
241
+ ...(machines?.length ? { machines } : {}),
216
242
  };
217
243
  const json = JSON.stringify(contents, null, 2);
218
244
  await fs.mkdir(dirname(file));
@@ -316,25 +342,70 @@ export async function patchPreferences(patch, fs = nodeRegistryFs(), env = proce
316
342
  });
317
343
  }
318
344
  /**
319
- * The shared daemon token (#1051): read the persisted one, or generate + persist it now. Called
320
- * only on a non-loopback bind, so a loopback-only machine never grows one. Serialized with the
321
- * other mutators so two concurrent binds can't each write a different token. `base64url` of 32
322
- * random bytes: URL-safe, so it drops straight into a `?token=` without encoding.
345
+ * The browser bridge's key (#1237): read the persisted one, or generate + persist it now. Called
346
+ * only with the bridge switched on, so a machine that never had it on never grows one. Serialized
347
+ * with the other mutators so two concurrent starts can't each write a different key.
348
+ */
349
+ export async function ensureBridgeToken(fs = nodeRegistryFs(), env = process.env) {
350
+ return serialize(async () => {
351
+ const registry = await readRegistry(fs, env);
352
+ if (registry.bridgeToken)
353
+ return registry.bridgeToken;
354
+ const bridgeToken = randomBytes(32).toString('base64url');
355
+ await writeRegistry({ ...registry, bridgeToken }, fs, env);
356
+ return bridgeToken;
357
+ });
358
+ }
359
+ /** The persisted bridge key, or `undefined` when none exists. A pure read: it never generates one. */
360
+ export async function readBridgeToken(fs = nodeRegistryFs(), env = process.env) {
361
+ return (await readRegistry(fs, env)).bridgeToken;
362
+ }
363
+ /** The saved machines, newest first. Forgiving like every read of this file: none on a bad file. */
364
+ export async function listMachines(fs = nodeRegistryFs(), env = process.env) {
365
+ return (await readRegistry(fs, env)).machines ?? [];
366
+ }
367
+ /**
368
+ * Save a machine, newest first. One per address: saving an address again replaces its name and
369
+ * its key, which is how a machine whose key changed is fixed. Answers the stored record, and the
370
+ * records it took the place of (the one saved at that address before, the oldest past the cap):
371
+ * each still holds a key the caller takes out of its machine.
323
372
  */
324
- export async function ensureDaemonToken(fs = nodeRegistryFs(), env = process.env) {
373
+ export async function addMachine(machine, fs = nodeRegistryFs(), env = process.env) {
325
374
  return serialize(async () => {
326
375
  const registry = await readRegistry(fs, env);
327
- if (registry.daemonToken)
328
- return registry.daemonToken;
329
- const daemonToken = randomBytes(32).toString('base64url');
330
- await writeRegistry({ ...registry, daemonToken }, fs, env);
331
- return daemonToken;
376
+ const record = {
377
+ id: machine.url,
378
+ label: machine.label?.trim().slice(0, MACHINE_LIMITS.label) || hostOf(machine.url),
379
+ url: machine.url,
380
+ key: machine.key,
381
+ door: machine.door,
382
+ ...(machine.pin ? { pin: machine.pin } : {}),
383
+ };
384
+ const before = registry.machines ?? [];
385
+ const machines = [record, ...before.filter(saved => saved.id !== record.id)].slice(0, MACHINE_LIMITS.count);
386
+ await writeRegistry({ ...registry, machines }, fs, env);
387
+ return { record, displaced: before.filter(saved => !machines.includes(saved)) };
332
388
  });
333
389
  }
334
- /** The persisted daemon token (#1051), or `undefined` when none exists. A pure read, so a process
335
- * that only prints the reachable URL never generates one. */
336
- export async function readDaemonToken(fs = nodeRegistryFs(), env = process.env) {
337
- return (await readRegistry(fs, env)).daemonToken;
390
+ /** Take a saved machine off the list, by id. Answers the one that was there. */
391
+ export async function removeMachine(id, fs = nodeRegistryFs(), env = process.env) {
392
+ return serialize(async () => {
393
+ const registry = await readRegistry(fs, env);
394
+ const removed = (registry.machines ?? []).find(saved => saved.id === id);
395
+ if (!removed)
396
+ return undefined;
397
+ await writeRegistry({ ...registry, machines: (registry.machines ?? []).filter(saved => saved.id !== id) }, fs, env);
398
+ return removed;
399
+ });
400
+ }
401
+ /** An address's host and port (`192.168.1.5:4200`): a machine's name when the person gave none. */
402
+ function hostOf(url) {
403
+ try {
404
+ return new URL(url).host;
405
+ }
406
+ catch {
407
+ return url;
408
+ }
338
409
  }
339
410
  /** A {@link PreferencesStore} bound to the real registry file, wired by the daemon so the
340
411
  * dashboard's preferences RPCs read/write the user's home file.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type GitRunner } from '@openagt/agent-data';
2
+ /**
3
+ * The one name a project has on every machine: where its repository was cloned from, as
4
+ * `host/path` (`github.com/me/shop`). A project's id is made from its folder's path, which is
5
+ * another path on another machine, so a run sent to a machine names its project by this.
6
+ *
7
+ * The same repository reads the same whichever way it was cloned: the scheme, a user before the
8
+ * host, a port, a trailing `.git` or slash are dropped, and letters are lowered, since the git
9
+ * hosts match names without regard to case. Not an address at all (a path on this disk, a
10
+ * `file:` address) is none.
11
+ *
12
+ * What it does not see through: a host that serves the two ways under two names or two paths
13
+ * (`ssh.github.com`, Azure DevOps). Such a project reads as two, and the other machine says it
14
+ * does not have it.
15
+ */
16
+ export declare function addressOfRemote(remote: string): string | undefined;
17
+ /**
18
+ * The address of the repository at `cwd`: its `origin` remote, the one every push goes to. A
19
+ * project with no `origin`, or one that is a folder on this disk, has none and runs on this
20
+ * machine only.
21
+ */
22
+ export declare function repositoryAddress(cwd: string, git?: GitRunner): Promise<string | undefined>;
23
+ //# sourceMappingURL=repository-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-address.d.ts","sourceRoot":"","sources":["../src/repository-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEnE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAElH"}
@@ -0,0 +1,38 @@
1
+ import { nodeGitRunner } from '@openagt/agent-data';
2
+ /**
3
+ * The one name a project has on every machine: where its repository was cloned from, as
4
+ * `host/path` (`github.com/me/shop`). A project's id is made from its folder's path, which is
5
+ * another path on another machine, so a run sent to a machine names its project by this.
6
+ *
7
+ * The same repository reads the same whichever way it was cloned: the scheme, a user before the
8
+ * host, a port, a trailing `.git` or slash are dropped, and letters are lowered, since the git
9
+ * hosts match names without regard to case. Not an address at all (a path on this disk, a
10
+ * `file:` address) is none.
11
+ *
12
+ * What it does not see through: a host that serves the two ways under two names or two paths
13
+ * (`ssh.github.com`, Azure DevOps). Such a project reads as two, and the other machine says it
14
+ * does not have it.
15
+ */
16
+ export function addressOfRemote(remote) {
17
+ const url = remote.trim().replace(/[?#].*$/, '');
18
+ // `git@host:path`, the scp-like form: no scheme, a colon before the path.
19
+ const scp = /^(?:[^/\s]*@)?([^:/\s@]+):(?!\/\/)(.+)$/.exec(url);
20
+ const web = scp ? null : /^([a-z][a-z0-9+.-]*):\/\/(?:[^/\s]*@)?([^:/\s@]+)(?::\d+)?\/(.+)$/i.exec(url);
21
+ if (web?.[1].toLowerCase() === 'file')
22
+ return undefined;
23
+ const [host, rest] = scp ? [scp[1], scp[2]] : web ? [web[2], web[3]] : [];
24
+ // One letter before a colon is a drive (`C:\repo`), a folder on this disk.
25
+ if (host === undefined || rest === undefined || host.length < 2)
26
+ return undefined;
27
+ const path = rest.replace(/\/+$/, '').replace(/\.git$/i, '').replace(/^\/+|\/+$/g, '').toLowerCase();
28
+ return path ? `${host.toLowerCase()}/${path}` : undefined;
29
+ }
30
+ /**
31
+ * The address of the repository at `cwd`: its `origin` remote, the one every push goes to. A
32
+ * project with no `origin`, or one that is a folder on this disk, has none and runs on this
33
+ * machine only.
34
+ */
35
+ export async function repositoryAddress(cwd, git = nodeGitRunner()) {
36
+ return git(['remote', 'get-url', 'origin'], cwd).then(addressOfRemote, () => undefined);
37
+ }
38
+ //# sourceMappingURL=repository-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-address.js","sourceRoot":"","sources":["../src/repository-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAA;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAChD,0EAA0E;IAC1E,MAAM,GAAG,GAAG,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oEAAoE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,2EAA2E;IAC3E,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACpG,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,GAAG,GAAc,aAAa,EAAE;IACnF,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACzF,CAAC"}