@openagt/dashboard 0.40.0 → 0.42.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 (145) hide show
  1. package/dist/built-in.d.ts +5 -0
  2. package/dist/built-in.d.ts.map +1 -1
  3. package/dist/built-in.js +7 -0
  4. package/dist/built-in.js.map +1 -1
  5. package/dist/clone-project.d.ts +11 -0
  6. package/dist/clone-project.d.ts.map +1 -1
  7. package/dist/clone-project.js +38 -12
  8. package/dist/clone-project.js.map +1 -1
  9. package/dist/daemon-runtime.d.ts.map +1 -1
  10. package/dist/daemon-runtime.js +216 -63
  11. package/dist/daemon-runtime.js.map +1 -1
  12. package/dist/daemon.d.ts.map +1 -1
  13. package/dist/daemon.js +6 -2
  14. package/dist/daemon.js.map +1 -1
  15. package/dist/dashboard/activity.d.ts +2 -2
  16. package/dist/dashboard/activity.d.ts.map +1 -1
  17. package/dist/dashboard/activity.js +2 -2
  18. package/dist/dashboard/activity.js.map +1 -1
  19. package/dist/dashboard/computers-sync.d.ts +104 -0
  20. package/dist/dashboard/computers-sync.d.ts.map +1 -0
  21. package/dist/dashboard/computers-sync.js +179 -0
  22. package/dist/dashboard/computers-sync.js.map +1 -0
  23. package/dist/dashboard/elsewhere.d.ts +92 -0
  24. package/dist/dashboard/elsewhere.d.ts.map +1 -0
  25. package/dist/dashboard/elsewhere.js +155 -0
  26. package/dist/dashboard/elsewhere.js.map +1 -0
  27. package/dist/dashboard/interventions.d.ts +6 -0
  28. package/dist/dashboard/interventions.d.ts.map +1 -1
  29. package/dist/dashboard/interventions.js.map +1 -1
  30. package/dist/dashboard/machine-interventions.d.ts +52 -0
  31. package/dist/dashboard/machine-interventions.d.ts.map +1 -0
  32. package/dist/dashboard/machine-interventions.js +117 -0
  33. package/dist/dashboard/machine-interventions.js.map +1 -0
  34. package/dist/dashboard/models.d.ts +2 -1
  35. package/dist/dashboard/models.d.ts.map +1 -1
  36. package/dist/dashboard/models.js +1 -1
  37. package/dist/dashboard/models.js.map +1 -1
  38. package/dist/dashboard/module-serve.d.ts +6 -0
  39. package/dist/dashboard/module-serve.d.ts.map +1 -1
  40. package/dist/dashboard/module-serve.js +11 -1
  41. package/dist/dashboard/module-serve.js.map +1 -1
  42. package/dist/dashboard/overview.d.ts +20 -5
  43. package/dist/dashboard/overview.d.ts.map +1 -1
  44. package/dist/dashboard/overview.js +28 -8
  45. package/dist/dashboard/overview.js.map +1 -1
  46. package/dist/dashboard/projects.d.ts +11 -2
  47. package/dist/dashboard/projects.d.ts.map +1 -1
  48. package/dist/dashboard/projects.js +3 -2
  49. package/dist/dashboard/projects.js.map +1 -1
  50. package/dist/dashboard/relay-endpoints.d.ts +2 -0
  51. package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
  52. package/dist/dashboard/relay-endpoints.js +4 -2
  53. package/dist/dashboard/relay-endpoints.js.map +1 -1
  54. package/dist/dashboard/rpc-serve.d.ts +21 -1
  55. package/dist/dashboard/rpc-serve.d.ts.map +1 -1
  56. package/dist/dashboard/rpc-serve.js +9 -3
  57. package/dist/dashboard/rpc-serve.js.map +1 -1
  58. package/dist/dashboard/server.d.ts +2 -0
  59. package/dist/dashboard/server.d.ts.map +1 -1
  60. package/dist/dashboard/server.js +6 -4
  61. package/dist/dashboard/server.js.map +1 -1
  62. package/dist/dashboard/types.d.ts +3 -1
  63. package/dist/dashboard/types.d.ts.map +1 -1
  64. package/dist/dashboard-bundle/assets/host/module-BWXIkXv5.js +1 -0
  65. package/dist/dashboard-bundle/assets/main-CA55XzlS.js +148 -0
  66. package/dist/dashboard-bundle/assets/main-Ca6eaXat.css +2 -0
  67. package/dist/dashboard-bundle/assets/{module-C8GDq0nb.js → module-CXKv8UKd.js} +5 -5
  68. package/dist/dashboard-bundle/index.html +4 -4
  69. package/dist/dashboard-rpc/computers.d.ts +27 -0
  70. package/dist/dashboard-rpc/computers.d.ts.map +1 -0
  71. package/dist/dashboard-rpc/computers.js +90 -0
  72. package/dist/dashboard-rpc/computers.js.map +1 -0
  73. package/dist/dashboard-rpc/context.js +1 -1
  74. package/dist/dashboard-rpc/context.js.map +1 -1
  75. package/dist/dashboard-rpc/index.d.ts +1 -1
  76. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  77. package/dist/dashboard-rpc/index.js +1 -1
  78. package/dist/dashboard-rpc/index.js.map +1 -1
  79. package/dist/dashboard-rpc/machines.d.ts +22 -3
  80. package/dist/dashboard-rpc/machines.d.ts.map +1 -1
  81. package/dist/dashboard-rpc/machines.js +102 -22
  82. package/dist/dashboard-rpc/machines.js.map +1 -1
  83. package/dist/dashboard-rpc/modules.d.ts.map +1 -1
  84. package/dist/dashboard-rpc/modules.js +19 -3
  85. package/dist/dashboard-rpc/modules.js.map +1 -1
  86. package/dist/dashboard-rpc/projects.d.ts +14 -0
  87. package/dist/dashboard-rpc/projects.d.ts.map +1 -1
  88. package/dist/dashboard-rpc/projects.js +48 -5
  89. package/dist/dashboard-rpc/projects.js.map +1 -1
  90. package/dist/dashboard-rpc/reads.d.ts +6 -0
  91. package/dist/dashboard-rpc/reads.d.ts.map +1 -1
  92. package/dist/dashboard-rpc/reads.js +48 -14
  93. package/dist/dashboard-rpc/reads.js.map +1 -1
  94. package/dist/dashboard-rpc/relay-dispatch.d.ts +12 -0
  95. package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -1
  96. package/dist/dashboard-rpc/relay-dispatch.js +44 -8
  97. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  98. package/dist/dashboard-rpc/runs-changed.d.ts.map +1 -1
  99. package/dist/dashboard-rpc/runs-changed.js +14 -6
  100. package/dist/dashboard-rpc/runs-changed.js.map +1 -1
  101. package/dist/dashboard-rpc/test-context.d.ts +3 -1
  102. package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
  103. package/dist/dashboard-rpc/test-context.js +13 -1
  104. package/dist/dashboard-rpc/test-context.js.map +1 -1
  105. package/dist/module-types/dashboard/components/MachineMark.d.ts +14 -0
  106. package/dist/module-types/dashboard/lib/models.d.ts +11 -1
  107. package/dist/module-types/dashboard/rpc/machines.d.ts +35 -0
  108. package/dist/module-types/src/built-in.d.ts +5 -0
  109. package/dist/module-types/src/clone-project.d.ts +11 -0
  110. package/dist/module-types/src/dashboard/activity.d.ts +2 -2
  111. package/dist/module-types/src/dashboard/computers-sync.d.ts +103 -0
  112. package/dist/module-types/src/dashboard/elsewhere.d.ts +91 -0
  113. package/dist/module-types/src/dashboard/interventions.d.ts +6 -0
  114. package/dist/module-types/src/dashboard/machine-interventions.d.ts +51 -0
  115. package/dist/module-types/src/dashboard/models.d.ts +2 -1
  116. package/dist/module-types/src/dashboard/module-serve.d.ts +6 -0
  117. package/dist/module-types/src/dashboard/overview.d.ts +20 -5
  118. package/dist/module-types/src/dashboard/projects.d.ts +11 -2
  119. package/dist/module-types/src/dashboard/rpc-serve.d.ts +21 -1
  120. package/dist/module-types/src/dashboard/types.d.ts +3 -1
  121. package/dist/module-types/src/dashboard-rpc/computers.d.ts +26 -0
  122. package/dist/module-types/src/dashboard-rpc/index.d.ts +1 -1
  123. package/dist/module-types/src/dashboard-rpc/machines.d.ts +22 -3
  124. package/dist/module-types/src/dashboard-rpc/projects.d.ts +14 -0
  125. package/dist/module-types/src/dashboard-rpc/reads.d.ts +6 -0
  126. package/dist/module-types/src/dashboard-rpc/relay-dispatch.d.ts +28 -0
  127. package/dist/module-types/src/project-modules.d.ts +19 -0
  128. package/dist/module-types/src/registry.d.ts +28 -0
  129. package/dist/module-types/src/repository-address.d.ts +6 -0
  130. package/dist/project-modules.d.ts +19 -0
  131. package/dist/project-modules.d.ts.map +1 -1
  132. package/dist/project-modules.js +42 -2
  133. package/dist/project-modules.js.map +1 -1
  134. package/dist/registry.d.ts +28 -0
  135. package/dist/registry.d.ts.map +1 -1
  136. package/dist/registry.js +60 -4
  137. package/dist/registry.js.map +1 -1
  138. package/dist/repository-address.d.ts +6 -0
  139. package/dist/repository-address.d.ts.map +1 -1
  140. package/dist/repository-address.js +9 -0
  141. package/dist/repository-address.js.map +1 -1
  142. package/package.json +20 -20
  143. package/dist/dashboard-bundle/assets/host/module-JRfd42hf.js +0 -1
  144. package/dist/dashboard-bundle/assets/main-BhC5aJ1h.css +0 -2
  145. package/dist/dashboard-bundle/assets/main-Bo8Pao9A.js +0 -148
