looply-cli 0.3.0 → 0.5.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 (88) hide show
  1. package/dist/.src-hash +1 -1
  2. package/dist/bin.d.ts.map +1 -1
  3. package/dist/bin.js +91 -85
  4. package/dist/bin.js.map +1 -1
  5. package/dist/connect-node.d.ts +8 -0
  6. package/dist/connect-node.d.ts.map +1 -0
  7. package/dist/connect-node.js +110 -0
  8. package/dist/connect-node.js.map +1 -0
  9. package/dist/connect.d.ts +135 -0
  10. package/dist/connect.d.ts.map +1 -0
  11. package/dist/connect.js +329 -0
  12. package/dist/connect.js.map +1 -0
  13. package/dist/daemon-cmd.d.ts +11 -2
  14. package/dist/daemon-cmd.d.ts.map +1 -1
  15. package/dist/daemon-cmd.js +20 -6
  16. package/dist/daemon-cmd.js.map +1 -1
  17. package/dist/goal-compile.d.ts.map +1 -1
  18. package/dist/goal-compile.js +4 -1
  19. package/dist/goal-compile.js.map +1 -1
  20. package/dist/mcp-main.js +10 -0
  21. package/dist/mcp-main.js.map +1 -1
  22. package/dist/mcp-server.d.ts +14 -0
  23. package/dist/mcp-server.d.ts.map +1 -1
  24. package/dist/mcp-server.js +35 -5
  25. package/dist/mcp-server.js.map +1 -1
  26. package/dist/model-transport.d.ts +7 -0
  27. package/dist/model-transport.d.ts.map +1 -1
  28. package/dist/model-transport.js +4 -1
  29. package/dist/model-transport.js.map +1 -1
  30. package/dist/packet-for-goal.d.ts +4 -2
  31. package/dist/packet-for-goal.d.ts.map +1 -1
  32. package/dist/packet-for-goal.js +4 -2
  33. package/dist/packet-for-goal.js.map +1 -1
  34. package/dist/repo-init.d.ts +36 -0
  35. package/dist/repo-init.d.ts.map +1 -0
  36. package/dist/repo-init.js +61 -0
  37. package/dist/repo-init.js.map +1 -0
  38. package/dist/repo-origin.d.ts +15 -0
  39. package/dist/repo-origin.d.ts.map +1 -0
  40. package/dist/repo-origin.js +28 -0
  41. package/dist/repo-origin.js.map +1 -0
  42. package/dist/repo-requests.d.ts +79 -0
  43. package/dist/repo-requests.d.ts.map +1 -0
  44. package/dist/repo-requests.js +180 -0
  45. package/dist/repo-requests.js.map +1 -0
  46. package/dist/repo-scan.d.ts +47 -0
  47. package/dist/repo-scan.d.ts.map +1 -0
  48. package/dist/repo-scan.js +84 -0
  49. package/dist/repo-scan.js.map +1 -0
  50. package/dist/run-cmd.d.ts +16 -1
  51. package/dist/run-cmd.d.ts.map +1 -1
  52. package/dist/run-cmd.js +68 -9
  53. package/dist/run-cmd.js.map +1 -1
  54. package/dist/serve-cmd.d.ts +17 -0
  55. package/dist/serve-cmd.d.ts.map +1 -1
  56. package/dist/serve-cmd.js +29 -2
  57. package/dist/serve-cmd.js.map +1 -1
  58. package/dist/serve-tasks.d.ts +17 -0
  59. package/dist/serve-tasks.d.ts.map +1 -0
  60. package/dist/serve-tasks.js +124 -0
  61. package/dist/serve-tasks.js.map +1 -0
  62. package/dist/serve.d.ts +36 -1
  63. package/dist/serve.d.ts.map +1 -1
  64. package/dist/serve.js +89 -12
  65. package/dist/serve.js.map +1 -1
  66. package/dist/server-client.d.ts +37 -0
  67. package/dist/server-client.d.ts.map +1 -1
  68. package/dist/server-client.js +21 -0
  69. package/dist/server-client.js.map +1 -1
  70. package/dist/sibling-repos.d.ts +101 -0
  71. package/dist/sibling-repos.d.ts.map +1 -0
  72. package/dist/sibling-repos.js +160 -0
  73. package/dist/sibling-repos.js.map +1 -0
  74. package/dist/sync.d.ts.map +1 -1
  75. package/dist/sync.js +3 -1
  76. package/dist/sync.js.map +1 -1
  77. package/dist/tool-bridge.d.ts +51 -1
  78. package/dist/tool-bridge.d.ts.map +1 -1
  79. package/dist/tool-bridge.js +62 -6
  80. package/dist/tool-bridge.js.map +1 -1
  81. package/dist/tool-protocol.d.ts +21 -3
  82. package/dist/tool-protocol.d.ts.map +1 -1
  83. package/dist/tool-protocol.js.map +1 -1
  84. package/dist/tool-worker.d.ts +13 -1
  85. package/dist/tool-worker.d.ts.map +1 -1
  86. package/dist/tool-worker.js +9 -2
  87. package/dist/tool-worker.js.map +1 -1
  88. package/package.json +2 -2
