@agent-profile/web 0.1.2 → 0.1.5

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 (248) hide show
  1. package/README.md +70 -29
  2. package/build/client/_app/immutable/assets/{0.BG6jUcBX.css → 0.8hVtEx5X.css} +1 -1
  3. package/build/client/_app/immutable/assets/0.8hVtEx5X.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.8hVtEx5X.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/9.BsbC-D7w.css +1 -0
  6. package/build/client/_app/immutable/assets/9.BsbC-D7w.css.br +0 -0
  7. package/build/client/_app/immutable/assets/9.BsbC-D7w.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/6SrQtk22.js +3 -0
  9. package/build/client/_app/immutable/chunks/6SrQtk22.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/6SrQtk22.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{D5BQ10GJ.js → B1X0Iqjr.js} +2 -2
  12. package/build/client/_app/immutable/chunks/B1X0Iqjr.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/B1X0Iqjr.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js +1 -0
  15. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/BN4Ca4cJ.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BYeYmN2n.js +1 -0
  18. package/build/client/_app/immutable/chunks/BYeYmN2n.js.br +2 -0
  19. package/build/client/_app/immutable/chunks/BYeYmN2n.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/D0_SwbnT.js +2 -0
  21. package/build/client/_app/immutable/chunks/D0_SwbnT.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/D0_SwbnT.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/DRoN73NW.js +1 -0
  24. package/build/client/_app/immutable/chunks/DRoN73NW.js.br +2 -0
  25. package/build/client/_app/immutable/chunks/DRoN73NW.js.gz +0 -0
  26. package/build/client/_app/immutable/entry/app.B45QQayJ.js +2 -0
  27. package/build/client/_app/immutable/entry/app.B45QQayJ.js.br +0 -0
  28. package/build/client/_app/immutable/entry/app.B45QQayJ.js.gz +0 -0
  29. package/build/client/_app/immutable/entry/start.BIlQ_snM.js +1 -0
  30. package/build/client/_app/immutable/entry/start.BIlQ_snM.js.br +0 -0
  31. package/build/client/_app/immutable/entry/start.BIlQ_snM.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/0.JRffyfUR.js +1 -0
  33. package/build/client/_app/immutable/nodes/0.JRffyfUR.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/0.JRffyfUR.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/1.56EgwKsF.js +1 -0
  36. package/build/client/_app/immutable/nodes/1.56EgwKsF.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/1.56EgwKsF.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{10.BOQgahuX.js → 10.Bhdlxk-S.js} +2 -2
  39. package/build/client/_app/immutable/nodes/10.Bhdlxk-S.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/10.Bhdlxk-S.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js +1 -0
  42. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/11.DAqRx2TI.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/2.CI-wpOC8.js +10 -0
  45. package/build/client/_app/immutable/nodes/2.CI-wpOC8.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/2.CI-wpOC8.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/3.Bphawycs.js +2 -0
  48. package/build/client/_app/immutable/nodes/3.Bphawycs.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/3.Bphawycs.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/4.BGFkNM65.js +4 -0
  51. package/build/client/_app/immutable/nodes/4.BGFkNM65.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/4.BGFkNM65.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/5.VTs5grF0.js +2 -0
  54. package/build/client/_app/immutable/nodes/5.VTs5grF0.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/5.VTs5grF0.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/6.CndSdLIk.js +5 -0
  57. package/build/client/_app/immutable/nodes/6.CndSdLIk.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/6.CndSdLIk.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/7.DpFk4StA.js +4 -0
  60. package/build/client/_app/immutable/nodes/7.DpFk4StA.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/7.DpFk4StA.js.gz +0 -0
  62. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js +1 -0
  63. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js.br +0 -0
  64. package/build/client/_app/immutable/nodes/8.Y7A99ODL.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js +3 -0
  66. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/9.DF3LeTGi.js.gz +0 -0
  68. package/build/client/_app/version.json +1 -1
  69. package/build/client/_app/version.json.br +0 -0
  70. package/build/client/_app/version.json.gz +0 -0
  71. package/build/client/marketing.js +105 -0
  72. package/build/client/marketing.js.br +0 -0
  73. package/build/client/marketing.js.gz +0 -0
  74. package/build/server/chunks/{0-u7mEipCH.js → 0-DWEpTDaF.js} +17 -11
  75. package/build/server/chunks/0-DWEpTDaF.js.map +1 -0
  76. package/build/server/chunks/{1-BBGjCHyQ.js → 1-B68UkVTE.js} +3 -3
  77. package/build/server/chunks/{1-BBGjCHyQ.js.map → 1-B68UkVTE.js.map} +1 -1
  78. package/build/server/chunks/10-D7op0myD.js +9 -0
  79. package/build/server/chunks/{10-B1aX7ZZ8.js.map → 10-D7op0myD.js.map} +1 -1
  80. package/build/server/chunks/{11-4z6b2WB8.js → 11-Ms74wtl9.js} +6 -6
  81. package/build/server/chunks/{11-4z6b2WB8.js.map → 11-Ms74wtl9.js.map} +1 -1
  82. package/build/server/chunks/2-bmpngDVe.js +21 -0
  83. package/build/server/chunks/2-bmpngDVe.js.map +1 -0
  84. package/build/server/chunks/3-BkezOAX7.js +9 -0
  85. package/build/server/chunks/{3-CLWhM7Et.js.map → 3-BkezOAX7.js.map} +1 -1
  86. package/build/server/chunks/{4-BehBrXcu.js → 4-CSfQwQwV.js} +6 -6
  87. package/build/server/chunks/{4-BehBrXcu.js.map → 4-CSfQwQwV.js.map} +1 -1
  88. package/build/server/chunks/5-D_pZV4fS.js +9 -0
  89. package/build/server/chunks/{5-C1YtO2Ru.js.map → 5-D_pZV4fS.js.map} +1 -1
  90. package/build/server/chunks/{6-DJ03bQJy.js → 6-DcbRMrH1.js} +3 -3
  91. package/build/server/chunks/{6-DJ03bQJy.js.map → 6-DcbRMrH1.js.map} +1 -1
  92. package/build/server/chunks/{7-CI__yhaj.js → 7-BsMFIBGU.js} +8 -8
  93. package/build/server/chunks/{7-CI__yhaj.js.map → 7-BsMFIBGU.js.map} +1 -1
  94. package/build/server/chunks/8-DWleYW_e.js +9 -0
  95. package/build/server/chunks/{8-BGx10Z6s.js.map → 8-DWleYW_e.js.map} +1 -1
  96. package/build/server/chunks/9-tHCipeiW.js +67 -0
  97. package/build/server/chunks/9-tHCipeiW.js.map +1 -0
  98. package/build/server/chunks/{Badge-BrV_lIru.js → Badge-BYK3z3lr.js} +2 -2
  99. package/build/server/chunks/{Badge-BrV_lIru.js.map → Badge-BYK3z3lr.js.map} +1 -1
  100. package/build/server/chunks/{SafetyBadge-BSDbVVMY.js → SafetyBadge-BXNCgLE-.js} +2 -2
  101. package/build/server/chunks/{SafetyBadge-BSDbVVMY.js.map → SafetyBadge-BXNCgLE-.js.map} +1 -1
  102. package/build/server/chunks/{_layout.svelte-Cg7oqdVB.js → _layout.svelte-Cv35k3JT.js} +8 -8
  103. package/build/server/chunks/_layout.svelte-Cv35k3JT.js.map +1 -0
  104. package/build/server/chunks/{_page.svelte-C8HqSRYY.js → _page.svelte-B-Kaw1RF.js} +2 -2
  105. package/build/server/chunks/{_page.svelte-C8HqSRYY.js.map → _page.svelte-B-Kaw1RF.js.map} +1 -1
  106. package/build/server/chunks/{_page.svelte-Bv-w7cKm.js → _page.svelte-BftcSD3f.js} +3 -3
  107. package/build/server/chunks/{_page.svelte-Bv-w7cKm.js.map → _page.svelte-BftcSD3f.js.map} +1 -1
  108. package/build/server/chunks/{_page.svelte-DRj4L7XZ.js → _page.svelte-CIEY8g8A.js} +4 -4
  109. package/build/server/chunks/{_page.svelte-DRj4L7XZ.js.map → _page.svelte-CIEY8g8A.js.map} +1 -1
  110. package/build/server/chunks/{_page.svelte-DuJcNgye.js → _page.svelte-CUnw0pLx.js} +3 -3
  111. package/build/server/chunks/{_page.svelte-DuJcNgye.js.map → _page.svelte-CUnw0pLx.js.map} +1 -1
  112. package/build/server/chunks/{_page.svelte-DXeUSVlF.js → _page.svelte-Cat8tEeF.js} +5 -5
  113. package/build/server/chunks/{_page.svelte-DXeUSVlF.js.map → _page.svelte-Cat8tEeF.js.map} +1 -1
  114. package/build/server/chunks/{_page.svelte-BS9xpx67.js → _page.svelte-CmuUQI4Y.js} +112 -54
  115. package/build/server/chunks/_page.svelte-CmuUQI4Y.js.map +1 -0
  116. package/build/server/chunks/{_page.svelte-DyYKrY-D.js → _page.svelte-DHNevyzi.js} +4 -4
  117. package/build/server/chunks/{_page.svelte-DyYKrY-D.js.map → _page.svelte-DHNevyzi.js.map} +1 -1
  118. package/build/server/chunks/_page.svelte-DLQqGym0.js +435 -0
  119. package/build/server/chunks/_page.svelte-DLQqGym0.js.map +1 -0
  120. package/build/server/chunks/{_page.svelte-B0_5f_5-.js → _page.svelte-DZX4Bixr.js} +6 -6
  121. package/build/server/chunks/{_page.svelte-B0_5f_5-.js.map → _page.svelte-DZX4Bixr.js.map} +1 -1
  122. package/build/server/chunks/{_page.svelte-r2AHAn4f.js → _page.svelte-DyI46sDh.js} +3 -3
  123. package/build/server/chunks/{_page.svelte-r2AHAn4f.js.map → _page.svelte-DyI46sDh.js.map} +1 -1
  124. package/build/server/chunks/_server.ts-5396UuLQ.js +8 -0
  125. package/build/server/chunks/_server.ts-5396UuLQ.js.map +1 -0
  126. package/build/server/chunks/_server.ts-BUQYdxPs.js +8 -0
  127. package/build/server/chunks/_server.ts-BUQYdxPs.js.map +1 -0
  128. package/build/server/chunks/_server.ts-CvdpZfED.js +8 -0
  129. package/build/server/chunks/_server.ts-CvdpZfED.js.map +1 -0
  130. package/build/server/chunks/_server.ts-DHt1bGpF.js +85 -0
  131. package/build/server/chunks/_server.ts-DHt1bGpF.js.map +1 -0
  132. package/build/server/chunks/_server.ts-Dq1jAomo.js +43 -0
  133. package/build/server/chunks/_server.ts-Dq1jAomo.js.map +1 -0
  134. package/build/server/chunks/_server.ts-sMKRiXFg.js +100 -0
  135. package/build/server/chunks/_server.ts-sMKRiXFg.js.map +1 -0
  136. package/build/server/chunks/{client-DRY1rofW.js → client-92HF3fc9.js} +3 -3
  137. package/build/server/chunks/{client-DRY1rofW.js.map → client-92HF3fc9.js.map} +1 -1
  138. package/build/server/chunks/{dev-CrqJ3ZR3.js → dev-Duv_-rxF.js} +2 -2
  139. package/build/server/chunks/{dev-CrqJ3ZR3.js.map → dev-Duv_-rxF.js.map} +1 -1
  140. package/build/server/chunks/{doctorSummary-CGjSiyKU.js → doctorSummary-Bm0dY6PW.js} +3 -3
  141. package/build/server/chunks/{doctorSummary-CGjSiyKU.js.map → doctorSummary-Bm0dY6PW.js.map} +1 -1
  142. package/build/server/chunks/{error.svelte-CvT76GCP.js → error.svelte-BEI8QxGW.js} +5 -5
  143. package/build/server/chunks/{error.svelte-CvT76GCP.js.map → error.svelte-BEI8QxGW.js.map} +1 -1
  144. package/build/server/chunks/hooks.server-BKavEpqC.js +81 -0
  145. package/build/server/chunks/hooks.server-BKavEpqC.js.map +1 -0
  146. package/build/server/chunks/index-CLnuRv4X.js +134 -0
  147. package/build/server/chunks/index-CLnuRv4X.js.map +1 -0
  148. package/build/server/chunks/index-DBqjc0Yf.js +77 -0
  149. package/build/server/chunks/index-DBqjc0Yf.js.map +1 -0
  150. package/build/server/chunks/{internal-DDD35M_S.js → internal-DBeni9My.js} +6 -81
  151. package/build/server/chunks/internal-DBeni9My.js.map +1 -0
  152. package/build/server/chunks/marketingSeo-Do5o0grg.js +132 -0
  153. package/build/server/chunks/marketingSeo-Do5o0grg.js.map +1 -0
  154. package/build/server/chunks/profileApiHelpers-BFzohffv.js +180 -0
  155. package/build/server/chunks/profileApiHelpers-BFzohffv.js.map +1 -0
  156. package/build/server/chunks/{projectContext-C4-xYqFg.js → projectContext-Cxsfz84C.js} +409 -44
  157. package/build/server/chunks/projectContext-Cxsfz84C.js.map +1 -0
  158. package/build/server/chunks/src2-DNqJAXv6.js +12 -0
  159. package/build/server/chunks/src2-DNqJAXv6.js.map +1 -0
  160. package/build/server/chunks/{dist--t-UlYlZ.js → src3-jm480tTA.js} +3 -3
  161. package/build/server/chunks/src3-jm480tTA.js.map +1 -0
  162. package/build/server/chunks/tokenStore-DQfTa-N3.js +57 -0
  163. package/build/server/chunks/tokenStore-DQfTa-N3.js.map +1 -0
  164. package/build/server/index.js +4593 -4
  165. package/build/server/index.js.map +1 -1
  166. package/build/server/manifest.js +57 -15
  167. package/build/server/manifest.js.map +1 -1
  168. package/package.json +10 -7
  169. package/build/client/_app/immutable/assets/0.BG6jUcBX.css.br +0 -0
  170. package/build/client/_app/immutable/assets/0.BG6jUcBX.css.gz +0 -0
  171. package/build/client/_app/immutable/chunks/B-io8J2C.js +0 -1
  172. package/build/client/_app/immutable/chunks/B-io8J2C.js.br +0 -2
  173. package/build/client/_app/immutable/chunks/B-io8J2C.js.gz +0 -0
  174. package/build/client/_app/immutable/chunks/D5BQ10GJ.js.br +0 -0
  175. package/build/client/_app/immutable/chunks/D5BQ10GJ.js.gz +0 -0
  176. package/build/client/_app/immutable/chunks/DAWBIq3g.js +0 -2
  177. package/build/client/_app/immutable/chunks/DAWBIq3g.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/DAWBIq3g.js.gz +0 -0
  179. package/build/client/_app/immutable/chunks/DCJP-V9E.js +0 -3
  180. package/build/client/_app/immutable/chunks/DCJP-V9E.js.br +0 -0
  181. package/build/client/_app/immutable/chunks/DCJP-V9E.js.gz +0 -0
  182. package/build/client/_app/immutable/chunks/SOrpfga1.js +0 -1
  183. package/build/client/_app/immutable/chunks/SOrpfga1.js.br +0 -0
  184. package/build/client/_app/immutable/chunks/SOrpfga1.js.gz +0 -0
  185. package/build/client/_app/immutable/chunks/rbd2FHQ6.js +0 -1
  186. package/build/client/_app/immutable/chunks/rbd2FHQ6.js.br +0 -2
  187. package/build/client/_app/immutable/chunks/rbd2FHQ6.js.gz +0 -0
  188. package/build/client/_app/immutable/entry/app.wvdb3njx.js +0 -2
  189. package/build/client/_app/immutable/entry/app.wvdb3njx.js.br +0 -0
  190. package/build/client/_app/immutable/entry/app.wvdb3njx.js.gz +0 -0
  191. package/build/client/_app/immutable/entry/start.CYyClicm.js +0 -1
  192. package/build/client/_app/immutable/entry/start.CYyClicm.js.br +0 -1
  193. package/build/client/_app/immutable/entry/start.CYyClicm.js.gz +0 -0
  194. package/build/client/_app/immutable/nodes/0.DI161f18.js +0 -1
  195. package/build/client/_app/immutable/nodes/0.DI161f18.js.br +0 -0
  196. package/build/client/_app/immutable/nodes/0.DI161f18.js.gz +0 -0
  197. package/build/client/_app/immutable/nodes/1.CZb1wh8q.js +0 -1
  198. package/build/client/_app/immutable/nodes/1.CZb1wh8q.js.br +0 -3
  199. package/build/client/_app/immutable/nodes/1.CZb1wh8q.js.gz +0 -0
  200. package/build/client/_app/immutable/nodes/10.BOQgahuX.js.br +0 -0
  201. package/build/client/_app/immutable/nodes/10.BOQgahuX.js.gz +0 -0
  202. package/build/client/_app/immutable/nodes/11.BjwWla8T.js +0 -1
  203. package/build/client/_app/immutable/nodes/11.BjwWla8T.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/11.BjwWla8T.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/2.BmqkJNGt.js +0 -9
  206. package/build/client/_app/immutable/nodes/2.BmqkJNGt.js.br +0 -0
  207. package/build/client/_app/immutable/nodes/2.BmqkJNGt.js.gz +0 -0
  208. package/build/client/_app/immutable/nodes/3.NnDkXnSG.js +0 -2
  209. package/build/client/_app/immutable/nodes/3.NnDkXnSG.js.br +0 -0
  210. package/build/client/_app/immutable/nodes/3.NnDkXnSG.js.gz +0 -0
  211. package/build/client/_app/immutable/nodes/4.8sZ5zCiS.js +0 -4
  212. package/build/client/_app/immutable/nodes/4.8sZ5zCiS.js.br +0 -0
  213. package/build/client/_app/immutable/nodes/4.8sZ5zCiS.js.gz +0 -0
  214. package/build/client/_app/immutable/nodes/5.CSOalQ9R.js +0 -2
  215. package/build/client/_app/immutable/nodes/5.CSOalQ9R.js.br +0 -0
  216. package/build/client/_app/immutable/nodes/5.CSOalQ9R.js.gz +0 -0
  217. package/build/client/_app/immutable/nodes/6.BMBuGW7y.js +0 -5
  218. package/build/client/_app/immutable/nodes/6.BMBuGW7y.js.br +0 -0
  219. package/build/client/_app/immutable/nodes/6.BMBuGW7y.js.gz +0 -0
  220. package/build/client/_app/immutable/nodes/7.CG2RK2bH.js +0 -4
  221. package/build/client/_app/immutable/nodes/7.CG2RK2bH.js.br +0 -0
  222. package/build/client/_app/immutable/nodes/7.CG2RK2bH.js.gz +0 -0
  223. package/build/client/_app/immutable/nodes/8.Dzq0LDIw.js +0 -1
  224. package/build/client/_app/immutable/nodes/8.Dzq0LDIw.js.br +0 -0
  225. package/build/client/_app/immutable/nodes/8.Dzq0LDIw.js.gz +0 -0
  226. package/build/client/_app/immutable/nodes/9.CnkwRoxn.js +0 -5
  227. package/build/client/_app/immutable/nodes/9.CnkwRoxn.js.br +0 -0
  228. package/build/client/_app/immutable/nodes/9.CnkwRoxn.js.gz +0 -0
  229. package/build/server/chunks/0-u7mEipCH.js.map +0 -1
  230. package/build/server/chunks/10-B1aX7ZZ8.js +0 -9
  231. package/build/server/chunks/2-CZ6isW8Z.js +0 -9
  232. package/build/server/chunks/2-CZ6isW8Z.js.map +0 -1
  233. package/build/server/chunks/3-CLWhM7Et.js +0 -9
  234. package/build/server/chunks/5-C1YtO2Ru.js +0 -9
  235. package/build/server/chunks/8-BGx10Z6s.js +0 -9
  236. package/build/server/chunks/9-LeS-ldcl.js +0 -57
  237. package/build/server/chunks/9-LeS-ldcl.js.map +0 -1
  238. package/build/server/chunks/_layout.svelte-Cg7oqdVB.js.map +0 -1
  239. package/build/server/chunks/_page.svelte-BS9xpx67.js.map +0 -1
  240. package/build/server/chunks/_page.svelte-DbsvERRq.js +0 -424
  241. package/build/server/chunks/_page.svelte-DbsvERRq.js.map +0 -1
  242. package/build/server/chunks/dist--t-UlYlZ.js.map +0 -1
  243. package/build/server/chunks/hooks.server-BGib69tn.js +0 -38
  244. package/build/server/chunks/hooks.server-BGib69tn.js.map +0 -1
  245. package/build/server/chunks/index-XyMIhwom.js +0 -4727
  246. package/build/server/chunks/index-XyMIhwom.js.map +0 -1
  247. package/build/server/chunks/internal-DDD35M_S.js.map +0 -1
  248. package/build/server/chunks/projectContext-C4-xYqFg.js.map +0 -1
