miclaw-app 0.2.0 → 0.4.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 (222) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +6 -5
  3. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -2
  4. package/.next/standalone/.next/server/app/_global-error/page.js +6 -4
  5. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -2
  15. package/.next/standalone/.next/server/app/_not-found/page.js +6 -4
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +3 -3
  19. package/.next/standalone/.next/server/app/_not-found.rsc +10 -10
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
  21. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  22. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  25. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/standalone/.next/server/app/agents/page/build-manifest.json +3 -2
  27. package/.next/standalone/.next/server/app/agents/page/server-reference-manifest.json +26 -1
  28. package/.next/standalone/.next/server/app/agents/page.js +10 -6
  29. package/.next/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/agents.html +17 -10
  32. package/.next/standalone/.next/server/app/agents.rsc +19 -24
  33. package/.next/standalone/.next/server/app/agents.segments/_full.segment.rsc +19 -24
  34. package/.next/standalone/.next/server/app/agents.segments/_head.segment.rsc +4 -4
  35. package/.next/standalone/.next/server/app/agents.segments/_index.segment.rsc +5 -5
  36. package/.next/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  37. package/.next/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +14 -19
  38. package/.next/standalone/.next/server/app/agents.segments/agents.segment.rsc +3 -3
  39. package/.next/standalone/.next/server/app/commands/page/build-manifest.json +3 -2
  40. package/.next/standalone/.next/server/app/commands/page/server-reference-manifest.json +26 -1
  41. package/.next/standalone/.next/server/app/commands/page.js +10 -6
  42. package/.next/standalone/.next/server/app/commands/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/commands/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/commands.html +27 -15
  45. package/.next/standalone/.next/server/app/commands.rsc +166 -174
  46. package/.next/standalone/.next/server/app/commands.segments/_full.segment.rsc +166 -174
  47. package/.next/standalone/.next/server/app/commands.segments/_head.segment.rsc +4 -4
  48. package/.next/standalone/.next/server/app/commands.segments/_index.segment.rsc +5 -5
  49. package/.next/standalone/.next/server/app/commands.segments/_tree.segment.rsc +2 -2
  50. package/.next/standalone/.next/server/app/commands.segments/commands/__PAGE__.segment.rsc +161 -169
  51. package/.next/standalone/.next/server/app/commands.segments/commands.segment.rsc +3 -3
  52. package/.next/standalone/.next/server/app/hooks/page/build-manifest.json +3 -2
  53. package/.next/standalone/.next/server/app/hooks/page.js +7 -5
  54. package/.next/standalone/.next/server/app/hooks/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/hooks/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/hooks.html +3 -3
  57. package/.next/standalone/.next/server/app/hooks.rsc +11 -11
  58. package/.next/standalone/.next/server/app/hooks.segments/_full.segment.rsc +11 -11
  59. package/.next/standalone/.next/server/app/hooks.segments/_head.segment.rsc +4 -4
  60. package/.next/standalone/.next/server/app/hooks.segments/_index.segment.rsc +5 -5
  61. package/.next/standalone/.next/server/app/hooks.segments/_tree.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/hooks.segments/hooks/__PAGE__.segment.rsc +2 -2
  63. package/.next/standalone/.next/server/app/hooks.segments/hooks.segment.rsc +3 -3
  64. package/.next/standalone/.next/server/app/index.html +18 -18
  65. package/.next/standalone/.next/server/app/index.rsc +12 -12
  66. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  67. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +12 -12
  68. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  69. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -5
  70. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  71. package/.next/standalone/.next/server/app/mcp/page/build-manifest.json +3 -2
  72. package/.next/standalone/.next/server/app/mcp/page.js +7 -5
  73. package/.next/standalone/.next/server/app/mcp/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/mcp.html +3 -3
  76. package/.next/standalone/.next/server/app/mcp.rsc +12 -12
  77. package/.next/standalone/.next/server/app/mcp.segments/_full.segment.rsc +12 -12
  78. package/.next/standalone/.next/server/app/mcp.segments/_head.segment.rsc +4 -4
  79. package/.next/standalone/.next/server/app/mcp.segments/_index.segment.rsc +5 -5
  80. package/.next/standalone/.next/server/app/mcp.segments/_tree.segment.rsc +2 -2
  81. package/.next/standalone/.next/server/app/mcp.segments/mcp/__PAGE__.segment.rsc +7 -8
  82. package/.next/standalone/.next/server/app/mcp.segments/mcp.segment.rsc +3 -3
  83. package/.next/standalone/.next/server/app/page/build-manifest.json +3 -2
  84. package/.next/standalone/.next/server/app/page.js +7 -5
  85. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/projects/[slug]/page/build-manifest.json +3 -2
  88. package/.next/standalone/.next/server/app/projects/[slug]/page/server-reference-manifest.json +50 -1
  89. package/.next/standalone/.next/server/app/projects/[slug]/page.js +11 -7
  90. package/.next/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/rules/page/build-manifest.json +3 -2
  93. package/.next/standalone/.next/server/app/rules/page/server-reference-manifest.json +14 -1
  94. package/.next/standalone/.next/server/app/rules/page.js +10 -6
  95. package/.next/standalone/.next/server/app/rules/page.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/rules/page_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/rules.html +24 -12
  98. package/.next/standalone/.next/server/app/rules.rsc +23 -23
  99. package/.next/standalone/.next/server/app/rules.segments/_full.segment.rsc +23 -23
  100. package/.next/standalone/.next/server/app/rules.segments/_head.segment.rsc +4 -4
  101. package/.next/standalone/.next/server/app/rules.segments/_index.segment.rsc +5 -5
  102. package/.next/standalone/.next/server/app/rules.segments/_tree.segment.rsc +2 -2
  103. package/.next/standalone/.next/server/app/rules.segments/rules/__PAGE__.segment.rsc +15 -15
  104. package/.next/standalone/.next/server/app/rules.segments/rules.segment.rsc +3 -3
  105. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -2
  106. package/.next/standalone/.next/server/app/settings/page.js +7 -5
  107. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/settings.html +3 -50
  110. package/.next/standalone/.next/server/app/settings.rsc +44 -229
  111. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +44 -229
  112. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  113. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +5 -5
  114. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  115. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +34 -224
  116. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  117. package/.next/standalone/.next/server/app/skills/page/build-manifest.json +3 -2
  118. package/.next/standalone/.next/server/app/skills/page/server-reference-manifest.json +26 -1
  119. package/.next/standalone/.next/server/app/skills/page.js +10 -6
  120. package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/skills.html +17 -10
  123. package/.next/standalone/.next/server/app/skills.rsc +22 -24
  124. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +22 -24
  125. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +4 -4
  126. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +5 -5
  127. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +17 -19
  129. package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +3 -3
  130. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.angw.._.js +19 -0
  131. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.n_sm9._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00-fvlp._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0xrk31o._.js → [root-of-the-server]__07-x3pk._.js} +2 -2
  134. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__09x1iac._.js → [root-of-the-server]__074ddak._.js} +2 -2
  135. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0762gzw._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a6fhf4._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cyn.yv._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0drsnbn._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gs673v._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hb8yr6._.js +3 -0
  141. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lvdgab._.js +3 -0
  142. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pi2cyu._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pqmw9_._.js +3 -0
  144. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qau0oe._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y_r~bl._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13f6exv._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/ssr/_0155~lj._.js +4 -0
  148. package/.next/standalone/.next/server/chunks/ssr/_019pxqf._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/ssr/_04f1jnd._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/ssr/_075l.9f._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/ssr/_08ya7_7._.js +18 -0
  152. package/.next/standalone/.next/server/chunks/ssr/_0_s6zlf._.js +4 -0
  153. package/.next/standalone/.next/server/chunks/ssr/_0blw8hh._.js +4 -0
  154. package/.next/standalone/.next/server/chunks/ssr/_0d3amaq._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/ssr/_0henl1i._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/ssr/_0n0cdzu._.js +7 -0
  157. package/.next/standalone/.next/server/chunks/ssr/_0odsblc._.js +4 -0
  158. package/.next/standalone/.next/server/chunks/ssr/_0qj6zf~._.js +4 -0
  159. package/.next/standalone/.next/server/chunks/ssr/_0~-r05b._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/ssr/node_modules_06ooq~z._.js +3 -0
  161. package/.next/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_x_06-w9xa.js +3 -0
  162. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_05~t7f3._.js +3 -0
  163. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_060d1m.._.js +3 -0
  164. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0ve2ws3._.js +6 -0
  165. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_compiled_0wewlb4._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/src_components_OverviewClient_tsx_02hf4_.._.js +4 -6
  167. package/.next/standalone/.next/server/chunks/ssr/src_components_PermissionList_tsx_11auuo4._.js +3 -0
  168. package/.next/standalone/.next/server/middleware-build-manifest.js +6 -5
  169. package/.next/standalone/.next/server/pages/404.html +3 -3
  170. package/.next/standalone/.next/server/pages/500.html +1 -1
  171. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/server-reference-manifest.json +98 -1
  173. package/.next/standalone/AGENTS.md +5 -0
  174. package/.next/standalone/CLAUDE.md +123 -0
  175. package/.next/standalone/README.md +80 -0
  176. package/.next/standalone/package.json +1 -1
  177. package/.next/static/chunks/04aem330ymbdp.js +1 -0
  178. package/.next/static/chunks/04oemklgq9z0h.js +2 -0
  179. package/.next/static/chunks/05aigtet4z44u.js +2 -0
  180. package/.next/static/chunks/07xsxgej4fv2x.js +2 -0
  181. package/.next/static/chunks/08fwcb._hc08b.js +2 -0
  182. package/.next/static/chunks/0_y~i1hg5~4wi.js +1 -0
  183. package/.next/static/chunks/0g_3.48-9emgq.js +2 -0
  184. package/.next/static/chunks/0lb3l2a8_251j.css +4 -0
  185. package/.next/static/chunks/0pokw498xojn-.js +5 -0
  186. package/.next/static/chunks/13dvyaeya8iqh.js +2 -0
  187. package/.next/static/chunks/14eh46s-dfy04.js +13 -0
  188. package/.next/static/chunks/turbopack-0vxtok8kx-1on.js +1 -0
  189. package/README.md +8 -3
  190. package/package.json +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-h~dmy._.js +0 -3
  192. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-xb~6._.js +0 -3
  193. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05bypkr._.js +0 -3
  194. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0689aen._.js +0 -3
  195. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09jukbl._.js +0 -3
  196. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09z7o2x._.js +0 -19
  197. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0beg-.s._.js +0 -3
  198. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bm8p5g._.js +0 -3
  199. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0j~ozdd._.js +0 -3
  200. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m45oxh._.js +0 -3
  201. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0o4fjuz._.js +0 -3
  202. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qk5gqw._.js +0 -3
  203. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0u-t242._.js +0 -3
  204. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y_d026._.js +0 -3
  205. package/.next/standalone/.next/server/chunks/ssr/_09kkdgy._.js +0 -6
  206. package/.next/standalone/.next/server/chunks/ssr/_0g8yqoe._.js +0 -7
  207. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_agents_page_actions_07l1ss4.js +0 -3
  208. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_commands_page_actions_0npst50.js +0 -3
  209. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_projects_[slug]_page_actions_0xg3f7c.js +0 -3
  210. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_rules_page_actions_0xcrbur.js +0 -3
  211. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_skills_page_actions_0cxzzu-.js +0 -3
  212. package/.next/standalone/.next/server/chunks/ssr/node_modules_0sy8gnb._.js +0 -3
  213. package/.next/standalone/.next/server/chunks/ssr/src_components_ExpandableBody_tsx_0-ivqwg._.js +0 -3
  214. package/.next/static/chunks/0hbcy8fff~.ks.js +0 -15
  215. package/.next/static/chunks/0mmpyn9fv2fjf.js +0 -2
  216. package/.next/static/chunks/0xlrze18so95w.css +0 -4
  217. package/.next/static/chunks/0y3~cortx~or~.js +0 -5
  218. package/.next/static/chunks/12p3iqtw2ohfq.js +0 -1
  219. package/.next/static/chunks/turbopack-06dy8k5p5cegf.js +0 -1
  220. /package/.next/static/{vFFhR9bZqGO0pHP7N7NNG → ykykNEJbtAXExgOj13bt9}/_buildManifest.js +0 -0
  221. /package/.next/static/{vFFhR9bZqGO0pHP7N7NNG → ykykNEJbtAXExgOj13bt9}/_clientMiddlewareManifest.js +0 -0
  222. /package/.next/static/{vFFhR9bZqGO0pHP7N7NNG → ykykNEJbtAXExgOj13bt9}/_ssgManifest.js +0 -0