@@ -32,8 +32,23 @@ export interface ChildHandle {
32
32
  /** Ask it to stop; `force` is the second ask. */
33
33
  kill(force: boolean): void;
34
34
  }
35
+ /**
36
+ * Periodic work the supervisor does besides keeping children alive — the
37
+ * rescan of the code roots and the clone-request poll (`serve-tasks.ts`).
38
+ *
39
+ * ⚠️ A TASK NEVER OVERLAPS ITSELF: the next run is scheduled only when the
40
+ * last one has finished, however long it took. And a task that throws is
41
+ * logged and run again on schedule; it cannot take the supervisor down.
42
+ */
43
+ export interface SupervisorTask {
44
+ readonly name: string;
45
+ readonly everyMs: number;
46
+ run(): unknown;
47
+ }
35
48
  export interface SupervisorDeps {
36
49
  readonly platform: Platform;
50
+ /** Run once at start, then every `everyMs` after each run finishes. */
51
+ readonly tasks?: readonly SupervisorTask[];
37
52
  /** The listed repositories. Throws when the list cannot be read. */
38
53
  repos(): readonly ServedRepo[];
39
54
  configExists(repo: string): boolean;
@@ -55,6 +70,7 @@ export interface SupervisorDeps {
55
70
  export declare class Supervisor {
56
71
  private readonly deps;
57
72
  private readonly entries;
73
+ private readonly taskTimers;
58
74
  private pollTimer;
59
75
  private stopping;
60
76
  private readError;
@@ -66,6 +82,7 @@ export declare class Supervisor {
66
82
  keys(): string[];
67
83
  running(): string[];
68
84
  start(): void;
85
+ private runTask;
69
86
  /** Re-read the list and make the running set match it. */
70
87
  poll(): void;
71
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"serve-cmd.d.ts","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve-cmd.d.ts","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
package/dist/serve-cmd.js CHANGED
@@ -9,6 +9,7 @@ const node_fs_1 = require("node:fs");
9
9
  const node_os_1 = require("node:os");
10
10
  const node_path_1 = require("node:path");
11
11
  const run_lease_1 = require("./run-lease");
12
+ const serve_tasks_1 = require("./serve-tasks");
12
13
  const serve_1 = require("./serve");
13
14
  /**
14
15
  * `looply serve` and its verbs — the composition around `serve.ts`.
@@ -51,6 +52,7 @@ exports.STOP_GRACE_MS = 10_000;
51
52
  class Supervisor {
52
53
  deps;
53
54
  entries = new Map();
55
+ taskTimers = new Map();
54
56
  pollTimer = null;
55
57
  stopping = false;
56
58
  readError = null;
@@ -69,6 +71,22 @@ class Supervisor {
69
71
  }
70
72
  start() {
71
73
  this.poll();
74
+ for (const task of this.deps.tasks ?? [])
75
+ void this.runTask(task);
76
+ }
77
+ async runTask(task) {
78
+ this.taskTimers.delete(task.name);
79
+ if (this.stopping)
80
+ return;
81
+ try {
82
+ await task.run();
83
+ }
84
+ catch (e) {
85
+ this.deps.log(`[serve] ${task.name} failed — ${e?.message ?? String(e)}; trying again later`);
86
+ }
87
+ if (this.stopping)
88
+ return;
89
+ this.taskTimers.set(task.name, this.deps.setTimer(() => void this.runTask(task), task.everyMs));
72
90
  }
73
91
  /** Re-read the list and make the running set match it. */
74
92
  poll() {
@@ -107,6 +125,9 @@ class Supervisor {
107
125
  if (this.pollTimer !== null)
108
126
  this.deps.clearTimer(this.pollTimer);
109
127
  this.pollTimer = null;
128
+ for (const t of this.taskTimers.values())
129
+ this.deps.clearTimer(t);
130
+ this.taskTimers.clear();
110
131
  for (const [key, e] of this.entries) {
111
132
  if (e.timer !== null)
112
133
  this.deps.clearTimer(e.timer);
@@ -301,6 +322,8 @@ function list(deps) {
301
322
  const registry = load(deps);
302
323
  if (registry === null)
303
324
  return exports.EXIT_REFUSED;
325
+ for (const r of registry.roots ?? [])
326
+ deps.out(`serve: watching ${r.path} for new repositories`);
304
327
  if (registry.repos.length === 0) {
305
328
  deps.out('serve: no repositories are served yet. `looply serve add` in a repository to add it.');
306
329
  return exports.EXIT_OK;
@@ -360,9 +383,12 @@ async function supervise(deps) {
360
383
  const registry = load(deps);
361
384
  if (registry === null)
362
385
  return exports.EXIT_REFUSED;
363
- if (registry.repos.length === 0) {
386
+ // Recorded roots are something to do even with nothing listed yet: the
387
+ // rescan finds what appears there, and clone requests land there.
388
+ if (registry.repos.length === 0 && (registry.roots ?? []).length === 0) {
364
389
  deps.out('serve: no repositories are served yet.');
365
- deps.out(' in each repository you want served: `looply serve add` (it needs `looply init` first).');
390
+ deps.out(' `looply connect` sets up and serves every repository under your code folder;');
391
+ deps.out(' or, in each repository you want served: `looply serve add` (it needs `looply init` first).');
366
392
  deps.out(' then run `looply serve` again, or `looply serve install` to start it at login.');
367
393
  return exports.EXIT_OK;
368
394
  }
@@ -451,6 +477,7 @@ function nodeServeDeps() {
451
477
  for (const s of [process.stdout, process.stderr])
452
478
  s.on('error', () => undefined);
453
479
  return {
480
+ tasks: (0, serve_tasks_1.nodeSupervisorTasks)((0, node_os_1.homedir)(), process.platform, (line) => process.stdout.write(`${line}\n`)),
454
481
  now: () => Date.now(),
455
482
  setTimer: (fn, ms) => setTimeout(fn, ms),
456
483
  clearTimer: (h) => clearTimeout(h),
@@ -1 +1 @@
1
- {"version":3,"file":"serve-cmd.js","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve-cmd.js","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":";;;AAwUA,oCAsBC;AAmMD,0BAYC;AAGD,sCAoEC;AApnBD,2DAA2C;AAC3C,qCAAuC;AACvC,qCAAkC;AAClC,yCAA0C;AAC1C,2CAAsD;AACtD,+CAAoD;AACpD,mCA0BiB;AAEjB;;;;;;;;;;;;;;GAcG;AAEU,QAAA,WAAW,GAAG;IACzB,0GAA0G;IAC1G,6DAA6D;IAC7D,2GAA2G;IAC3G,oHAAoH;IACpH,gHAAgH;CACjH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEA,QAAA,OAAO,GAAG,CAAC,CAAC;AACZ,QAAA,YAAY,GAAG,CAAC,CAAC;AAC9B,kFAAkF;AACrE,QAAA,SAAS,GAAG,CAAC,CAAC;AACd,QAAA,UAAU,GAAG,EAAE,CAAC;AAE7B,kGAAkG;AACrF,QAAA,aAAa,GAAG,MAAM,CAAC;AAqDpC;;;;;;;;GAQG;AACH,MAAa,UAAU;IAUQ;IATZ,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IACnC,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IACjD,SAAS,GAAY,IAAI,CAAC;IAC1B,QAAQ,GAAG,KAAK,CAAC;IACjB,SAAS,GAAkB,IAAI,CAAC;IAChC,OAAO,GAAwB,IAAI,CAAC;IAC5C,+FAA+F;IACvF,KAAK,GAAyB,IAAI,CAAC;IAE3C,YAA6B,IAAoB;QAApB,SAAI,GAAJ,IAAI,CAAgB;IAAG,CAAC;IAErD,qFAAqF;IACrF,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAoB;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,aAAc,CAAW,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,MAAM,GAAiC,IAAI,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wEAAwE;YACxE,kCAAkC;YAClC,MAAM,GAAG,GAAI,CAAW,CAAC,OAAO,CAAC;YACjC,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAiC,GAAG,2BAA2B,CAAC,CAAC;YAC3G,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,wBAAgB,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAC1C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,wEAAwE;QACxE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,qBAAa,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAgB;QAC5B,MAAM,GAAG,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,0EAA0E;QAC1E,+BAA+B;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAU;YACnB,IAAI;YACJ,KAAK,EAAE,IAAA,iBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/C,OAAO,EAAE,IAAI,eAAO,EAAE;YACtB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,GAAW;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;YAC1C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,GAAW,EAAE,CAAQ;QAClC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CACN,CAAC,EACD,YAAY,IAAA,oBAAY,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,2CAA2C;oBAClG,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,2BAA2B,CACrE,CAAC;YACJ,CAAC;YACD,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC7C,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;YACjC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC5B,IAAI,IAAI;oBAAE,OAAO;gBACjB,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,GAAW,EAAE,CAAQ,EAAE,IAAmB,EAAE,MAAqB,EAAE,KAAa;QAC7F,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACf,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC,oBAAoB,KAAK,CAAC,OAAO,GAAG;YACtC,CAAC,CAAC,MAAM;gBACN,CAAC,CAAC,cAAc,MAAM,EAAE;gBACxB,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,mBAAmB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,CAAQ,EAAE,EAAU;QAC7C,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEO,GAAG,CAAC,CAAQ,EAAE,IAAY;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AApLD,gCAoLC;AAqBM,KAAK,UAAU,YAAY,CAAC,IAAuB,EAAE,IAAe;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,KAAK;YACR,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACP,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB;YACE,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kCAAkC,mBAAW,EAAE,CAAC,CAAC;YAC/F,OAAO,kBAAU,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,IAAe;IAC3B,IAAI,CAAC;QACH,OAAO,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,GAAG,CAAC,iBAAkB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,IAAuB,EAAE,IAAe;IACnD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,4CAA4C,mBAAW,EAAE,CAAC,CAAC;QACpE,OAAO,kBAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,kBAAkB,CAAC,CAAC;QACtD,OAAO,oBAAY,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CACN,qBAAqB,IAAI,2FAA2F,CACrH,CAAC;QACF,OAAO,oBAAY,CAAC;IACtB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,oBAAY,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,qCAAqC,CAAC,CAAC;QAC9D,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CACN,qGAAqG;QACnG,sDAAsD,CACzD,CAAC;IACF,OAAO,eAAO,CAAC;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,IAAuB,EAAE,IAAe;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,6CAA6C,mBAAW,EAAE,CAAC,CAAC;QACrE,OAAO,kBAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,oBAAY,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,iCAAiC,CAAC,CAAC;QAC1D,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,kEAAkE,CAAC,CAAC;IACnG,OAAO,eAAO,CAAC;AACjB,CAAC;AAED,SAAS,IAAI,CAAC,IAAe;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,oBAAY,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC;IACjG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QACjG,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,KAAK,CAAC,MAAM,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAClH,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAA,oBAAY,EAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,CACN,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,EAAE,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,eAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,IAAe,EAAE,IAAY;IAChD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,wEAAwE,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,OAAO,CAAC,IAAe;IAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,oBAAY,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAA,uBAAe,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QAC9F,OAAO,oBAAY,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAA,mBAAO,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,oBAAY,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,uEAAuE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7F,IAAI,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;IACvG,OAAO,eAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAe;IAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;QACjH,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,oBAAY,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACtD,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,iEAAiE,CAAC,CAAC;IAClG,OAAO,eAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAe;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,oBAAY,CAAC;IAC3C,uEAAuE;IACvE,kEAAkE;IAClE,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;QACzG,IAAI,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAC7F,OAAO,eAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,qBAAa,EACxB,IAAI,CAAC,EAAE,EACP,IAAA,qBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,EACxB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,EAC/C,IAAI,CAAC,KAAK,CACX,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,4DAA4D,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QACpG,OAAO,iBAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,6CAA6C,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAChH,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAC9D,OAAO,oBAAY,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC;QACzB,GAAG,IAAI,CAAC,UAAU,EAAE;QACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QACnE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CACN,sBAAsB,QAAQ,CAAC,KAAK,CAAC,MAAM,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,SAAS,IAAI,CAAC,GAAG,2BAA2B,CAC9J,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,EAAE;gBAC9B,KAAK,IAAI,CAAC,CAAC;gBACX,IAAI,CAAC,GAAG,CACN,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,6BAA6B,CAC7G,CAAC;gBACF,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACnB,GAAG,EAAE,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,OAAO,eAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,uEAAuE;AACvE,SAAgB,OAAO,CAAC,UAAkC;IACxD,MAAM,UAAU,GAAG,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7E,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,OAAO,IAAA,sBAAY,EAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,SAAgB,aAAa;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO;QACL,IAAI,EAAE,IAAA,iBAAO,GAAE;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,EAAE,EAAE,mBAAW;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,qBAAS;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;QACrB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;QACrB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QAChD,UAAU,EAAE,GAAG,EAAE;YACf,uEAAuE;YACvE,wEAAwE;YACxE,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;gBAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACjF,OAAO;gBACL,KAAK,EAAE,IAAA,iCAAmB,EAAC,IAAA,iBAAO,GAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBACpG,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACrB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;gBACxC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAmB,CAAC;gBACpD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBACxB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;wBAClE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;oBACnC,CAAC;oBACD,wEAAwE;oBACxE,mDAAmD;oBACnD,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE;wBAChE,GAAG,EAAE,IAAI;wBACT,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;wBACjC,WAAW,EAAE,IAAI;qBAClB,CAAC,CAAC;oBACH,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,IAAI,oBAAY,EAAE,CAAC;wBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnE,CAAC;oBACD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC3D,OAAO;wBACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;4BACd,IAAI,CAAC;gCACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BAC5C,CAAC;4BAAC,MAAM,CAAC;gCACP,qCAAqC;4BACvC,CAAC;wBACH,CAAC;qBACF,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;YACf,MAAM,OAAO,GAAqB;gBAChC,QAAQ;gBACR,SAAS;gBACT,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,UAAU,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,GAAG,EAAE;gBACV,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type Platform } from './serve';
2
+ import type { SupervisorTask } from './serve-cmd';
3
+ /**
4
+ * The supervisor's two periodic jobs, wired to the real machine.
5
+ *
6
+ * rescan every five minutes, the recorded code roots are walked and
7
+ * any new repository is set up and served (`connect.ts`);
8
+ * clone requests every minute, the server is asked what this machine
9
+ * should clone (`repo-requests.ts`).
10
+ *
11
+ * The decisions live in those two files; this one only hands them a
12
+ * filesystem, git and the server.
13
+ */
14
+ /** A clone that has not finished in this long is killed and reported as failed. */
15
+ export declare const CLONE_TIMEOUT_MS: number;
16
+ export declare function nodeSupervisorTasks(home: string, platform: Platform, log: (line: string) => void): SupervisorTask[];
17
+ //# sourceMappingURL=serve-tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-tasks.d.ts","sourceRoot":"","sources":["../src/serve-tasks.ts"],"names":[],"mappings":"AASA,OAAO,EAA0D,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD;;;;;;;;;;GAUG;AAEH,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAG5C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,cAAc,EAAE,CA4CnH"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLONE_TIMEOUT_MS = void 0;
4
+ exports.nodeSupervisorTasks = nodeSupervisorTasks;
5
+ const node_child_process_1 = require("node:child_process");
6
+ const node_fs_1 = require("node:fs");
7
+ const connect_1 = require("./connect");
8
+ const git_driver_1 = require("./git-driver");
9
+ const machine_store_1 = require("./machine-store");
10
+ const repo_origin_1 = require("./repo-origin");
11
+ const repo_init_1 = require("./repo-init");
12
+ const repo_requests_1 = require("./repo-requests");
13
+ const repo_scan_1 = require("./repo-scan");
14
+ const serve_1 = require("./serve");
15
+ const server_client_1 = require("./server-client");
16
+ const trusted_git_1 = require("./trusted-git");
17
+ /**
18
+ * The supervisor's two periodic jobs, wired to the real machine.
19
+ *
20
+ * rescan every five minutes, the recorded code roots are walked and
21
+ * any new repository is set up and served (`connect.ts`);
22
+ * clone requests every minute, the server is asked what this machine
23
+ * should clone (`repo-requests.ts`).
24
+ *
25
+ * The decisions live in those two files; this one only hands them a
26
+ * filesystem, git and the server.
27
+ */
28
+ /** A clone that has not finished in this long is killed and reported as failed. */
29
+ exports.CLONE_TIMEOUT_MS = 15 * 60_000;
30
+ /* istanbul ignore next — real fs, git and network; the logic lives in connect.ts and repo-requests.ts */
31
+ function nodeSupervisorTasks(home, platform, log) {
32
+ const provisionDeps = {
33
+ home,
34
+ platform,
35
+ fs: serve_1.nodeServeFs,
36
+ now: () => new Date(),
37
+ initRepo: (dir) => (0, repo_init_1.initRepoQuietly)(dir),
38
+ configProblem: (dir) => (0, repo_init_1.configProblemOf)(dir),
39
+ };
40
+ const rescanner = new connect_1.RootRescanner({ ...provisionDeps, scanFs: repo_scan_1.nodeScanFs, log });
41
+ const client = () => {
42
+ const identity = new machine_store_1.MachineStore((0, machine_store_1.machineFilePath)(home)).load();
43
+ if (identity === null)
44
+ return null;
45
+ return new server_client_1.ServerClient({ baseUrl: identity.serverUrl, token: identity.token });
46
+ };
47
+ const worker = new repo_requests_1.RepoRequestWorker({
48
+ platform,
49
+ list: async () => {
50
+ const c = client();
51
+ if (c === null)
52
+ return null;
53
+ return (await c.machineRepoRequests()).requests ?? [];
54
+ },
55
+ report: async (id, result) => {
56
+ const c = client();
57
+ if (c === null)
58
+ throw new Error('this machine is no longer paired');
59
+ await c.reportRepoRequest(id, result);
60
+ },
61
+ cloneRoot: () => (0, serve_1.cloneRootOf)((0, serve_1.readRegistry)(serve_1.nodeServeFs, (0, serve_1.servedFilePath)(home)), home, platform),
62
+ exists: (p) => (0, node_fs_1.existsSync)(p),
63
+ mkdirp: (p) => {
64
+ (0, node_fs_1.mkdirSync)(p, { recursive: true });
65
+ },
66
+ originOf: (dir) => (0, repo_origin_1.readOriginUrl)((0, git_driver_1.nodeGitExec)(dir)),
67
+ clone: nodeClone,
68
+ provision: (dir) => (0, connect_1.provisionRepos)([dir], provisionDeps)[0],
69
+ log,
70
+ });
71
+ return [
72
+ { name: 'rescan', everyMs: connect_1.RESCAN_EVERY_MS, run: () => rescanner.run() },
73
+ { name: 'clone requests', everyMs: repo_requests_1.REPO_REQUEST_POLL_MS, run: () => worker.run() },
74
+ ];
75
+ }
76
+ /**
77
+ * `git clone`, with the same trust the rest of the CLI gives git.
78
+ *
79
+ * ⚠️ NOT `nodeGitExec`, AND ON PURPOSE: that refuses to run anywhere that is
80
+ * not already a repository root, and a clone by definition runs where there is
81
+ * none yet. Everything else it does is kept — the absolute git binary (never
82
+ * one the cwd chooses), hooks pointed at an empty directory, signing off, the
83
+ * `GIT_` namespace rebuilt — with no `GIT_DIR` pin, because there is no
84
+ * repository to pin to.
85
+ *
86
+ * ⚠️ NO PROMPTS. `GIT_TERMINAL_PROMPT=0` comes from `trustedGitEnv`, and the
87
+ * credential manager's own window is turned off too: a supervisor at login has
88
+ * nobody to answer it, and a clone waiting on a hidden dialog would hold every
89
+ * later request behind it. A private repository needs credentials the machine
90
+ * already has.
91
+ */
92
+ /* istanbul ignore next — real git */
93
+ function nodeClone(url, target) {
94
+ return new Promise((resolve) => {
95
+ const bin = (0, trusted_git_1.gitBinary)();
96
+ if (bin === null) {
97
+ resolve({ ok: false, error: 'git was not found on PATH' });
98
+ return;
99
+ }
100
+ const env = { ...(0, trusted_git_1.trustedGitEnv)(process.env), GCM_INTERACTIVE: 'never' };
101
+ const child = (0, node_child_process_1.spawn)(bin, [...(0, trusted_git_1.trustedGitArgs)(), 'clone', '--quiet', '--', url, target], {
102
+ env,
103
+ stdio: ['ignore', 'ignore', 'pipe'],
104
+ windowsHide: true,
105
+ });
106
+ const err = [];
107
+ child.stderr.on('data', (d) => err.push(d.toString('utf8')));
108
+ const timer = setTimeout(() => child.kill('SIGKILL'), exports.CLONE_TIMEOUT_MS);
109
+ child.on('error', (e) => {
110
+ clearTimeout(timer);
111
+ resolve({ ok: false, error: e.message });
112
+ });
113
+ child.on('close', (code, signal) => {
114
+ clearTimeout(timer);
115
+ if (code === 0)
116
+ resolve({ ok: true });
117
+ else if (signal)
118
+ resolve({ ok: false, error: `git clone did not finish in ${exports.CLONE_TIMEOUT_MS / 60_000} minutes` });
119
+ else
120
+ resolve({ ok: false, error: err.join('').trim() || `git clone exited with code ${code}` });
121
+ });
122
+ });
123
+ }
124
+ //# sourceMappingURL=serve-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-tasks.js","sourceRoot":"","sources":["../src/serve-tasks.ts"],"names":[],"mappings":"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"}
package/dist/serve.d.ts CHANGED
@@ -34,9 +34,31 @@ export interface ServedRepo {
34
34
  readonly path: string;
35
35
  readonly addedAt: string;
36
36
  }
37
+ /** A folder `looply connect` was told holds code; rescanned for new repositories. */
38
+ export interface ServedRoot {
39
+ readonly path: string;
40
+ readonly addedAt: string;
41
+ }
42
+ /**
43
+ * The served list.
44
+ *
45
+ * Version 2 adds what `looply connect` records — the code roots the supervisor
46
+ * rescans, where requested clones go, and the repositories a person took out
47
+ * of service under a root (so a rescan does not put them straight back).
48
+ * Version 1 files are read as version 2 with none of those; every write is
49
+ * version 2.
50
+ */
37
51
  export interface ServedRegistry {
38
- readonly version: 1;
52
+ readonly version: 1 | 2;
39
53
  readonly repos: readonly ServedRepo[];
54
+ readonly roots?: readonly ServedRoot[];
55
+ /** Where requested clones go; absent means the first root, then `~/looply-repos`. */
56
+ readonly cloneRoot?: string;
57
+ /**
58
+ * Removed with `serve remove` while under a root. A rescan skips these;
59
+ * `serve add` takes one off the list again.
60
+ */
61
+ readonly ignored?: readonly ServedRoot[];
40
62
  }
41
63
  export declare const EMPTY_REGISTRY: ServedRegistry;
42
64
  /**
@@ -78,6 +100,7 @@ export declare function configPathOf(repo: string, platform: Platform): string;
78
100
  * same rule `MachineStore.load` keeps for the identity.
79
101
  */
80
102
  export declare function readRegistry(fs: ServeFs, file: string): ServedRegistry;
103
+ /** Always written as version 2, whatever was read. */
81
104
  export declare function writeRegistry(fs: ServeFs, file: string, registry: ServedRegistry): void;
82
105
  export declare function addRepo(registry: ServedRegistry, path: string, addedAt: string, platform: Platform): {
83
106
  registry: ServedRegistry;
@@ -87,6 +110,16 @@ export declare function removeRepo(registry: ServedRegistry, path: string, platf
87
110
  registry: ServedRegistry;
88
111
  removed: boolean;
89
112
  };
113
+ /** Whether `path` is one of the recorded roots or inside one. */
114
+ export declare function isUnderRoot(registry: ServedRegistry, path: string, platform: Platform): boolean;
115
+ /** Record code roots; ones already recorded are left as they are. */
116
+ export declare function addRoots(registry: ServedRegistry, paths: readonly string[], addedAt: string, platform: Platform): {
117
+ registry: ServedRegistry;
118
+ added: string[];
119
+ };
120
+ export declare function isIgnored(registry: ServedRegistry, path: string, platform: Platform): boolean;
121
+ /** Where a requested clone goes: the recorded clone root, else the first code root, else `~/looply-repos`. */
122
+ export declare function cloneRootOf(registry: ServedRegistry, home: string, platform: Platform): string;
90
123
  /** 2s, 4s, 8s … capped at a minute. `failures` counts consecutive short lives. */
91
124
  export declare function backoffDelay(failures: number): number;
92
125
  /**
@@ -143,6 +176,8 @@ export declare function takeServeLock(fs: ServeFs, path: string, self: {
143
176
  pid: number;
144
177
  at: string;
145
178
  }, probe: ProbeFn): ServeLockResult;
179
+ /** The pid of a supervisor holding the lock that is not known to be dead, or null when there is none. */
180
+ export declare function liveServeLockHolder(fs: ServeFs, path: string, probe: ProbeFn): number | null;
146
181
  export declare function windowsStartupFolder(env: NodeJS.ProcessEnv): string | null;
147
182
  export interface LaunchPaths {
148
183
  /** Absolute path of the node executable (`process.execPath`). */
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -12,9 +12,14 @@ exports.readRegistry = readRegistry;
12
12
  exports.writeRegistry = writeRegistry;
13
13
  exports.addRepo = addRepo;
14
14
  exports.removeRepo = removeRepo;
15
+ exports.isUnderRoot = isUnderRoot;
16
+ exports.addRoots = addRoots;
17
+ exports.isIgnored = isIgnored;
18
+ exports.cloneRootOf = cloneRootOf;
15
19
  exports.backoffDelay = backoffDelay;
16
20
  exports.reconcile = reconcile;
17
21
  exports.takeServeLock = takeServeLock;
22
+ exports.liveServeLockHolder = liveServeLockHolder;
18
23
  exports.windowsStartupFolder = windowsStartupFolder;
19
24
  exports.windowsStartupScript = windowsStartupScript;
20
25
  exports.unixServiceHint = unixServiceHint;
@@ -50,7 +55,7 @@ exports.BACKOFF_FIRST_MS = 2_000;
50
55
  exports.BACKOFF_MAX_MS = 60_000;
51
56
  /** A child that stayed up this long has earned a fresh backoff. */
52
57
  exports.BACKOFF_RESET_AFTER_MS = 5 * 60_000;
53
- exports.EMPTY_REGISTRY = { version: 1, repos: [] };
58
+ exports.EMPTY_REGISTRY = { version: 2, repos: [], roots: [] };
54
59
  exports.nodeServeFs = {
55
60
  ...machine_store_1.nodeMachineFs,
56
61
  isDir: (p) => {
@@ -141,32 +146,95 @@ function readRegistry(fs, file) {
141
146
  throw new Error(`${file} is not valid JSON — fix it or move it aside, then add the repositories again`);
142
147
  }
143
148
  const o = parsed;
144
- if (typeof o !== 'object' || o === null || o.version !== 1 || !Array.isArray(o.repos)) {
145
- throw new Error(`${file} is not a version 1 served-repositories list`);
149
+ if (typeof o !== 'object' || o === null || (o.version !== 1 && o.version !== 2) || !Array.isArray(o.repos)) {
150
+ throw new Error(`${file} is not a version 1 or 2 served-repositories list`);
146
151
  }
147
- const repos = [];
148
- for (const r of o.repos) {
152
+ // ⚠️ A NEWER FIELD THAT IS MALFORMED IS DROPPED, NOT FATAL. The repositories
153
+ // are what keeps daemons running; a bad `roots` must not stop all of them.
154
+ const cloneRoot = typeof o.cloneRoot === 'string' && o.cloneRoot !== '' ? o.cloneRoot : undefined;
155
+ const ignored = Array.isArray(o.ignored) ? pathList(o.ignored) : [];
156
+ return {
157
+ version: 2,
158
+ repos: pathList(o.repos),
159
+ roots: Array.isArray(o.roots) ? pathList(o.roots) : [],
160
+ ...(cloneRoot !== undefined ? { cloneRoot } : {}),
161
+ ...(ignored.length > 0 ? { ignored } : {}),
162
+ };
163
+ }
164
+ function pathList(list) {
165
+ const out = [];
166
+ for (const r of list) {
149
167
  const e = r;
150
168
  if (typeof e !== 'object' || e === null || typeof e.path !== 'string' || e.path === '')
151
169
  continue;
152
- repos.push({ path: e.path, addedAt: typeof e.addedAt === 'string' ? e.addedAt : '' });
170
+ out.push({ path: e.path, addedAt: typeof e.addedAt === 'string' ? e.addedAt : '' });
153
171
  }
154
- return { version: 1, repos };
172
+ return out;
155
173
  }
174
+ /** Always written as version 2, whatever was read. */
156
175
  function writeRegistry(fs, file, registry) {
157
176
  fs.mkdirp((0, node_path_1.dirname)(file));
158
- fs.write(file, `${JSON.stringify(registry, null, 2)}\n`);
177
+ const out = {
178
+ version: 2,
179
+ repos: registry.repos,
180
+ roots: registry.roots ?? [],
181
+ ...(registry.cloneRoot !== undefined ? { cloneRoot: registry.cloneRoot } : {}),
182
+ ...(registry.ignored !== undefined && registry.ignored.length > 0 ? { ignored: registry.ignored } : {}),
183
+ };
184
+ fs.write(file, `${JSON.stringify(out, null, 2)}\n`);
159
185
  }
160
186
  function addRepo(registry, path, addedAt, platform) {
161
187
  const key = repoKey(path, platform);
188
+ // Adding by hand is the person changing their mind about an earlier remove.
189
+ const before = registry.ignored ?? [];
190
+ const ignored = before.filter((r) => repoKey(r.path, platform) !== key);
191
+ const next = ignored.length !== before.length ? { ...registry, ignored } : registry;
162
192
  if (registry.repos.some((r) => repoKey(r.path, platform) === key))
163
- return { registry, added: false };
164
- return { registry: { version: 1, repos: [...registry.repos, { path, addedAt }] }, added: true };
193
+ return { registry: next, added: false };
194
+ return { registry: { ...next, version: 2, repos: [...registry.repos, { path, addedAt }] }, added: true };
165
195
  }
166
196
  function removeRepo(registry, path, platform) {
167
197
  const key = repoKey(path, platform);
168
- const repos = registry.repos.filter((r) => repoKey(r.path, platform) !== key);
169
- return { registry: { version: 1, repos }, removed: repos.length !== registry.repos.length };
198
+ const gone = registry.repos.find((r) => repoKey(r.path, platform) === key);
199
+ if (gone === undefined)
200
+ return { registry, removed: false };
201
+ const repos = registry.repos.filter((r) => r !== gone);
202
+ // Under a recorded root, the rescan would add it straight back within five
203
+ // minutes; so it is remembered as taken out on purpose.
204
+ const ignored = isUnderRoot(registry, path, platform)
205
+ ? [...(registry.ignored ?? []), { path: gone.path, addedAt: gone.addedAt }]
206
+ : registry.ignored;
207
+ return { registry: { ...registry, version: 2, repos, ...(ignored ? { ignored } : {}) }, removed: true };
208
+ }
209
+ /** Whether `path` is one of the recorded roots or inside one. */
210
+ function isUnderRoot(registry, path, platform) {
211
+ const p = pathFor(platform);
212
+ const key = repoKey(path, platform);
213
+ return (registry.roots ?? []).some((r) => {
214
+ const rel = p.relative(repoKey(r.path, platform), key);
215
+ return rel === '' || (!rel.startsWith('..') && !p.isAbsolute(rel));
216
+ });
217
+ }
218
+ /** Record code roots; ones already recorded are left as they are. */
219
+ function addRoots(registry, paths, addedAt, platform) {
220
+ const roots = [...(registry.roots ?? [])];
221
+ const added = [];
222
+ for (const path of paths) {
223
+ const key = repoKey(path, platform);
224
+ if (roots.some((r) => repoKey(r.path, platform) === key))
225
+ continue;
226
+ roots.push({ path, addedAt });
227
+ added.push(path);
228
+ }
229
+ return { registry: { ...registry, version: 2, roots }, added };
230
+ }
231
+ function isIgnored(registry, path, platform) {
232
+ const key = repoKey(path, platform);
233
+ return (registry.ignored ?? []).some((r) => repoKey(r.path, platform) === key);
234
+ }
235
+ /** Where a requested clone goes: the recorded clone root, else the first code root, else `~/looply-repos`. */
236
+ function cloneRootOf(registry, home, platform) {
237
+ return registry.cloneRoot ?? registry.roots?.[0]?.path ?? pathFor(platform).join(home, 'looply-repos');
170
238
  }
171
239
  /** 2s, 4s, 8s … capped at a minute. `failures` counts consecutive short lives. */
172
240
  function backoffDelay(failures) {
@@ -260,6 +328,15 @@ function takeServeLock(fs, path, self, probe) {
260
328
  const holder = lockPid(fs, path);
261
329
  return { kind: 'held', pid: holder ?? 0 };
262
330
  }
331
+ /** The pid of a supervisor holding the lock that is not known to be dead, or null when there is none. */
332
+ function liveServeLockHolder(fs, path, probe) {
333
+ if (!fs.exists(path))
334
+ return null;
335
+ const pid = lockPid(fs, path);
336
+ if (pid === null)
337
+ return null;
338
+ return probe(pid) === 'dead' ? null : pid;
339
+ }
263
340
  function lockPid(fs, path) {
264
341
  try {
265
342
  const o = JSON.parse(fs.read(path));