@maycombhq/atticus 2.0.0-beta.2 → 2.0.0-beta.3

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 (122) hide show
  1. package/dist/bin.js +2 -2
  2. package/dist/{chunk-EDS2L2LD.js → chunk-2C5B464C.js} +12 -12
  3. package/dist/{chunk-6QSERWXH.js → chunk-2LLFKP7C.js} +7 -7
  4. package/dist/{chunk-EBEW3XXQ.js → chunk-2MD7TXSG.js} +2 -2
  5. package/dist/{chunk-FITWGOJ2.js → chunk-2UIQBDJO.js} +1 -1
  6. package/dist/{chunk-2DIQQJCB.js → chunk-32MPK524.js} +3 -3
  7. package/dist/{chunk-RVH5SUW5.js → chunk-4BMDGTED.js} +2 -2
  8. package/dist/{chunk-PCOCACY3.js → chunk-55YODD3N.js} +8 -8
  9. package/dist/{chunk-XY3P7JW7.js → chunk-56YQ6ROQ.js} +2 -2
  10. package/dist/{chunk-GLUX4EEP.js → chunk-5A5L3T2U.js} +5 -5
  11. package/dist/{chunk-B2WLAWNJ.js → chunk-5FEOD73Z.js} +2 -2
  12. package/dist/{chunk-A3GY6SOA.js → chunk-5WS2YOGD.js} +5 -5
  13. package/dist/{chunk-4BKGMUIK.js → chunk-6D4FRTFF.js} +10 -10
  14. package/dist/{chunk-R6XF6UR3.js → chunk-6GPJOFV4.js} +1 -1
  15. package/dist/{chunk-2ANOROX3.js → chunk-6SCVQZX5.js} +4 -4
  16. package/dist/{chunk-YISXLPHN.js → chunk-72TXNLOC.js} +6 -6
  17. package/dist/{chunk-VN3DP4LQ.js → chunk-7NN5VWDC.js} +10 -10
  18. package/dist/{chunk-3HI6Z55Y.js → chunk-7UFQZXZA.js} +1 -1
  19. package/dist/{chunk-J4K3KVLD.js → chunk-A3KPZJ5M.js} +6 -6
  20. package/dist/{chunk-5KLGBXG5.js → chunk-A6AC72A5.js} +10 -10
  21. package/dist/{chunk-R77KLRB3.js → chunk-A7KZKIZX.js} +6 -6
  22. package/dist/{chunk-66YVAGGM.js → chunk-AFFIK6JI.js} +6 -6
  23. package/dist/{chunk-42EVSKME.js → chunk-AHOQZ4OK.js} +7 -7
  24. package/dist/{chunk-YY6ZQQBP.js → chunk-AXXCPAP6.js} +4 -4
  25. package/dist/{chunk-6D2CQ5II.js → chunk-AY3QXYMB.js} +9 -9
  26. package/dist/{chunk-7WD63HU2.js → chunk-B2OKWJIU.js} +3 -3
  27. package/dist/{chunk-RRTKKSLQ.js → chunk-B632FH3I.js} +1 -1
  28. package/dist/{chunk-GT4I4ZWM.js → chunk-BLW4SXCU.js} +5 -5
  29. package/dist/{chunk-D46WUV3T.js → chunk-BVS2K73A.js} +6 -6
  30. package/dist/{chunk-JCZIKA4C.js → chunk-BYBUDX4T.js} +2 -2
  31. package/dist/{chunk-NE2W3OO7.js → chunk-BYZCY6SP.js} +9 -9
  32. package/dist/{chunk-JMSCMUCA.js → chunk-C6MZFGN7.js} +5 -5
  33. package/dist/{chunk-5GGOLAKC.js → chunk-CD4XHYGY.js} +10 -10
  34. package/dist/{chunk-CEXSU4S6.js → chunk-CEZQOLEO.js} +8 -8
  35. package/dist/{chunk-FHH4I4ZV.js → chunk-CHWTETW7.js} +4 -4
  36. package/dist/{chunk-O3WI5KWW.js → chunk-CMV7TGU6.js} +1 -1
  37. package/dist/{chunk-N7IXEHK3.js → chunk-CP3L3FH7.js} +6 -6
  38. package/dist/{chunk-6BNC6EQ4.js → chunk-CPGCA6GZ.js} +11 -11
  39. package/dist/{chunk-2BFCZ3RK.js → chunk-CWM6KM5G.js} +7 -7
  40. package/dist/{chunk-UBBC2XSG.js → chunk-CXDSTRUJ.js} +6 -6
  41. package/dist/{chunk-KEM4SDDP.js → chunk-DPC5Y5DL.js} +1 -1
  42. package/dist/{chunk-6IU67AEK.js → chunk-DQN7TF5D.js} +4 -4
  43. package/dist/{chunk-UNM6ZOKP.js → chunk-ED2LWWIP.js} +5 -5
  44. package/dist/{chunk-ZCJDOK2S.js → chunk-EHVTK3UE.js} +8 -8
  45. package/dist/{chunk-T2UYZSCQ.js → chunk-EXIMEJ2X.js} +13 -13
  46. package/dist/{chunk-JZU3H6UQ.js → chunk-F44OMYIN.js} +15 -15
  47. package/dist/{chunk-NXFPS2LR.js → chunk-FALXWAMD.js} +2 -2
  48. package/dist/{chunk-K65BJIMT.js → chunk-FBNPE7HS.js} +6 -6
  49. package/dist/{chunk-7ZUIMTOU.js → chunk-FSWUD5QB.js} +9 -9
  50. package/dist/{chunk-ZNCEKR4J.js → chunk-FVQISWPW.js} +1 -1
  51. package/dist/{chunk-2RMYG36Q.js → chunk-GK6XK5SP.js} +4 -4
  52. package/dist/{chunk-5WG5YP4T.js → chunk-GLEBK5L3.js} +3 -3
  53. package/dist/{chunk-S3QNRWYR.js → chunk-GNB5QDDI.js} +3 -3
  54. package/dist/{chunk-TDD55CJH.js → chunk-GRMR5TRQ.js} +3 -3
  55. package/dist/{chunk-YYQN46FY.js → chunk-HC6XKREB.js} +9 -9
  56. package/dist/{chunk-ONLS5QA5.js → chunk-HJDICQA4.js} +2 -2
  57. package/dist/{chunk-HVUPKCGJ.js → chunk-HVIMMDVB.js} +1 -1
  58. package/dist/{chunk-VYDBJ73M.js → chunk-HZVLAPN5.js} +4 -4
  59. package/dist/{chunk-GDLULHTC.js → chunk-IQFTZ37C.js} +5 -5
  60. package/dist/{chunk-DPZHZQKE.js → chunk-ITY3VJRX.js} +2 -2
  61. package/dist/{chunk-RZPYKDWS.js → chunk-JPGCERE2.js} +1 -1
  62. package/dist/{chunk-NN2ZQEB4.js → chunk-JQDNHIBC.js} +11 -11
  63. package/dist/{chunk-CSZ4C5N6.js → chunk-JRBCWLOR.js} +3 -3
  64. package/dist/{chunk-7SW2QWLU.js → chunk-JRZQA2JM.js} +3 -3
  65. package/dist/{chunk-GBRFVT63.js → chunk-KCBJCA66.js} +12 -12
  66. package/dist/{chunk-EFHQ3TWP.js → chunk-KJPMEAI4.js} +73 -5
  67. package/dist/{chunk-Q4D5X7QB.js → chunk-KUUQR4HA.js} +4 -4
  68. package/dist/{chunk-LR3R6Z2A.js → chunk-L3BX5ZIB.js} +2 -2
  69. package/dist/{chunk-7FBGJFEE.js → chunk-LBENYT3H.js} +3 -3
  70. package/dist/{chunk-E36QOJMD.js → chunk-LNAJW6FB.js} +9 -9
  71. package/dist/{chunk-XAKWMCXI.js → chunk-MXCHWULV.js} +1 -1
  72. package/dist/{chunk-4BN53TG3.js → chunk-N3E56YPN.js} +15 -14
  73. package/dist/{chunk-64EQYWCA.js → chunk-NHFQMOVK.js} +2 -2
  74. package/dist/{chunk-UGLN7QHV.js → chunk-NQU6KNQF.js} +3 -3
  75. package/dist/{chunk-QZSX3F7C.js → chunk-OIK5YPTN.js} +11 -9
  76. package/dist/{chunk-27NKUS3X.js → chunk-OLWFG75W.js} +1 -1
  77. package/dist/{chunk-RTEYOSJY.js → chunk-ONPUIE7Y.js} +5 -5
  78. package/dist/{chunk-AA6YULYB.js → chunk-OW7D2PJL.js} +1 -1
  79. package/dist/{chunk-A7UPUQFY.js → chunk-P63VL4HE.js} +66 -65
  80. package/dist/{chunk-7AVHLZGD.js → chunk-PA4YNUMU.js} +12 -12
  81. package/dist/{chunk-DKJA76CJ.js → chunk-PBS3OFNN.js} +3 -3
  82. package/dist/{chunk-QRAOANID.js → chunk-PFT3VTS4.js} +5 -5
  83. package/dist/{chunk-6J5OKA4Y.js → chunk-PFTA6BZF.js} +4 -4
  84. package/dist/{chunk-M766ZJ6W.js → chunk-PNN5KLAY.js} +11 -11
  85. package/dist/{chunk-RUVFXE2L.js → chunk-PUKEZ37F.js} +7 -7
  86. package/dist/{chunk-OLQJTJJU.js → chunk-Q3HOFXZJ.js} +1 -1
  87. package/dist/{chunk-DE76JROX.js → chunk-QKRNMBJO.js} +4 -4
  88. package/dist/{chunk-W5BVQF44.js → chunk-QSU47IQ5.js} +5 -5
  89. package/dist/{chunk-WVPJSRRJ.js → chunk-QXNWYUYI.js} +7 -7
  90. package/dist/{chunk-OT2O76OS.js → chunk-RCU3MPY2.js} +4 -4
  91. package/dist/{chunk-SJRGMG6A.js → chunk-RLIB4JUN.js} +12 -12
  92. package/dist/{chunk-BOHJZTEQ.js → chunk-RYSCLMU3.js} +6 -6
  93. package/dist/{chunk-6M5NK3K3.js → chunk-RZUZ4RJJ.js} +2 -2
  94. package/dist/{chunk-AIOQPLA5.js → chunk-S2FBBX7D.js} +4 -4
  95. package/dist/{chunk-PCVDV3UZ.js → chunk-S34B4QPI.js} +2 -2
  96. package/dist/{chunk-TXLH6WHQ.js → chunk-SETWVXOJ.js} +4 -4
  97. package/dist/{chunk-BKVWTZ6A.js → chunk-SMA4N4AC.js} +11 -11
  98. package/dist/{chunk-652QWTLZ.js → chunk-STHSY74Q.js} +2 -2
  99. package/dist/{chunk-CPA6HPVR.js → chunk-STUPFGXY.js} +6 -6
  100. package/dist/{chunk-ICY36XCH.js → chunk-T5I4S2W3.js} +8 -8
  101. package/dist/{chunk-JGZCG5VM.js → chunk-TAVDMUV3.js} +5 -5
  102. package/dist/{chunk-3USYZGRF.js → chunk-TBSQJ6IV.js} +10 -10
  103. package/dist/{chunk-TYAID7B7.js → chunk-TIZHP7KE.js} +9 -9
  104. package/dist/{chunk-JIITQXFB.js → chunk-TW2KPPUC.js} +61 -61
  105. package/dist/{chunk-IPKHE5D6.js → chunk-V5PKHHQQ.js} +1 -1
  106. package/dist/{chunk-I4JRCD6M.js → chunk-VF4IOZZO.js} +4 -4
  107. package/dist/{chunk-XPTOBS2D.js → chunk-VJTINHZI.js} +11 -11
  108. package/dist/{chunk-MGYZM27B.js → chunk-VKLILA2D.js} +3 -3
  109. package/dist/{chunk-CKSITVS4.js → chunk-VPTTCYOC.js} +3 -3
  110. package/dist/{chunk-2BF2EYJV.js → chunk-WYFIXP54.js} +1 -1
  111. package/dist/{chunk-W3BQAZ3Q.js → chunk-WZ2BXIGG.js} +3 -3
  112. package/dist/{chunk-FQXYPF7E.js → chunk-XJNDSYGO.js} +1 -1
  113. package/dist/{chunk-4WBVUHXN.js → chunk-XSQKGVYA.js} +5 -5
  114. package/dist/{chunk-CR3MTH32.js → chunk-XUPVB7TL.js} +2 -2
  115. package/dist/{chunk-T6XQL73F.js → chunk-Y4NG2FP5.js} +9 -9
  116. package/dist/{chunk-3C7EYRFZ.js → chunk-YGMCXNTY.js} +1 -1
  117. package/dist/{chunk-IHMLFRVV.js → chunk-YJKPTX6J.js} +3 -3
  118. package/dist/{chunk-2VHF7OXM.js → chunk-Z7SG32ZY.js} +1 -1
  119. package/dist/{chunk-HITVBIJS.js → chunk-ZJSP24X4.js} +5 -5
  120. package/dist/{chunk-MVZVGYXH.js → chunk-ZUIAOKXI.js} +2 -2
  121. package/dist/files.json +307 -307
  122. package/package.json +6 -6
@@ -350,8 +350,8 @@ async function checkoutState(dir, git = createGit()) {
350
350
 
351
351
  // packages/workspace/dist/manager.js
352
352
  import { existsSync as existsSync2 } from "node:fs";
353
- import { mkdir as mkdir3, rm as rm2 } from "node:fs/promises";
354
- import { dirname as dirname2 } from "node:path";
353
+ import { mkdir as mkdir3, readdir as readdir2, rm as rm2 } from "node:fs/promises";
354
+ import { basename, dirname as dirname2, join as join4 } from "node:path";
355
355
  function isInPlace(url) {
356
356
  return url === "." || url.startsWith("./");
357
357
  }
@@ -385,7 +385,34 @@ function createWorkspace(root, git = createGit()) {
385
385
  const b = await remoteDefaultBranch(cwd, git);
386
386
  return b ? { remoteDefault: b } : {};
387
387
  };
388
- async function syncOne(repo) {
388
+ async function copyFrom(repo, from, dest) {
389
+ const branch = repo.defaultBranch;
390
+ const sha = async (ref) => {
391
+ try {
392
+ return (await g(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`], from)).stdout.trim();
393
+ } catch {
394
+ return "";
395
+ }
396
+ };
397
+ const at = await sha(`refs/remotes/origin/${branch}`) || await sha(`refs/heads/${branch}`);
398
+ if (!at)
399
+ return {
400
+ id: repo.id,
401
+ action: "failed",
402
+ reason: `your clone at ${from} has no ${branch} branch; fetch it there, or sync without --from`
403
+ };
404
+ await g(["clone", "--quiet", "--no-tags", "--no-checkout", "--", from, dest]);
405
+ await g(["remote", "set-url", "origin", repo.url], dest);
406
+ const refs = (await g(["for-each-ref", "--format=%(refname)", "refs/remotes/origin"], dest)).stdout.split("\n").filter(Boolean);
407
+ for (const r of refs)
408
+ await g(["update-ref", "-d", r], dest);
409
+ await g(["update-ref", `refs/remotes/origin/${branch}`, at], dest);
410
+ if (repo.sparse.length > 0)
411
+ await g(["sparse-checkout", "set", "--", ...repo.sparse], dest);
412
+ await g(["checkout", "--quiet", "-B", branch, at], dest);
413
+ return { id: repo.id, action: "cloned", sha: await head(dest), from };
414
+ }
415
+ async function syncOne(repo, local) {
389
416
  if (repo.archived)
390
417
  return { id: repo.id, action: "skipped", reason: "archived" };
391
418
  if (isInPlace(repo.url))
@@ -399,6 +426,9 @@ function createWorkspace(root, git = createGit()) {
399
426
  try {
400
427
  if (!existsSync2(dest)) {
401
428
  await mkdir3(dirname2(dest), { recursive: true });
429
+ const from = local && yourClone(local, repo);
430
+ if (from)
431
+ return await copyFrom(repo, from, dest);
402
432
  const args = ["clone", "--no-tags", "--branch", branch, "--filter=blob:none"];
403
433
  if (repo.sparse.length > 0)
404
434
  args.push("--sparse");
@@ -468,12 +498,13 @@ function createWorkspace(root, git = createGit()) {
468
498
  }
469
499
  return {
470
500
  root,
471
- async sync(repos) {
501
+ async sync(repos, opts = {}) {
472
502
  if (repos.some((r) => !r.archived && !isInPlace(r.url)))
473
503
  await ensureGitignore(root);
474
504
  const out = [];
505
+ const local = opts.from ? await localClones(opts.from, git) : void 0;
475
506
  for (const repo of repos)
476
- out.push(await syncOne(repo));
507
+ out.push(await syncOne(repo, local));
477
508
  return out;
478
509
  },
479
510
  async checkoutBranch(repo, branch) {
@@ -556,6 +587,43 @@ function createWorkspace(root, git = createGit()) {
556
587
  }
557
588
  };
558
589
  }
590
+ function remoteKey(url) {
591
+ let u = url.trim().replace(/\\/g, "/");
592
+ const scp = /^[\w.-]+@([^:/]+):(.+)$/.exec(u);
593
+ if (scp)
594
+ u = `${scp[1]}/${scp[2]}`;
595
+ u = u.replace(/^[a-z+]+:\/\//i, "").replace(/^[^@/]+@/, "");
596
+ u = u.replace(/\/{2,}/g, "/").replace(/\/+$/, "").replace(/\.git$/i, "");
597
+ const slash = u.indexOf("/");
598
+ return slash < 0 ? u.toLowerCase() : u.slice(0, slash).toLowerCase() + u.slice(slash);
599
+ }
600
+ async function localClones(dir, g) {
601
+ const found = /* @__PURE__ */ new Map();
602
+ const visit = async (d, depth) => {
603
+ let names;
604
+ try {
605
+ names = await readdir2(d);
606
+ } catch {
607
+ return;
608
+ }
609
+ if (names.includes(".git")) {
610
+ const url = await g(["config", "--get", "remote.origin.url"], d).then((r) => r.stdout.trim(), () => "");
611
+ if (url && !found.has(`url:${remoteKey(url)}`))
612
+ found.set(`url:${remoteKey(url)}`, d);
613
+ if (!found.has(`name:${basename(d)}`))
614
+ found.set(`name:${basename(d)}`, d);
615
+ return;
616
+ }
617
+ if (depth === 0)
618
+ return;
619
+ for (const n of names)
620
+ if (!n.startsWith(".") && n !== "node_modules")
621
+ await visit(join4(d, n), depth - 1);
622
+ };
623
+ await visit(dir, 2);
624
+ return found;
625
+ }
626
+ var yourClone = (local, repo) => local.get(`url:${remoteKey(repo.url)}`) ?? local.get(`name:${repo.id}`);
559
627
 
560
628
  // packages/workspace/dist/identity.js
561
629
  import { userInfo } from "node:os";
@@ -5,12 +5,12 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  intakeContext
8
- } from "./chunk-ZNCEKR4J.js";
8
+ } from "./chunk-FVQISWPW.js";
9
9
  import "./chunk-VOGCSYOI.js";
10
10
  import {
11
11
  changeFolder,
12
12
  changeStore
13
- } from "./chunk-XY3P7JW7.js";
13
+ } from "./chunk-56YQ6ROQ.js";
14
14
  import "./chunk-4AK7IBVP.js";
15
15
  import "./chunk-7JUKDRSZ.js";
16
16
  import {
@@ -18,7 +18,7 @@ import {
18
18
  estateRepos,
19
19
  joinReposOf,
20
20
  outsideSystems
21
- } from "./chunk-27NKUS3X.js";
21
+ } from "./chunk-OLWFG75W.js";
22
22
  import "./chunk-L24C55VN.js";
23
23
  import "./chunk-PAMPPUR6.js";
24
24
  import {
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-23W7VWKR.js";
29
29
  import "./chunk-7EKXJZ2Y.js";
30
30
  import "./chunk-MC3H7736.js";
31
- import "./chunk-EFHQ3TWP.js";
31
+ import "./chunk-KJPMEAI4.js";
32
32
  import "./chunk-GQ4N4WKF.js";
33
33
  import "./chunk-CNUKCS2T.js";
34
34
  import {
@@ -8,13 +8,13 @@ import {
8
8
  } from "./chunk-VOGCSYOI.js";
9
9
  import {
10
10
  storeSpecLookup
11
- } from "./chunk-XY3P7JW7.js";
11
+ } from "./chunk-56YQ6ROQ.js";
12
12
  import {
13
13
  createAdapters
14
14
  } from "./chunk-7JUKDRSZ.js";
15
15
  import {
16
16
  readCatalog
17
- } from "./chunk-27NKUS3X.js";
17
+ } from "./chunk-OLWFG75W.js";
18
18
  import {
19
19
  FeatureError,
20
20
  FlowGraph,
@@ -5,8 +5,8 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  loadCatalog
8
- } from "./chunk-FITWGOJ2.js";
9
- import "./chunk-27NKUS3X.js";
8
+ } from "./chunk-2UIQBDJO.js";
9
+ import "./chunk-OLWFG75W.js";
10
10
  import {
11
11
  domainProfile
12
12
  } from "./chunk-L24C55VN.js";
@@ -14,7 +14,7 @@ import "./chunk-PAMPPUR6.js";
14
14
  import "./chunk-23W7VWKR.js";
15
15
  import "./chunk-7EKXJZ2Y.js";
16
16
  import "./chunk-MC3H7736.js";
17
- import "./chunk-EFHQ3TWP.js";
17
+ import "./chunk-KJPMEAI4.js";
18
18
  import "./chunk-GQ4N4WKF.js";
19
19
  import "./chunk-CNUKCS2T.js";
20
20
  import {
@@ -11,26 +11,26 @@ import {
11
11
  releaseNotesCommand,
12
12
  releasePlanCommand,
13
13
  releaseSecurityCommand
14
- } from "./chunk-652QWTLZ.js";
15
- import "./chunk-BOHJZTEQ.js";
16
- import "./chunk-MVZVGYXH.js";
14
+ } from "./chunk-STHSY74Q.js";
15
+ import "./chunk-RYSCLMU3.js";
16
+ import "./chunk-ZUIAOKXI.js";
17
17
  import "./chunk-BWZ77RQT.js";
18
- import "./chunk-2ANOROX3.js";
18
+ import "./chunk-6SCVQZX5.js";
19
19
  import "./chunk-65NYPGRC.js";
20
- import "./chunk-CKSITVS4.js";
20
+ import "./chunk-VPTTCYOC.js";
21
21
  import "./chunk-L6SGQIR3.js";
22
- import "./chunk-3HI6Z55Y.js";
23
- import "./chunk-XY3P7JW7.js";
22
+ import "./chunk-7UFQZXZA.js";
23
+ import "./chunk-56YQ6ROQ.js";
24
24
  import "./chunk-4AK7IBVP.js";
25
25
  import "./chunk-7JUKDRSZ.js";
26
- import "./chunk-27NKUS3X.js";
26
+ import "./chunk-OLWFG75W.js";
27
27
  import "./chunk-L24C55VN.js";
28
28
  import "./chunk-PAMPPUR6.js";
29
29
  import "./chunk-23W7VWKR.js";
30
30
  import "./chunk-7EKXJZ2Y.js";
31
31
  import "./chunk-MC3H7736.js";
32
32
  import "./chunk-T6AIP7H5.js";
33
- import "./chunk-EFHQ3TWP.js";
33
+ import "./chunk-KJPMEAI4.js";
34
34
  import "./chunk-GQ4N4WKF.js";
35
35
  import "./chunk-CNUKCS2T.js";
36
36
  import "./chunk-S2A7YC3Q.js";
@@ -12,7 +12,7 @@ import {
12
12
  runEvals,
13
13
  saveReport,
14
14
  writeQuality
15
- } from "./chunk-CPA6HPVR.js";
15
+ } from "./chunk-STUPFGXY.js";
16
16
  import {
17
17
  table
18
18
  } from "./chunk-VOGCSYOI.js";
@@ -5,27 +5,27 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  storeSummaryLines
8
- } from "./chunk-2VHF7OXM.js";
8
+ } from "./chunk-Z7SG32ZY.js";
9
9
  import {
10
10
  SCAN_REVIEW_OUTPUT
11
- } from "./chunk-KEM4SDDP.js";
11
+ } from "./chunk-DPC5Y5DL.js";
12
12
  import {
13
13
  completeCriticLens,
14
14
  yamlAnswerProblems
15
- } from "./chunk-6M5NK3K3.js";
15
+ } from "./chunk-RZUZ4RJJ.js";
16
16
  import {
17
17
  completeFeatureNaming
18
- } from "./chunk-LR3R6Z2A.js";
18
+ } from "./chunk-L3BX5ZIB.js";
19
19
  import {
20
20
  completeTemplatesDraft
21
- } from "./chunk-AA6YULYB.js";
21
+ } from "./chunk-OW7D2PJL.js";
22
22
  import {
23
23
  completeGlossaryScan
24
- } from "./chunk-HITVBIJS.js";
24
+ } from "./chunk-ZJSP24X4.js";
25
25
  import {
26
26
  completeHandUpLens,
27
27
  handUpLensTask
28
- } from "./chunk-OT2O76OS.js";
28
+ } from "./chunk-RCU3MPY2.js";
29
29
  import {
30
30
  DRAFT_OUTPUT,
31
31
  STORY_PROSE_OUTPUT,
@@ -35,11 +35,11 @@ import {
35
35
  formatDraftProblems,
36
36
  parseDraft,
37
37
  stageOfOutput
38
- } from "./chunk-CKSITVS4.js";
38
+ } from "./chunk-VPTTCYOC.js";
39
39
  import {
40
40
  lensAnswerProblem,
41
41
  lensRunOf
42
- } from "./chunk-3HI6Z55Y.js";
42
+ } from "./chunk-7UFQZXZA.js";
43
43
  import {
44
44
  ORG_FLOW,
45
45
  createOpenSpec,
@@ -49,7 +49,7 @@ import {
49
49
  import {
50
50
  GLOSSARY_CHANGE,
51
51
  GLOSSARY_OUTPUT
52
- } from "./chunk-27NKUS3X.js";
52
+ } from "./chunk-OLWFG75W.js";
53
53
  import {
54
54
  KNOWLEDGE_SCAN_OUTPUT,
55
55
  NAMING_CHANGE,
@@ -63,7 +63,7 @@ import {
63
63
  intellijProjectPath,
64
64
  loadRepos,
65
65
  vscodeWorkspacePath
66
- } from "./chunk-EFHQ3TWP.js";
66
+ } from "./chunk-KJPMEAI4.js";
67
67
  import {
68
68
  HandoffRuntime
69
69
  } from "./chunk-CNUKCS2T.js";
@@ -85,7 +85,7 @@ function pick(all, wanted, io) {
85
85
  }
86
86
  return wanted.map((w) => byId.get(w));
87
87
  }
88
- async function workspaceSync(root, repoIds, io) {
88
+ async function workspaceSync(root, repoIds, io, o = {}) {
89
89
  const all = await loadRepos(root);
90
90
  if (all.length === 0) {
91
91
  io.err("No repos found. Add org-pack/profiles/<platform>/repos.manifest.yaml first.");
@@ -94,10 +94,11 @@ async function workspaceSync(root, repoIds, io) {
94
94
  const repos = pick(all, repoIds, io);
95
95
  if (!repos)
96
96
  return 2;
97
- const results = await createWorkspace(root).sync(repos);
97
+ const results = await createWorkspace(root).sync(repos, o.from ? { from: o.from } : {});
98
98
  for (const r of results) {
99
99
  const sha = r.sha ? ` ${r.sha.slice(0, 12)}` : "";
100
- const line = `${r.id}: ${r.action}${sha}${r.reason ? ` (${r.reason})` : ""}`;
100
+ const why = r.from ? `copied from your clone at ${r.from}` : r.reason;
101
+ const line = `${r.id}: ${r.action}${sha}${why ? ` (${why})` : ""}`;
101
102
  if (r.action === "failed")
102
103
  io.err(line);
103
104
  else
@@ -6,7 +6,7 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  diffCatalogs,
8
8
  readCatalog
9
- } from "./chunk-27NKUS3X.js";
9
+ } from "./chunk-OLWFG75W.js";
10
10
  import "./chunk-L24C55VN.js";
11
11
  import "./chunk-PAMPPUR6.js";
12
12
  import "./chunk-23W7VWKR.js";
@@ -19,7 +19,7 @@ import {
19
19
  gitUser,
20
20
  loadRepos,
21
21
  remoteDefaultBranch
22
- } from "./chunk-EFHQ3TWP.js";
22
+ } from "./chunk-KJPMEAI4.js";
23
23
  import "./chunk-GQ4N4WKF.js";
24
24
  import "./chunk-CNUKCS2T.js";
25
25
  import {
@@ -7,14 +7,14 @@ import {
7
7
  diagramLibrary,
8
8
  diagramRender,
9
9
  loadCatalog
10
- } from "./chunk-FITWGOJ2.js";
11
- import "./chunk-27NKUS3X.js";
10
+ } from "./chunk-2UIQBDJO.js";
11
+ import "./chunk-OLWFG75W.js";
12
12
  import "./chunk-L24C55VN.js";
13
13
  import "./chunk-PAMPPUR6.js";
14
14
  import "./chunk-23W7VWKR.js";
15
15
  import "./chunk-7EKXJZ2Y.js";
16
16
  import "./chunk-MC3H7736.js";
17
- import "./chunk-EFHQ3TWP.js";
17
+ import "./chunk-KJPMEAI4.js";
18
18
  import "./chunk-GQ4N4WKF.js";
19
19
  import "./chunk-CNUKCS2T.js";
20
20
  import "./chunk-S2A7YC3Q.js";
@@ -5,7 +5,7 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  upgradeCommand
8
- } from "./chunk-YISXLPHN.js";
8
+ } from "./chunk-72TXNLOC.js";
9
9
  import {
10
10
  AdoptError,
11
11
  absorb,
@@ -18,27 +18,27 @@ import {
18
18
  reposDiscover,
19
19
  unadopt,
20
20
  zeroInstallFiles
21
- } from "./chunk-GDLULHTC.js";
21
+ } from "./chunk-IQFTZ37C.js";
22
22
  import {
23
23
  assistantTier,
24
24
  readProbes,
25
25
  tierLine
26
- } from "./chunk-IPKHE5D6.js";
27
- import "./chunk-CKSITVS4.js";
26
+ } from "./chunk-V5PKHHQQ.js";
27
+ import "./chunk-VPTTCYOC.js";
28
28
  import "./chunk-L6SGQIR3.js";
29
- import "./chunk-3HI6Z55Y.js";
30
- import "./chunk-XY3P7JW7.js";
29
+ import "./chunk-7UFQZXZA.js";
30
+ import "./chunk-56YQ6ROQ.js";
31
31
  import "./chunk-4AK7IBVP.js";
32
32
  import "./chunk-7JUKDRSZ.js";
33
- import "./chunk-27NKUS3X.js";
33
+ import "./chunk-OLWFG75W.js";
34
34
  import "./chunk-L24C55VN.js";
35
35
  import "./chunk-PAMPPUR6.js";
36
36
  import "./chunk-23W7VWKR.js";
37
37
  import "./chunk-7EKXJZ2Y.js";
38
38
  import "./chunk-MC3H7736.js";
39
39
  import "./chunk-T6AIP7H5.js";
40
- import "./chunk-RZPYKDWS.js";
41
- import "./chunk-EFHQ3TWP.js";
40
+ import "./chunk-JPGCERE2.js";
41
+ import "./chunk-KJPMEAI4.js";
42
42
  import "./chunk-GQ4N4WKF.js";
43
43
  import "./chunk-CNUKCS2T.js";
44
44
  import {
@@ -207,6 +207,8 @@ async function reposDiscoverCommand(root, o, io) {
207
207
  for (const s of r.skipped)
208
208
  io.out(` Skipped ${s.path}: ${s.reason}`);
209
209
  io.out(r.wrote === "manifest" ? `Wrote ${plural(r.repos.length, "repo")} to ${r.file}.` : r.wrote === "proposal" ? `A manifest exists, so it was left as it is; the proposal is in ${r.file}.` : `Found ${plural(r.repos.length, "repo")}; nothing written (dry run).`);
210
+ if (o.from && r.wrote === "manifest" && r.repos.length)
211
+ io.out(`Next: atticus workspace sync --from "${resolve(o.from)}" copies each repo from these clones, with no network.`);
210
212
  if (r.questions.length)
211
213
  io.out(`${plural(r.questions.length, "question")} need a person${r.questionsFile ? `: ${r.questionsFile}` : ""}.`);
212
214
  return 0;
@@ -38,7 +38,7 @@ import {
38
38
  baseClonePath,
39
39
  changesSince,
40
40
  checkoutState
41
- } from "./chunk-EFHQ3TWP.js";
41
+ } from "./chunk-KJPMEAI4.js";
42
42
  import {
43
43
  DEFAULT_IGNORES,
44
44
  configHash,
@@ -6,18 +6,18 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  buildDigest,
8
8
  digestCommand
9
- } from "./chunk-7WD63HU2.js";
10
- import "./chunk-3HI6Z55Y.js";
11
- import "./chunk-XY3P7JW7.js";
9
+ } from "./chunk-B2OKWJIU.js";
10
+ import "./chunk-7UFQZXZA.js";
11
+ import "./chunk-56YQ6ROQ.js";
12
12
  import "./chunk-4AK7IBVP.js";
13
13
  import "./chunk-7JUKDRSZ.js";
14
- import "./chunk-27NKUS3X.js";
14
+ import "./chunk-OLWFG75W.js";
15
15
  import "./chunk-L24C55VN.js";
16
16
  import "./chunk-PAMPPUR6.js";
17
17
  import "./chunk-23W7VWKR.js";
18
18
  import "./chunk-7EKXJZ2Y.js";
19
19
  import "./chunk-MC3H7736.js";
20
- import "./chunk-EFHQ3TWP.js";
20
+ import "./chunk-KJPMEAI4.js";
21
21
  import "./chunk-GQ4N4WKF.js";
22
22
  import "./chunk-CNUKCS2T.js";
23
23
  import "./chunk-S2A7YC3Q.js";
@@ -19,7 +19,7 @@ import {
19
19
  storyBar,
20
20
  submitRequests,
21
21
  syncWorkItems
22
- } from "./chunk-CKSITVS4.js";
22
+ } from "./chunk-VPTTCYOC.js";
23
23
  import {
24
24
  runtimeForCli
25
25
  } from "./chunk-CNUKCS2T.js";