@@ -1,7 +1,7 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[22450,["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/12p3iqtw2ohfq.js"],"ExpandableBody"]
3
- 13:I[97367,["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
4
- 14:"$Sreact.suspense"
2
+ 2:I[47258,["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/04oemklgq9z0h.js"],"CommandScopeGroup"]
3
+ 14:I[97367,["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
4
+ 15:"$Sreact.suspense"
5
5
  3:T1810,# Infrastructure Security Audit
6
6
 
7
7
  Scan all AWS infrastructure modules for security issues across four categories: IAM least-privilege, unprotected API routes, encryption, and factory module bypass.
@@ -114,8 +114,8 @@ Each sub-agent should write its report in this format:
114
114
 
115
115
  After the aggregation agent completes, tell the user the full report is at `/tmp/infra-security-audit/SUMMARY.md` and output the brief summary.
116
116
 
117
- Read the actual .tf files — don't guess based on module names. When a wildcard resource is found, check if it's a known AWS requirement before flagging.0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"mx-auto max-w-5xl px-8 py-10","children":[["$","div",null,{"className":"mb-8","children":[["$","div",null,{"className":"flex items-baseline gap-3","children":[["$","h1",null,{"className":"text-2xl font-medium tracking-tight","children":"Commands"}],["$","span",null,{"className":"text-sm text-text-muted","children":12}]]}],["$","p",null,{"className":"mt-1 text-sm text-text-muted","children":"Procedural commands across projects"}]]}],[["$","div","infrastructure",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 text-xs font-medium rounded-sm bg-surface-raised text-text-dim","children":"INFRASTRUCTURE"}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/infrastructure/.claude/commands"}]]}],["$","div",null,{"className":"space-y-3","children":[["$","div","/Users/gabry/Desktop/infrastructure/.claude/commands/security-audit.md",{"id":"security-audit","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"security-audit"}],["$","$L2",null,{"content":"$3","previewLines":3}]]}]]}]]}],"$L4","$L5"],false]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"vFFhR9bZqGO0pHP7N7NNG"}
118
- 8:T368e,# Broken Access Control Scan
117
+ Read the actual .tf files — don't guess based on module names. When a wildcard resource is found, check if it's a known AWS requirement before flagging.0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"mx-auto max-w-5xl px-8 py-10","children":[["$","div",null,{"className":"mb-8","children":[["$","div",null,{"className":"flex items-baseline gap-3","children":[["$","h1",null,{"className":"text-2xl font-mono font-medium tracking-tight","children":"Commands"}],["$","span",null,{"className":"font-mono text-sm text-text-dim","children":12}]]}],["$","p",null,{"className":"mt-1 text-sm text-text-muted","children":"Procedural commands across projects"}]]}],[["$","div","/Users/gabry/Desktop/infrastructure",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"font-mono text-xs text-text-dim","children":["[","INFRASTRUCTURE","]"]}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/infrastructure"}]]}],["$","$L2",null,{"commands":[{"name":"security-audit","body":"$3","filePath":"/Users/gabry/Desktop/infrastructure/.claude/commands/security-audit.md","scope":{"type":"project","projectName":"infrastructure","projectPath":"/Users/gabry/Desktop/infrastructure"}}],"scopePath":"/Users/gabry/Desktop/infrastructure"}]]}],"$L4","$L5","$L6"],false]}],["$L7"],"$L8"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"ykykNEJbtAXExgOj13bt9"}
118
+ 9:T368e,# Broken Access Control Scan
119
119
 
120
120
  Scan ALL route handlers and Lambda handlers in platform-services for broken access control vulnerabilities beyond IDOR (which is covered by the separate `idor-scan` command).
121
121
 
@@ -341,152 +341,7 @@ Write the final report to `access-control-scan-results/SUMMARY.md` with:
341
341
 
342
342
  Then output the summary to the user.
343
343
 
344
- Be thorough. Read the actual code — don't guess based on function names alone. When checking for role validation, trace the full dependency chain. If a role check happens in a called function or middleware rather than at the route level, note it but don't flag it as a vulnerability.4:["$","div","platform-services",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 text-xs font-medium rounded-sm bg-surface-raised text-text-dim","children":"PLATFORM-SERVICES"}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/platform-services/.claude/commands"}]]}],["$","div",null,{"className":"space-y-3","children":[["$","div","/Users/gabry/Desktop/platform-services/.claude/commands/access-control-scan.md",{"id":"access-control-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"access-control-scan"}],["$","$L2",null,{"content":"$8","previewLines":3}]]}],"$L9","$La","$Lb","$Lc","$Ld","$Le","$Lf","$L10","$L11"]}]]}]
345
- 12:T1605,# Investigate WGS Ingestion Failure
346
-
347
- You are investigating a WGS ingestion Step Function failure in production. Follow each step. Do NOT ask for user input -- work autonomously.
348
-
349
- ## Input
350
-
351
- $ARGUMENTS
352
-
353
- ## Step 1: Parse the Alert
354
-
355
- Extract from the input text: `correlationId`, `wgsIngestionId`, `sfnError`, `sfnStatus`.
356
-
357
- If the input is missing required fields, write a report noting the parse failure and stop.
358
-
359
- ## Step 2: Query Axiom
360
-
361
- Use `mcp__axiom__queryDataset` with `startTime` = `now-24h` and `endTime` = `now`.
362
-
363
- Trace the correlationId:
364
-
365
- ```apl
366
- ['bioscope-prod']
367
- | where correlationId == "<correlationId>"
368
- | order by _time asc
369
- ```
370
-
371
- Search by wgsIngestionId:
372
-
373
- ```apl
374
- ['bioscope-prod']
375
- | where data.wgsIngestionId == "<wgsIngestionId>" or message contains "<wgsIngestionId>"
376
- | order by _time asc
377
- ```
378
-
379
- Focus on ERROR-level entries. Record only the key log lines needed to explain the failure -- not the full trace.
380
-
381
- ## Step 3: Cross-Reference Code
382
-
383
- Read the `PLATFORM_SERVICES_PATH` and `INFRASTRUCTURE_PATH` environment variables to locate the repos.
384
-
385
- ### Application code (platform-services)
386
-
387
- 1. `$PLATFORM_SERVICES_PATH/packages/wgs_ingestion_service/src/wgs_ingestion_service/handlers/handle_sfn_failure.py`
388
- 2. `$PLATFORM_SERVICES_PATH/packages/wgs_ingestion_service/src/wgs_ingestion_service/handlers/handle_initiate_ingestion.py`
389
- 3. `$PLATFORM_SERVICES_PATH/packages/bioscope_types/src/bioscope_types/dynamodb/wgs_ingestions.py`
390
-
391
- ### Infrastructure (Terraform)
392
-
393
- If the error points to a Step Function state, Lambda config, IAM permissions, or resource limits, cross-reference these files:
394
-
395
- 1. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/sfn.tf` -- Step Function state machine definition and pipeline flow
396
- 2. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/lambda.tf` -- Lambda function configuration (memory, timeout, layers)
397
- 3. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/iam.tf` -- IAM roles and policies for the pipeline
398
- 4. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/eventbridge.tf` -- EventBridge rule that triggers on SFN failures
399
- 5. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/dynamodb.tf` -- DynamoDB table and index definitions
400
-
401
- The execution name format is `{wgs_ingestion_id}_{kit_id}_{timestamp}`.
402
-
403
- ## Step 4: Classify the Failure
404
-
405
- **Default to Bug.** Only classify as Transient if you can point to specific evidence (see criteria below).
406
-
407
- - **Bug**: Code error, unhandled exception, missing IAM permissions, missing config, infrastructure misconfiguration. Requires a code or infra fix. **This is the default classification when the root cause is unclear.**
408
- - **Transient**: A failure that meets ALL of these criteria:
409
- 1. The error is a network timeout, AWS throttling, or a known transient pattern (see below)
410
- 2. There is no underlying code/config/IAM issue that caused it
411
- 3. A redrive would be expected to succeed WITHOUT any code or infrastructure changes
412
- - **Data issue**: Bad input, missing files, malformed data. Requires manual intervention.
413
-
414
- You MUST justify your classification in the Root Cause section. If classifying as Transient, explicitly state why a redrive would fix it without code changes.
415
-
416
- ### Example Transient Errors
417
-
418
- These LOOK like data issues but are known transient -- classify as **Transient**:
419
-
420
- - **`INTERSECT_VARIANTS` / `KeyError: 'CHR:POS:A0:A1'` / "No variants in intersection"**: Intermittent failure in `pgsc_calc` during PRS generation. Resolves on redrive.
421
-
422
- ### Example Bug Patterns
423
-
424
- These may LOOK transient but are bugs -- classify as **Bug**:
425
-
426
- - **S3 403 Forbidden on HeadObject/GetObject/PutObject**: Usually a missing IAM permission on the task role, not a temporary auth issue. Check the relevant IAM policy in infrastructure. Example: BIOENG-535 where `genomics-bam-subset-processor` was missing `s3:GetObject` on its output bucket.
427
- - **S3 404 Not Found on expected files**: Could indicate a missing deployment artifact, misconfigured path, or a race condition in the pipeline -- not transient.
428
- - **Persistent STS/credential errors on FARGATE_SPOT**: If the same error recurs on redrive or appears on non-spot tasks, it is an IAM issue, not credential expiration.
429
-
430
- ## Step 5: Write the Report
431
-
432
- Write the report file as: `reports/YYYY-MM-DD_<first-8-chars-of-wgsIngestionId>.md`
433
-
434
- The `reports/` directory is in the current working directory. Verify with `Glob` that the directory exists before writing. If it does not exist, create it.
435
-
436
- Keep the report concise. Only include log lines that are directly relevant to explaining the failure cause.
437
-
438
- ```
439
- # WGS Ingestion Failure Report
440
-
441
- ## Summary
442
-
443
- | Field | Value |
444
- |-------|-------|
445
- | Date | YYYY-MM-DD HH:MM UTC |
446
- | Correlation ID | ... |
447
- | WGS Ingestion ID | ... |
448
- | Execution Name | ... |
449
- | SFN Error | ... |
450
- | SFN Status | ... |
451
-
452
- ## Key Logs
453
-
454
- Only the log lines that explain the failure (oldest first):
455
-
456
- - `TIMESTAMP` [LEVEL] message (logGroup: ...)
457
-
458
- ## Root Cause
459
-
460
- <1-3 sentences. What failed and why.>
461
-
462
- ## Classification
463
-
464
- **<Transient | Bug | Data issue>**
465
-
466
- ## Recommended Action
467
-
468
- <1-2 sentences.>
469
-
470
- ### Redrive JSON
471
-
472
- If transient, include:
473
-
474
- {
475
- "executionIds": ["<execution-name>"]
476
- }
477
-
478
- Env-task name: `redrive-wgs-ingestion-execution`
479
- ```
480
-
481
- ## Rules
482
-
483
- - Do NOT ask for user input. Work fully autonomously.
484
- - Do NOT include PII/PHI. Only UUIDs, error codes, timestamps, status values.
485
- - Do NOT use Bash commands. Use only Read, Glob, Grep, Write, and mcp__axiom__queryDataset.
486
- - If Axiom queries fail, proceed with code analysis and note the gap in the report.5:["$","div","wgs-ingestion-bot",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 text-xs font-medium rounded-sm bg-surface-raised text-text-dim","children":"WGS-INGESTION-BOT"}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/wgs-ingestion-bot/.claude/commands"}]]}],["$","div",null,{"className":"space-y-3","children":[["$","div","/Users/gabry/Desktop/wgs-ingestion-bot/.claude/commands/investigate-wgs-ingestion.md",{"id":"investigate-wgs-ingestion","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"investigate-wgs-ingestion"}],["$","$L2",null,{"content":"$12","previewLines":3}]]}]]}]]}]
487
- 6:["$","script","script-0",{"src":"/_next/static/chunks/12p3iqtw2ohfq.js","async":true}]
488
- 7:["$","$L13",null,{"children":["$","$14",null,{"name":"Next.MetadataOutlet","children":"$@15"}]}]
489
- 16:Tf1d,# Add a New Model to llm-proxy-service
344
+ Be thorough. Read the actual code — don't guess based on function names alone. When checking for role validation, trace the full dependency chain. If a role check happens in a called function or middleware rather than at the route level, note it but don't flag it as a vulnerability.a:Tf1d,# Add a New Model to llm-proxy-service
490
345
 
491
346
  Add a new LLM model to `llm-proxy-service`, ensuring accurate cost reporting.
492
347
 
@@ -572,8 +427,7 @@ If the model requires additional env vars (vertex_ai, groq, or anthropic models)
572
427
 
573
428
  1. Run `pnpm exec nx run bioscope-types:type-check` to verify the type is valid
574
429
  2. Run `pnpm exec nx run llm-proxy-service:test` to verify tests pass
575
- 3. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`9:["$","div","/Users/gabry/Desktop/platform-services/.claude/commands/add-llm-proxy-service-model.md",{"id":"add-llm-proxy-service-model","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"add-llm-proxy-service-model"}],["$","$L2",null,{"content":"$16","previewLines":3}]]}]
576
- 17:T1c43,# IDOR & Authorization Vulnerability Scan
430
+ 3. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`b:T1c43,# IDOR & Authorization Vulnerability Scan
577
431
 
578
432
  Scan ALL route handlers in platform-services for IDOR (Insecure Direct Object Reference) and authorization vulnerabilities.
579
433
 
@@ -670,8 +524,7 @@ Write the final report to `/tmp/idor-scan-results/SUMMARY.md` with:
670
524
 
671
525
  Then output the summary to the user.
672
526
 
673
- Be thorough. Read the actual code — don't guess based on function names alone. When in doubt about whether a check exists, read the called functions to see if ownership validation happens deeper in the call chain. If validation happens in a called function rather than at the route level, note it but don't flag it as a vulnerability.a:["$","div","/Users/gabry/Desktop/platform-services/.claude/commands/idor-scan.md",{"id":"idor-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"idor-scan"}],["$","$L2",null,{"content":"$17","previewLines":3}]]}]
674
- 18:T2543,# PHI/PII Data Exposure Scan
527
+ Be thorough. Read the actual code — don't guess based on function names alone. When in doubt about whether a check exists, read the called functions to see if ownership validation happens deeper in the call chain. If validation happens in a called function rather than at the route level, note it but don't flag it as a vulnerability.c:T2543,# PHI/PII Data Exposure Scan
675
528
 
676
529
  Scan ALL application code in platform-services for Protected Health Information (PHI) and Personally Identifiable Information (PII) exposure vulnerabilities. This covers logging, error responses, API over-fetching, and any other channel where sensitive data could leak.
677
530
 
@@ -842,8 +695,7 @@ Write the final report to `/tmp/phi-exposure-scan-results/SUMMARY.md` with:
842
695
 
843
696
  Then output the summary to the user.
844
697
 
845
- Be thorough. Read the actual code — don't guess based on function names alone. When checking log statements, look at what the `extra` dict actually contains. When checking for model dumps, trace the model class to see what fields it includes. If a model only contains safe fields (IDs, timestamps, statuses), it's not a PHI exposure even if it's logged via `model_dump()`.b:["$","div","/Users/gabry/Desktop/platform-services/.claude/commands/phi-exposure-scan.md",{"id":"phi-exposure-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"phi-exposure-scan"}],["$","$L2",null,{"content":"$18","previewLines":3}]]}]
846
- 19:T1b86,# Upgrade litellm in llm-proxy-service
698
+ Be thorough. Read the actual code — don't guess based on function names alone. When checking log statements, look at what the `extra` dict actually contains. When checking for model dumps, trace the model class to see what fields it includes. If a model only contains safe fields (IDs, timestamps, statuses), it's not a PHI exposure even if it's logged via `model_dump()`.d:T1b86,# Upgrade litellm in llm-proxy-service
847
699
 
848
700
  Upgrade the `litellm` dependency in `llm-proxy-service` to a new version, validating that all supported models have correct pricing.
849
701
 
@@ -956,8 +808,8 @@ After presenting findings to the user and getting their approval:
956
808
  4. Run `uv sync --all-packages` from the `platform-services/` directory to update the lock file
957
809
  5. Run `pnpm exec nx run llm-proxy-service:test` to verify tests pass
958
810
  6. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`
959
- 7. Run `pnpm exec nx run embedding-service:test`, `pnpm exec nx run embedding-service:lint`, and `pnpm exec nx run embedding-service:type-check`c:["$","div","/Users/gabry/Desktop/platform-services/.claude/commands/upgrade-litellm.md",{"id":"upgrade-litellm","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"upgrade-litellm"}],["$","$L2",null,{"content":"$19","previewLines":3}]]}]
960
- 1a:T368e,# Broken Access Control Scan
811
+ 7. Run `pnpm exec nx run embedding-service:test`, `pnpm exec nx run embedding-service:lint`, and `pnpm exec nx run embedding-service:type-check`4:["$","div","/Users/gabry/Desktop/platform-services",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"font-mono text-xs text-text-dim","children":["[","PLATFORM-SERVICES","]"]}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/platform-services"}]]}],["$","$L2",null,{"commands":[{"name":"access-control-scan","body":"$9","filePath":"/Users/gabry/Desktop/platform-services/.claude/commands/access-control-scan.md","scope":{"type":"project","projectName":"platform-services","projectPath":"/Users/gabry/Desktop/platform-services"}},{"name":"add-llm-proxy-service-model","body":"$a","filePath":"/Users/gabry/Desktop/platform-services/.claude/commands/add-llm-proxy-service-model.md","scope":"$4:props:children:1:props:commands:0:scope"},{"name":"idor-scan","body":"$b","filePath":"/Users/gabry/Desktop/platform-services/.claude/commands/idor-scan.md","scope":"$4:props:children:1:props:commands:0:scope"},{"name":"phi-exposure-scan","body":"$c","filePath":"/Users/gabry/Desktop/platform-services/.claude/commands/phi-exposure-scan.md","scope":"$4:props:children:1:props:commands:0:scope"},{"name":"upgrade-litellm","body":"$d","filePath":"/Users/gabry/Desktop/platform-services/.claude/commands/upgrade-litellm.md","scope":"$4:props:children:1:props:commands:0:scope"}],"scopePath":"/Users/gabry/Desktop/platform-services"}]]}]
812
+ e:T368e,# Broken Access Control Scan
961
813
 
962
814
  Scan ALL route handlers and Lambda handlers in platform-services for broken access control vulnerabilities beyond IDOR (which is covered by the separate `idor-scan` command).
963
815
 
@@ -1183,8 +1035,7 @@ Write the final report to `access-control-scan-results/SUMMARY.md` with:
1183
1035
 
1184
1036
  Then output the summary to the user.
1185
1037
 
1186
- Be thorough. Read the actual code — don't guess based on function names alone. When checking for role validation, trace the full dependency chain. If a role check happens in a called function or middleware rather than at the route level, note it but don't flag it as a vulnerability.d:["$","div","/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/access-control-scan.md",{"id":"access-control-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"access-control-scan"}],["$","$L2",null,{"content":"$1a","previewLines":3}]]}]
1187
- 1b:Tf1d,# Add a New Model to llm-proxy-service
1038
+ Be thorough. Read the actual code — don't guess based on function names alone. When checking for role validation, trace the full dependency chain. If a role check happens in a called function or middleware rather than at the route level, note it but don't flag it as a vulnerability.f:Tf1d,# Add a New Model to llm-proxy-service
1188
1039
 
1189
1040
  Add a new LLM model to `llm-proxy-service`, ensuring accurate cost reporting.
1190
1041
 
@@ -1270,8 +1121,7 @@ If the model requires additional env vars (vertex_ai, groq, or anthropic models)
1270
1121
 
1271
1122
  1. Run `pnpm exec nx run bioscope-types:type-check` to verify the type is valid
1272
1123
  2. Run `pnpm exec nx run llm-proxy-service:test` to verify tests pass
1273
- 3. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`e:["$","div","/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/add-llm-proxy-service-model.md",{"id":"add-llm-proxy-service-model","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"add-llm-proxy-service-model"}],["$","$L2",null,{"content":"$1b","previewLines":3}]]}]
1274
- 1c:T1c43,# IDOR & Authorization Vulnerability Scan
1124
+ 3. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`10:T1c43,# IDOR & Authorization Vulnerability Scan
1275
1125
 
1276
1126
  Scan ALL route handlers in platform-services for IDOR (Insecure Direct Object Reference) and authorization vulnerabilities.
1277
1127
 
@@ -1368,8 +1218,7 @@ Write the final report to `/tmp/idor-scan-results/SUMMARY.md` with:
1368
1218
 
1369
1219
  Then output the summary to the user.
1370
1220
 
1371
- Be thorough. Read the actual code — don't guess based on function names alone. When in doubt about whether a check exists, read the called functions to see if ownership validation happens deeper in the call chain. If validation happens in a called function rather than at the route level, note it but don't flag it as a vulnerability.f:["$","div","/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/idor-scan.md",{"id":"idor-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"idor-scan"}],["$","$L2",null,{"content":"$1c","previewLines":3}]]}]
1372
- 1d:T2543,# PHI/PII Data Exposure Scan
1221
+ Be thorough. Read the actual code — don't guess based on function names alone. When in doubt about whether a check exists, read the called functions to see if ownership validation happens deeper in the call chain. If validation happens in a called function rather than at the route level, note it but don't flag it as a vulnerability.11:T2543,# PHI/PII Data Exposure Scan
1373
1222
 
1374
1223
  Scan ALL application code in platform-services for Protected Health Information (PHI) and Personally Identifiable Information (PII) exposure vulnerabilities. This covers logging, error responses, API over-fetching, and any other channel where sensitive data could leak.
1375
1224
 
@@ -1540,8 +1389,7 @@ Write the final report to `/tmp/phi-exposure-scan-results/SUMMARY.md` with:
1540
1389
 
1541
1390
  Then output the summary to the user.
1542
1391
 
1543
- Be thorough. Read the actual code — don't guess based on function names alone. When checking log statements, look at what the `extra` dict actually contains. When checking for model dumps, trace the model class to see what fields it includes. If a model only contains safe fields (IDs, timestamps, statuses), it's not a PHI exposure even if it's logged via `model_dump()`.10:["$","div","/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/phi-exposure-scan.md",{"id":"phi-exposure-scan","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"phi-exposure-scan"}],["$","$L2",null,{"content":"$1d","previewLines":3}]]}]
1544
- 1e:T1b86,# Upgrade litellm in llm-proxy-service
1392
+ Be thorough. Read the actual code — don't guess based on function names alone. When checking log statements, look at what the `extra` dict actually contains. When checking for model dumps, trace the model class to see what fields it includes. If a model only contains safe fields (IDs, timestamps, statuses), it's not a PHI exposure even if it's logged via `model_dump()`.12:T1b86,# Upgrade litellm in llm-proxy-service
1545
1393
 
1546
1394
  Upgrade the `litellm` dependency in `llm-proxy-service` to a new version, validating that all supported models have correct pricing.
1547
1395
 
@@ -1654,5 +1502,149 @@ After presenting findings to the user and getting their approval:
1654
1502
  4. Run `uv sync --all-packages` from the `platform-services/` directory to update the lock file
1655
1503
  5. Run `pnpm exec nx run llm-proxy-service:test` to verify tests pass
1656
1504
  6. Run `pnpm exec nx run llm-proxy-service:lint` and `pnpm exec nx run llm-proxy-service:type-check`
1657
- 7. Run `pnpm exec nx run embedding-service:test`, `pnpm exec nx run embedding-service:lint`, and `pnpm exec nx run embedding-service:type-check`11:["$","div","/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/upgrade-litellm.md",{"id":"upgrade-litellm","className":"border border-border rounded-sm p-5 scroll-mt-4 ","children":[["$","h3",null,{"className":"text-sm font-medium","children":"upgrade-litellm"}],["$","$L2",null,{"content":"$1e","previewLines":3}]]}]
1658
- 15:null
1505
+ 7. Run `pnpm exec nx run embedding-service:test`, `pnpm exec nx run embedding-service:lint`, and `pnpm exec nx run embedding-service:type-check`5:["$","div","/Users/gabry/Desktop/ps-copy/platform-services",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"font-mono text-xs text-text-dim","children":["[","PLATFORM-SERVICES","]"]}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/ps-copy/platform-services"}]]}],["$","$L2",null,{"commands":[{"name":"access-control-scan","body":"$e","filePath":"/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/access-control-scan.md","scope":{"type":"project","projectName":"platform-services","projectPath":"/Users/gabry/Desktop/ps-copy/platform-services"}},{"name":"add-llm-proxy-service-model","body":"$f","filePath":"/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/add-llm-proxy-service-model.md","scope":"$5:props:children:1:props:commands:0:scope"},{"name":"idor-scan","body":"$10","filePath":"/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/idor-scan.md","scope":"$5:props:children:1:props:commands:0:scope"},{"name":"phi-exposure-scan","body":"$11","filePath":"/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/phi-exposure-scan.md","scope":"$5:props:children:1:props:commands:0:scope"},{"name":"upgrade-litellm","body":"$12","filePath":"/Users/gabry/Desktop/ps-copy/platform-services/.claude/commands/upgrade-litellm.md","scope":"$5:props:children:1:props:commands:0:scope"}],"scopePath":"/Users/gabry/Desktop/ps-copy/platform-services"}]]}]
1506
+ 13:T1605,# Investigate WGS Ingestion Failure
1507
+
1508
+ You are investigating a WGS ingestion Step Function failure in production. Follow each step. Do NOT ask for user input -- work autonomously.
1509
+
1510
+ ## Input
1511
+
1512
+ $ARGUMENTS
1513
+
1514
+ ## Step 1: Parse the Alert
1515
+
1516
+ Extract from the input text: `correlationId`, `wgsIngestionId`, `sfnError`, `sfnStatus`.
1517
+
1518
+ If the input is missing required fields, write a report noting the parse failure and stop.
1519
+
1520
+ ## Step 2: Query Axiom
1521
+
1522
+ Use `mcp__axiom__queryDataset` with `startTime` = `now-24h` and `endTime` = `now`.
1523
+
1524
+ Trace the correlationId:
1525
+
1526
+ ```apl
1527
+ ['bioscope-prod']
1528
+ | where correlationId == "<correlationId>"
1529
+ | order by _time asc
1530
+ ```
1531
+
1532
+ Search by wgsIngestionId:
1533
+
1534
+ ```apl
1535
+ ['bioscope-prod']
1536
+ | where data.wgsIngestionId == "<wgsIngestionId>" or message contains "<wgsIngestionId>"
1537
+ | order by _time asc
1538
+ ```
1539
+
1540
+ Focus on ERROR-level entries. Record only the key log lines needed to explain the failure -- not the full trace.
1541
+
1542
+ ## Step 3: Cross-Reference Code
1543
+
1544
+ Read the `PLATFORM_SERVICES_PATH` and `INFRASTRUCTURE_PATH` environment variables to locate the repos.
1545
+
1546
+ ### Application code (platform-services)
1547
+
1548
+ 1. `$PLATFORM_SERVICES_PATH/packages/wgs_ingestion_service/src/wgs_ingestion_service/handlers/handle_sfn_failure.py`
1549
+ 2. `$PLATFORM_SERVICES_PATH/packages/wgs_ingestion_service/src/wgs_ingestion_service/handlers/handle_initiate_ingestion.py`
1550
+ 3. `$PLATFORM_SERVICES_PATH/packages/bioscope_types/src/bioscope_types/dynamodb/wgs_ingestions.py`
1551
+
1552
+ ### Infrastructure (Terraform)
1553
+
1554
+ If the error points to a Step Function state, Lambda config, IAM permissions, or resource limits, cross-reference these files:
1555
+
1556
+ 1. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/sfn.tf` -- Step Function state machine definition and pipeline flow
1557
+ 2. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/lambda.tf` -- Lambda function configuration (memory, timeout, layers)
1558
+ 3. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/iam.tf` -- IAM roles and policies for the pipeline
1559
+ 4. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/eventbridge.tf` -- EventBridge rule that triggers on SFN failures
1560
+ 5. `$INFRASTRUCTURE_PATH/modules/aws/wgs_ingestion/dynamodb.tf` -- DynamoDB table and index definitions
1561
+
1562
+ The execution name format is `{wgs_ingestion_id}_{kit_id}_{timestamp}`.
1563
+
1564
+ ## Step 4: Classify the Failure
1565
+
1566
+ **Default to Bug.** Only classify as Transient if you can point to specific evidence (see criteria below).
1567
+
1568
+ - **Bug**: Code error, unhandled exception, missing IAM permissions, missing config, infrastructure misconfiguration. Requires a code or infra fix. **This is the default classification when the root cause is unclear.**
1569
+ - **Transient**: A failure that meets ALL of these criteria:
1570
+ 1. The error is a network timeout, AWS throttling, or a known transient pattern (see below)
1571
+ 2. There is no underlying code/config/IAM issue that caused it
1572
+ 3. A redrive would be expected to succeed WITHOUT any code or infrastructure changes
1573
+ - **Data issue**: Bad input, missing files, malformed data. Requires manual intervention.
1574
+
1575
+ You MUST justify your classification in the Root Cause section. If classifying as Transient, explicitly state why a redrive would fix it without code changes.
1576
+
1577
+ ### Example Transient Errors
1578
+
1579
+ These LOOK like data issues but are known transient -- classify as **Transient**:
1580
+
1581
+ - **`INTERSECT_VARIANTS` / `KeyError: 'CHR:POS:A0:A1'` / "No variants in intersection"**: Intermittent failure in `pgsc_calc` during PRS generation. Resolves on redrive.
1582
+
1583
+ ### Example Bug Patterns
1584
+
1585
+ These may LOOK transient but are bugs -- classify as **Bug**:
1586
+
1587
+ - **S3 403 Forbidden on HeadObject/GetObject/PutObject**: Usually a missing IAM permission on the task role, not a temporary auth issue. Check the relevant IAM policy in infrastructure. Example: BIOENG-535 where `genomics-bam-subset-processor` was missing `s3:GetObject` on its output bucket.
1588
+ - **S3 404 Not Found on expected files**: Could indicate a missing deployment artifact, misconfigured path, or a race condition in the pipeline -- not transient.
1589
+ - **Persistent STS/credential errors on FARGATE_SPOT**: If the same error recurs on redrive or appears on non-spot tasks, it is an IAM issue, not credential expiration.
1590
+
1591
+ ## Step 5: Write the Report
1592
+
1593
+ Write the report file as: `reports/YYYY-MM-DD_<first-8-chars-of-wgsIngestionId>.md`
1594
+
1595
+ The `reports/` directory is in the current working directory. Verify with `Glob` that the directory exists before writing. If it does not exist, create it.
1596
+
1597
+ Keep the report concise. Only include log lines that are directly relevant to explaining the failure cause.
1598
+
1599
+ ```
1600
+ # WGS Ingestion Failure Report
1601
+
1602
+ ## Summary
1603
+
1604
+ | Field | Value |
1605
+ |-------|-------|
1606
+ | Date | YYYY-MM-DD HH:MM UTC |
1607
+ | Correlation ID | ... |
1608
+ | WGS Ingestion ID | ... |
1609
+ | Execution Name | ... |
1610
+ | SFN Error | ... |
1611
+ | SFN Status | ... |
1612
+
1613
+ ## Key Logs
1614
+
1615
+ Only the log lines that explain the failure (oldest first):
1616
+
1617
+ - `TIMESTAMP` [LEVEL] message (logGroup: ...)
1618
+
1619
+ ## Root Cause
1620
+
1621
+ <1-3 sentences. What failed and why.>
1622
+
1623
+ ## Classification
1624
+
1625
+ **<Transient | Bug | Data issue>**
1626
+
1627
+ ## Recommended Action
1628
+
1629
+ <1-2 sentences.>
1630
+
1631
+ ### Redrive JSON
1632
+
1633
+ If transient, include:
1634
+
1635
+ {
1636
+ "executionIds": ["<execution-name>"]
1637
+ }
1638
+
1639
+ Env-task name: `redrive-wgs-ingestion-execution`
1640
+ ```
1641
+
1642
+ ## Rules
1643
+
1644
+ - Do NOT ask for user input. Work fully autonomously.
1645
+ - Do NOT include PII/PHI. Only UUIDs, error codes, timestamps, status values.
1646
+ - Do NOT use Bash commands. Use only Read, Glob, Grep, Write, and mcp__axiom__queryDataset.
1647
+ - If Axiom queries fail, proceed with code analysis and note the gap in the report.6:["$","div","/Users/gabry/Desktop/wgs-ingestion-bot",{"className":"mb-8","children":[["$","div",null,{"className":"flex items-center gap-2 mb-3","children":[["$","span",null,{"className":"font-mono text-xs text-text-dim","children":["[","WGS-INGESTION-BOT","]"]}],["$","span",null,{"className":"text-xs text-text-dim font-mono","children":"~/Desktop/wgs-ingestion-bot"}]]}],["$","$L2",null,{"commands":[{"name":"investigate-wgs-ingestion","body":"$13","filePath":"/Users/gabry/Desktop/wgs-ingestion-bot/.claude/commands/investigate-wgs-ingestion.md","scope":{"type":"project","projectName":"wgs-ingestion-bot","projectPath":"/Users/gabry/Desktop/wgs-ingestion-bot"}}],"scopePath":"/Users/gabry/Desktop/wgs-ingestion-bot"}]]}]
1648
+ 7:["$","script","script-0",{"src":"/_next/static/chunks/04oemklgq9z0h.js","async":true}]
1649
+ 8:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}]
1650
+ 16:null
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[39756,["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
3
- 3:I[37457,["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
2
+ 2:I[39756,["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
3
+ 3:I[37457,["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"vFFhR9bZqGO0pHP7N7NNG"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"ykykNEJbtAXExgOj13bt9"}
@@ -7,9 +7,10 @@
7
7
  "lowPriorityFiles": [],
8
8
  "rootMainFiles": [
9
9
  "static/chunks/0bzupvr5gt3k9.js",
10
- "static/chunks/0y3~cortx~or~.js",
10
+ "static/chunks/04aem330ymbdp.js",
11
11
  "static/chunks/0bogtdbh.dcu1.js",
12
- "static/chunks/turbopack-06dy8k5p5cegf.js"
12
+ "static/chunks/0pokw498xojn-.js",
13
+ "static/chunks/turbopack-0vxtok8kx-1on.js"
13
14
  ],
14
15
  "pages": {},
15
16
  "ampFirstPages": []
@@ -1,10 +1,12 @@
1
1
  var R=require("../../chunks/ssr/[turbopack]_runtime.js")("server/app/hooks/page.js")
2
- R.c("server/chunks/ssr/[root-of-the-server]__0j~ozdd._.js")
2
+ R.c("server/chunks/ssr/[root-of-the-server]__0drsnbn._.js")
3
+ R.c("server/chunks/ssr/node_modules_next_dist_060d1m.._.js")
4
+ R.c("server/chunks/ssr/[root-of-the-server]__13f6exv._.js")
5
+ R.c("server/chunks/ssr/node_modules_06ooq~z._.js")
3
6
  R.c("server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dlz56b.js")
4
- R.c("server/chunks/ssr/node_modules_0sy8gnb._.js")
5
- R.c("server/chunks/ssr/[root-of-the-server]__0qk5gqw._.js")
6
- R.c("server/chunks/ssr/[root-of-the-server]__0beg-.s._.js")
7
- R.c("server/chunks/ssr/[root-of-the-server]__09z7o2x._.js")
7
+ R.c("server/chunks/ssr/[root-of-the-server]__0a6fhf4._.js")
8
+ R.c("server/chunks/ssr/[root-of-the-server]__0.angw.._.js")
9
+ R.c("server/chunks/ssr/node_modules_next_dist_compiled_0wewlb4._.js")
8
10
  R.c("server/chunks/ssr/[root-of-the-server]__0dey16.._.js")
9
11
  R.c("server/chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js")
10
12
  R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js")
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/@swc/helpers/package.json","../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/client/lib/console.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../node_modules/next/dist/compiled/ws/index.js","../../../../node_modules/next/dist/compiled/ws/package.json","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/picocolors.js","../../../../node_modules/next/dist/lib/scheduler.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../node_modules/next/dist/server/node-environment.js","../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../node_modules/next/dist/server/require-hook.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../node_modules/react/cjs/react.development.js","../../../../node_modules/react/cjs/react.production.js","../../../../node_modules/react/index.js","../../../../node_modules/react/package.json","../../chunks/ssr/[root-of-the-server]__09z7o2x._.js","../../chunks/ssr/[root-of-the-server]__0beg-.s._.js","../../chunks/ssr/[root-of-the-server]__0dey16.._.js","../../chunks/ssr/[root-of-the-server]__0j~ozdd._.js","../../chunks/ssr/[root-of-the-server]__0qk5gqw._.js","../../chunks/ssr/[root-of-the-server]__0y_d026._.js","../../chunks/ssr/[turbopack]_runtime.js","../../chunks/ssr/_0g8yqoe._.js","../../chunks/ssr/_next-internal_server_app_hooks_page_actions_0a_tx-6.js","../../chunks/ssr/node_modules_09w7yel._.js","../../chunks/ssr/node_modules_0sy8gnb._.js","../../chunks/ssr/node_modules_next_dist_0e1izl_._.js","../../chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js","../../chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dlz56b.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/@swc/helpers/package.json","../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/client/lib/console.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../node_modules/next/dist/compiled/ws/index.js","../../../../node_modules/next/dist/compiled/ws/package.json","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/picocolors.js","../../../../node_modules/next/dist/lib/scheduler.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../node_modules/next/dist/server/node-environment.js","../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../node_modules/next/dist/server/require-hook.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../node_modules/react/cjs/react.development.js","../../../../node_modules/react/cjs/react.production.js","../../../../node_modules/react/index.js","../../../../node_modules/react/package.json","../../chunks/ssr/[root-of-the-server]__0.angw.._.js","../../chunks/ssr/[root-of-the-server]__00-fvlp._.js","../../chunks/ssr/[root-of-the-server]__0a6fhf4._.js","../../chunks/ssr/[root-of-the-server]__0dey16.._.js","../../chunks/ssr/[root-of-the-server]__0drsnbn._.js","../../chunks/ssr/[root-of-the-server]__13f6exv._.js","../../chunks/ssr/[turbopack]_runtime.js","../../chunks/ssr/_0n0cdzu._.js","../../chunks/ssr/_next-internal_server_app_hooks_page_actions_0a_tx-6.js","../../chunks/ssr/node_modules_06ooq~z._.js","../../chunks/ssr/node_modules_09w7yel._.js","../../chunks/ssr/node_modules_next_dist_060d1m.._.js","../../chunks/ssr/node_modules_next_dist_0e1izl_._.js","../../chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js","../../chunks/ssr/node_modules_next_dist_compiled_0wewlb4._.js","../../chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dlz56b.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
@@ -1,3 +1,3 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/hooks/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/src/components/Sidebar.tsx <module evaluation>":{"id":22140,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/src/components/Sidebar.tsx":{"id":22140,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/0mmpyn9fv2fjf.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"22140":{"*":{"id":45209,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0y_d026._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0g8yqoe._.js","server/chunks/ssr/node_modules_09w7yel._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"22140":{"*":{"id":17875,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/layout":[{"path":"static/chunks/0xlrze18so95w.css","inlined":false}],"[project]/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/0xlrze18so95w.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/layout":["static/chunks/0mmpyn9fv2fjf.js","static/chunks/0d3shmwh5_nmn.js"],"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0mmpyn9fv2fjf.js","static/chunks/0d3shmwh5_nmn.js"]}};
2
+ globalThis.__RSC_MANIFEST["/hooks/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/src/components/Sidebar.tsx <module evaluation>":{"id":22140,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/src/components/Sidebar.tsx":{"id":22140,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/08fwcb._hc08b.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"22140":{"*":{"id":45209,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__00-fvlp._.js","server/chunks/ssr/node_modules_next_dist_0e1izl_._.js","server/chunks/ssr/_0n0cdzu._.js","server/chunks/ssr/node_modules_09w7yel._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"22140":{"*":{"id":17875,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/layout":[{"path":"static/chunks/0lb3l2a8_251j.css","inlined":false}],"[project]/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/0lb3l2a8_251j.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/layout":["static/chunks/08fwcb._hc08b.js","static/chunks/0d3shmwh5_nmn.js"],"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/08fwcb._hc08b.js","static/chunks/0d3shmwh5_nmn.js"]}};
3
3