@agent-profile/web 0.1.5 → 0.3.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 (258) hide show
  1. package/build/client/_app/immutable/assets/9.BDcQmxob.css +1 -0
  2. package/build/client/_app/immutable/assets/9.BDcQmxob.css.br +0 -0
  3. package/build/client/_app/immutable/assets/9.BDcQmxob.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/BcMnim1Z.js +2 -0
  5. package/build/client/_app/immutable/chunks/BcMnim1Z.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BcMnim1Z.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/D5fBh0I2.js +1 -0
  8. package/build/client/_app/immutable/chunks/D5fBh0I2.js.br +2 -0
  9. package/build/client/_app/immutable/chunks/D5fBh0I2.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/DJ5W1vn7.js +3 -0
  11. package/build/client/_app/immutable/chunks/DJ5W1vn7.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DJ5W1vn7.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/DTBN031P.js +1 -0
  14. package/build/client/_app/immutable/chunks/DTBN031P.js.br +2 -0
  15. package/build/client/_app/immutable/chunks/DTBN031P.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/D_wMLkFK.js +1 -0
  17. package/build/client/_app/immutable/chunks/D_wMLkFK.js.br +2 -0
  18. package/build/client/_app/immutable/chunks/D_wMLkFK.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/m4VeB-e-.js +3 -0
  20. package/build/client/_app/immutable/chunks/m4VeB-e-.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/m4VeB-e-.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/app.DMWpO7sJ.js +2 -0
  23. package/build/client/_app/immutable/entry/app.DMWpO7sJ.js.br +0 -0
  24. package/build/client/_app/immutable/entry/app.DMWpO7sJ.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/start.BBaMgJ1R.js +1 -0
  26. package/build/client/_app/immutable/entry/start.BBaMgJ1R.js.br +0 -0
  27. package/build/client/_app/immutable/entry/start.BBaMgJ1R.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/0.Dv0k2Jqi.js +1 -0
  29. package/build/client/_app/immutable/nodes/0.Dv0k2Jqi.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/0.Dv0k2Jqi.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/1.E6HqFVj7.js +1 -0
  32. package/build/client/_app/immutable/nodes/1.E6HqFVj7.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.E6HqFVj7.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/10.DorD5wKe.js +3 -0
  35. package/build/client/_app/immutable/nodes/10.DorD5wKe.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/10.DorD5wKe.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{10.Bhdlxk-S.js → 11.3lkgWYOd.js} +2 -2
  38. package/build/client/_app/immutable/nodes/11.3lkgWYOd.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/11.3lkgWYOd.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/12.p6ol8gkx.js +1 -0
  41. package/build/client/_app/immutable/nodes/12.p6ol8gkx.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/12.p6ol8gkx.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{2.CI-wpOC8.js → 2.DMK5rlQk.js} +2 -2
  44. package/build/client/_app/immutable/nodes/2.DMK5rlQk.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/2.DMK5rlQk.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/3.BBvN4Erf.js +2 -0
  47. package/build/client/_app/immutable/nodes/3.BBvN4Erf.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/3.BBvN4Erf.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/4.3VL8fZOS.js +4 -0
  50. package/build/client/_app/immutable/nodes/4.3VL8fZOS.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/4.3VL8fZOS.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/5.CiNtblYV.js +2 -0
  53. package/build/client/_app/immutable/nodes/5.CiNtblYV.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/5.CiNtblYV.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/6.BRCCYakl.js +5 -0
  56. package/build/client/_app/immutable/nodes/6.BRCCYakl.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/6.BRCCYakl.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/7.Bn-YL1OM.js +4 -0
  59. package/build/client/_app/immutable/nodes/7.Bn-YL1OM.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/7.Bn-YL1OM.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/8.CkQQuOBs.js +1 -0
  62. package/build/client/_app/immutable/nodes/8.CkQQuOBs.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/8.CkQQuOBs.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/9.6KxRZbKJ.js +9 -0
  65. package/build/client/_app/immutable/nodes/9.6KxRZbKJ.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/9.6KxRZbKJ.js.gz +0 -0
  67. package/build/client/_app/version.json +1 -1
  68. package/build/client/_app/version.json.br +0 -0
  69. package/build/client/_app/version.json.gz +0 -0
  70. package/build/server/chunks/{0-DWEpTDaF.js → 0-D1xG012U.js} +8 -8
  71. package/build/server/chunks/{0-DWEpTDaF.js.map → 0-D1xG012U.js.map} +1 -1
  72. package/build/server/chunks/1-B1kTzRNn.js +9 -0
  73. package/build/server/chunks/{1-B68UkVTE.js.map → 1-B1kTzRNn.js.map} +1 -1
  74. package/build/server/chunks/{9-tHCipeiW.js → 10-DahfOzGu.js} +7 -7
  75. package/build/server/chunks/10-DahfOzGu.js.map +1 -0
  76. package/build/server/chunks/11-mzYblRmm.js +9 -0
  77. package/build/server/chunks/11-mzYblRmm.js.map +1 -0
  78. package/build/server/chunks/{11-Ms74wtl9.js → 12-Dw1Y6Xen.js} +5 -5
  79. package/build/server/chunks/{11-Ms74wtl9.js.map → 12-Dw1Y6Xen.js.map} +1 -1
  80. package/build/server/chunks/{2-bmpngDVe.js → 2-Cbd6Pglj.js} +3 -3
  81. package/build/server/chunks/{2-bmpngDVe.js.map → 2-Cbd6Pglj.js.map} +1 -1
  82. package/build/server/chunks/3-DjAsck26.js +9 -0
  83. package/build/server/chunks/{3-BkezOAX7.js.map → 3-DjAsck26.js.map} +1 -1
  84. package/build/server/chunks/{4-CSfQwQwV.js → 4-CKQYCTZo.js} +5 -5
  85. package/build/server/chunks/{4-CSfQwQwV.js.map → 4-CKQYCTZo.js.map} +1 -1
  86. package/build/server/chunks/5-BDp1sX0Q.js +9 -0
  87. package/build/server/chunks/{5-D_pZV4fS.js.map → 5-BDp1sX0Q.js.map} +1 -1
  88. package/build/server/chunks/6-CUIuzy6O.js +9 -0
  89. package/build/server/chunks/{6-DcbRMrH1.js.map → 6-CUIuzy6O.js.map} +1 -1
  90. package/build/server/chunks/{7-BsMFIBGU.js → 7-BDv5_nF1.js} +6 -6
  91. package/build/server/chunks/{7-BsMFIBGU.js.map → 7-BDv5_nF1.js.map} +1 -1
  92. package/build/server/chunks/8-CspJz0xl.js +9 -0
  93. package/build/server/chunks/{8-DWleYW_e.js.map → 8-CspJz0xl.js.map} +1 -1
  94. package/build/server/chunks/9-BpgaO-rd.js +33 -0
  95. package/build/server/chunks/9-BpgaO-rd.js.map +1 -0
  96. package/build/server/chunks/{Badge-BYK3z3lr.js → Badge-DCQxSQCS.js} +2 -2
  97. package/build/server/chunks/{Badge-BYK3z3lr.js.map → Badge-DCQxSQCS.js.map} +1 -1
  98. package/build/server/chunks/{SafetyBadge-BXNCgLE-.js → SafetyBadge-BxEGojgX.js} +2 -2
  99. package/build/server/chunks/{SafetyBadge-BXNCgLE-.js.map → SafetyBadge-BxEGojgX.js.map} +1 -1
  100. package/build/server/chunks/{_layout.svelte-Cv35k3JT.js → _layout.svelte-6X0-Uv9x.js} +15 -5
  101. package/build/server/chunks/_layout.svelte-6X0-Uv9x.js.map +1 -0
  102. package/build/server/chunks/{_page.svelte-BftcSD3f.js → _page.svelte-1wUrXGW-.js} +3 -3
  103. package/build/server/chunks/{_page.svelte-BftcSD3f.js.map → _page.svelte-1wUrXGW-.js.map} +1 -1
  104. package/build/server/chunks/{_page.svelte-B-Kaw1RF.js → _page.svelte-B3CasgD8.js} +2 -2
  105. package/build/server/chunks/{_page.svelte-B-Kaw1RF.js.map → _page.svelte-B3CasgD8.js.map} +1 -1
  106. package/build/server/chunks/_page.svelte-BEU4JrAd.js +433 -0
  107. package/build/server/chunks/_page.svelte-BEU4JrAd.js.map +1 -0
  108. package/build/server/chunks/{_page.svelte-Cat8tEeF.js → _page.svelte-Bi4xsxv7.js} +4 -4
  109. package/build/server/chunks/{_page.svelte-Cat8tEeF.js.map → _page.svelte-Bi4xsxv7.js.map} +1 -1
  110. package/build/server/chunks/{_page.svelte-CIEY8g8A.js → _page.svelte-BikYFdJv.js} +4 -4
  111. package/build/server/chunks/{_page.svelte-CIEY8g8A.js.map → _page.svelte-BikYFdJv.js.map} +1 -1
  112. package/build/server/chunks/{_page.svelte-CmuUQI4Y.js → _page.svelte-Bx-fv-rO.js} +43 -20
  113. package/build/server/chunks/_page.svelte-Bx-fv-rO.js.map +1 -0
  114. package/build/server/chunks/{_page.svelte-DZX4Bixr.js → _page.svelte-CveCaqpY.js} +5 -5
  115. package/build/server/chunks/{_page.svelte-DZX4Bixr.js.map → _page.svelte-CveCaqpY.js.map} +1 -1
  116. package/build/server/chunks/{_page.svelte-DyI46sDh.js → _page.svelte-D8ffqrO3.js} +3 -3
  117. package/build/server/chunks/{_page.svelte-DyI46sDh.js.map → _page.svelte-D8ffqrO3.js.map} +1 -1
  118. package/build/server/chunks/{_page.svelte-DLQqGym0.js → _page.svelte-DNmC-yjw.js} +4 -4
  119. package/build/server/chunks/{_page.svelte-DLQqGym0.js.map → _page.svelte-DNmC-yjw.js.map} +1 -1
  120. package/build/server/chunks/{_page.svelte-DHNevyzi.js → _page.svelte-wL3fdD1l.js} +4 -4
  121. package/build/server/chunks/{_page.svelte-DHNevyzi.js.map → _page.svelte-wL3fdD1l.js.map} +1 -1
  122. package/build/server/chunks/{_page.svelte-CUnw0pLx.js → _page.svelte-xTZOj1o8.js} +3 -3
  123. package/build/server/chunks/{_page.svelte-CUnw0pLx.js.map → _page.svelte-xTZOj1o8.js.map} +1 -1
  124. package/build/server/chunks/_server.ts-BBDD0W6t.js +167 -0
  125. package/build/server/chunks/_server.ts-BBDD0W6t.js.map +1 -0
  126. package/build/server/chunks/_server.ts-BkOJmVFg.js +101 -0
  127. package/build/server/chunks/_server.ts-BkOJmVFg.js.map +1 -0
  128. package/build/server/chunks/{_server.ts-BUQYdxPs.js → _server.ts-BkcLO56D.js} +2 -2
  129. package/build/server/chunks/{_server.ts-BUQYdxPs.js.map → _server.ts-BkcLO56D.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-Dq1jAomo.js → _server.ts-C2WpZqPW.js} +4 -4
  131. package/build/server/chunks/{_server.ts-Dq1jAomo.js.map → _server.ts-C2WpZqPW.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-5396UuLQ.js → _server.ts-CKn8ym8s.js} +2 -2
  133. package/build/server/chunks/{_server.ts-5396UuLQ.js.map → _server.ts-CKn8ym8s.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-DHt1bGpF.js → _server.ts-CaVH9FSD.js} +4 -4
  135. package/build/server/chunks/{_server.ts-DHt1bGpF.js.map → _server.ts-CaVH9FSD.js.map} +1 -1
  136. package/build/server/chunks/_server.ts-D7iLlRbM.js +337 -0
  137. package/build/server/chunks/_server.ts-D7iLlRbM.js.map +1 -0
  138. package/build/server/chunks/_server.ts-DPqZOGG_.js +18 -0
  139. package/build/server/chunks/_server.ts-DPqZOGG_.js.map +1 -0
  140. package/build/server/chunks/{_server.ts-sMKRiXFg.js → _server.ts-Dz9oKgWc.js} +5 -5
  141. package/build/server/chunks/{_server.ts-sMKRiXFg.js.map → _server.ts-Dz9oKgWc.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-CvdpZfED.js → _server.ts-fVP0SuTW.js} +2 -2
  143. package/build/server/chunks/{_server.ts-CvdpZfED.js.map → _server.ts-fVP0SuTW.js.map} +1 -1
  144. package/build/server/chunks/{client-92HF3fc9.js → client-CydontyB.js} +3 -3
  145. package/build/server/chunks/{client-92HF3fc9.js.map → client-CydontyB.js.map} +1 -1
  146. package/build/server/chunks/{dev-Duv_-rxF.js → dev-BdIdjvaY.js} +216 -82
  147. package/build/server/chunks/dev-BdIdjvaY.js.map +1 -0
  148. package/build/server/chunks/{doctorSummary-Bm0dY6PW.js → doctorSummary-BOtGdd9z.js} +3 -3
  149. package/build/server/chunks/{doctorSummary-Bm0dY6PW.js.map → doctorSummary-BOtGdd9z.js.map} +1 -1
  150. package/build/server/chunks/{error.svelte-BEI8QxGW.js → error.svelte-_CDx8UPv.js} +4 -4
  151. package/build/server/chunks/{error.svelte-BEI8QxGW.js.map → error.svelte-_CDx8UPv.js.map} +1 -1
  152. package/build/server/chunks/{hooks.server-BKavEpqC.js → hooks.server-Dva4z7fv.js} +35 -1
  153. package/build/server/chunks/hooks.server-Dva4z7fv.js.map +1 -0
  154. package/build/server/chunks/{internal-DBeni9My.js → internal-DyPeC3rk.js} +21 -16
  155. package/build/server/chunks/internal-DyPeC3rk.js.map +1 -0
  156. package/build/server/chunks/{marketingSeo-Do5o0grg.js → marketingSeo-CugwK52J.js} +2 -2
  157. package/build/server/chunks/{marketingSeo-Do5o0grg.js.map → marketingSeo-CugwK52J.js.map} +1 -1
  158. package/build/server/chunks/migrationReport-f6NoxAVZ.js +40 -0
  159. package/build/server/chunks/migrationReport-f6NoxAVZ.js.map +1 -0
  160. package/build/server/chunks/{profileApiHelpers-BFzohffv.js → profileApiHelpers-DCoI7zMU.js} +3 -3
  161. package/build/server/chunks/{profileApiHelpers-BFzohffv.js.map → profileApiHelpers-DCoI7zMU.js.map} +1 -1
  162. package/build/server/chunks/{projectContext-Cxsfz84C.js → projectContext-B1D-bieW.js} +2439 -127
  163. package/build/server/chunks/projectContext-B1D-bieW.js.map +1 -0
  164. package/build/server/chunks/{src2-DNqJAXv6.js → src2-BtraGDB1.js} +2 -2
  165. package/build/server/chunks/src2-BtraGDB1.js.map +1 -0
  166. package/build/server/chunks/{src3-jm480tTA.js → src3-BXch_OaJ.js} +347 -10
  167. package/build/server/chunks/src3-BXch_OaJ.js.map +1 -0
  168. package/build/server/chunks/{tokenStore-DQfTa-N3.js → tokenStore-CTHhmHsk.js} +30 -2
  169. package/build/server/chunks/tokenStore-CTHhmHsk.js.map +1 -0
  170. package/build/server/index.js +4 -5
  171. package/build/server/index.js.map +1 -1
  172. package/build/server/manifest.js +58 -22
  173. package/build/server/manifest.js.map +1 -1
  174. package/package.json +7 -7
  175. package/build/client/_app/immutable/chunks/6SrQtk22.js +0 -3
  176. package/build/client/_app/immutable/chunks/6SrQtk22.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/6SrQtk22.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/B1X0Iqjr.js +0 -3
  179. package/build/client/_app/immutable/chunks/B1X0Iqjr.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/B1X0Iqjr.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js +0 -1
  182. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js.br +0 -0
  183. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js.gz +0 -0
  184. package/build/client/_app/immutable/chunks/BYeYmN2n.js +0 -1
  185. package/build/client/_app/immutable/chunks/BYeYmN2n.js.br +0 -2
  186. package/build/client/_app/immutable/chunks/BYeYmN2n.js.gz +0 -0
  187. package/build/client/_app/immutable/chunks/D0_SwbnT.js +0 -2
  188. package/build/client/_app/immutable/chunks/D0_SwbnT.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/D0_SwbnT.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/DRoN73NW.js +0 -1
  191. package/build/client/_app/immutable/chunks/DRoN73NW.js.br +0 -2
  192. package/build/client/_app/immutable/chunks/DRoN73NW.js.gz +0 -0
  193. package/build/client/_app/immutable/entry/app.B45QQayJ.js +0 -2
  194. package/build/client/_app/immutable/entry/app.B45QQayJ.js.br +0 -0
  195. package/build/client/_app/immutable/entry/app.B45QQayJ.js.gz +0 -0
  196. package/build/client/_app/immutable/entry/start.BIlQ_snM.js +0 -1
  197. package/build/client/_app/immutable/entry/start.BIlQ_snM.js.br +0 -0
  198. package/build/client/_app/immutable/entry/start.BIlQ_snM.js.gz +0 -0
  199. package/build/client/_app/immutable/nodes/0.JRffyfUR.js +0 -1
  200. package/build/client/_app/immutable/nodes/0.JRffyfUR.js.br +0 -0
  201. package/build/client/_app/immutable/nodes/0.JRffyfUR.js.gz +0 -0
  202. package/build/client/_app/immutable/nodes/1.56EgwKsF.js +0 -1
  203. package/build/client/_app/immutable/nodes/1.56EgwKsF.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/1.56EgwKsF.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/10.Bhdlxk-S.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/10.Bhdlxk-S.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js +0 -1
  208. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js.br +0 -0
  209. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js.gz +0 -0
  210. package/build/client/_app/immutable/nodes/2.CI-wpOC8.js.br +0 -0
  211. package/build/client/_app/immutable/nodes/2.CI-wpOC8.js.gz +0 -0
  212. package/build/client/_app/immutable/nodes/3.Bphawycs.js +0 -2
  213. package/build/client/_app/immutable/nodes/3.Bphawycs.js.br +0 -0
  214. package/build/client/_app/immutable/nodes/3.Bphawycs.js.gz +0 -0
  215. package/build/client/_app/immutable/nodes/4.BGFkNM65.js +0 -4
  216. package/build/client/_app/immutable/nodes/4.BGFkNM65.js.br +0 -0
  217. package/build/client/_app/immutable/nodes/4.BGFkNM65.js.gz +0 -0
  218. package/build/client/_app/immutable/nodes/5.VTs5grF0.js +0 -2
  219. package/build/client/_app/immutable/nodes/5.VTs5grF0.js.br +0 -0
  220. package/build/client/_app/immutable/nodes/5.VTs5grF0.js.gz +0 -0
  221. package/build/client/_app/immutable/nodes/6.CndSdLIk.js +0 -5
  222. package/build/client/_app/immutable/nodes/6.CndSdLIk.js.br +0 -0
  223. package/build/client/_app/immutable/nodes/6.CndSdLIk.js.gz +0 -0
  224. package/build/client/_app/immutable/nodes/7.DpFk4StA.js +0 -4
  225. package/build/client/_app/immutable/nodes/7.DpFk4StA.js.br +0 -0
  226. package/build/client/_app/immutable/nodes/7.DpFk4StA.js.gz +0 -0
  227. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js +0 -1
  228. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js.br +0 -0
  229. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js.gz +0 -0
  230. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js +0 -3
  231. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js.br +0 -0
  232. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js.gz +0 -0
  233. package/build/server/chunks/1-B68UkVTE.js +0 -9
  234. package/build/server/chunks/10-D7op0myD.js +0 -9
  235. package/build/server/chunks/10-D7op0myD.js.map +0 -1
  236. package/build/server/chunks/3-BkezOAX7.js +0 -9
  237. package/build/server/chunks/5-D_pZV4fS.js +0 -9
  238. package/build/server/chunks/6-DcbRMrH1.js +0 -9
  239. package/build/server/chunks/8-DWleYW_e.js +0 -9
  240. package/build/server/chunks/9-tHCipeiW.js.map +0 -1
  241. package/build/server/chunks/_layout.svelte-Cv35k3JT.js.map +0 -1
  242. package/build/server/chunks/_page.svelte-CmuUQI4Y.js.map +0 -1
  243. package/build/server/chunks/dev-Duv_-rxF.js.map +0 -1
  244. package/build/server/chunks/hooks.server-BKavEpqC.js.map +0 -1
  245. package/build/server/chunks/internal-DBeni9My.js.map +0 -1
  246. package/build/server/chunks/projectContext-Cxsfz84C.js.map +0 -1
  247. package/build/server/chunks/src2-DNqJAXv6.js.map +0 -1
  248. package/build/server/chunks/src3-jm480tTA.js.map +0 -1
  249. package/build/server/chunks/tokenStore-DQfTa-N3.js.map +0 -1
  250. /package/build/client/_app/immutable/assets/{9.BsbC-D7w.css → 10.BsbC-D7w.css} +0 -0
  251. /package/build/client/_app/immutable/assets/{9.BsbC-D7w.css.br → 10.BsbC-D7w.css.br} +0 -0
  252. /package/build/client/_app/immutable/assets/{9.BsbC-D7w.css.gz → 10.BsbC-D7w.css.gz} +0 -0
  253. /package/build/client/_app/immutable/chunks/{I8rQr1kY.js → CP97kCR3.js} +0 -0
  254. /package/build/client/_app/immutable/chunks/{I8rQr1kY.js.br → CP97kCR3.js.br} +0 -0
  255. /package/build/client/_app/immutable/chunks/{I8rQr1kY.js.gz → CP97kCR3.js.gz} +0 -0
  256. /package/build/client/_app/immutable/chunks/{BFYQcBYR.js → O6-aNYLC.js} +0 -0
  257. /package/build/client/_app/immutable/chunks/{BFYQcBYR.js.br → O6-aNYLC.js.br} +0 -0
  258. /package/build/client/_app/immutable/chunks/{BFYQcBYR.js.gz → O6-aNYLC.js.gz} +0 -0
@@ -1,4 +1,4 @@
1
- import { p as parseProfileYaml } from './projectContext-Cxsfz84C.js';
1
+ import { p as parseProfileYaml } from './projectContext-B1D-bieW.js';
2
2
  import 'node:fs/promises';
3
3
  import 'process';
4
4
  import 'buffer';
@@ -9,4 +9,4 @@ import 'node:crypto';
9
9
 
10
10
 
11
11
  export { parseProfileYaml };
12
- //# sourceMappingURL=src2-DNqJAXv6.js.map
12
+ //# sourceMappingURL=src2-BtraGDB1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src2-BtraGDB1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
- import { p as parseProfileYaml, c as compileProfile, s as safeOutputPath, a as containsSecretLikeLiteral, v as validateLockfileText, b as createLockfileFile, d as sha256Hex, n as normalizeSafety, e as deriveEffectivePermissions } from './projectContext-Cxsfz84C.js';
2
- import { readFile, readdir } from 'node:fs/promises';
1
+ import { p as parseProfileYaml, c as compileProfile, t as toLockfileV2View, d as deriveEffectivePermissions, s as safeOutputPath, e as containsSecretLikeLiteral, v as validateLockfileText, h as hasAllRegionMarkers, f as hasAnyRegionMarker, g as parseMixedFile, i as hasLegacyGeneratedMarker, j as createLockfileFile, k as sha256Hex, n as normalizeSafety, l as getEnabledSubagents, m as isSubagentBuiltinNameCollision } from './projectContext-B1D-bieW.js';
2
+ import { lstat, readFile, readdir } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
 
5
5
  //#region ../../packages/doctor/src/doctor.ts
@@ -35,15 +35,27 @@ async function runDoctor(request = {}) {
35
35
  await checkSemanticWarnings(rootDir, compileResult.files, issues);
36
36
  await checkGitignoreSecretHygiene(rootDir, issues);
37
37
  const lockfile = await readAndValidateLockfile(rootDir, issues);
38
- if (lockfile) await checkLockfileDrift({
38
+ const lockfileV2 = lockfile ? toLockfileV2View(lockfile) : void 0;
39
+ await checkRegionFiles(rootDir, compileResult.files, lockfileV2, issues);
40
+ if (lockfileV2) await checkLockfileDrift({
39
41
  rootDir,
40
42
  profileBytes: profileBytes.bytes,
41
43
  templates: compileResult.templates,
42
44
  files: compileResult.files,
43
- lockfile,
45
+ lockfile: lockfileV2,
44
46
  issues
45
47
  });
46
48
  await checkPermissionPosture(rootDir, profileResult.profile, issues);
49
+ await checkSubagentArtifacts({
50
+ rootDir,
51
+ profile: profileResult.profile,
52
+ effective: deriveEffectivePermissions(profileResult.profile),
53
+ generatedFiles: compileResult.files,
54
+ lockfile: lockfileV2,
55
+ issues
56
+ });
57
+ await checkLocalRuntimeGitignore(rootDir, issues);
58
+ await checkForeignSkillAndSubagentCollisions(rootDir, compileResult.files, lockfileV2, issues);
47
59
  return toResult(issues);
48
60
  }
49
61
  async function checkGeneratedArtifactsExist(rootDir, files, issues) {
@@ -108,7 +120,8 @@ async function checkLockfileDrift(input) {
108
120
  const expectedLockfileText = createLockfileFile({
109
121
  profileBytes: input.profileBytes,
110
122
  templates: input.templates,
111
- files: input.files
123
+ files: input.files,
124
+ mixedOutputs: collectMixedOutputDescriptorsFromLockfile(input.lockfile)
112
125
  });
113
126
  const expectedLockfile = JSON.parse(Buffer.from(expectedLockfileText.bytes).toString("utf8"));
114
127
  const currentProfileHash = sha256Hex(input.profileBytes);
@@ -117,16 +130,41 @@ async function checkLockfileDrift(input) {
117
130
  compareOutputs(input.lockfile.outputs, expectedLockfile.outputs, input.issues);
118
131
  const lockOutputsByKey = new Map(input.lockfile.outputs.map((output) => [outputKey(output), output]));
119
132
  for (const output of expectedLockfile.outputs) {
120
- const expectedHash = lockOutputsByKey.get(outputKey(output))?.sha256 ?? output.sha256;
133
+ if (output.ownership === "manual-owned") continue;
134
+ const lockOutput = lockOutputsByKey.get(outputKey(output));
121
135
  const current = await readKnownFile(input.rootDir, output.path);
122
136
  if (!current.ok) {
123
- input.issues.push(issue("LINT-LOCK-006", "error", output.path, "generated file present", "missing", `${output.path} is listed in ai-profile.lock but is missing.`, "Run the compiler after reviewing generated file changes."));
137
+ const isLocalRuntime = LOCAL_RUNTIME_IGNORE_PATHS.some((line) => line.replace(/\/$/u, "") === output.path);
138
+ input.issues.push(issue("LINT-LOCK-006", isLocalRuntime ? "warning" : "error", output.path, "generated file present", "missing", `${output.path} is listed in ai-profile.lock but is missing${isLocalRuntime ? " (local-runtime path; regenerated by compile --write)" : ""}.`, isLocalRuntime ? "Run agent-profile compile --write to materialize the local-runtime file; it is intentionally not committed." : "Run the compiler after reviewing generated file changes."));
139
+ continue;
140
+ }
141
+ if (output.ownership === "mixed") {
142
+ const expectedHash = (lockOutput && lockOutput.ownership === "mixed" ? lockOutput.regions[0] : output.regions[0])?.sha256 ?? output.regions[0]?.sha256 ?? "";
143
+ const parsed = parseMixedFile(Buffer.from(current.bytes));
144
+ if (!parsed.ok) continue;
145
+ if (parsed.generatedInnerHash !== expectedHash) input.issues.push(issue("LINT-REGION-004", "error", output.path, expectedHash, parsed.generatedInnerHash, `${output.path} generated region hash differs from ai-profile.lock.`, "Run the compiler after reviewing the generated region diff."));
124
146
  continue;
125
147
  }
148
+ const expectedHash = lockOutput && lockOutput.ownership === "generated-owned" ? lockOutput.sha256 : output.sha256;
126
149
  const currentHash = sha256Hex(current.bytes);
127
150
  if (currentHash !== expectedHash) input.issues.push(issue("LINT-LOCK-007", "error", output.path, expectedHash, currentHash, `${output.path} bytes differ from ai-profile.lock.`, "Regenerate the file or lockfile after reviewing the generated diff."));
128
151
  }
129
152
  }
153
+ function collectMixedOutputDescriptorsFromLockfile(lockfile) {
154
+ const result = [];
155
+ for (const output of lockfile.outputs) {
156
+ if (output.ownership !== "mixed") continue;
157
+ const region = output.regions[0];
158
+ if (!region) continue;
159
+ result.push({
160
+ path: output.path,
161
+ target: region.target,
162
+ templateId: region.templateId,
163
+ regionHash: region.sha256
164
+ });
165
+ }
166
+ return result;
167
+ }
130
168
  function compareTemplates(actual, expected, issues) {
131
169
  const actualMap = new Map(actual.map((template) => [templateKey(template), template]));
132
170
  const expectedMap = new Map(expected.map((template) => [templateKey(template), template]));
@@ -149,10 +187,20 @@ function compareOutputs(actual, expected, issues) {
149
187
  issues.push(issue("LINT-LOCK-005", "error", expectedOutput.path, "output recorded in lockfile", "missing", `${expectedOutput.path} is missing from ai-profile.lock outputs.`, "Regenerate ai-profile.lock after reviewing generated output changes."));
150
188
  continue;
151
189
  }
152
- if (actualOutput.templateId !== expectedOutput.templateId || actualOutput.sha256 !== expectedOutput.sha256) issues.push(issue("LINT-LOCK-005", "error", expectedOutput.path, `${expectedOutput.templateId}/${expectedOutput.sha256}`, `${actualOutput.templateId}/${actualOutput.sha256}`, `${expectedOutput.path} lockfile output metadata differs from current compiler output.`, "Regenerate generated outputs and ai-profile.lock after reviewing changes."));
190
+ const expectedSig = describeOutputSignature(expectedOutput);
191
+ const actualSig = describeOutputSignature(actualOutput);
192
+ if (expectedSig !== actualSig) issues.push(issue("LINT-LOCK-005", "error", expectedOutput.path, expectedSig, actualSig, `${expectedOutput.path} lockfile output metadata differs from current compiler output.`, "Regenerate generated outputs and ai-profile.lock after reviewing changes."));
153
193
  }
154
194
  for (const [key, actualOutput] of actualMap) if (!expectedMap.has(key)) issues.push(issue("LINT-LOCK-005", "error", actualOutput.path, "current compiler output", "extra lockfile output", `${actualOutput.path} is not emitted by the current compiler request.`, "Regenerate ai-profile.lock after reviewing target changes."));
155
195
  }
196
+ function describeOutputSignature(output) {
197
+ if (output.ownership === "mixed") {
198
+ const region = output.regions[0];
199
+ return `mixed/${output.templateId}/${region?.sha256 ?? ""}`;
200
+ }
201
+ if (output.ownership === "manual-owned") return "manual-owned/manual/-";
202
+ return `generated/${output.templateId}/${output.sha256}`;
203
+ }
156
204
  async function checkPermissionPosture(rootDir, profile, issues) {
157
205
  const safety = normalizeSafety(profile);
158
206
  const effective = deriveEffectivePermissions(profile);
@@ -379,6 +427,130 @@ function reportRuntimeUnverifiable(profile, issues) {
379
427
  if (profile.clients.codex.enabled) issues.push(permissionIssue("LINT-PERM-006", "info", "codex-runtime", "verified runtime approval and sandbox flags", "not verifiable", "Codex runtime flags or user configuration may override project config.", "Verify the active Codex approval policy and sandbox mode before trusting runtime posture."));
380
428
  if (profile.clients.claude.enabled) issues.push(permissionIssue("LINT-PERM-006", "info", "claude-runtime", "verified CLI permission mode and merged user settings", "not verifiable", "Claude CLI flags and user settings may override project settings.", "Verify the active Claude permission mode and settings scopes before trusting runtime posture."));
381
429
  }
430
+ var SUBAGENT_ROOTS = [
431
+ ".claude/agents",
432
+ ".codex/agents",
433
+ ".tabnine/agent/agents"
434
+ ];
435
+ var GENERATED_HEADER_MARKER = "Generated by Agent Profile Compiler";
436
+ var TABNINE_UNSAFE_TOOL_NAMES = new Set([
437
+ "run_shell_command",
438
+ "write_file",
439
+ "browser_agent",
440
+ "browser",
441
+ "open_url",
442
+ "fetch_url",
443
+ "http_request",
444
+ "network"
445
+ ]);
446
+ var CLAUDE_WRITE_TOOLS = new Set([
447
+ "Edit",
448
+ "Write",
449
+ "NotebookEdit"
450
+ ]);
451
+ async function checkSubagentArtifacts(input) {
452
+ const { rootDir, profile, effective, generatedFiles, lockfile, issues } = input;
453
+ const enabled = getEnabledSubagents(profile);
454
+ const generatedSubagentPaths = new Set(generatedFiles.filter((file) => file.target === "claude-subagents" || file.target === "codex-subagents" || file.target === "tabnine-subagents").map((file) => file.path));
455
+ const lockfileSubagentPaths = new Set((lockfile?.outputs ?? []).filter((output) => output.target === "claude-subagents" || output.target === "codex-subagents" || output.target === "tabnine-subagents").map((output) => output.path));
456
+ for (const agent of enabled) if (isSubagentBuiltinNameCollision(agent.name)) issues.push(issue("LINT-SUBAGENT-005", "warning", `/capabilities/delegation/subagents/agents/${agent.name}`, "name distinct from built-ins", "collides with built-in after normalization", `Subagent ${agent.name} collides with a documented built-in after hyphen/underscore normalization.`, "Rename the subagent to avoid shadowing client built-ins."));
457
+ for (const root of SUBAGENT_ROOTS) {
458
+ const files = await collectSubagentFilesUnder(rootDir, root);
459
+ for (const relativePath of files) {
460
+ const file = await readKnownFile(rootDir, relativePath);
461
+ if (!file.ok) continue;
462
+ const text = decodeUtf8(file.bytes);
463
+ const isGenerated = text.includes(GENERATED_HEADER_MARKER);
464
+ if (containsSecretLikeLiteral(text)) issues.push(issue("LINT-SUBAGENT-002", "error", relativePath, "no literal secret-like values", "secret-like value present", `${relativePath} contains a literal secret-like value.`, "Remove literal secrets from the subagent file; use environment variable references only."));
465
+ if (root === ".codex/agents") checkCodexSubagentFile(relativePath, text, effective, issues);
466
+ else if (root === ".claude/agents") checkClaudeSubagentFile(relativePath, text, effective, issues);
467
+ else if (root === ".tabnine/agent/agents") checkTabnineSubagentFile(relativePath, text, effective, issues);
468
+ if (isGenerated && !generatedSubagentPaths.has(relativePath) && !lockfileSubagentPaths.has(relativePath)) issues.push(issue("LINT-SUBAGENT-006", "warning", relativePath, "claimed by current compile output or lockfile", "orphan generated subagent", `${relativePath} carries the generated-file header but is not produced by the current profile and not recorded in ai-profile.lock.`, "Remove the orphan generated subagent file or restore the matching profile intent."));
469
+ }
470
+ }
471
+ if (profile.clients.tabnine.enabled && enabled.some((agent) => agent.toolScope === "read-only")) issues.push(issue("LINT-SUBAGENT-008", "info", ".tabnine/agent/settings.json", "experimental.enableAgents verifiable", "not verifiable", "Tabnine experimental.enableAgents cannot be verified because Agent Profile Compiler does not write .tabnine/agent/settings.json.", "Manually enable experimental.enableAgents in .tabnine/agent/settings.json to use the generated Tabnine subagent files."));
472
+ }
473
+ function checkCodexSubagentFile(relativePath, text, effective, issues) {
474
+ const sandboxMode = /^\s*sandbox_mode\s*=\s*"([^"]+)"/mu.exec(text)?.[1];
475
+ if (sandboxMode === "danger-full-access") issues.push(issue("LINT-SUBAGENT-003", "error", relativePath, "sandboxed Codex subagent", "danger-full-access", `${relativePath} declares danger-full-access, which is never allowed.`, "Remove danger-full-access from the Codex subagent and use read-only or workspace-write instead."));
476
+ if (sandboxMode === "workspace-write" && effective.filesystem.write === "deny") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "narrower than effectivePermissions.filesystem.write=deny", "workspace-write", `${relativePath} grants workspace-write while effectivePermissions deny filesystem writes.`, "Set sandbox_mode = \"read-only\" or tighten the subagent intent."));
477
+ if (/^\s*approval_policy\s*=\s*"never"/mu.test(text)) issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "interactive approval policy", "never", `${relativePath} declares approval_policy = "never", which is never allowed for generated Codex subagents.`, "Remove approval_policy = \"never\" from the Codex subagent."));
478
+ }
479
+ function checkClaudeSubagentFile(relativePath, text, effective, issues) {
480
+ const frontmatter = parseMarkdownFrontmatter(text);
481
+ if (frontmatter.permissionMode === "bypassPermissions") issues.push(issue("LINT-SUBAGENT-004", "error", relativePath, "non-bypass Claude permission mode", "bypassPermissions", `${relativePath} declares permissionMode: bypassPermissions, which is never allowed.`, "Remove bypassPermissions from the Claude subagent and use plan or default mode."));
482
+ const tools = parseClaudeToolList(frontmatter.tools);
483
+ if (tools.includes("Bash") && effective.shell.run === "deny") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "tools narrower than effectivePermissions.shell.run=deny", "Bash tool granted", `${relativePath} grants the Bash tool while effectivePermissions.shell.run is deny.`, "Remove Bash from the Claude subagent tools list or relax shell.run from deny."));
484
+ if (tools.some((tool) => CLAUDE_WRITE_TOOLS.has(tool)) && effective.filesystem.write === "deny") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "tools narrower than effectivePermissions.filesystem.write=deny", "Edit/Write tool granted", `${relativePath} grants write tools while effectivePermissions.filesystem.write is deny.`, "Remove Edit/Write from the Claude subagent tools list or relax filesystem.write from deny."));
485
+ if (tools.includes("WebFetch") && effective.network.external === "deny") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "tools narrower than effectivePermissions.network.external=deny", "WebFetch tool granted", `${relativePath} grants the WebFetch tool while effectivePermissions.network.external is deny.`, "Remove WebFetch from the Claude subagent tools list or relax network.external from deny."));
486
+ }
487
+ function checkTabnineSubagentFile(relativePath, text, effective, issues) {
488
+ const tools = parseTabnineToolList(text, parseMarkdownFrontmatter(text).tools);
489
+ const unsafe = tools.filter((tool) => TABNINE_UNSAFE_TOOL_NAMES.has(tool));
490
+ if (unsafe.length > 0) issues.push(issue("LINT-SUBAGENT-007", "warning", relativePath, "read-only Tabnine subagent tools", `declares ${unsafe.join(", ")}`, `${relativePath} declares write/shell/browser/network-capable tool ${unsafe[0]} while Tabnine subagents are experimental/no-confirmation.`, "Restrict generated Tabnine subagents to read-only tools until safer Tabnine semantics are documented."));
491
+ if (tools.includes("write_file") && effective.filesystem.write !== "allow") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "tools narrower than effectivePermissions.filesystem.write", "write_file tool granted", `${relativePath} grants write_file while effectivePermissions.filesystem.write is ${effective.filesystem.write}.`, "Remove write_file from the Tabnine subagent tools list or tighten effectivePermissions."));
492
+ if (tools.includes("run_shell_command") && effective.shell.run !== "allow") issues.push(issue("LINT-SUBAGENT-001", "error", relativePath, "tools narrower than effectivePermissions.shell.run", "run_shell_command tool granted", `${relativePath} grants run_shell_command while effectivePermissions.shell.run is ${effective.shell.run}.`, "Remove run_shell_command from the Tabnine subagent tools list or tighten effectivePermissions."));
493
+ }
494
+ function parseMarkdownFrontmatter(text) {
495
+ if (!text.startsWith("---\n")) return {};
496
+ const end = text.indexOf("\n---", 4);
497
+ if (end === -1) return {};
498
+ const block = text.slice(4, end);
499
+ const result = {};
500
+ for (const line of block.split("\n")) {
501
+ const match = /^([A-Za-z][A-Za-z0-9_]*)\s*:\s*(.*)$/u.exec(line);
502
+ if (!match) continue;
503
+ const [, key, rawValue] = match;
504
+ if (key === void 0) continue;
505
+ result[key] = (rawValue ?? "").trim();
506
+ }
507
+ return result;
508
+ }
509
+ function parseClaudeToolList(value) {
510
+ if (!value) return [];
511
+ return value.split(",").map((item) => item.trim()).filter((item) => item.length > 0);
512
+ }
513
+ function parseTabnineToolList(text, inlineValue) {
514
+ if (inlineValue && inlineValue.length > 0 && inlineValue !== "") {
515
+ if (inlineValue.startsWith("[") && inlineValue.endsWith("]")) return inlineValue.slice(1, -1).split(",").map((item) => item.trim().replace(/^["']|["']$/gu, "")).filter((item) => item.length > 0);
516
+ }
517
+ if (!text.startsWith("---\n")) return [];
518
+ const end = text.indexOf("\n---", 4);
519
+ if (end === -1) return [];
520
+ const block = text.slice(4, end).split("\n");
521
+ const tools = [];
522
+ let inToolsBlock = false;
523
+ for (const line of block) {
524
+ if (/^tools\s*:\s*$/u.test(line)) {
525
+ inToolsBlock = true;
526
+ continue;
527
+ }
528
+ if (inToolsBlock) {
529
+ const itemMatch = /^\s+-\s+(.+?)\s*$/u.exec(line);
530
+ if (itemMatch && itemMatch[1] !== void 0) {
531
+ tools.push(itemMatch[1].replace(/^["']|["']$/gu, ""));
532
+ continue;
533
+ }
534
+ if (/^\S/u.test(line)) inToolsBlock = false;
535
+ }
536
+ }
537
+ return tools;
538
+ }
539
+ async function collectSubagentFilesUnder(rootDir, relativeRoot) {
540
+ let entries;
541
+ try {
542
+ entries = await readdir(path.join(rootDir, relativeRoot), { withFileTypes: true });
543
+ } catch (error) {
544
+ if (isNodeError(error) && error.code === "ENOENT") return [];
545
+ throw error;
546
+ }
547
+ const results = [];
548
+ for (const entry of entries) {
549
+ if (!entry.isFile()) continue;
550
+ results.push(`${relativeRoot}/${entry.name}`);
551
+ }
552
+ return results.sort();
553
+ }
382
554
  async function collectSkillFiles(rootDir) {
383
555
  const files = [];
384
556
  for (const skillRoot of SKILL_ROOTS) await collectSkillFilesUnder(rootDir, skillRoot, files);
@@ -401,10 +573,17 @@ async function collectSkillFilesUnder(rootDir, relativeRoot, files) {
401
573
  async function readKnownFile(rootDir, relativePath) {
402
574
  const safePath = safeOutputPath(relativePath);
403
575
  if (safePath === ".env" || safePath.startsWith(".env.")) return { ok: false };
576
+ const absolutePath = path.join(rootDir, safePath);
577
+ try {
578
+ if ((await lstat(absolutePath)).isSymbolicLink()) return { ok: false };
579
+ } catch (error) {
580
+ if (isNodeError(error) && error.code === "ENOENT") return { ok: false };
581
+ throw error;
582
+ }
404
583
  try {
405
584
  return {
406
585
  ok: true,
407
- bytes: await readFile(path.join(rootDir, safePath))
586
+ bytes: await readFile(absolutePath)
408
587
  };
409
588
  } catch (error) {
410
589
  if (isNodeError(error) && error.code === "ENOENT") return { ok: false };
@@ -527,6 +706,164 @@ function decodeUtf8(bytes) {
527
706
  function isNodeError(error) {
528
707
  return error instanceof Error && "code" in error;
529
708
  }
709
+ var REGION_FILE_PATHS = ["AGENTS.md", "CLAUDE.md"];
710
+ var LOCAL_RUNTIME_IGNORE_PATHS = [
711
+ ".cce/",
712
+ ".mcp.json",
713
+ ".claude/settings.local.json",
714
+ ".claude/worktrees/",
715
+ ".codex/config.toml",
716
+ ".codex/hooks.json"
717
+ ];
718
+ async function checkRegionFiles(rootDir, generatedFiles, lockfile, issues) {
719
+ const ownershipByPath = new Map((lockfile?.outputs ?? []).map((output) => [output.path, output.ownership]));
720
+ for (const relativePath of REGION_FILE_PATHS) {
721
+ const current = await readKnownFile(rootDir, relativePath);
722
+ if (!current.ok) continue;
723
+ const bytes = Buffer.from(current.bytes);
724
+ const ownership = ownershipByPath.get(relativePath);
725
+ const allMarkers = hasAllRegionMarkers(bytes);
726
+ const anyMarkers = hasAnyRegionMarker(bytes);
727
+ const generatedFile = generatedFiles.find((file) => file.path === relativePath);
728
+ if (ownership === "mixed") {
729
+ const parsed = parseMixedFile(bytes);
730
+ if (!parsed.ok) {
731
+ const code = parsed.issues.some((item) => item.code === "duplicate-markers") ? "LINT-REGION-002" : "LINT-REGION-001";
732
+ issues.push(issue(code, "error", relativePath, "valid generated/manual region markers", "invalid region markers", `${relativePath} region markers are not valid for a mixed-ownership file.`, "Move or remove the file and re-run init --import --strategy regions --write."));
733
+ continue;
734
+ }
735
+ if (!parsed.generatedInner.toString("utf8").includes("If generated and manual instructions conflict, follow the manual project instructions unless they would weaken safety, privacy, or permission limits. Safety, privacy, and explicit deny rules always win.")) issues.push(issue("LINT-REGION-003", "warning", relativePath, "required instruction precedence text in generated region", "missing precedence text", `${relativePath} generated region is missing the required precedence sentence.`, "Re-run compile --write to refresh the generated region."));
736
+ continue;
737
+ }
738
+ if (anyMarkers && !allMarkers) {
739
+ issues.push(issue("LINT-REGION-001", "error", relativePath, "valid generated/manual region markers", "partial region markers", `${relativePath} contains partial region markers.`, "Move or remove the file and re-run init --import --strategy regions --write; the compiler will not auto-repair markers."));
740
+ continue;
741
+ }
742
+ if (allMarkers) {
743
+ const parsed = parseMixedFile(bytes);
744
+ if (!parsed.ok) {
745
+ const code = parsed.issues.some((item) => item.code === "duplicate-markers") ? "LINT-REGION-002" : "LINT-REGION-001";
746
+ issues.push(issue(code, "error", relativePath, "valid generated/manual region markers", "invalid region markers", `${relativePath} region markers are not valid.`, "Move or remove the file and re-run init --import --strategy regions --write."));
747
+ }
748
+ continue;
749
+ }
750
+ if (generatedFile && ownership !== "generated-owned" && !allMarkers && hasLegacyGeneratedMarker(bytes)) {
751
+ issues.push(issue("LINT-OWN-002", "warning", relativePath, "lockfile-owned generated file", "generated-looking file without lockfile ownership", `${relativePath} contains the legacy generated marker but is not lockfile-owned.`, "Run init --import --strategy regions --write to adopt the file into mixed ownership, or remove and re-run compile --write."));
752
+ continue;
753
+ }
754
+ if (generatedFile && ownership !== "generated-owned" && !allMarkers) issues.push(issue("LINT-OWN-001", "error", relativePath, "lockfile-owned or mixed ownership", "unknown ownership conflicts with generated output", `${relativePath} exists but ownership cannot be proven; the compiler will refuse to write it.`, "Run init --import --strategy regions --write to adopt the file into mixed ownership."));
755
+ }
756
+ }
757
+ async function checkLocalRuntimeGitignore(rootDir, issues) {
758
+ const gitignore = await readKnownFile(rootDir, ".gitignore");
759
+ const lines = gitignore.ok ? decodeUtf8(gitignore.bytes).split(/\r?\n/u).map((line) => line.trim()).filter((line) => line !== "" && !line.startsWith("#")) : [];
760
+ for (const recommended of LOCAL_RUNTIME_IGNORE_PATHS) {
761
+ if (!await pathExists(rootDir, recommended.replace(/\/$/u, ""))) continue;
762
+ if (!isIgnoreLinePresent(lines, recommended)) issues.push(issue("LINT-GITIGNORE-002", "warning", ".gitignore", `ignore line for ${recommended}`, "missing", `${recommended} exists locally but is not listed in .gitignore.`, "Run agent-profile init --update-gitignore --write to add recommended ignore lines."));
763
+ }
764
+ }
765
+ async function pathExists(rootDir, relativePath) {
766
+ try {
767
+ safeOutputPath(relativePath);
768
+ } catch {
769
+ return false;
770
+ }
771
+ try {
772
+ const { lstat } = await import('node:fs/promises');
773
+ await lstat(path.join(rootDir, relativePath));
774
+ return true;
775
+ } catch (error) {
776
+ if (isNodeError(error) && error.code === "ENOENT") return false;
777
+ throw error;
778
+ }
779
+ }
780
+ function isIgnoreLinePresent(lines, target) {
781
+ const trimmed = target.replace(/\/$/u, "");
782
+ return lines.some((line) => {
783
+ return line.replace(/^\//u, "").replace(/\/$/u, "") === trimmed;
784
+ });
785
+ }
786
+ async function checkForeignSkillAndSubagentCollisions(rootDir, generatedFiles, lockfile, issues) {
787
+ const ownedPaths = new Set((lockfile?.outputs ?? []).map((output) => output.path));
788
+ const generatedSkillByName = /* @__PURE__ */ new Map();
789
+ const generatedSubagentByName = /* @__PURE__ */ new Map();
790
+ const pushByName = (map, name, entry) => {
791
+ const list = map.get(name) ?? [];
792
+ list.push(entry);
793
+ map.set(name, list);
794
+ };
795
+ for (const file of generatedFiles) {
796
+ const name = parseSkillOrSubagentName(decodeUtf8(file.bytes));
797
+ if (!name) continue;
798
+ if (file.target === "codex-workflow-skills" || file.target === "claude-workflow-skills") pushByName(generatedSkillByName, name, {
799
+ path: file.path,
800
+ runtime: pathRuntime(file.path)
801
+ });
802
+ if (file.target === "claude-subagents" || file.target === "codex-subagents" || file.target === "tabnine-subagents") pushByName(generatedSubagentByName, name, {
803
+ path: file.path,
804
+ runtime: pathRuntime(file.path)
805
+ });
806
+ }
807
+ const skillFiles = await collectSkillFiles(rootDir);
808
+ for (const skillPath of skillFiles) {
809
+ if (ownedPaths.has(skillPath)) continue;
810
+ const generatedPath = generatedFiles.find((file) => file.path === skillPath);
811
+ const file = await readKnownFile(rootDir, skillPath);
812
+ if (!file.ok) continue;
813
+ const name = parseSkillOrSubagentName(decodeUtf8(file.bytes));
814
+ if (generatedPath) {
815
+ issues.push(issue("LINT-OWN-001", "error", skillPath, "lockfile-owned generated skill", "foreign skill at generated path", `${skillPath} exists at a generated output path but is not lockfile-owned.`, "Move or rename the existing skill, or run compile --write --force only after reviewing the diff."));
816
+ continue;
817
+ }
818
+ if (name && generatedSkillByName.has(name)) {
819
+ const others = generatedSkillByName.get(name).filter((entry) => entry.path !== skillPath);
820
+ if (others.length > 0) {
821
+ const foreignRuntime = pathRuntime(skillPath);
822
+ const matching = others.find((entry) => entry.runtime !== void 0 && entry.runtime === foreignRuntime);
823
+ const referencePath = (matching ?? others[0]).path;
824
+ const severity = matching ? "error" : "warning";
825
+ issues.push(issue("LINT-SKILL-009", severity, skillPath, "skill name distinct from generated skills", `name collides with generated ${referencePath}`, `${skillPath} declares skill name ${name}, which collides with generated ${referencePath}${matching ? ` for the ${matching.runtime} runtime` : ""}.`, matching ? `Rename the foreign skill; both files target the ${matching.runtime} runtime and would load the same name.` : "Rename the foreign skill or move it to a different name to avoid runtime collision."));
826
+ }
827
+ }
828
+ }
829
+ const subagentFiles = [];
830
+ for (const root of SUBAGENT_ROOTS) {
831
+ const files = await collectSubagentFilesUnder(rootDir, root);
832
+ for (const file of files) subagentFiles.push(file);
833
+ }
834
+ for (const subagentPath of subagentFiles) {
835
+ if (ownedPaths.has(subagentPath)) continue;
836
+ const generatedPath = generatedFiles.find((file) => file.path === subagentPath);
837
+ const file = await readKnownFile(rootDir, subagentPath);
838
+ if (!file.ok) continue;
839
+ const name = parseSkillOrSubagentName(decodeUtf8(file.bytes));
840
+ if (generatedPath) {
841
+ issues.push(issue("LINT-OWN-001", "error", subagentPath, "lockfile-owned generated subagent", "foreign subagent at generated path", `${subagentPath} exists at a generated output path but is not lockfile-owned.`, "Move or rename the existing subagent, or run compile --write --force only after reviewing the diff."));
842
+ continue;
843
+ }
844
+ if (name && generatedSubagentByName.has(name)) {
845
+ const others = generatedSubagentByName.get(name).filter((entry) => entry.path !== subagentPath);
846
+ if (others.length > 0) {
847
+ const foreignRuntime = pathRuntime(subagentPath);
848
+ const matching = others.find((entry) => entry.runtime !== void 0 && entry.runtime === foreignRuntime);
849
+ const referencePath = (matching ?? others[0]).path;
850
+ const severity = matching ? "error" : "warning";
851
+ issues.push(issue("LINT-SUBAGENT-009", severity, subagentPath, "subagent name distinct from generated subagents", `name collides with generated ${referencePath}`, `${subagentPath} declares subagent name ${name}, which collides with generated ${referencePath}${matching ? ` for the ${matching.runtime} runtime` : ""}.`, matching ? `Rename the foreign subagent; both files target the ${matching.runtime} runtime and would load the same name.` : "Rename the foreign subagent to avoid runtime collision."));
852
+ }
853
+ }
854
+ }
855
+ }
856
+ function pathRuntime(filePath) {
857
+ if (filePath.startsWith(".agents/skills/") || filePath.startsWith(".codex/agents/")) return "codex";
858
+ if (filePath.startsWith(".claude/skills/") || filePath.startsWith(".claude/agents/")) return "claude";
859
+ if (filePath.startsWith(".tabnine/agent/agents/")) return "tabnine";
860
+ }
861
+ function parseSkillOrSubagentName(text) {
862
+ const fm = parseMarkdownFrontmatter(text);
863
+ if (typeof fm.name === "string" && fm.name.length > 0) return fm.name;
864
+ const tomlMatch = /^\s*name\s*=\s*"([^"]+)"/mu.exec(text);
865
+ if (tomlMatch && tomlMatch[1]) return tomlMatch[1];
866
+ }
530
867
 
531
868
  export { runDoctor as r };
532
- //# sourceMappingURL=src3-jm480tTA.js.map
869
+ //# sourceMappingURL=src3-BXch_OaJ.js.map