@@ -0,0 +1,180 @@
1
+ import { f as computeFileEtag, p as parseProfileYaml, e as deriveEffectivePermissions, n as normalizeSafety, g as validateProfileValue, h as renderProfileYaml, a as containsSecretLikeLiteral } from './projectContext-Cxsfz84C.js';
2
+ import { readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { diffLines, createTwoFilesPatch } from 'diff';
5
+
6
+ //#region src/lib/server/profileApiHelpers.ts
7
+ /**
8
+ * Shared helpers for the Phase 8 profile API routes:
9
+ * GET /api/profile
10
+ * POST /api/profile/plan
11
+ * POST /api/profile/apply
12
+ */
13
+ var PROFILE_FILENAME = "ai-profile.yaml";
14
+ var MAX_PAYLOAD_BYTES = 128 * 1024;
15
+ var UTF8_DECODER = new TextDecoder("utf-8", { fatal: true });
16
+ async function readDiskProfile(rootDir) {
17
+ const profilePath = path.join(rootDir, PROFILE_FILENAME);
18
+ let bytes;
19
+ try {
20
+ bytes = await readFile(profilePath);
21
+ } catch (err) {
22
+ if (isNodeError(err) && err.code === "ENOENT") return {
23
+ ok: false,
24
+ reason: "not_found",
25
+ issues: [],
26
+ unsupportedEditing: false
27
+ };
28
+ throw err;
29
+ }
30
+ const source = bytes.toString("utf8");
31
+ const etag = computeFileEtag(bytes);
32
+ const result = parseProfileYaml(source, { sourcePath: PROFILE_FILENAME });
33
+ if (!result.ok) {
34
+ const hasUnknown = result.issues.some((i) => i.code === "schema_validation_error" && i.expected === "no additional properties");
35
+ return {
36
+ ok: false,
37
+ reason: "invalid",
38
+ issues: result.issues,
39
+ unsupportedEditing: hasUnknown,
40
+ etag
41
+ };
42
+ }
43
+ return {
44
+ ok: true,
45
+ bytes,
46
+ etag,
47
+ source,
48
+ profile: result.profile,
49
+ safety: normalizeSafety(result.profile),
50
+ effectivePermissions: deriveEffectivePermissions(result.profile),
51
+ unsupportedEditing: false
52
+ };
53
+ }
54
+ async function readJsonRequestBody(request, maxBytes = MAX_PAYLOAD_BYTES) {
55
+ const contentLengthHeader = request.headers.get("content-length");
56
+ if (contentLengthHeader !== null) {
57
+ const contentLength = Number(contentLengthHeader);
58
+ if (!Number.isFinite(contentLength) || contentLength < 0) return {
59
+ ok: false,
60
+ status: 400,
61
+ error: "invalid_request",
62
+ message: "Invalid content-length header."
63
+ };
64
+ if (contentLength > maxBytes) return {
65
+ ok: false,
66
+ status: 413,
67
+ error: "payload_too_large"
68
+ };
69
+ }
70
+ const bytes = new Uint8Array(await request.arrayBuffer());
71
+ if (bytes.byteLength > maxBytes) return {
72
+ ok: false,
73
+ status: 413,
74
+ error: "payload_too_large"
75
+ };
76
+ if (bytes.includes(0)) return {
77
+ ok: false,
78
+ status: 400,
79
+ error: "invalid_encoding",
80
+ message: "Request body contains a NUL byte."
81
+ };
82
+ let text;
83
+ try {
84
+ text = UTF8_DECODER.decode(bytes);
85
+ } catch {
86
+ return {
87
+ ok: false,
88
+ status: 400,
89
+ error: "invalid_encoding",
90
+ message: "Request body is not valid UTF-8."
91
+ };
92
+ }
93
+ try {
94
+ return {
95
+ ok: true,
96
+ body: JSON.parse(text)
97
+ };
98
+ } catch {
99
+ return {
100
+ ok: false,
101
+ status: 400,
102
+ error: "invalid_request",
103
+ message: "Body is not valid JSON."
104
+ };
105
+ }
106
+ }
107
+ function validateCandidate(candidate) {
108
+ const result = validateProfileValue(candidate);
109
+ if (!result.ok) return {
110
+ ok: false,
111
+ reason: "invalid",
112
+ issues: result.issues
113
+ };
114
+ const nulPaths = findNulStringPaths(result.profile);
115
+ if (nulPaths.length > 0) return {
116
+ ok: false,
117
+ reason: "invalid_encoding",
118
+ paths: nulPaths
119
+ };
120
+ const secretPaths = findSecretLikePaths(result.profile);
121
+ if (secretPaths.length > 0) return {
122
+ ok: false,
123
+ reason: "secret_like",
124
+ paths: secretPaths
125
+ };
126
+ const yaml = renderProfileYaml(result.profile);
127
+ return {
128
+ ok: true,
129
+ yaml,
130
+ etag: computeFileEtag(Buffer.from(yaml, "utf8"))
131
+ };
132
+ }
133
+ function findNulStringPaths(profile) {
134
+ const paths = [];
135
+ if (profile.profile.name.includes("\0")) paths.push("/profile/name");
136
+ if (profile.profile.description.includes("\0")) paths.push("/profile/description");
137
+ for (const [i, lang] of profile.stack.languages.entries()) if (lang.includes("\0")) paths.push(`/stack/languages/${i}`);
138
+ for (const [i, fw] of profile.stack.frameworks.entries()) if (fw.includes("\0")) paths.push(`/stack/frameworks/${i}`);
139
+ for (const [i, pm] of profile.stack.packageManagers.entries()) if (pm.includes("\0")) paths.push(`/stack/packageManagers/${i}`);
140
+ for (const [i, t] of profile.stack.testing.entries()) if (t.includes("\0")) paths.push(`/stack/testing/${i}`);
141
+ return paths;
142
+ }
143
+ function findSecretLikePaths(profile) {
144
+ const paths = [];
145
+ if (containsSecretLikeLiteral(profile.profile.name)) paths.push("/profile/name");
146
+ if (containsSecretLikeLiteral(profile.profile.description)) paths.push("/profile/description");
147
+ for (const [i, lang] of profile.stack.languages.entries()) if (containsSecretLikeLiteral(lang)) paths.push(`/stack/languages/${i}`);
148
+ for (const [i, fw] of profile.stack.frameworks.entries()) if (containsSecretLikeLiteral(fw)) paths.push(`/stack/frameworks/${i}`);
149
+ for (const [i, pm] of profile.stack.packageManagers.entries()) if (containsSecretLikeLiteral(pm)) paths.push(`/stack/packageManagers/${i}`);
150
+ for (const [i, t] of profile.stack.testing.entries()) if (containsSecretLikeLiteral(t)) paths.push(`/stack/testing/${i}`);
151
+ return paths;
152
+ }
153
+ function computeProfileDiff(oldText, newText) {
154
+ if (oldText === newText) return {
155
+ text: "",
156
+ added: 0,
157
+ removed: 0,
158
+ changed: false
159
+ };
160
+ let added = 0;
161
+ let removed = 0;
162
+ for (const change of diffLines(oldText, newText)) if (change.added) added += change.count ?? countLines(change.value);
163
+ else if (change.removed) removed += change.count ?? countLines(change.value);
164
+ return {
165
+ text: createTwoFilesPatch(PROFILE_FILENAME, PROFILE_FILENAME, oldText, newText, "", "", { context: 3 }),
166
+ added,
167
+ removed,
168
+ changed: true
169
+ };
170
+ }
171
+ function countLines(value) {
172
+ if (value.length === 0) return 0;
173
+ return value.endsWith("\n") ? value.slice(0, -1).split("\n").length : value.split("\n").length;
174
+ }
175
+ function isNodeError(err) {
176
+ return err instanceof Error && "code" in err;
177
+ }
178
+
179
+ export { readJsonRequestBody as a, computeProfileDiff as c, readDiskProfile as r, validateCandidate as v };
180
+ //# sourceMappingURL=profileApiHelpers-BFzohffv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileApiHelpers-BFzohffv.js","sources":["../../../.svelte-kit/adapter-node/chunks/profileApiHelpers.js"],"sourcesContent":["import { c as renderProfileYaml, i as deriveEffectivePermissions, l as validateProfileValue, o as normalizeSafety, s as parseProfileYaml, t as containsSecretLikeLiteral } from \"./src.js\";\nimport { o as computeFileEtag } from \"./projectContext.js\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { createTwoFilesPatch, diffLines } from \"diff\";\n//#region src/lib/server/profileApiHelpers.ts\n/**\n* Shared helpers for the Phase 8 profile API routes:\n* GET /api/profile\n* POST /api/profile/plan\n* POST /api/profile/apply\n*/\nvar PROFILE_FILENAME = \"ai-profile.yaml\";\nvar MAX_PAYLOAD_BYTES = 128 * 1024;\nvar UTF8_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\nasync function readDiskProfile(rootDir) {\n\tconst profilePath = path.join(rootDir, PROFILE_FILENAME);\n\tlet bytes;\n\ttry {\n\t\tbytes = await readFile(profilePath);\n\t} catch (err) {\n\t\tif (isNodeError(err) && err.code === \"ENOENT\") return {\n\t\t\tok: false,\n\t\t\treason: \"not_found\",\n\t\t\tissues: [],\n\t\t\tunsupportedEditing: false\n\t\t};\n\t\tthrow err;\n\t}\n\tconst source = bytes.toString(\"utf8\");\n\tconst etag = computeFileEtag(bytes);\n\tconst result = parseProfileYaml(source, { sourcePath: PROFILE_FILENAME });\n\tif (!result.ok) {\n\t\tconst hasUnknown = result.issues.some((i) => i.code === \"schema_validation_error\" && i.expected === \"no additional properties\");\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"invalid\",\n\t\t\tissues: result.issues,\n\t\t\tunsupportedEditing: hasUnknown,\n\t\t\tetag\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\tbytes,\n\t\tetag,\n\t\tsource,\n\t\tprofile: result.profile,\n\t\tsafety: normalizeSafety(result.profile),\n\t\teffectivePermissions: deriveEffectivePermissions(result.profile),\n\t\tunsupportedEditing: false\n\t};\n}\nasync function readJsonRequestBody(request, maxBytes = MAX_PAYLOAD_BYTES) {\n\tconst contentLengthHeader = request.headers.get(\"content-length\");\n\tif (contentLengthHeader !== null) {\n\t\tconst contentLength = Number(contentLengthHeader);\n\t\tif (!Number.isFinite(contentLength) || contentLength < 0) return {\n\t\t\tok: false,\n\t\t\tstatus: 400,\n\t\t\terror: \"invalid_request\",\n\t\t\tmessage: \"Invalid content-length header.\"\n\t\t};\n\t\tif (contentLength > maxBytes) return {\n\t\t\tok: false,\n\t\t\tstatus: 413,\n\t\t\terror: \"payload_too_large\"\n\t\t};\n\t}\n\tconst bytes = new Uint8Array(await request.arrayBuffer());\n\tif (bytes.byteLength > maxBytes) return {\n\t\tok: false,\n\t\tstatus: 413,\n\t\terror: \"payload_too_large\"\n\t};\n\tif (bytes.includes(0)) return {\n\t\tok: false,\n\t\tstatus: 400,\n\t\terror: \"invalid_encoding\",\n\t\tmessage: \"Request body contains a NUL byte.\"\n\t};\n\tlet text;\n\ttry {\n\t\ttext = UTF8_DECODER.decode(bytes);\n\t} catch {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tstatus: 400,\n\t\t\terror: \"invalid_encoding\",\n\t\t\tmessage: \"Request body is not valid UTF-8.\"\n\t\t};\n\t}\n\ttry {\n\t\treturn {\n\t\t\tok: true,\n\t\t\tbody: JSON.parse(text)\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tstatus: 400,\n\t\t\terror: \"invalid_request\",\n\t\t\tmessage: \"Body is not valid JSON.\"\n\t\t};\n\t}\n}\nfunction validateCandidate(candidate) {\n\tconst result = validateProfileValue(candidate);\n\tif (!result.ok) return {\n\t\tok: false,\n\t\treason: \"invalid\",\n\t\tissues: result.issues\n\t};\n\tconst nulPaths = findNulStringPaths(result.profile);\n\tif (nulPaths.length > 0) return {\n\t\tok: false,\n\t\treason: \"invalid_encoding\",\n\t\tpaths: nulPaths\n\t};\n\tconst secretPaths = findSecretLikePaths(result.profile);\n\tif (secretPaths.length > 0) return {\n\t\tok: false,\n\t\treason: \"secret_like\",\n\t\tpaths: secretPaths\n\t};\n\tconst yaml = renderProfileYaml(result.profile);\n\treturn {\n\t\tok: true,\n\t\tyaml,\n\t\tetag: computeFileEtag(Buffer.from(yaml, \"utf8\"))\n\t};\n}\nfunction findNulStringPaths(profile) {\n\tconst paths = [];\n\tif (profile.profile.name.includes(\"\\0\")) paths.push(\"/profile/name\");\n\tif (profile.profile.description.includes(\"\\0\")) paths.push(\"/profile/description\");\n\tfor (const [i, lang] of profile.stack.languages.entries()) if (lang.includes(\"\\0\")) paths.push(`/stack/languages/${i}`);\n\tfor (const [i, fw] of profile.stack.frameworks.entries()) if (fw.includes(\"\\0\")) paths.push(`/stack/frameworks/${i}`);\n\tfor (const [i, pm] of profile.stack.packageManagers.entries()) if (pm.includes(\"\\0\")) paths.push(`/stack/packageManagers/${i}`);\n\tfor (const [i, t] of profile.stack.testing.entries()) if (t.includes(\"\\0\")) paths.push(`/stack/testing/${i}`);\n\treturn paths;\n}\nfunction findSecretLikePaths(profile) {\n\tconst paths = [];\n\tif (containsSecretLikeLiteral(profile.profile.name)) paths.push(\"/profile/name\");\n\tif (containsSecretLikeLiteral(profile.profile.description)) paths.push(\"/profile/description\");\n\tfor (const [i, lang] of profile.stack.languages.entries()) if (containsSecretLikeLiteral(lang)) paths.push(`/stack/languages/${i}`);\n\tfor (const [i, fw] of profile.stack.frameworks.entries()) if (containsSecretLikeLiteral(fw)) paths.push(`/stack/frameworks/${i}`);\n\tfor (const [i, pm] of profile.stack.packageManagers.entries()) if (containsSecretLikeLiteral(pm)) paths.push(`/stack/packageManagers/${i}`);\n\tfor (const [i, t] of profile.stack.testing.entries()) if (containsSecretLikeLiteral(t)) paths.push(`/stack/testing/${i}`);\n\treturn paths;\n}\nfunction computeProfileDiff(oldText, newText) {\n\tif (oldText === newText) return {\n\t\ttext: \"\",\n\t\tadded: 0,\n\t\tremoved: 0,\n\t\tchanged: false\n\t};\n\tlet added = 0;\n\tlet removed = 0;\n\tfor (const change of diffLines(oldText, newText)) if (change.added) added += change.count ?? countLines(change.value);\n\telse if (change.removed) removed += change.count ?? countLines(change.value);\n\treturn {\n\t\ttext: createTwoFilesPatch(PROFILE_FILENAME, PROFILE_FILENAME, oldText, newText, \"\", \"\", { context: 3 }),\n\t\tadded,\n\t\tremoved,\n\t\tchanged: true\n\t};\n}\nfunction countLines(value) {\n\tif (value.length === 0) return 0;\n\treturn value.endsWith(\"\\n\") ? value.slice(0, -1).split(\"\\n\").length : value.split(\"\\n\").length;\n}\nfunction isNodeError(err) {\n\treturn err instanceof Error && \"code\" in err;\n}\n//#endregion\nexport { validateCandidate as i, readDiskProfile as n, readJsonRequestBody as r, computeProfileDiff as t };\n"],"names":[],"mappings":"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"}