@@ -39,6 +39,11 @@ export declare function builtInPackages(): Promise<ProjectPackage[]>;
39
39
  export declare function builtInPackagesOf(root: string): Promise<ProjectPackage[]>;
40
40
  /** The project's own installed packages, less the names OpenAgent brings itself. */
41
41
  export declare function ownPackages(root: string): Promise<ProjectPackage[]>;
42
+ /**
43
+ * Every package OpenAgent brings to projects, the picked ones too, whatever a project holds: the
44
+ * copy a module's page is served from on a computer where no project of its own has the module.
45
+ */
46
+ export declare function broughtToProjects(): Promise<ProjectPackage[]>;
42
47
  /** The packages that are this computer's: see {@link COMPUTER_PACKAGES}. */
43
48
  export declare function computerPackages(): Promise<ProjectPackage[]>;
44
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA+I,CAAA;AAE9L;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAyB,CAAA;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;AA2BD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAElE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAElE;AAED,0IAA0I;AAC1I,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAMxD;AAED,wIAAwI;AACxI,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEtG;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQpE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBtE"}
1
+ {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA+I,CAAA;AAE9L;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAyB,CAAA;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;AA2BD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAEnE;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAElE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAElE;AAED,0IAA0I;AAC1I,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAMxD;AAED,wIAAwI;AACxI,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEtG;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQpE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBtE"}
package/dist/built-in.js CHANGED
@@ -102,6 +102,13 @@ async function holdsSkill(root, name) {
102
102
  export async function ownPackages(root) {
103
103
  return projectPackages(root, OWN_PACKAGE_NAMES);
104
104
  }
105
+ /**
106
+ * Every package OpenAgent brings to projects, the picked ones too, whatever a project holds: the
107
+ * copy a module's page is served from on a computer where no project of its own has the module.
108
+ */
109
+ export async function broughtToProjects() {
110
+ return (await (resolved ??= resolveOwn())).filter(pkg => pkg.of !== 'the computer');
111
+ }
105
112
  /** The packages that are this computer's: see {@link COMPUTER_PACKAGES}. */
106
113
  export async function computerPackages() {
107
114
  return (await (resolved ??= resolveOwn())).filter(pkg => pkg.of === 'the computer');
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
@@ -66,4 +66,15 @@ export interface CloneOptions {
66
66
  * folder a second ask could take for the project.
67
67
  */
68
68
  export declare function cloneProject(typed: string, opts?: CloneOptions): Promise<Cloned>;
69
+ /**
70
+ * Whether this computer's logins read the repository at the address, asked of its host without
71
+ * cloning anything: what a run of a project cloned here first would hit before it starts. The
72
+ * answer is the clone's own words when they cannot.
73
+ */
74
+ export declare function canRead(typed: string, opts?: CloneOptions, subject?: string): Promise<{
75
+ ok: true;
76
+ } | {
77
+ ok: false;
78
+ error: string;
79
+ }>;
69
80
  //# sourceMappingURL=clone-project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone-project.d.ts","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AAEH,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;CACb;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,WAAW,GAAG,SAAS,CAkB5F;AAED,0GAA0G;AAC1G,MAAM,MAAM,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/F,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AA4BxK,oHAAoH;AACpH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGtI;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mGAAmG;IACnG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACrE;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF"}
1
+ {"version":3,"file":"clone-project.d.ts","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AAEH,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;CACb;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,WAAW,GAAG,SAAS,CAkB5F;AAED,0GAA0G;AAC1G,MAAM,MAAM,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/F,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AA8BxK,oHAAoH;AACpH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGtI;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mGAAmG;IACnG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACrE;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF;AA2BD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,EAAE,OAAO,SAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAOrJ"}
@@ -49,6 +49,8 @@ const nodeCloneRunner = (args, env, timeoutMs) => new Promise(done => {
49
49
  const ownSshCommand = (env) => new Promise(done => execFile('git', ['config', '--get', 'core.sshCommand'], { env, cwd: homedir(), timeout: 10_000 }, (error, stdout) => done(error ? undefined : String(stdout).trim() || undefined)));
50
50
  /** How long a clone may take: a large repository over a slow line, not a hang. */
51
51
  const CLONE_TIMEOUT_MS = 15 * 60_000;
52
+ /** How long asking a repository's host whether it is readable may take. */
53
+ const READ_TIMEOUT_MS = 30_000;
52
54
  /** What git says when it has no login that can read a repository, over the web and over SSH. */
53
55
  const NO_LOGIN = /could not read Username|Authentication failed|terminal prompts disabled|Permission denied \(publickey|Repository not found/i;
54
56
  /** What SSH says of a host this computer has never met: it would ask a person, and nobody is there to answer. */
@@ -97,13 +99,7 @@ async function cloneTo({ url, address, path }, opts) {
97
99
  await mkdir(projects, { recursive: true });
98
100
  // A name no repository has: one starts with a letter, a digit or an underscore.
99
101
  const making = await mkdtemp(join(projects, `.${basename(path)}.cloning-`));
100
- const env = opts.env ?? process.env;
101
- const ssh = env.GIT_SSH_COMMAND ?? (await (opts.sshCommand ?? ownSshCommand)(env)) ?? 'ssh';
102
- const said = await (opts.run ?? nodeCloneRunner)(
103
- // Only the two ways in a repository's address names: a clone never runs a program an address could name.
104
- ['-c', 'protocol.allow=never', '-c', 'protocol.https.allow=always', '-c', 'protocol.ssh.allow=always', 'clone', '--', url, making],
105
- // Never a question to a person, in a terminal or in a window: nobody is there to answer one. The person's own way to SSH is kept, and told the same.
106
- { ...env, GIT_TERMINAL_PROMPT: '0', GIT_ASKPASS: '', GIT_SSH_COMMAND: `${ssh} -oBatchMode=yes` }, opts.timeoutMs ?? CLONE_TIMEOUT_MS);
102
+ const said = await askGit(['clone', '--', url, making], opts, CLONE_TIMEOUT_MS);
107
103
  if (said.ok) {
108
104
  // Moved only where nothing is: a folder that came to be there meanwhile is not written over.
109
105
  const landed = (await there()) ?? (await rename(making, path).then(() => undefined, (err) => (err instanceof Error ? err.message : String(err))));
@@ -115,10 +111,40 @@ async function cloneTo({ url, address, path }, opts) {
115
111
  await rm(making, { recursive: true, force: true });
116
112
  if (said.timedOut)
117
113
  return { ok: false, error: `Cloning ${address} took too long, and was stopped.` };
118
- const lines = said.said.split('\n').map(line => line.trim().replace(/^(fatal|error): /i, '')).filter(line => line && !SAID_EVERY_TIME.test(line));
119
- const words = lines.slice(-2).join(' ') || 'git could not clone it.';
120
- if (NOT_MET.test(said.said))
121
- return { ok: false, error: `This computer has never met ${address.split('/')[0]} over SSH, so it does not know it is the real one. Use the address that starts with https://, or connect to it once in a terminal. git said: ${words}` };
122
- return { ok: false, error: NO_LOGIN.test(said.said) ? `This computer has no login that can read ${address}, or there is no such repository: a private one needs a login. git said: ${words}` : words };
114
+ return { ok: false, error: gitRefusal(said.said, address, 'git could not clone it.') };
115
+ }
116
+ /**
117
+ * Whether this computer's logins read the repository at the address, asked of its host without
118
+ * cloning anything: what a run of a project cloned here first would hit before it starts. The
119
+ * answer is the clone's own words when they cannot.
120
+ */
121
+ export async function canRead(typed, opts = {}, subject = 'This computer') {
122
+ const target = cloneTarget(typed, opts.home);
123
+ if (!target)
124
+ return { ok: false, error: `"${typed.trim().slice(0, 80)}" ${NOT_AN_ADDRESS}` };
125
+ const said = await askGit(['ls-remote', '--heads', '--', target.url], opts, READ_TIMEOUT_MS);
126
+ if (said.ok)
127
+ return { ok: true };
128
+ if (said.timedOut)
129
+ return { ok: false, error: `${target.address} did not answer in time.` };
130
+ return { ok: false, error: gitRefusal(said.said, target.address, 'git could not read it.', subject) };
131
+ }
132
+ /** Run git about a repository the way a clone does: only the ways in an address, never a question to a person. */
133
+ async function askGit(args, opts, timeoutMs) {
134
+ const env = opts.env ?? process.env;
135
+ const ssh = env.GIT_SSH_COMMAND ?? (await (opts.sshCommand ?? ownSshCommand)(env)) ?? 'ssh';
136
+ return (opts.run ?? nodeCloneRunner)(
137
+ // Only the two ways in a repository's address names: git never runs a program an address could name.
138
+ ['-c', 'protocol.allow=never', '-c', 'protocol.https.allow=always', '-c', 'protocol.ssh.allow=always', ...args],
139
+ // Never a question to a person, in a terminal or in a window: nobody is there to answer one. The person's own way to SSH is kept, and told the same.
140
+ { ...env, GIT_TERMINAL_PROMPT: '0', GIT_ASKPASS: '', GIT_SSH_COMMAND: `${ssh} -oBatchMode=yes` }, opts.timeoutMs ?? timeoutMs);
141
+ }
142
+ /** What git said when it could not reach the repository, in a person's words, of the computer it ran on. */
143
+ function gitRefusal(said, address, otherwise, subject = 'This computer') {
144
+ const lines = said.split('\n').map(line => line.trim().replace(/^(fatal|error): /i, '')).filter(line => line && !SAID_EVERY_TIME.test(line));
145
+ const words = lines.slice(-2).join(' ') || otherwise;
146
+ if (NOT_MET.test(said))
147
+ return `${subject} has never met ${address.split('/')[0]} over SSH, so it does not know it is the real one. Use the address that starts with https://, or connect to it once in a terminal. git said: ${words}`;
148
+ return NO_LOGIN.test(said) ? `${subject} has no login that can read ${address}, or there is no such repository: a private one needs a login. git said: ${words}` : words;
123
149
  }
124
150
  //# sourceMappingURL=clone-project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone-project.js","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAuB5E,MAAM,IAAI,GAAG,qCAAqC,CAAA;AAClD,MAAM,OAAO,GAAG,2BAA2B,CAAA;AAC3C,MAAM,SAAS,GAAG,GAAG,CAAA;AAErB;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,IAAI,GAAW,OAAO,EAAE;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC7C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACxF,MAAM,GAAG,GAAG,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qFAAqF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzH,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,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACzG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACpD,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAClD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACtC,+FAA+F;IAC/F,IAAI,GAAG,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/F,0GAA0G;IAC1G,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,GAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,GAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAA;IACzL,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACpC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnF,CAAC;AAQD,MAAM,eAAe,GAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAC5D,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;IACjB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7G,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QACrC,wDAAwD;QACxD,MAAM,QAAQ,GAAI,KAA8B,CAAC,MAAM,KAAK,IAAI,IAAK,KAA4B,CAAC,IAAI,KAAK,mCAAmC,CAAA;QAC9I,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,yGAAyG;AACzG,MAAM,aAAa,GAAG,CAAC,GAAsB,EAA+B,EAAE,CAC5E,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;AAEzM,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAA;AAEpC,gGAAgG;AAChG,MAAM,QAAQ,GAAG,6HAA6H,CAAA;AAC9I,iHAAiH;AACjH,MAAM,OAAO,GAAG,+BAA+B,CAAA;AAC/C,8DAA8D;AAC9D,MAAM,eAAe,GAAG,gGAAgG,CAAA;AAExH,MAAM,cAAc,GAAG,uEAAuE,CAAA;AAE9F,oHAAoH;AACpH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAa;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,cAAc,EAAE,EAAE,CAAA;AACrJ,CAAC;AAWD,iHAAiH;AACjH,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,IAAI,GAAiB,EAAE;IACjE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,cAAc,EAAE,EAAE,CAAC,CAAA;IAC7G,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzC,8HAA8H;IAC9H,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC9B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAe,EAAE,IAAkB;IAC5E,MAAM,KAAK,GAAG,KAAK,IAAiC,EAAE;QACpD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAA;QACxE,IAAI,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;QACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,oCAAoC,OAAO,oDAAoD,EAAE,CAAA;IACrI,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,KAAK,EAAE,CAAA;IAC7B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC;IAC9C,yGAAyG;IACzG,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC;IAClI,qJAAqJ;IACrJ,EAAE,GAAG,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,kBAAkB,EAAE,EAChG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CACnC,CAAA;IACD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,6FAA6F;QAC7F,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1J,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACjE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAClD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,IAAI,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IACzH,CAAC;IACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAClD,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,OAAO,kCAAkC,EAAE,CAAA;IACpG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjJ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAA;IACpE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gJAAgJ,KAAK,EAAE,EAAE,CAAA;IACrQ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4CAA4C,OAAO,4EAA4E,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;AACxM,CAAC"}
1
+ {"version":3,"file":"clone-project.js","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-runtime.d.ts","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACvI,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,0BAA0B,CAAA;AACxF,OAAO,EAA0D,KAAK,YAAY,EAAE,KAAK,YAAY,EAAqB,MAAM,2BAA2B,CAAA;AAG3J,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAqDpG,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAA;IACX,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;IAC5D,2HAA2H;IAC3H,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;CACxD;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7G,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzE;;;;;OAKG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACzD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;uGACmG;IACnG,kBAAkB,EAAE,YAAY,CAAA;IAChC;qEACiE;IACjE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC3D;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9E;2EACuE;IACvE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC7G;iGAC6F;IAC7F,YAAY,EAAE,YAAY,CAAA;IAC1B;0FACsF;IACtF,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChF;sEACkE;IAClE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC7E,qCAAqC;IACrC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAoB,EAAE,MAAkB,EAAE,EAAE,qBAAqB,GAAG,cAAc,CAqalI"}
1
+ {"version":3,"file":"daemon-runtime.d.ts","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACvI,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,0BAA0B,CAAA;AACxF,OAAO,EAAuE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAqB,MAAM,2BAA2B,CAAA;AAOxK,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAA;AA4DpG,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAA;IACX,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;IAC5D,2HAA2H;IAC3H,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;CACxD;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7G,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzE;;;;;OAKG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACzD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;uGACmG;IACnG,kBAAkB,EAAE,YAAY,CAAA;IAChC;qEACiE;IACjE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC3D;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9E;2EACuE;IACvE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC7G;iGAC6F;IAC7F,YAAY,EAAE,YAAY,CAAA;IAC1B;0FACsF;IACtF,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChF;sEACkE;IAClE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC7E,qCAAqC;IACrC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAoB,EAAE,MAAkB,EAAE,EAAE,qBAAqB,GAAG,cAAc,CAgjBlI"}
@@ -1,9 +1,11 @@
1
- import { basename, join, resolve, sep } from 'node:path';
1
+ import { join, resolve, sep } from 'node:path';
2
2
  import { hostname } from 'node:os';
3
3
  import { stat } from 'node:fs/promises';
4
4
  import { findAgent, findCheckout, fromDiaryLine, isPidAlive, isRunId, projectBranches, readLiveMetas, resolveAgentDiary } from './store/index.js';
5
5
  import { OPENAGENT_DIR } from './openagent-dir.js';
6
- import { RelayedAgents, relayRpc, remoteFacts, startRemoteAgent } from './dashboard/remote-run.js';
6
+ import { RelayedAgents, machineCall, relayRpc, remoteFacts, startRemoteAgent } from './dashboard/remote-run.js';
7
+ import { OwnProjectsAsked, elsewhereHomes, elsewhereId, elsewhereSummary, homeOf as elsewhereHomeOf, idInLineName, isElsewhereId, lineNameOf } from './dashboard/elsewhere.js';
8
+ import { AnswersKept, interventionsOf, namedHere } from './dashboard/machine-interventions.js';
7
9
  import { MachineRunsKept, RUNS_WAIT_MS } from './dashboard/machine-runs.js';
8
10
  import { ownRunsWatch } from './dashboard/runs-watch.js';
9
11
  import { cloneProject, cloneTarget } from './clone-project.js';
@@ -12,8 +14,8 @@ import { screenInDiary } from './dashboard/screen.js';
12
14
  import { dispatchRelayRpc } from './dashboard-rpc/relay-dispatch.js';
13
15
  import { asRecorded, onMachine } from './dashboard-rpc/reads.js';
14
16
  import { tailAgentEvents } from './dashboard-rpc/events-tail.js';
15
- import { addProject, isHostName, listMachines, listProjects, nameMachine, noteSeen, projectId, readPreferences, removeProject } from './registry.js';
16
- import { repositoryAddress } from './repository-address.js';
17
+ import { addProject, isHostName, listMachines, listProjects, nameMachine, noteProjects, noteSeen, projectId, readPreferences, removeProject } from './registry.js';
18
+ import { projectNameOf, repositoryAddress } from './repository-address.js';
17
19
  import { writeHookLines } from './built-in.js';
18
20
  import { fileBranchRepo, installProject, writeSharing } from '@openagt/agent-data';
19
21
  import { removeProjectFiles } from './remove-files.js';
@@ -24,6 +26,8 @@ import { hasRemote } from './has-remote.js';
24
26
  import { projectGitHost } from './store/git-host.js';
25
27
  import { providedDataChanged } from './store/provided.js';
26
28
  import { projectAddresses } from './project-address.js';
29
+ import { callerAtPage } from './dashboard/person.js';
30
+ import { machineKind, machineName } from './reached-by-line.js';
27
31
  /**
28
32
  * What the daemon does for a project (#393): start a run, add a project, and relay a run to and
29
33
  * from a saved machine. Split from daemon.ts so that file reads as the daemon's lifecycle
@@ -48,6 +52,10 @@ const MAX_HOMES = 5_000;
48
52
  const RUNS_ASKED_MS = 8_000;
49
53
  /** How often the machines' runs of a project someone listens to are asked for again, to keep them followed (machine-runs.ts follows them a minute). */
50
54
  const RUNS_FOLLOWED_MS = 30_000;
55
+ /** How long one of the person's computers gets to say its projects: a list does not wait on it past the first time (elsewhere.ts). */
56
+ const PROJECTS_ASKED_MS = 8_000;
57
+ /** How long one of the person's computers gets to say its Human Queue: its PRs are asked of the git host (machine-interventions.ts). */
58
+ const QUEUE_ASKED_MS = 15_000;
51
59
  /** How many projects this computer clones at once for other machines; one more is told to ask again. */
52
60
  const MAX_COMING = 3;
53
61
  /** How many clones are remembered at once, on their way or failed. */
@@ -117,24 +125,33 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
117
125
  if (saved)
118
126
  void noteSeen(saved, at, undefined, env).catch(() => { });
119
127
  });
120
- const machineRuns = async (path) => {
128
+ // The machines' runs of the project they name `address` (`#<id>` for one of a machine's own with no address), of the
129
+ // ones `only` keeps: every saved machine for a project of this computer's, the one it is on for another computer's.
130
+ const runsAt = async (address, only = () => true) => {
121
131
  await machineNames();
122
- const address = await addressOf(path);
123
- if (address === undefined)
124
- return [];
125
132
  // A machine that has not said its computer's name, or says one another machine says too, has no runs to say.
126
- const asked = machines.flatMap(machine => (machine.host !== undefined && machineOf(machine.host) === machine ? [{ url: machine.url, host: machine.host, ...(machine.seenAt !== undefined ? { seenAt: machine.seenAt } : {}) }] : []));
133
+ const asked = machines.flatMap(machine => (only(machine) && machine.host !== undefined && machineOf(machine.host) === machine ? [{ url: machine.url, host: machine.host, ...(machine.seenAt !== undefined ? { seenAt: machine.seenAt } : {}) }] : []));
127
134
  return asked.length > 0 ? machineRunsKept.of(asked, address) : [];
128
135
  };
136
+ const machineRuns = async (path) => {
137
+ const address = await addressOf(path);
138
+ return address === undefined ? [] : runsAt(address);
139
+ };
140
+ const elsewhereRuns = async (id) => {
141
+ const at = await elsewhereAt(id);
142
+ return at ? runsAt(at.target.project, machine => machine.url === at.home.machine.url) : [];
143
+ };
129
144
  // Followed while someone listens: asked for again before the machines stop being followed.
130
- const followRuns = (path, changed) => {
145
+ const followRuns = (path, changed) => followAt(() => addressOf(path), () => machineRuns(path), changed);
146
+ const followElsewhereRuns = (id, changed) => followAt(async () => (await elsewhereAt(id))?.target.project, () => elsewhereRuns(id), changed);
147
+ const followAt = (address, read, changed) => {
131
148
  let stopped = false;
132
149
  let stopListening;
133
- void addressOf(path).then(address => {
134
- if (address !== undefined && !stopped)
135
- stopListening = machineRunsKept.listen(address, changed);
150
+ void address().then(said => {
151
+ if (said !== undefined && !stopped)
152
+ stopListening = machineRunsKept.listen(said, changed);
136
153
  });
137
- const keep = () => void machineRuns(path).catch(() => { });
154
+ const keep = () => void read().catch(() => { });
138
155
  keep();
139
156
  const timer = setInterval(keep, RUNS_FOLLOWED_MS);
140
157
  timer.unref();
@@ -144,6 +161,71 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
144
161
  stopListening?.();
145
162
  };
146
163
  };
164
+ // The projects of the person's other computers (elsewhere.ts): each computer of the person's own,
165
+ // a saved machine that is no other person's, says its projects, and what it said is kept with it,
166
+ // so they stay listed while it is off. One whose repository is a project here is listed as this computer's.
167
+ // They are the owner's: a person the owner invited, whose device the door passes to this OpenAgent,
168
+ // is listed none and reaches none of them.
169
+ const ownMachines = async () => (await listMachines(undefined, env).catch(() => machines)).filter(machine => machine.owner === undefined);
170
+ const projectsAsked = new OwnProjectsAsked(async (machine) => {
171
+ const said = await machineCall(machine, 'onOwnProjects', [], PROJECTS_ASKED_MS);
172
+ if (!said.ok)
173
+ throw new Error(said.error);
174
+ return said.ret;
175
+ }, (machine, projects) => noteProjects(machine, projects, undefined, env));
176
+ const elsewhereProjects = async () => {
177
+ if (callerAtPage() !== undefined)
178
+ return [];
179
+ await projectsAsked.refresh(await ownMachines());
180
+ const own = await ownMachines();
181
+ const addresses = await Promise.all((await listProjects(undefined, env).catch(() => [])).map(record => addressOf(record.path)));
182
+ return elsewhereHomes(own, new Set(addresses.filter(address => address !== undefined))).map(elsewhereSummary);
183
+ };
184
+ // The Human Queues of the person's other computers (machine-interventions.ts): each says its own
185
+ // projects' items, named here by the project as it is listed here, one of a run there marked with
186
+ // its computer. None for a person the owner invited, as their projects are none.
187
+ const queuesAsked = new AnswersKept(async (machine) => {
188
+ const said = await machineCall(machine, 'onOwnInterventions', [], QUEUE_ASKED_MS);
189
+ if (!said.ok)
190
+ throw new Error(said.error);
191
+ return interventionsOf(said.ret);
192
+ });
193
+ const machinesQueue = async () => {
194
+ if (callerAtPage() !== undefined)
195
+ return { said: [], unread: [] };
196
+ const own = (await ownMachines()).filter(machine => (machine.projects ?? []).length > 0);
197
+ const [answers, records] = await Promise.all([queuesAsked.of(own), listProjects(undefined, env).catch(() => [])]);
198
+ // A project as it is listed here, by its repository's address, else by its computer and its id there: as elsewhereHomes lists them.
199
+ const keyOf = (machine, project) => project.address ?? `${machine.url} ${lineNameOf(project)}`;
200
+ const listed = new Map();
201
+ for (const record of records) {
202
+ const address = await addressOf(record.path);
203
+ if (address !== undefined && !listed.has(address))
204
+ listed.set(address, record.id);
205
+ }
206
+ for (const home of elsewhereHomes(own, new Set(listed.keys())))
207
+ listed.set(keyOf(home.machine, home.project), elsewhereId(home.project.id, home.machine.id));
208
+ const queue = { said: [], unread: [] };
209
+ for (const machine of own) {
210
+ const idHere = (theirs) => {
211
+ const project = machine.projects?.find(one => one.id === theirs);
212
+ return project && listed.get(keyOf(machine, project));
213
+ };
214
+ const said = answers.get(machine.id);
215
+ if (said)
216
+ queue.said.push(namedHere(said, idHere, { name: machineName(machine), kind: machineKind(machine).kind }));
217
+ else
218
+ queue.unread.push(...(machine.projects ?? []).flatMap(project => idHere(project.id) ?? []));
219
+ }
220
+ return queue;
221
+ };
222
+ // Another computer's project by its id here, and how a call reaches it there.
223
+ const elsewhereAt = async (id) => {
224
+ if (callerAtPage() !== undefined)
225
+ return undefined;
226
+ const home = elsewhereHomeOf(await ownMachines(), id);
227
+ return home && { home, target: { url: home.machine.url, key: home.machine.key, ...(home.machine.pin ? { pin: home.machine.pin } : {}), project: lineNameOf(home.project) } };
228
+ };
147
229
  // A run of a project by its id: its record here, else what the saved machine it runs on said of
148
230
  // it, for a run whose record was never shared.
149
231
  const runOf = async (path, agentId) => (await findAgent(path, agentId).catch(() => undefined)) ?? (await machineRuns(path)).flatMap(machine => machine.runs).find(run => run.id === agentId);
@@ -157,6 +239,11 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
157
239
  const homeOf = async (project, agentId) => {
158
240
  if (!isRunId(agentId))
159
241
  return undefined;
242
+ // Another computer's project: its runs are that computer's.
243
+ if (isElsewhereId(project)) {
244
+ const at = await elsewhereAt(project);
245
+ return at && { target: at.target, label: at.home.machine.label };
246
+ }
160
247
  const key = `${project} ${agentId}`;
161
248
  const kept = homes.get(key);
162
249
  if (kept && kept.until > Date.now())
@@ -199,8 +286,7 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
199
286
  if (relayedAgents.follows(agentId) || elsewhere())
200
287
  return;
201
288
  const home = await homeOf(project, agentId);
202
- const projectCwd = home ? await resolveProject(project) : undefined;
203
- const agent = projectCwd ? await runOf(projectCwd, agentId) : undefined;
289
+ const agent = home ? await runIn(project, agentId) : undefined;
204
290
  if (!home || !agent || relayedAgents.follows(agentId) || elsewhere())
205
291
  return;
206
292
  // The row starts as the record may say the run is, and the machine's own events take it from there.
@@ -212,7 +298,29 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
212
298
  machineNames,
213
299
  machineRuns,
214
300
  followRuns,
301
+ elsewhere: elsewhereProjects,
302
+ elsewhereRuns,
303
+ followElsewhereRuns,
304
+ elsewhereHome: async (project) => {
305
+ const at = await elsewhereAt(project);
306
+ return at && { machine: at.home.machine.id, project: at.home.project };
307
+ },
308
+ bringHere: (address, bring) => bringProject(address, bring),
309
+ machinesQueue,
310
+ forward: async (project, fn, args) => {
311
+ const at = await elsewhereAt(project);
312
+ if (!at)
313
+ throw new Error('That project is no longer listed on any of your computers.');
314
+ return relayRpc(at.target, fn, args);
315
+ },
215
316
  };
317
+ // A run of a project by its id, this computer's project or another's.
318
+ async function runIn(project, agentId) {
319
+ if (isElsewhereId(project))
320
+ return (await elsewhereRuns(project)).flatMap(machine => machine.runs).find(run => run.id === agentId);
321
+ const projectCwd = await resolveProject(project);
322
+ return projectCwd ? runOf(projectCwd, agentId) : undefined;
323
+ }
216
324
  // The machine side of the relay (#1067 slice 2): run one whitelisted read/steer/handoff RPC against this
217
325
  // daemon's own copy of the project the call named, for a daemon that relayed an agent here.
218
326
  const onRelayRpc = (project, fn, args) => dispatchRelayRpc(project, fn, args);
@@ -241,6 +349,10 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
241
349
  return address;
242
350
  };
243
351
  const projectAt = async (address) => {
352
+ // A project with no address is named by its id here, by the person's other computer that lists it.
353
+ const id = idInLineName(address);
354
+ if (id !== undefined)
355
+ return (await listProjects(undefined, env).catch(() => [])).some(record => record.id === id) ? id : undefined;
244
356
  for (const record of await listProjects(undefined, env).catch(() => [])) {
245
357
  if ((await addressOf(record.path)) === address)
246
358
  return record.id;
@@ -251,62 +363,19 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
251
363
  // The daemon names no tool and holds nothing about the run: no slot, no cap (a person's click is
252
364
  // the brake), no process to stop at shutdown. A project without the line cannot start a run here.
253
365
  const onStart = async (prompt, options = {}, targetProjectId) => {
366
+ if (isElsewhereId(targetProjectId))
367
+ return startElsewhere(prompt, options, targetProjectId);
254
368
  const projectCwd = await resolveProject(targetProjectId);
255
369
  if (!projectCwd)
256
370
  return { ok: false, error: `unknown project: ${targetProjectId}` };
257
371
  // Run on a saved machine (#1067): forward the start to its daemon, which runs the hook of its
258
372
  // own copy of this project, and relay the run's events back. The project is named by its
259
- // repository's address, the one name both machines have for it. `machine` is stripped so the
260
- // other side does not relay onward, and `base` because a branch of this machine names nothing
261
- // there (it drops both too).
373
+ // repository's address, the one name both machines have for it.
262
374
  if (options.machine !== undefined) {
263
- const { machine: id, base: _thisMachines, ...forwarded } = options;
264
- const machine = (await listMachines(undefined, env)).find(saved => saved.id === id);
265
- if (!machine)
266
- return { ok: false, error: 'That machine is no longer saved. Pick another place to run.' };
267
375
  const project = await repositoryAddress(projectCwd);
268
376
  if (!project)
269
377
  return { ok: false, error: 'This project has no repository address, so it cannot be sent to another machine.' };
270
- const target = { url: machine.url, key: machine.key, ...(machine.pin ? { pin: machine.pin } : {}), project };
271
- // Another person's computer: a run there uses this person's own logins, which this server
272
- // copies there first. Only a server's OpenAgent copies: a laptop's logins are made for it
273
- // alone, so a laptop only looks that they are there.
274
- if (machine.owner !== undefined) {
275
- // Copied only once the person read that they are, and said OK: the page says so before a first run there.
276
- if (env.OPENAGENT_SERVER === '1' && machine.told !== true)
277
- return { ok: false, error: `Your logins are copied to @${machine.owner}'s server for a run there: say OK to that above the message box first.` };
278
- const there = env.OPENAGENT_SERVER === '1' ? await copyLoginsTo({ ...target, label: machine.label }, { own: () => logins(env) }) : await loginsAreThere({ ...target, label: machine.label });
279
- if (!there.ok)
280
- return there;
281
- }
282
- const result = await startRemoteAgent(target, { prompt, options: forwarded });
283
- if (!result.ok) {
284
- // The one refusal the page can do something about: it has the machine clone the project, and starts again.
285
- return 'noProject' in result ? { ok: false, error: `${basename(projectCwd)} is not on ${machine.label} yet.`, notThere: true } : result;
286
- }
287
- // The run's id is the machine's word, and from here on every call about that id goes to the
288
- // machine: what the person reads of the run, and what they click and type in its browser.
289
- // An id that is no run's, or that is a run of this computer's own, is not taken.
290
- if (!isRunId(result.agentId) || (await findCheckout(projectCwd, result.agentId, projectBranches))) {
291
- return { ok: false, error: `${machine.label} answered with a run this computer cannot follow.` };
292
- }
293
- // A relayed agent has no local checkout or pid, so its list row is a memory-only stub (#1077):
294
- // registered here so onAgents can show it and a dashboard reload re-opens it. Never written to disk.
295
- const now = new Date().toISOString();
296
- const meta = {
297
- status: 'running',
298
- id: result.agentId,
299
- startedAt: now,
300
- updatedAt: now,
301
- target: 'remote',
302
- intent: prompt,
303
- ...onMachine(machine),
304
- // The machine's word, as the run is: its record, which names the coding agent, never comes here.
305
- ...(typeof result.driver === 'string' && result.driver.length <= MAX_DRIVER_NAME ? { driver: result.driver } : {}),
306
- };
307
- relayedAgents.register(result.agentId, target, meta, targetProjectId ?? homeId);
308
- // Only what was checked goes on to the page, not whatever else the machine answered.
309
- return { ok: true, agentId: result.agentId, ...(meta.driver !== undefined ? { driver: meta.driver } : {}) };
378
+ return sendToMachine(prompt, options, options.machine, { id: targetProjectId ?? homeId, name: await projectNameOf(projectCwd), address: project, cwd: projectCwd });
310
379
  }
311
380
  // The branch to start from ends up on the line's command line: only a branch name goes there.
312
381
  // Refused, not dropped: a run started from the main branch instead would be a silent swap.
@@ -338,6 +407,90 @@ export function createProjectRuntime({ cwd, env, clone = cloneProject, logins =
338
407
  }
339
408
  return started.ok ? { ok: true, agentId: started.id, ...(started.driver !== undefined ? { driver: started.driver } : {}) } : { ok: false, error: started.error };
340
409
  };
410
+ // Send a start to a saved machine, which runs the hook of its own copy of the project and is
411
+ // followed from here. `machine` is stripped so the other side does not relay onward, and `base`
412
+ // because a branch of this machine names nothing there (it drops both too).
413
+ const sendToMachine = async (prompt, options, id, project) => {
414
+ const { machine: _id, base: _thisMachines, ...forwarded } = options;
415
+ const machine = (await listMachines(undefined, env)).find(saved => saved.id === id);
416
+ if (!machine)
417
+ return { ok: false, error: 'That machine is no longer saved. Pick another place to run.' };
418
+ const target = { url: machine.url, key: machine.key, ...(machine.pin ? { pin: machine.pin } : {}), project: project.address };
419
+ // Another person's computer: a run there uses this person's own logins, which this server
420
+ // copies there first. Only a server's OpenAgent copies: a laptop's logins are made for it
421
+ // alone, so a laptop only looks that they are there.
422
+ if (machine.owner !== undefined) {
423
+ // Copied only once the person read that they are, and said OK: the page says so before a first run there.
424
+ if (env.OPENAGENT_SERVER === '1' && machine.told !== true)
425
+ return { ok: false, error: `Your logins are copied to @${machine.owner}'s server for a run there: say OK to that above the message box first.` };
426
+ const there = env.OPENAGENT_SERVER === '1' ? await copyLoginsTo({ ...target, label: machine.label }, { own: () => logins(env) }) : await loginsAreThere({ ...target, label: machine.label });
427
+ if (!there.ok)
428
+ return there;
429
+ }
430
+ const result = await startRemoteAgent(target, { prompt, options: forwarded });
431
+ if (!result.ok) {
432
+ // The one refusal the page can do something about: it has the machine clone the project, and starts again.
433
+ return 'noProject' in result ? { ok: false, error: `${project.name} is not on ${machine.label} yet.`, notThere: true } : result;
434
+ }
435
+ // The run's id is the machine's word, and from here on every call about that id goes to the
436
+ // machine: what the person reads of the run, and what they click and type in its browser.
437
+ // An id that is no run's, or that is a run of this computer's own, is not taken.
438
+ if (!isRunId(result.agentId) || (project.cwd !== undefined && (await findCheckout(project.cwd, result.agentId, projectBranches)))) {
439
+ return { ok: false, error: `${machine.label} answered with a run this computer cannot follow.` };
440
+ }
441
+ return followSent(result.agentId, result.driver, prompt, machine, target, project.id);
442
+ };
443
+ // A run this computer sent to a machine, followed from here as a run of the project.
444
+ const followSent = (agentId, driver, prompt, machine, target, project) => {
445
+ // A relayed agent has no local checkout or pid, so its list row is a memory-only stub (#1077):
446
+ // registered here so onAgents can show it and a dashboard reload re-opens it. Never written to disk.
447
+ const now = new Date().toISOString();
448
+ const meta = {
449
+ status: 'running',
450
+ id: agentId,
451
+ startedAt: now,
452
+ updatedAt: now,
453
+ target: 'remote',
454
+ intent: prompt,
455
+ ...onMachine(machine),
456
+ // The machine's word, as the run is: its record, which names the coding agent, never comes here.
457
+ ...(typeof driver === 'string' && driver.length <= MAX_DRIVER_NAME ? { driver } : {}),
458
+ };
459
+ relayedAgents.register(agentId, target, meta, project);
460
+ // Only what was checked goes on to the page, not whatever else the machine answered.
461
+ return { ok: true, agentId, ...(meta.driver !== undefined ? { driver: meta.driver } : {}) };
462
+ };
463
+ // A project only another computer of the person's has (elsewhere.ts). On that computer, the run
464
+ // starts there as its own page starts one: in the project as it stands there, from the branch
465
+ // picked among its own. On this computer, in its copy here once there is one: the page has it
466
+ // cloned when there is none, and is told the project the run started in. On any other, as a
467
+ // project of this computer's is sent there, by its address.
468
+ const startElsewhere = async (prompt, options, id) => {
469
+ const at = await elsewhereAt(id);
470
+ if (!at)
471
+ return { ok: false, error: 'That project is no longer listed on any of your computers.' };
472
+ const { home, target } = at;
473
+ const { address, name } = home.project;
474
+ if (options.machine === home.machine.id) {
475
+ const { machine: _there, ...there } = options;
476
+ const said = await relayRpc(target, 'sendStart', [null, prompt, there]).then(answer => answer, (err) => ({ ok: false, error: `could not reach ${home.machine.label}: ${err instanceof Error ? err.message : String(err)}` }));
477
+ if (!said.ok)
478
+ return { ok: false, error: typeof said.error === 'string' ? said.error : `${home.machine.label} did not start the run.` };
479
+ if (!isRunId(said.agentId))
480
+ return { ok: false, error: `${home.machine.label} answered with a run this computer cannot follow.` };
481
+ return followSent(said.agentId, said.driver, prompt, home.machine, target, id);
482
+ }
483
+ if (address === undefined)
484
+ return { ok: false, error: `${name} has no repository address, so it runs on ${home.machine.label} only.` };
485
+ if (options.machine === undefined) {
486
+ const here = await projectAt(address);
487
+ if (here === undefined)
488
+ return { ok: false, error: `${name} is not on this computer yet.`, notThere: true };
489
+ const started = await onStart(prompt, options, here);
490
+ return started.ok ? { ...started, projectId: here } : started;
491
+ }
492
+ return sendToMachine(prompt, options, options.machine, { id, name, address });
493
+ };
341
494
  // Add a project (#396): install the repo, then register it so it appears in the Projects
342
495
  // list. installProject is idempotent (an already-activated repo is a no-op success). `share`
343
496
  // is the person's answer on the agents' records, written before the project is registered: