@maycombhq/atticus 0.0.0-stage → 2.0.0-beta.11

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 (509) hide show
  1. package/LICENSE +177 -0
  2. package/README.md +17 -2
  3. package/THIRD-PARTY-LICENSES.txt +2607 -0
  4. package/dist/bin.js +47 -0
  5. package/dist/chunk-23VFQHFQ.js +827 -0
  6. package/dist/chunk-26DBAGOP.js +315 -0
  7. package/dist/chunk-27EDZN52.js +115 -0
  8. package/dist/chunk-2K2ZEJVR.js +252 -0
  9. package/dist/chunk-3DDJLI7N.js +1081 -0
  10. package/dist/chunk-3G4YI4ZU.js +16 -0
  11. package/dist/chunk-3LU6YCSQ.js +3507 -0
  12. package/dist/chunk-3WU7LVTL.js +203 -0
  13. package/dist/chunk-4AYZQ3SY.js +285 -0
  14. package/dist/chunk-4ONORLK5.js +234 -0
  15. package/dist/chunk-4Q3NN7VF.js +32 -0
  16. package/dist/chunk-4SKZDI62.js +22 -0
  17. package/dist/chunk-4URR24DD.js +189 -0
  18. package/dist/chunk-4UZJOQYK.js +70 -0
  19. package/dist/chunk-4Y4FY34K.js +34 -0
  20. package/dist/chunk-4YWRU7JK.js +80 -0
  21. package/dist/chunk-52WCHTVZ.js +41 -0
  22. package/dist/chunk-55TBYJF2.js +36 -0
  23. package/dist/chunk-5ACUW753.js +240 -0
  24. package/dist/chunk-5BJFMAQU.js +32 -0
  25. package/dist/chunk-5ICB2BXH.js +33 -0
  26. package/dist/chunk-5NZSJ5ZG.js +60 -0
  27. package/dist/chunk-5P5BGG5L.js +307 -0
  28. package/dist/chunk-5RUMHLIS.js +104 -0
  29. package/dist/chunk-5TY4DTHQ.js +242 -0
  30. package/dist/chunk-5V5BJACL.js +2929 -0
  31. package/dist/chunk-6E2GJANQ.js +52 -0
  32. package/dist/chunk-6N2GUZMZ.js +471 -0
  33. package/dist/chunk-6RGIM2ZH.js +2069 -0
  34. package/dist/chunk-6V3DTQWK.js +391 -0
  35. package/dist/chunk-76WKMA4J.js +14 -0
  36. package/dist/chunk-77RSRG3A.js +104 -0
  37. package/dist/chunk-7A7IG7OA.js +2007 -0
  38. package/dist/chunk-7EFILTCI.js +67 -0
  39. package/dist/chunk-7HQOZALR.js +180 -0
  40. package/dist/chunk-7HWXYP4H.js +1217 -0
  41. package/dist/chunk-7J7UY46S.js +688 -0
  42. package/dist/chunk-7KXYMC2P.js +38 -0
  43. package/dist/chunk-7LCQ7JAM.js +55 -0
  44. package/dist/chunk-7RGCQ4VZ.js +22 -0
  45. package/dist/chunk-7RUMD56V.js +26 -0
  46. package/dist/chunk-7S3XFWOU.js +251 -0
  47. package/dist/chunk-7SZPENUP.js +32 -0
  48. package/dist/chunk-7VFVQX5K.js +105 -0
  49. package/dist/chunk-ACWQDL6T.js +37 -0
  50. package/dist/chunk-ANCI3LFS.js +25 -0
  51. package/dist/chunk-ASKDCMW5.js +275 -0
  52. package/dist/chunk-ATNG5VOZ.js +122 -0
  53. package/dist/chunk-B3QOYE74.js +58 -0
  54. package/dist/chunk-B3UHYXHU.js +41 -0
  55. package/dist/chunk-BA5DTXHQ.js +250 -0
  56. package/dist/chunk-BKFGGJKA.js +2743 -0
  57. package/dist/chunk-BQNEHB5U.js +212 -0
  58. package/dist/chunk-BUWSOQLU.js +131 -0
  59. package/dist/chunk-BX52REMA.js +134 -0
  60. package/dist/chunk-BXBCMGIQ.js +82 -0
  61. package/dist/chunk-C2YGYTU6.js +408 -0
  62. package/dist/chunk-C5JFMAXX.js +102 -0
  63. package/dist/chunk-C75W7VXX.js +42 -0
  64. package/dist/chunk-CAN3EBE5.js +1726 -0
  65. package/dist/chunk-CE4S5ZY3.js +182 -0
  66. package/dist/chunk-CRQ73DIF.js +25 -0
  67. package/dist/chunk-CZI2ACNT.js +36 -0
  68. package/dist/chunk-D7MWYJZF.js +43 -0
  69. package/dist/chunk-DDAEAZEV.js +54 -0
  70. package/dist/chunk-DGKNOPSE.js +549 -0
  71. package/dist/chunk-DQNKG4HY.js +906 -0
  72. package/dist/chunk-DS3ZEJVN.js +22 -0
  73. package/dist/chunk-DYWTQXP4.js +108 -0
  74. package/dist/chunk-E25G46RW.js +54 -0
  75. package/dist/chunk-EADP3PEN.js +450 -0
  76. package/dist/chunk-EAQFRD2B.js +430 -0
  77. package/dist/chunk-EATSD7YD.js +41 -0
  78. package/dist/chunk-EBWIOODZ.js +339 -0
  79. package/dist/chunk-EHUYLNLC.js +282 -0
  80. package/dist/chunk-EI4KQYJ3.js +1496 -0
  81. package/dist/chunk-EQOSXLK3.js +49 -0
  82. package/dist/chunk-EV4TEFOD.js +16667 -0
  83. package/dist/chunk-EW7MRMD5.js +312 -0
  84. package/dist/chunk-EZSZFI54.js +531 -0
  85. package/dist/chunk-FMRMTI7W.js +1142 -0
  86. package/dist/chunk-FOQXYMOR.js +46 -0
  87. package/dist/chunk-G3PBLW4K.js +246 -0
  88. package/dist/chunk-G7WZH54P.js +221 -0
  89. package/dist/chunk-GG6HIU74.js +211 -0
  90. package/dist/chunk-GMJXC5AL.js +27809 -0
  91. package/dist/chunk-GPLFYLGH.js +130 -0
  92. package/dist/chunk-GVFUEGGM.js +19943 -0
  93. package/dist/chunk-GWSWS264.js +130 -0
  94. package/dist/chunk-H4VJO3M2.js +229 -0
  95. package/dist/chunk-HGQZTUAC.js +415 -0
  96. package/dist/chunk-HOUUBE74.js +166 -0
  97. package/dist/chunk-HQMCHHY5.js +155 -0
  98. package/dist/chunk-HR4DVO6X.js +374 -0
  99. package/dist/chunk-HZYFLEWO.js +39 -0
  100. package/dist/chunk-IA2RKC6I.js +279 -0
  101. package/dist/chunk-IILZ7J3L.js +5548 -0
  102. package/dist/chunk-IRW64JFF.js +247 -0
  103. package/dist/chunk-IVHN2VYG.js +1526 -0
  104. package/dist/chunk-IWZPGIGT.js +856 -0
  105. package/dist/chunk-IY4PHPHT.js +15 -0
  106. package/dist/chunk-J27QGXO4.js +1247 -0
  107. package/dist/chunk-JBSD57N7.js +324 -0
  108. package/dist/chunk-JEUXCIRD.js +120 -0
  109. package/dist/chunk-JMOLB347.js +46388 -0
  110. package/dist/chunk-JQX6BSE4.js +130 -0
  111. package/dist/chunk-JRPQX2EK.js +376 -0
  112. package/dist/chunk-JUQHYTXN.js +45 -0
  113. package/dist/chunk-JUZ75OG4.js +344 -0
  114. package/dist/chunk-KIWEBM6G.js +378 -0
  115. package/dist/chunk-KLKENMWQ.js +891 -0
  116. package/dist/chunk-KQDZXGNR.js +14 -0
  117. package/dist/chunk-KQK6SQPE.js +48 -0
  118. package/dist/chunk-KQRYW7OS.js +4108 -0
  119. package/dist/chunk-KU4T2CXJ.js +116 -0
  120. package/dist/chunk-KXZR2BLL.js +53 -0
  121. package/dist/chunk-L7I5PKGD.js +915 -0
  122. package/dist/chunk-LDIARP6F.js +31 -0
  123. package/dist/chunk-LEHZTKB3.js +34 -0
  124. package/dist/chunk-LS3WR2RF.js +1071 -0
  125. package/dist/chunk-LUPW4WLK.js +526 -0
  126. package/dist/chunk-LVBPY2M6.js +406 -0
  127. package/dist/chunk-LZWVK4YY.js +169 -0
  128. package/dist/chunk-MCWWMMLN.js +48 -0
  129. package/dist/chunk-MKC7P5LD.js +32 -0
  130. package/dist/chunk-MKFYQQ5Q.js +36 -0
  131. package/dist/chunk-MKIULIUQ.js +273 -0
  132. package/dist/chunk-MMB2OHUY.js +263 -0
  133. package/dist/chunk-MQNBEO3N.js +2610 -0
  134. package/dist/chunk-MSL3CLHX.js +545 -0
  135. package/dist/chunk-MV4637YA.js +174 -0
  136. package/dist/chunk-MYKQVS5W.js +296 -0
  137. package/dist/chunk-MYOW3RPC.js +143 -0
  138. package/dist/chunk-NBGBMRIS.js +25 -0
  139. package/dist/chunk-NBQO75XT.js +287 -0
  140. package/dist/chunk-NCR24CPV.js +41 -0
  141. package/dist/chunk-NDW4ROST.js +38 -0
  142. package/dist/chunk-NELU7LSL.js +3208 -0
  143. package/dist/chunk-NG5R2WIY.js +2919 -0
  144. package/dist/chunk-NH5QH3WS.js +119 -0
  145. package/dist/chunk-NIYB5K5B.js +583 -0
  146. package/dist/chunk-NR5T46ZY.js +49 -0
  147. package/dist/chunk-NX6QEEOA.js +163 -0
  148. package/dist/chunk-O6ILVBYB.js +18 -0
  149. package/dist/chunk-OFWYZH6B.js +230 -0
  150. package/dist/chunk-OHXTB6CO.js +50 -0
  151. package/dist/chunk-OJN7WME4.js +34 -0
  152. package/dist/chunk-OR5VRULZ.js +226 -0
  153. package/dist/chunk-ORZSD2KD.js +55 -0
  154. package/dist/chunk-OXVVRJDQ.js +66 -0
  155. package/dist/chunk-PQW7PYUR.js +2522 -0
  156. package/dist/chunk-Q32Y5T2U.js +27 -0
  157. package/dist/chunk-QWHTTA2X.js +130 -0
  158. package/dist/chunk-R3RVFCJ2.js +76 -0
  159. package/dist/chunk-R3VFLYZZ.js +400 -0
  160. package/dist/chunk-R6RY4Q5T.js +51 -0
  161. package/dist/chunk-R6UTCLH5.js +166 -0
  162. package/dist/chunk-RB2VSED2.js +231 -0
  163. package/dist/chunk-REWZE2XI.js +53 -0
  164. package/dist/chunk-RIEFYHXI.js +162 -0
  165. package/dist/chunk-RJDP642F.js +101 -0
  166. package/dist/chunk-RWMSJP7H.js +279 -0
  167. package/dist/chunk-S2FDPN32.js +41 -0
  168. package/dist/chunk-S5LSDXV4.js +40 -0
  169. package/dist/chunk-S7ZWCMDO.js +192 -0
  170. package/dist/chunk-SG5KY4VB.js +69 -0
  171. package/dist/chunk-SH7AZZDA.js +69 -0
  172. package/dist/chunk-SILY6ZEZ.js +104 -0
  173. package/dist/chunk-SINJKQSI.js +34 -0
  174. package/dist/chunk-SIUDWWKS.js +47 -0
  175. package/dist/chunk-SKMHS4CL.js +766 -0
  176. package/dist/chunk-SNHOLLGN.js +280 -0
  177. package/dist/chunk-SUQZGPVG.js +119 -0
  178. package/dist/chunk-T6ESD5KM.js +6115 -0
  179. package/dist/chunk-TC3KTG33.js +221 -0
  180. package/dist/chunk-TCADP67G.js +101 -0
  181. package/dist/chunk-TEBBD4XH.js +7923 -0
  182. package/dist/chunk-TGEOLIAK.js +149 -0
  183. package/dist/chunk-TQYBXDVH.js +133 -0
  184. package/dist/chunk-TV45EUGM.js +51 -0
  185. package/dist/chunk-TZXHUDI6.js +233 -0
  186. package/dist/chunk-U5PDQTLA.js +50 -0
  187. package/dist/chunk-U6YKL7SI.js +334 -0
  188. package/dist/chunk-UABFFMWH.js +2078 -0
  189. package/dist/chunk-UFBKJOWB.js +325 -0
  190. package/dist/chunk-UFTQIK2J.js +43 -0
  191. package/dist/chunk-UNFCFJMF.js +95 -0
  192. package/dist/chunk-UTR67XU2.js +164 -0
  193. package/dist/chunk-V4XKYGLK.js +405 -0
  194. package/dist/chunk-VOGCSYOI.js +16 -0
  195. package/dist/chunk-VYNZED7B.js +53 -0
  196. package/dist/chunk-WCLAOKCH.js +540 -0
  197. package/dist/chunk-WFYHOXTB.js +29 -0
  198. package/dist/chunk-WGU6NIUV.js +113 -0
  199. package/dist/chunk-WIMOJMAK.js +3702 -0
  200. package/dist/chunk-WKXOEIOY.js +184 -0
  201. package/dist/chunk-WUE6HKIU.js +790 -0
  202. package/dist/chunk-WUP77GG2.js +56 -0
  203. package/dist/chunk-XF3DATVU.js +150 -0
  204. package/dist/chunk-XJAJQGXJ.js +18 -0
  205. package/dist/chunk-XKJRPVJO.js +3898 -0
  206. package/dist/chunk-XNRPCI23.js +3851 -0
  207. package/dist/chunk-XOVLGBKI.js +214 -0
  208. package/dist/chunk-XPJR74MA.js +562 -0
  209. package/dist/chunk-XPWSNKF3.js +5619 -0
  210. package/dist/chunk-XR5DD5DQ.js +104 -0
  211. package/dist/chunk-XZJE6WIT.js +706 -0
  212. package/dist/chunk-XZRON6IV.js +131 -0
  213. package/dist/chunk-Y5AYBGLB.js +368 -0
  214. package/dist/chunk-YLAM4HZH.js +95 -0
  215. package/dist/chunk-YVCOQ5TZ.js +47 -0
  216. package/dist/chunk-YWOMGMZB.js +94 -0
  217. package/dist/chunk-YWZDAZMA.js +18 -0
  218. package/dist/chunk-Z2EYRUOH.js +172 -0
  219. package/dist/chunk-Z46OXTBE.js +1611 -0
  220. package/dist/chunk-ZHWSL6SR.js +45 -0
  221. package/dist/chunk-ZJQUIG3A.js +87 -0
  222. package/dist/chunk-ZKUDS7JG.js +310 -0
  223. package/dist/chunk-ZTNS3L5Z.js +1019 -0
  224. package/dist/files.json +2024 -0
  225. package/dist/fixtures/forge/README.md +19 -0
  226. package/dist/fixtures/forge/expected/discrepancies.yaml +54 -0
  227. package/dist/fixtures/forge/expected/inputs.yaml +38 -0
  228. package/dist/fixtures/forge/expected/scan.yaml +342 -0
  229. package/dist/fixtures/forge/inputs/diagrams/forge-context.drawio +23 -0
  230. package/dist/fixtures/forge/inputs/partner-specs/northwind-pay-openapi.yaml +11 -0
  231. package/dist/fixtures/forge/inputs/tickets/ado-stories.json +4 -0
  232. package/dist/fixtures/forge/inputs/tickets/closed-service-requests.json +5 -0
  233. package/dist/fixtures/forge/inputs/wiki/integration-patterns.md +11 -0
  234. package/dist/fixtures/forge/inputs/wiki/ledger-solution-spec.md +9 -0
  235. package/dist/fixtures/forge/inputs/wiki/snow-firewall-request.md +4 -0
  236. package/dist/fixtures/forge/metarepo/judgments/reaches/84af5b6af24f7ca8c23013f3.yaml +17 -0
  237. package/dist/fixtures/forge/metarepo/judgments/reaches/c3917555edebddce8cecb647.yaml +17 -0
  238. package/dist/fixtures/forge/metarepo/judgments/reaches/c5fafd6601f8ca9e34e0bbd0.yaml +17 -0
  239. package/dist/fixtures/forge/metarepo/org-pack/agents/architecture-critic.yaml +9 -0
  240. package/dist/fixtures/forge/metarepo/org-pack/agents/story-writer.yaml +10 -0
  241. package/dist/fixtures/forge/metarepo/org-pack/checklists/architecture.yaml +115 -0
  242. package/dist/fixtures/forge/metarepo/org-pack/dialects/forge.yaml +111 -0
  243. package/dist/fixtures/forge/metarepo/org-pack/gates.yaml +22 -0
  244. package/dist/fixtures/forge/metarepo/org-pack/pack.yaml +11 -0
  245. package/dist/fixtures/forge/metarepo/org-pack/patterns/A.EB.PUB.yaml +12 -0
  246. package/dist/fixtures/forge/metarepo/org-pack/patterns/D.JDBC.yaml +12 -0
  247. package/dist/fixtures/forge/metarepo/org-pack/patterns/S.DIR.BFF.yaml +12 -0
  248. package/dist/fixtures/forge/metarepo/org-pack/patterns/S.GW.SOR.yaml +13 -0
  249. package/dist/fixtures/forge/metarepo/org-pack/patterns/S.GW.VND.yaml +14 -0
  250. package/dist/fixtures/forge/metarepo/org-pack/process/change-templates/feature.md +37 -0
  251. package/dist/fixtures/forge/metarepo/org-pack/process/skills/add-forge-endpoint/SKILL.md +17 -0
  252. package/dist/fixtures/forge/metarepo/org-pack/process/snow/firewall-rule.yaml +14 -0
  253. package/dist/fixtures/forge/metarepo/org-pack/process/snow/gateway-route.yaml +13 -0
  254. package/dist/fixtures/forge/metarepo/org-pack/profiles/forge/profile.yaml +12 -0
  255. package/dist/fixtures/forge/metarepo/org-pack/profiles/forge/repos.manifest.yaml +44 -0
  256. package/dist/fixtures/forge/metarepo/org-pack/roles.yaml +14 -0
  257. package/dist/fixtures/forge/metarepo/org-pack/runtime.yaml +14 -0
  258. package/dist/fixtures/forge/metarepo/org-pack/sources.yaml +3 -0
  259. package/dist/fixtures/forge/repos/forge-events/topics/payments.initiated.yaml +4 -0
  260. package/dist/fixtures/forge/repos/forge-events/topics/transfers.completed.yaml +4 -0
  261. package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/ledger-v1.xml +3 -0
  262. package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/policies/SpikeArrest.xml +3 -0
  263. package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/policies/VerifyOAuth.xml +4 -0
  264. package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/proxies/default.xml +14 -0
  265. package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/targets/ledger.xml +5 -0
  266. package/dist/fixtures/forge/repos/forge-infra/alerts/ledger-api.yaml +5 -0
  267. package/dist/fixtures/forge/repos/forge-infra/k8s/ledger-api.yaml +15 -0
  268. package/dist/fixtures/forge/repos/forge-infra/k8s/portal-bff.yaml +7 -0
  269. package/dist/fixtures/forge/repos/forge-infra/terraform/ledger-db.tf +9 -0
  270. package/dist/fixtures/forge/repos/forge-ledger/api/ledger-openapi.yaml +31 -0
  271. package/dist/fixtures/forge/repos/forge-ledger/forge.yaml +4 -0
  272. package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/LedgerEndpoints.java +13 -0
  273. package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/LedgerEvents.java +11 -0
  274. package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/NorthwindClient.java +10 -0
  275. package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/application.yml +3 -0
  276. package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/db/migration/V1__create_account.sql +5 -0
  277. package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/db/migration/V2__create_entry.sql +7 -0
  278. package/dist/fixtures/forge/repos/forge-portal-bff/pom.xml +1 -0
  279. package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/AuditPublisher.java +12 -0
  280. package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/BalanceController.java +16 -0
  281. package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/LedgerClient.java +13 -0
  282. package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/PaymentEvents.java +13 -0
  283. package/dist/fixtures/forge/repos/forge-portal-bff/src/main/resources/application.yml +8 -0
  284. package/dist/fixtures/forge/repos/forge-portal-ui/package.json +1 -0
  285. package/dist/fixtures/forge/repos/forge-portal-ui/src/api/balance.ts +5 -0
  286. package/dist/fixtures/forge/repos/forge-reports-job/src/main/java/forge/reports/DailyEntriesJob.java +19 -0
  287. package/dist/fixtures/forge/repos/forge-reports-job/src/main/resources/application.yml +3 -0
  288. package/dist/fixtures/forge-change/README.md +41 -0
  289. package/dist/fixtures/forge-change/expected/findings.yaml +301 -0
  290. package/dist/fixtures/forge-change/expected/stories.yaml +101 -0
  291. package/dist/fixtures/forge-change/judgments/personal-data/0b5f3dbf5257a22275d8c74b.yaml +18 -0
  292. package/dist/fixtures/forge-change/judgments/personal-data/2759a66770134c417440bf2d.yaml +18 -0
  293. package/dist/fixtures/forge-change/judgments/personal-data/31b1ea2f14d0737f1aca79fd.yaml +18 -0
  294. package/dist/fixtures/forge-change/judgments/personal-data/49afd70c08228e65ad6ca1ed.yaml +18 -0
  295. package/dist/fixtures/forge-change/judgments/personal-data/761cabcb8a39f5e5866d2dd6.yaml +18 -0
  296. package/dist/fixtures/forge-change/judgments/personal-data/adae902b90cc8ffa0c765145.yaml +18 -0
  297. package/dist/fixtures/forge-change/judgments/personal-data/ba11bb933105ec9493e065dd.yaml +18 -0
  298. package/dist/fixtures/forge-change/judgments/personal-data/bdbcd1cdac3021c68063c3e7.yaml +18 -0
  299. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/brief.md +35 -0
  300. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/change.yaml +120 -0
  301. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/data.md +18 -0
  302. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/design.md +29 -0
  303. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/interfaces.md +17 -0
  304. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/mappings.md +26 -0
  305. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/proposal.md +35 -0
  306. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/snow.md +12 -0
  307. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/specs/transfer-limits/spec.md +19 -0
  308. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s1-refuse-over-limit.md +17 -0
  309. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s2-show-remaining.md +16 -0
  310. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s3-audit-refusals.md +18 -0
  311. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s4-velocity-check.md +16 -0
  312. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories.md +8 -0
  313. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/tasks.md +12 -0
  314. package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/ux.md +7 -0
  315. package/dist/fixtures/forge-change/org-pack/agents/code-and-test-critic.yaml +13 -0
  316. package/dist/fixtures/forge-change/org-pack/agents/complete-critic.yaml +12 -0
  317. package/dist/fixtures/forge-change/org-pack/agents/safe-critic.yaml +12 -0
  318. package/dist/fixtures/forge-change/org-pack/agents/ship-critic.yaml +11 -0
  319. package/dist/fixtures/forge-change/org-pack/agents/true-critic.yaml +11 -0
  320. package/dist/fixtures/forge-change/org-pack/checklists/review.yaml +54 -0
  321. package/dist/fixtures/forge-change/org-pack/gates.yaml +25 -0
  322. package/dist/fixtures/forge-change/org-pack/teams/team-ledger/checklists/ledger-team.yaml +227 -0
  323. package/dist/fixtures/forge-change/recordings/complete-critic/2ad84f84bf39c1d5412697e69fe23034d6983ec45a00314bf0975e627589a3c5.json +12 -0
  324. package/dist/fixtures/forge-change/recordings/complete-critic/417c98d8e54a4387d0fd93441c49f44c2868958739070d855c1dce0c41e24db3.json +12 -0
  325. package/dist/fixtures/forge-change/recordings/complete-critic/50203ee22e9cb3ef047295edb6538fe7d5695e1e4b139f3c929013dc6ce47021.json +12 -0
  326. package/dist/fixtures/forge-change/recordings/complete-critic/89f18d67f5d9c325bf35e2a9e020f9ddb6ee13b8523315037f0905cc57c040b1.json +12 -0
  327. package/dist/fixtures/forge-change/recordings/complete-critic/b4097867d26ae8eadc8b9efa8cdd86897013358035f0b40086c299a59c4ba121.json +12 -0
  328. package/dist/fixtures/forge-change/recordings/safe-critic/302d06f49664dd67ad2e21ab9cf74c1b0f7d3f750709c6ed8eff2b70983274e2.json +12 -0
  329. package/dist/fixtures/forge-change/recordings/safe-critic/32f1049c9a5ab4a759543290db4644ec6e221cc45fdfdcf06193837c6a8ce0b9.json +12 -0
  330. package/dist/fixtures/forge-change/recordings/safe-critic/4e4a84bfc04b9f26ca4250319a879901ff7a1c081c71e46a117675fee05026b0.json +12 -0
  331. package/dist/fixtures/forge-change/recordings/safe-critic/604af0fcdd6df6b76208fa88305fdc15c37606c2a4d1ae816477e46ac8c2dd04.json +12 -0
  332. package/dist/fixtures/forge-change/recordings/safe-critic/f0bf50af11f14c50d07904f0dffe1c8c20fb0cd89770645a8824c1d30a443955.json +12 -0
  333. package/dist/fixtures/forge-change/recordings/ship-critic/350954b58833b2c04880c67db45a1b328b7fd541d9f0d943b63905b8875488a6.json +12 -0
  334. package/dist/fixtures/forge-change/recordings/ship-critic/4af95c6c96a206777cec9de1f9c2d8c55a36ddc9b8db2f81d6eb83217b835efa.json +12 -0
  335. package/dist/fixtures/forge-change/recordings/ship-critic/76c34522a49cf7587a4e5689a5030d384603fa780b8aba97d27815cbc829683e.json +12 -0
  336. package/dist/fixtures/forge-change/recordings/ship-critic/a3b2cd1ace48587e5994333db03b34c3a0f9dec4f1932f1730ddfb687f6918c8.json +12 -0
  337. package/dist/fixtures/forge-change/recordings/ship-critic/de288a4fa64d0fc20890f9a787080ce6eac5203b7b9b72d884df11e8cf111835.json +12 -0
  338. package/dist/fixtures/forge-change/recordings/story-writer/1ddb00eac2aaf91a5ec5d9dfd220116be9f75aec6546a4a3a3b050ed89af2864.json +12 -0
  339. package/dist/packages/assistant-kit/frameworks-kit/README.md +86 -0
  340. package/dist/packages/assistant-kit/frameworks-kit/checklist.md +11 -0
  341. package/dist/packages/assistant-kit/frameworks-kit/examples/tide-lantern.yaml +56 -0
  342. package/dist/packages/assistant-kit/frameworks-kit/examples/tide-platform.yaml +43 -0
  343. package/dist/packages/assistant-kit/frameworks-kit/prompts/write-framework-model.md +12 -0
  344. package/dist/packages/assistant-kit/kit/README.md +98 -0
  345. package/dist/packages/assistant-kit/kit/c2-reference.md +334 -0
  346. package/dist/packages/assistant-kit/kit/checklist.md +39 -0
  347. package/dist/packages/assistant-kit/kit/examples/house-http-client.yaml +102 -0
  348. package/dist/packages/assistant-kit/kit/examples/tide-apigee.yaml +56 -0
  349. package/dist/packages/assistant-kit/kit/examples/tide-apim.yaml +32 -0
  350. package/dist/packages/assistant-kit/kit/examples/tide-kong.yaml +44 -0
  351. package/dist/packages/assistant-kit/kit/prompts/write-dialect.md +34 -0
  352. package/dist/packages/assistant-kit/kit/worked-example.md +198 -0
  353. package/dist/packages/conformance/sample/README.md +4 -0
  354. package/dist/packages/conformance/sample/inputs/notes.md +3 -0
  355. package/dist/packages/conformance/sample/inputs/systems.csv +3 -0
  356. package/dist/packages/conformance/sample/repo/api/greeter.proto +6 -0
  357. package/dist/packages/conformance/sample/repo/api/openapi.yaml +10 -0
  358. package/dist/packages/conformance/sample/repo/api/schema.graphql +3 -0
  359. package/dist/packages/conformance/sample/repo/db/V1__create_greeting.sql +4 -0
  360. package/dist/packages/conformance/sample/repo/package.json +7 -0
  361. package/dist/packages/conformance/sample/repo/src/main/java/sample/HelloController.java +10 -0
  362. package/dist/packages/conformance/sample/repo/web/app.ts +4 -0
  363. package/dist/packages/evals/datasets/critic-lenses.yaml +62 -0
  364. package/dist/packages/evals/datasets/dialect-writer.yaml +14 -0
  365. package/dist/packages/evals/datasets/feature-namer.yaml +34 -0
  366. package/dist/packages/evals/datasets/glossary-definer.yaml +25 -0
  367. package/dist/packages/evals/datasets/story-writer.yaml +13 -0
  368. package/dist/packages/evals/datasets/template-writer.yaml +16 -0
  369. package/dist/packages/evals/datasets/test-writer.yaml +18 -0
  370. package/dist/packages/executors/reference/reference-executor.mjs +233 -0
  371. package/dist/packages/extractors/dialects/argocd.yaml +45 -0
  372. package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/AccountResource.java +47 -0
  373. package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/AuditClient.java +12 -0
  374. package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/LedgerClient.java +17 -0
  375. package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/LedgerClient.java +14 -0
  376. package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/RatesClient.java +11 -0
  377. package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/StatementController.java +36 -0
  378. package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/resources/application.yml +7 -0
  379. package/dist/packages/extractors/dialects/fixtures/quarkus-reactive-messaging/fraud-service/src/main/java/forge/fraud/FraudScorer.java +27 -0
  380. package/dist/packages/extractors/dialects/fixtures/quarkus-reactive-messaging/fraud-service/src/main/resources/application.properties +4 -0
  381. package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/api.tf +38 -0
  382. package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/main.tf +95 -0
  383. package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/terraform.tfvars +1 -0
  384. package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/variables.tf +4 -0
  385. package/dist/packages/extractors/dialects/fixtures/terraform-azure/forge-azure-infra/main.tf +102 -0
  386. package/dist/packages/extractors/dialects/fixtures/terraform-gcp/forge-gcp-infra/main.tf +51 -0
  387. package/dist/packages/extractors/dialects/harness.yaml +101 -0
  388. package/dist/packages/extractors/dialects/jaxrs.yaml +155 -0
  389. package/dist/packages/extractors/dialects/micronaut.yaml +207 -0
  390. package/dist/packages/extractors/dialects/quarkus-reactive-messaging.yaml +158 -0
  391. package/dist/packages/extractors/dialects/tekton.yaml +71 -0
  392. package/dist/packages/extractors/dialects/terraform-aws.yaml +267 -0
  393. package/dist/packages/extractors/dialects/terraform-azure.yaml +212 -0
  394. package/dist/packages/extractors/dialects/terraform-gcp.yaml +109 -0
  395. package/dist/packages/extractors/grammars/README.md +11 -0
  396. package/dist/packages/extractors/grammars/tree-sitter-groovy.LICENSE +21 -0
  397. package/dist/packages/extractors/grammars/tree-sitter-groovy.wasm +0 -0
  398. package/dist/packages/extractors/grammars/vendored.json +11 -0
  399. package/dist/packages/learn/lessons/architect-diagrams-and-code.yaml +69 -0
  400. package/dist/packages/learn/lessons/business-analyst-story-bar.yaml +94 -0
  401. package/dist/packages/learn/lessons/delivery-lead-release-readiness.yaml +44 -0
  402. package/dist/packages/learn/lessons/designer-features-in-user-words.yaml +57 -0
  403. package/dist/packages/learn/lessons/developer-find-your-way.yaml +60 -0
  404. package/dist/packages/learn/lessons/everyone-first-hour.yaml +74 -0
  405. package/dist/packages/learn/lessons/platform-lead-coverage-and-defences.yaml +58 -0
  406. package/dist/packages/learn/lessons/product-owner-first-change.yaml +167 -0
  407. package/dist/packages/learn/lessons/qa-tests-and-trace.yaml +53 -0
  408. package/dist/packages/learn/lessons/team-lead-initiative.yaml +146 -0
  409. package/dist/packages/naysayer/constitution/constitution.yaml +305 -0
  410. package/dist/packages/naysayer/starter/review.yaml +256 -0
  411. package/dist/packages/sdk/npm/index.js +10097 -0
  412. package/dist/packages/speckit/rules/drift.yaml +78 -0
  413. package/dist/packages/taskrun/rules/conform.yaml +38 -0
  414. package/dist/packages/testgen/rules/trace.yaml +49 -0
  415. package/dist/packages/ui/dist/assets/elk-api-DDup23Us.js +2 -0
  416. package/dist/packages/ui/dist/assets/elk-worker.min--dAJroGl.js +6401 -0
  417. package/dist/packages/ui/dist/assets/elk-worker.min-DdYmS5kP.js +2 -0
  418. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff +0 -0
  419. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2 +0 -0
  420. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff +0 -0
  421. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2 +0 -0
  422. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2 +0 -0
  423. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff +0 -0
  424. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff +0 -0
  425. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2 +0 -0
  426. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2 +0 -0
  427. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff +0 -0
  428. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff +0 -0
  429. package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2 +0 -0
  430. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff +0 -0
  431. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2 +0 -0
  432. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff +0 -0
  433. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2 +0 -0
  434. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff +0 -0
  435. package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2 +0 -0
  436. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  437. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  438. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  439. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  440. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  441. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  442. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2 +0 -0
  443. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff +0 -0
  444. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff +0 -0
  445. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2 +0 -0
  446. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff +0 -0
  447. package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2 +0 -0
  448. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2 +0 -0
  449. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff +0 -0
  450. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff +0 -0
  451. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2 +0 -0
  452. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff +0 -0
  453. package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2 +0 -0
  454. package/dist/packages/ui/dist/assets/index-C0JEkXyN.css +1 -0
  455. package/dist/packages/ui/dist/assets/index-mTOWhQZm.js +29 -0
  456. package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  457. package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  458. package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  459. package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  460. package/dist/packages/ui/dist/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  461. package/dist/packages/ui/dist/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  462. package/dist/packages/ui/dist/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  463. package/dist/packages/ui/dist/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  464. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  465. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  466. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  467. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  468. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  469. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  470. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  471. package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  472. package/dist/packages/ui/dist/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  473. package/dist/packages/ui/dist/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  474. package/dist/packages/ui/dist/assets/rajdhani-devanagari-600-normal-BtY48IV_.woff +0 -0
  475. package/dist/packages/ui/dist/assets/rajdhani-devanagari-600-normal-DhS7ScYx.woff2 +0 -0
  476. package/dist/packages/ui/dist/assets/rajdhani-devanagari-700-normal-BQQOj9BB.woff2 +0 -0
  477. package/dist/packages/ui/dist/assets/rajdhani-devanagari-700-normal-DBRwWuxA.woff +0 -0
  478. package/dist/packages/ui/dist/assets/rajdhani-latin-600-normal-CXCVEoA9.woff2 +0 -0
  479. package/dist/packages/ui/dist/assets/rajdhani-latin-600-normal-Dx02qI2_.woff +0 -0
  480. package/dist/packages/ui/dist/assets/rajdhani-latin-700-normal-BPDUZo87.woff2 +0 -0
  481. package/dist/packages/ui/dist/assets/rajdhani-latin-700-normal-e0Uj8ZlN.woff +0 -0
  482. package/dist/packages/ui/dist/assets/rajdhani-latin-ext-600-normal-BleIgkPp.woff +0 -0
  483. package/dist/packages/ui/dist/assets/rajdhani-latin-ext-600-normal-C9ZjJQAt.woff2 +0 -0
  484. package/dist/packages/ui/dist/assets/rajdhani-latin-ext-700-normal-BPaQ7tlD.woff +0 -0
  485. package/dist/packages/ui/dist/assets/rajdhani-latin-ext-700-normal-S6aYESQK.woff2 +0 -0
  486. package/dist/packages/ui/dist/favicon.svg +1 -0
  487. package/dist/packages/ui/dist/index.html +15 -0
  488. package/dist/third-party.json +575 -0
  489. package/dist/vendor/@fission-ai/openspec/bin/openspec.js +85986 -0
  490. package/dist/vendor/@fission-ai/openspec/package.json +82 -0
  491. package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/schema.yaml +248 -0
  492. package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/design.md +21 -0
  493. package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/proposal.md +34 -0
  494. package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/spec.md +13 -0
  495. package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/tasks.md +11 -0
  496. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-c_sharp.wasm +0 -0
  497. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-go.wasm +0 -0
  498. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-java.wasm +0 -0
  499. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-javascript.wasm +0 -0
  500. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-kotlin.wasm +0 -0
  501. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-php.wasm +0 -0
  502. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-python.wasm +0 -0
  503. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-ruby.wasm +0 -0
  504. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-rust.wasm +0 -0
  505. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-scala.wasm +0 -0
  506. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-tsx.wasm +0 -0
  507. package/dist/vendor/tree-sitter-wasms/out/tree-sitter-typescript.wasm +0 -0
  508. package/dist/vendor/web-tree-sitter/tree-sitter.wasm +0 -0
  509. package/package.json +36 -3
@@ -0,0 +1,212 @@
1
+ import { createRequire as __atticusCreateRequire } from "node:module";
2
+ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
+ var require = __atticusCreateRequire(import.meta.url);
4
+ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
+ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ candidateAnnotations,
8
+ dialectFilePath,
9
+ exportKit,
10
+ formatGrade,
11
+ gradeDialect,
12
+ loadDialectFile,
13
+ runDialectOnRepo,
14
+ scaffoldDialect,
15
+ surveyRepos,
16
+ testDialect
17
+ } from "./chunk-XKJRPVJO.js";
18
+ import "./chunk-IILZ7J3L.js";
19
+ import "./chunk-TEBBD4XH.js";
20
+ import "./chunk-XPWSNKF3.js";
21
+ import "./chunk-WIMOJMAK.js";
22
+ import "./chunk-5V5BJACL.js";
23
+ import {
24
+ SYNTAX_LANGUAGES,
25
+ syntaxLanguageOf,
26
+ syntaxOutline
27
+ } from "./chunk-GVFUEGGM.js";
28
+ import "./chunk-XZJE6WIT.js";
29
+ import "./chunk-FMRMTI7W.js";
30
+ import "./chunk-BKFGGJKA.js";
31
+ import {
32
+ RecordId,
33
+ orgPackDirOf,
34
+ require_dist
35
+ } from "./chunk-JMOLB347.js";
36
+ import "./chunk-MMB2OHUY.js";
37
+ import {
38
+ __toESM
39
+ } from "./chunk-TV45EUGM.js";
40
+
41
+ // packages/cli/dist/dialect-commands.js
42
+ var import_yaml = __toESM(require_dist(), 1);
43
+ import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
44
+ import { join, relative, resolve, sep } from "node:path";
45
+ var plural = (n, word) => `${n} ${word}${n === 1 ? "" : "s"}`;
46
+ var shown = (root, file) => relative(root, file).split(sep).join("/");
47
+ var isDir = (p) => stat(p).then((s) => s.isDirectory()).catch(() => false);
48
+ async function dialectNew(root, name, repoDirs, io) {
49
+ if (!RecordId.safeParse(name).success) {
50
+ io.err('A dialect name is a lowercase slug (a-z, 0-9, ".", "_" and "-"), for example: forge-messaging');
51
+ return 2;
52
+ }
53
+ if (repoDirs.length === 0) {
54
+ io.err("dialect new needs at least one repo folder, for example: atticus dialect new house --from repos/a repos/b");
55
+ return 2;
56
+ }
57
+ const dirs = repoDirs.map((d) => resolve(d));
58
+ for (const d of dirs) {
59
+ if (!await isDir(d)) {
60
+ io.err(`${d} is not a folder.`);
61
+ return 2;
62
+ }
63
+ }
64
+ const file = join(orgPackDirOf(root), "dialects", `${name}.yaml`);
65
+ const existing = await dialectFilePath(join(orgPackDirOf(root)), name);
66
+ if (existing) {
67
+ io.err(`${shown(root, existing)} already exists; it was left as it is. Choose another name or edit that file.`);
68
+ return 1;
69
+ }
70
+ const survey = await surveyRepos(dirs);
71
+ await mkdir(join(orgPackDirOf(root), "dialects"), { recursive: true });
72
+ await writeFile(file, scaffoldDialect(name, survey), { encoding: "utf8", flag: "wx" });
73
+ const house = survey.annotations.filter((a) => !a.known).length;
74
+ io.out(`Wrote ${shown(root, file)} from ${plural(survey.repos.length, "repo")}: ${survey.marker ? `marker ${survey.marker}` : "no marker every repo has"}, ${plural(house, "framework annotation")}, ${plural(candidateAnnotations(survey).length, "candidate rule")}, ${plural(survey.configKeys.length, "config key")}.`);
75
+ io.out(`Next: finish the rules and write tests, then run atticus dialect test ${name}.`);
76
+ return 0;
77
+ }
78
+ async function load(root, name, io, allowNoTests) {
79
+ const file = await dialectFilePath(join(orgPackDirOf(root)), name);
80
+ if (!file) {
81
+ io.err(`No dialect file org-pack/dialects/${name}.yaml. Create one with: atticus dialect new ${name} --from <repo>...`);
82
+ return void 0;
83
+ }
84
+ const loaded = await loadDialectFile(file, { allowNoTests, checkFileName: true });
85
+ if (!loaded.dialect) {
86
+ const yamlProblem = loaded.problems.find((p) => p.path === "" && p.message.startsWith("not valid YAML"));
87
+ if (yamlProblem)
88
+ io.err(`${shown(root, file)} is ${yamlProblem.message}`);
89
+ else {
90
+ io.err(`${shown(root, file)} is not a valid dialect (contract C2):`);
91
+ for (const p of loaded.problems)
92
+ io.err(` ${p.path ? `${p.path}: ` : ""}${p.message}`);
93
+ }
94
+ return void 0;
95
+ }
96
+ return loaded;
97
+ }
98
+ async function dialectTest(root, name, io) {
99
+ const loaded = await load(root, name, io, false);
100
+ if (!loaded)
101
+ return 1;
102
+ const d = loaded.dialect;
103
+ io.out(`Testing dialect ${d.name} ${d.version}: ${plural(d.rules.length, "rule")}, ${plural(d.tests.length, "test")}`);
104
+ const results = await testDialect(d, loaded.dir, loaded.parents);
105
+ for (const r of results) {
106
+ io.out(` ${r.passed ? "pass" : "FAIL"} ${r.name}`);
107
+ for (const f of r.failures)
108
+ io.out(` ${f}`);
109
+ }
110
+ const failed = results.filter((r) => !r.passed).length;
111
+ if (failed === 0) {
112
+ io.out(`${plural(results.length, "test")} passed.`);
113
+ return 0;
114
+ }
115
+ io.out(`${failed} of ${plural(results.length, "test")} failed. To see what the rules produce from a repo: atticus dialect run ${d.name} <repo>`);
116
+ return 1;
117
+ }
118
+ function shownFields(record) {
119
+ const out = {
120
+ kind: record.kind,
121
+ id: record.id,
122
+ confidence: record.confidence
123
+ };
124
+ for (const [k, v] of Object.entries(record)) {
125
+ if (["kind", "id", "confidence", "schemaVersion", "status", "evidence"].includes(k))
126
+ continue;
127
+ if (Array.isArray(v) && v.length === 0)
128
+ continue;
129
+ if (v && typeof v === "object" && !Array.isArray(v) && Object.keys(v).length === 0)
130
+ continue;
131
+ out[k] = v;
132
+ }
133
+ return out;
134
+ }
135
+ async function dialectRun(root, name, repoDir, o, io) {
136
+ const dir = resolve(repoDir);
137
+ if (!await isDir(dir)) {
138
+ io.err(`${dir} is not a folder.`);
139
+ return 2;
140
+ }
141
+ const loaded = await load(root, name, io, true);
142
+ if (!loaded)
143
+ return 1;
144
+ const d = loaded.dialect;
145
+ const run = await runDialectOnRepo(d, loaded.parents, dir);
146
+ if (o.json) {
147
+ io.out(JSON.stringify({
148
+ applies: run.applies,
149
+ records: run.records.map((r) => r.record),
150
+ warnings: run.warnings,
151
+ rejected: run.rejected,
152
+ ...run.error ? { error: run.error } : {}
153
+ }, null, 2));
154
+ return run.rejected.length > 0 || run.error ? 1 : 0;
155
+ }
156
+ if (!run.applies) {
157
+ io.out(`The marker ${d.appliesTo.marker} is not in ${run.repo}, so the dialect does not apply there. 0 records.`);
158
+ return 0;
159
+ }
160
+ if (run.error)
161
+ io.err(`The dialect failed: ${run.error}`);
162
+ for (const { record, rule } of run.records) {
163
+ const fields = shownFields(record);
164
+ const lines = (0, import_yaml.stringify)([fields], { lineWidth: 0 }).trimEnd().split("\n");
165
+ for (const l of lines)
166
+ io.out(l);
167
+ const ev = record.evidence[0];
168
+ io.out(` # from ${ev?.path ?? "?"}:${ev?.line ?? "?"}${rule ? ` (rule ${rule})` : ""}`);
169
+ }
170
+ for (const w of run.warnings)
171
+ io.out(`warning: ${w.message}${w.path ? ` (${w.path})` : ""}`);
172
+ for (const r of run.rejected) {
173
+ const rec = r.record;
174
+ const at = rec.evidence?.[0];
175
+ io.out(`invalid: ${rec.kind ?? "?"} ${rec.id ?? "?"} from ${at?.path ?? "?"}:${at?.line ?? "?"}: ${r.issues.map((i) => `${i.path ? `${i.path}: ` : ""}${i.message}`).join("; ")}`);
176
+ }
177
+ io.out(`${plural(run.records.length, "record")} from ${run.repo}.${loaded.noTests ? " This dialect has no tests yet; atticus dialect test fails until it has one." : ""}`);
178
+ return run.rejected.length > 0 || run.error ? 1 : 0;
179
+ }
180
+ async function dialectKit(outDir, io) {
181
+ const files = await exportKit(outDir);
182
+ io.out(`Wrote the dialect build kit (${files.length} files) to ${outDir}`);
183
+ return 0;
184
+ }
185
+ async function dialectGrade(file, evalDir, io) {
186
+ const g = await gradeDialect(resolve(file), resolve(evalDir));
187
+ for (const l of formatGrade(g))
188
+ io.out(l);
189
+ return g.pass ? 0 : 1;
190
+ }
191
+ async function dialectTree(file, o, io) {
192
+ const lang = o.language ?? syntaxLanguageOf(file);
193
+ if (!lang || !SYNTAX_LANGUAGES.includes(lang)) {
194
+ io.err(`No grammar for ${file}${o.language ? ` (${o.language})` : ""}. Grammars: ${SYNTAX_LANGUAGES.join(", ")}.`);
195
+ return 2;
196
+ }
197
+ const text = await readFile(resolve(file), "utf8").catch(() => void 0);
198
+ if (text === void 0) {
199
+ io.err(`${file} can't be read.`);
200
+ return 2;
201
+ }
202
+ io.out(await syntaxOutline(lang, text, Number.MAX_SAFE_INTEGER));
203
+ return 0;
204
+ }
205
+ export {
206
+ dialectGrade,
207
+ dialectKit,
208
+ dialectNew,
209
+ dialectRun,
210
+ dialectTest,
211
+ dialectTree
212
+ };
@@ -0,0 +1,131 @@
1
+ import { createRequire as __atticusCreateRequire } from "node:module";
2
+ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
+ var require = __atticusCreateRequire(import.meta.url);
4
+ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
+ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ readCatalog
8
+ } from "./chunk-IILZ7J3L.js";
9
+ import {
10
+ VIEW_NAMES,
11
+ ViewError,
12
+ buildView,
13
+ shapeLibrary,
14
+ toDrawio,
15
+ toMermaid,
16
+ viewFromDiagram
17
+ } from "./chunk-XPWSNKF3.js";
18
+ import {
19
+ readDrawio
20
+ } from "./chunk-5V5BJACL.js";
21
+ import {
22
+ loadOrgPack,
23
+ orgPackDirOf
24
+ } from "./chunk-JMOLB347.js";
25
+
26
+ // packages/cli/dist/diagram-commands.js
27
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
28
+ import { dirname, join, relative, resolve, sep } from "node:path";
29
+ async function loadCatalog(root, io) {
30
+ const op = await loadOrgPack(join(orgPackDirOf(root)));
31
+ const catalogDir = join(root, op.sources.layout.catalog);
32
+ const generated = await readCatalog(join(catalogDir, "generated"), { cacheRoot: root });
33
+ const curated = await readCatalog(join(catalogDir, "curated"), { cacheRoot: root });
34
+ for (const p of [...generated.problems, ...curated.problems])
35
+ io.err(`catalog ${p.file}: ${p.message}`);
36
+ const legend = op.profiles[0]?.profile?.legend;
37
+ return {
38
+ records: [...generated.records, ...curated.records],
39
+ generated: generated.records.length,
40
+ ...legend ? { legend } : {}
41
+ };
42
+ }
43
+ async function emit(root, text, out, io) {
44
+ if (!out) {
45
+ io.out(text.replace(/\n$/, ""));
46
+ return;
47
+ }
48
+ const full = resolve(root, out);
49
+ await mkdir(dirname(full), { recursive: true });
50
+ await writeFile(full, text, "utf8");
51
+ io.out(`Wrote ${relative(root, full).split(sep).join("/")}.`);
52
+ }
53
+ async function diagramRender(root, o, io) {
54
+ const format = o.format ?? "mermaid";
55
+ if (format !== "mermaid" && format !== "drawio" && format !== "json") {
56
+ io.err(`Unknown format "${format}": use mermaid, drawio or json.`);
57
+ return 2;
58
+ }
59
+ if (/\.drawio(\.xml)?$/i.test(o.view)) {
60
+ if (format !== "mermaid") {
61
+ io.err("A diagram file renders as Mermaid only.");
62
+ return 2;
63
+ }
64
+ const full = resolve(root, o.view);
65
+ let xml;
66
+ try {
67
+ xml = await readFile(full, "utf8");
68
+ } catch {
69
+ io.err(`Can't read ${o.view}`);
70
+ return 2;
71
+ }
72
+ const op = await loadOrgPack(join(orgPackDirOf(root)));
73
+ const diagram = readDrawio(xml, op.profiles[0]?.profile?.legend);
74
+ for (const p of diagram.problems)
75
+ io.err(`cell ${p.cell}: ${p.message}`);
76
+ const view2 = viewFromDiagram(diagram, relative(root, full).split(sep).join("/"));
77
+ await emit(root, toMermaid(view2), o.out, io);
78
+ return 0;
79
+ }
80
+ if (!VIEW_NAMES.includes(o.view)) {
81
+ io.err(`Unknown view "${o.view}": use ${VIEW_NAMES.join(", ")}, or name a .drawio file to show it as Mermaid.`);
82
+ return 2;
83
+ }
84
+ const name = o.view;
85
+ if ((name === "container" || name === "sequence") && !o.focus) {
86
+ io.err(name === "container" ? "A container view needs a system: --focus <system>." : "A sequence view needs record ids in order: --focus <id>,<id>,...");
87
+ return 2;
88
+ }
89
+ if (name === "sequence" && format !== "mermaid") {
90
+ io.err("A sequence view renders as Mermaid only.");
91
+ return 2;
92
+ }
93
+ const { records, generated } = await loadCatalog(root, io);
94
+ if (generated === 0) {
95
+ io.err("The catalog is empty: read the repos first (atticus map <repo>, then atticus verify <repo> --write).");
96
+ return 1;
97
+ }
98
+ let view;
99
+ try {
100
+ view = buildView(records, name, o.focus);
101
+ } catch (e) {
102
+ if (e instanceof ViewError) {
103
+ io.err(e.message);
104
+ return 1;
105
+ }
106
+ throw e;
107
+ }
108
+ if (view.type !== "sequence" && view.nodes.length === 0) {
109
+ io.err(`Nothing to draw: the catalog has nothing for the ${name} view${o.focus ? ` of ${o.focus}` : ""}.`);
110
+ return 1;
111
+ }
112
+ if (format === "json" && view.type !== "sequence") {
113
+ await emit(root, JSON.stringify(view), o.out, io);
114
+ return 0;
115
+ }
116
+ await emit(root, view.type !== "sequence" && format === "drawio" ? toDrawio(view) : toMermaid(view), o.out, io);
117
+ return 0;
118
+ }
119
+ async function diagramLibrary(out, io) {
120
+ const full = resolve(out);
121
+ await mkdir(dirname(full), { recursive: true });
122
+ await writeFile(full, shapeLibrary(), "utf8");
123
+ io.out(`Wrote ${out}. In draw.io, open it with File > Open Library from > Device.`);
124
+ return 0;
125
+ }
126
+
127
+ export {
128
+ loadCatalog,
129
+ diagramRender,
130
+ diagramLibrary
131
+ };
@@ -0,0 +1,134 @@
1
+ import { createRequire as __atticusCreateRequire } from "node:module";
2
+ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
+ var require = __atticusCreateRequire(import.meta.url);
4
+ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
+ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ targetFlowsOf
8
+ } from "./chunk-JEUXCIRD.js";
9
+ import {
10
+ estimateChange,
11
+ loadRelease,
12
+ releaseForecast
13
+ } from "./chunk-7A7IG7OA.js";
14
+ import {
15
+ gateStatus,
16
+ reviewedGates
17
+ } from "./chunk-T6ESD5KM.js";
18
+ import {
19
+ detectConflicts,
20
+ outsideSystemsOf
21
+ } from "./chunk-3LU6YCSQ.js";
22
+ import {
23
+ loadEstimates,
24
+ loadOrgPack,
25
+ orgPackDirOf
26
+ } from "./chunk-JMOLB347.js";
27
+
28
+ // packages/cli/dist/change-estimate.js
29
+ import { relative, sep } from "node:path";
30
+ async function estimateOf(root, change, o = {}) {
31
+ const t = await targetFlowsOf(root, change);
32
+ if (!t)
33
+ return void 0;
34
+ const problems = [...t.problems];
35
+ const { estimates, problem } = await loadEstimates(orgPackDirOf(root));
36
+ if (problem)
37
+ problems.push(problem);
38
+ const systems = /* @__PURE__ */ new Map();
39
+ const systemOf = /* @__PURE__ */ new Map();
40
+ for (const r of t.records) {
41
+ if (r.kind === "System")
42
+ systems.set(r.id, r.boundary);
43
+ if (r.kind === "Component")
44
+ systemOf.set(r.id, r.system);
45
+ }
46
+ const boundaryOf = (c) => systems.get(systemOf.get(c) ?? c);
47
+ const op = await loadOrgPack(orgPackDirOf(root)).catch(() => void 0);
48
+ const outside = op ? outsideSystemsOf(op) : /* @__PURE__ */ new Map();
49
+ const otherTeam = (c) => boundaryOf(c) !== "vendor" && outside.get(systemOf.get(c) ?? c) === "other-team";
50
+ let openBlocking = 0;
51
+ for (const gate of await reviewedGates(root, change).catch(() => []))
52
+ openBlocking += await gateStatus(root, change, gate).then((s) => s.open.blocking, () => 0);
53
+ const conflicts = (await detectConflicts(root).catch(() => [])).filter((p) => p.changes.includes(change)).length;
54
+ let waitDays;
55
+ try {
56
+ const f = await releaseForecast(await loadRelease(root, change, o.now ? { now: o.now } : {}));
57
+ if (f.status !== "released")
58
+ waitDays = f.waitDays;
59
+ } catch (e2) {
60
+ problems.push(`The release forecast couldn't be worked out: ${e2.message.split("\n")[0]}`);
61
+ }
62
+ const flows = t.merged.map((m) => ({
63
+ flow: m.flow,
64
+ repo: m.repo,
65
+ change: m.change,
66
+ trigger: m.trigger.kind,
67
+ file: `${t.source}/${m.flow}.yaml`,
68
+ steps: m.steps.map((s) => ({
69
+ mark: s.mark,
70
+ kind: s.kind,
71
+ ...s.today !== void 0 ? { today: s.today } : {},
72
+ ...s.target !== void 0 ? { target: s.target } : {},
73
+ ...s.what ? { what: s.what } : {},
74
+ ...s.to ? { to: s.to } : {},
75
+ ...s.store ? { store: s.store } : {},
76
+ ...s.confirmedBy ? { confirmedBy: s.confirmedBy } : {}
77
+ }))
78
+ }));
79
+ const e = estimateChange({
80
+ change,
81
+ flows,
82
+ ...estimates ? { table: estimates } : {},
83
+ boundaryOf,
84
+ otherTeam,
85
+ openBlocking,
86
+ conflicts,
87
+ ...waitDays !== void 0 ? { waitDays } : {}
88
+ });
89
+ return {
90
+ ...e,
91
+ title: t.title,
92
+ source: t.source,
93
+ ...estimates ? { table: `${relative(root, orgPackDirOf(root)).split(sep).join("/")}/estimates.yaml` } : {},
94
+ problems
95
+ };
96
+ }
97
+ var units = (n) => `${n} unit${n === 1 ? "" : "s"} of work`;
98
+ var range = (d) => `${d.p20}-${d.p80} days (p50 ${d.p50})`;
99
+ async function changeEstimateCommand(root, change, o, io) {
100
+ const e = await estimateOf(root, change, o.now ? { now: o.now } : {});
101
+ if (!e) {
102
+ io.err(`There is no change ${change}.`);
103
+ return 2;
104
+ }
105
+ if (o.json) {
106
+ io.out(JSON.stringify(e, null, 2));
107
+ return 0;
108
+ }
109
+ for (const p of e.problems)
110
+ io.err(p);
111
+ if (!e.units.length) {
112
+ io.err(`${change} has no target flows yet, so there is nothing to size: the architecture stage writes them (atticus change architecture ${change}).`);
113
+ return 1;
114
+ }
115
+ io.out(`Estimate for ${change}: ${e.title}`);
116
+ io.out(e.effort ? `Effort: ${range(e.effort)}, from ${e.units.length - e.needsClass} of ${units(e.units.length)}.` : `Size: ${units(e.units.length)}. No days: ${e.table ? "no class in the org pack's estimates.yaml matches them" : "the org pack has no estimates.yaml"}.`);
117
+ if (e.calendar.waitDays !== void 0)
118
+ io.out(`Waiting (the release forecast): ${e.calendar.waitDays} working days${e.calendar.longer ? `; the ${e.calendar.longer} is longer` : ""}.`);
119
+ io.out(e.calibration.source ? `Not calibrated yet: the ranges are ${e.calibration.source}'s, from ${e.table}.` : "Not calibrated yet.");
120
+ if (e.drivers.length) {
121
+ io.out("Drivers:");
122
+ for (const d of e.drivers)
123
+ io.out(` ${d.what}: ${d.count}${d.widens ? ` (widens the upper end by ${d.widens}x)` : ""}${d.source ? ` ${d.source}` : ""}`);
124
+ }
125
+ io.out("Work:");
126
+ for (const u of e.units)
127
+ io.out(` ${u.repo} ${u.flow}${u.step !== void 0 ? ` step ${u.step}` : ""} ${u.class} ${u.days ? range(u.days) : "needs a class"} ${u.what}`);
128
+ return 0;
129
+ }
130
+
131
+ export {
132
+ estimateOf,
133
+ changeEstimateCommand
134
+ };
@@ -0,0 +1,82 @@
1
+ import { createRequire as __atticusCreateRequire } from "node:module";
2
+ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
+ var require = __atticusCreateRequire(import.meta.url);
4
+ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
+ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+
7
+ // packages/cli/dist/top-commands.js
8
+ var TOP_WORDS = [
9
+ "init",
10
+ "map",
11
+ "verify",
12
+ "join",
13
+ "change",
14
+ "critic",
15
+ "stories",
16
+ "task",
17
+ "questions",
18
+ "knowledge",
19
+ "next",
20
+ "ui"
21
+ ];
22
+ var TOP = new Set(TOP_WORDS);
23
+ var isLegacy = (first) => !!first && !TOP.has(first) && first !== "legacy" && first !== "help";
24
+ var TOP_HELP = ` atticus init <folder> --platform <p> Start your team's metarepo (atticus adopt <path> uses Atticus inside one repo)
25
+ atticus map <repo> Your assistant reads a repo into facts, each citing its file and line (/atticus-map does it in one session)
26
+ atticus verify <repo> [--write] Check the facts against the code; --write puts them in the catalog and renders the map
27
+ atticus join [--json] Follow flows from repo to repo through the calls the facts join; writes specs/estate.yaml
28
+ atticus change new "<title>" Start a change; atticus help change lists its stages and the rest
29
+ atticus critic <change> Review a change: rule checks, then four questions (is it true, complete, safe, can it ship)
30
+ atticus stories <change> The stories stage: stories with acceptance criteria and tasks, from the design
31
+ atticus task <change> <task> Run one task with your assistant: a plan, a draft or a pull request
32
+ atticus questions What Atticus needs a person to answer, and who can answer it
33
+ atticus knowledge scan Read your wikis into patterns, standards, processes and decisions; atticus help knowledge lists the rest
34
+ atticus next The next step to take, its command and its slash command
35
+ atticus ui [--open] Open the app on this machine
36
+
37
+ atticus help <command> What one command takes (atticus explain <command> says it in plain words)
38
+ atticus legacy Every other command (scan, plan, release, estate and more); each still runs by its own name
39
+ atticus help --all Every command, grouped by area`;
40
+ function topHelp(versionLine) {
41
+ return [
42
+ versionLine,
43
+ "",
44
+ "Map a multi-repo estate from its code, then take each change from idea to code, with a person approving every gate.",
45
+ "",
46
+ TOP_HELP,
47
+ "",
48
+ "Every command also takes --root <dir> (the metarepo) and --by <handle> (who is acting)."
49
+ ].join("\n");
50
+ }
51
+ function aliasArgv(argv, positions) {
52
+ const out = [...argv];
53
+ let at = [...positions];
54
+ if (at.length > 1 && out[at[0]] === "legacy") {
55
+ out.splice(at[0], 1);
56
+ at = at.slice(1).map((i) => i - 1);
57
+ }
58
+ const first = at[0];
59
+ if (first === void 0)
60
+ return out;
61
+ const word = out[first];
62
+ const second = at[1] === void 0 ? void 0 : out[at[1]];
63
+ if (word === "join" && second === "measure")
64
+ out.splice(first, 2, "estate", "measure");
65
+ else if (word === "join" && second === "shared")
66
+ out.splice(first, 2, "estate", "shared");
67
+ else if (word === "join" && second === "contracts")
68
+ out.splice(first, 2, "estate", "contracts");
69
+ else if (word === "join")
70
+ out.splice(first, 1, "estate", "join");
71
+ else if (word === "stories")
72
+ out.splice(first, 1, "plan", "stories");
73
+ else if (word === "task" && second !== "run" && second !== "context")
74
+ out.splice(first + 1, 0, "run");
75
+ return out;
76
+ }
77
+
78
+ export {
79
+ isLegacy,
80
+ topHelp,
81
+ aliasArgv
82
+ };