shipscreens 0.1.6 → 0.1.7

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 (531) hide show
  1. package/README.md +14 -4
  2. package/bin/shipscreens.js +352 -18
  3. package/cli/commands/captureScreenshots.js +409 -0
  4. package/cli/commands/importScreenshots.js +377 -0
  5. package/cli/commands/inspectReleaseContext.js +607 -0
  6. package/cli/commands/planRelease.js +324 -0
  7. package/cli/commands/writeStarterConfig.js +233 -0
  8. package/cli/mcpServer.js +172 -3
  9. package/dist/.well-known/ai-agents.json +58 -11
  10. package/dist/.well-known/llms-full.txt +80 -17
  11. package/dist/.well-known/llms.txt +38 -12
  12. package/dist/.well-known/mcp-server.json +4 -4
  13. package/dist/ai-agents.json +58 -11
  14. package/dist/app/assets/AgentCli-nIqgOG-i.js +17 -0
  15. package/dist/app/assets/AgentCli-nIqgOG-i.js.map +1 -0
  16. package/dist/app/assets/AgentHandoffPanel-Bf_AJepG.js +2 -0
  17. package/dist/app/assets/AgentHandoffPanel-Bf_AJepG.js.map +1 -0
  18. package/dist/app/assets/AgentStarterWorkflowFigure-DW4SMMy7.js +2 -0
  19. package/dist/app/assets/AgentStarterWorkflowFigure-DW4SMMy7.js.map +1 -0
  20. package/dist/app/assets/App-BRKxkubQ.css +1 -0
  21. package/dist/app/assets/App-CZiyX8-L.js +14 -0
  22. package/dist/app/assets/App-CZiyX8-L.js.map +1 -0
  23. package/dist/app/assets/AppReviewAso-DYOCuqgV.js +4 -0
  24. package/dist/app/assets/AppReviewAso-DYOCuqgV.js.map +1 -0
  25. package/dist/app/assets/Cancelled-CP6V6uDb.js +2 -0
  26. package/dist/app/assets/Cancelled-CP6V6uDb.js.map +1 -0
  27. package/dist/app/assets/CopyButton-BFCx6EPg.js +2 -0
  28. package/dist/app/assets/CopyButton-BFCx6EPg.js.map +1 -0
  29. package/dist/app/assets/DesignPartner-B4J7f0Bx.js +4 -0
  30. package/dist/app/assets/DesignPartner-B4J7f0Bx.js.map +1 -0
  31. package/dist/app/assets/FastlaneScreenshots-cdZE6cGY.js +90 -0
  32. package/dist/app/assets/FastlaneScreenshots-cdZE6cGY.js.map +1 -0
  33. package/dist/app/assets/FirstExport-qfY7uE8r.js +6 -0
  34. package/dist/app/assets/FirstExport-qfY7uE8r.js.map +1 -0
  35. package/dist/app/assets/FitPanel-B1J0V1jK.js +2 -0
  36. package/dist/app/assets/FitPanel-B1J0V1jK.js.map +1 -0
  37. package/dist/app/assets/FivePanelFramework-C4yq58kM.js +62 -0
  38. package/dist/app/assets/FivePanelFramework-C4yq58kM.js.map +1 -0
  39. package/dist/app/assets/ForgotPassword-KF_HFGyb.js +2 -0
  40. package/dist/app/assets/ForgotPassword-KF_HFGyb.js.map +1 -0
  41. package/dist/app/assets/Landing-B_CvZDXJ.js +2 -0
  42. package/dist/app/assets/Landing-B_CvZDXJ.js.map +1 -0
  43. package/dist/app/assets/LanguageSwitcher-hFv9zl1u.js +2 -0
  44. package/dist/app/assets/LanguageSwitcher-hFv9zl1u.js.map +1 -0
  45. package/dist/app/assets/Legal-BwGbEjDk.js +2 -0
  46. package/dist/app/assets/Legal-BwGbEjDk.js.map +1 -0
  47. package/dist/app/assets/NotFound-Ba1Bw7uu.js +2 -0
  48. package/dist/app/assets/NotFound-Ba1Bw7uu.js.map +1 -0
  49. package/dist/app/assets/Pricing-Dt-V4Gqc.js +20 -0
  50. package/dist/app/assets/Pricing-Dt-V4Gqc.js.map +1 -0
  51. package/dist/app/assets/Privacy-C6MrXYPO.js +2 -0
  52. package/dist/app/assets/Privacy-C6MrXYPO.js.map +1 -0
  53. package/dist/app/assets/Proof-C3DDFAhm.js +20 -0
  54. package/dist/app/assets/Proof-C3DDFAhm.js.map +1 -0
  55. package/dist/app/assets/ReleaseFitIntake-DBeb9AFJ.js +27 -0
  56. package/dist/app/assets/ReleaseFitIntake-DBeb9AFJ.js.map +1 -0
  57. package/dist/app/assets/SalesEntryQuickRequestCard-Bfa93AYu.js +2 -0
  58. package/dist/app/assets/SalesEntryQuickRequestCard-Bfa93AYu.js.map +1 -0
  59. package/dist/app/assets/Security-C1OmAgom.js +2 -0
  60. package/dist/app/assets/Security-C1OmAgom.js.map +1 -0
  61. package/dist/app/assets/SignIn-C_wwnmvu.js +2 -0
  62. package/dist/app/assets/SignIn-C_wwnmvu.js.map +1 -0
  63. package/dist/app/assets/SignUp-Dm5HalC6.js +2 -0
  64. package/dist/app/assets/SignUp-Dm5HalC6.js.map +1 -0
  65. package/dist/app/assets/SiteHeader-CJqQ0pL3.js +2 -0
  66. package/dist/app/assets/SiteHeader-CJqQ0pL3.js.map +1 -0
  67. package/dist/app/assets/StickyMobileCta-REC3DROG.js +2 -0
  68. package/dist/app/assets/StickyMobileCta-REC3DROG.js.map +1 -0
  69. package/dist/app/assets/StoreAssetsPipeline-DNnnBp0D.js +6 -0
  70. package/dist/app/assets/StoreAssetsPipeline-DNnnBp0D.js.map +1 -0
  71. package/dist/app/assets/Success-D6b4wLPD.js +2 -0
  72. package/dist/app/assets/Success-D6b4wLPD.js.map +1 -0
  73. package/dist/app/assets/Terms-BMt39FQK.js +2 -0
  74. package/dist/app/assets/Terms-BMt39FQK.js.map +1 -0
  75. package/dist/app/assets/ToolGuardrailsPanel-Cclxwdrb.js +2 -0
  76. package/dist/app/assets/ToolGuardrailsPanel-Cclxwdrb.js.map +1 -0
  77. package/dist/app/assets/ToolsIndex-d1szo5bn.js +6 -0
  78. package/dist/app/assets/ToolsIndex-d1szo5bn.js.map +1 -0
  79. package/dist/app/assets/TrustSalesEntryPanel-DuncpgMs.js +2 -0
  80. package/dist/app/assets/TrustSalesEntryPanel-DuncpgMs.js.map +1 -0
  81. package/dist/app/assets/WorkloadCalculator-BbFWF2Ls.js +5 -0
  82. package/dist/app/assets/WorkloadCalculator-BbFWF2Ls.js.map +1 -0
  83. package/dist/app/assets/agentHandoff-BGmHqDwv.js +2 -0
  84. package/dist/app/assets/agentHandoff-BGmHqDwv.js.map +1 -0
  85. package/dist/app/assets/apiClient-3WVm94VW.js +2 -0
  86. package/dist/app/assets/apiClient-3WVm94VW.js.map +1 -0
  87. package/dist/app/assets/calculator-CofuwQa8.js +2 -0
  88. package/dist/app/assets/calculator-CofuwQa8.js.map +1 -0
  89. package/dist/app/assets/check-Fm2iQO64.js +2 -0
  90. package/dist/app/assets/check-Fm2iQO64.js.map +1 -0
  91. package/dist/app/assets/chevron-down-BIXHKpnf.js +2 -0
  92. package/dist/app/assets/chevron-down-BIXHKpnf.js.map +1 -0
  93. package/dist/app/assets/chunk-BHe-jwch.js +1 -0
  94. package/dist/app/assets/circle-check-X08qqy40.js +2 -0
  95. package/dist/app/assets/circle-check-X08qqy40.js.map +1 -0
  96. package/dist/app/assets/copy-KD-LYJ0z.js +2 -0
  97. package/dist/app/assets/copy-KD-LYJ0z.js.map +1 -0
  98. package/dist/app/assets/crop-K1LOmRty.js +2 -0
  99. package/dist/app/assets/crop-K1LOmRty.js.map +1 -0
  100. package/dist/app/assets/designPartnerRequest-DYqMElJd.js +2 -0
  101. package/dist/app/assets/designPartnerRequest-DYqMElJd.js.map +1 -0
  102. package/dist/app/assets/designPartnerSalesEntry-BpRINg3I.js +2 -0
  103. package/dist/app/assets/designPartnerSalesEntry-BpRINg3I.js.map +1 -0
  104. package/dist/app/assets/download-BXzoc-Y3.js +2 -0
  105. package/dist/app/assets/download-BXzoc-Y3.js.map +1 -0
  106. package/dist/app/assets/eye-CHvLhG2r.js +2 -0
  107. package/dist/app/assets/eye-CHvLhG2r.js.map +1 -0
  108. package/dist/app/assets/file-text-CU-ETLz1.js +2 -0
  109. package/dist/app/assets/file-text-CU-ETLz1.js.map +1 -0
  110. package/dist/app/assets/folder-tree-raVH0Y5V.js +2 -0
  111. package/dist/app/assets/folder-tree-raVH0Y5V.js.map +1 -0
  112. package/dist/app/assets/grid-3x3-cWuhGQfz.js +2 -0
  113. package/dist/app/assets/grid-3x3-cWuhGQfz.js.map +1 -0
  114. package/dist/app/assets/hardeningOffer-tkjlPDU-.js +2 -0
  115. package/dist/app/assets/hardeningOffer-tkjlPDU-.js.map +1 -0
  116. package/dist/app/assets/hero/agent-starter-workflow.png +0 -0
  117. package/dist/app/assets/hero/agent-starter-workflow.webp +0 -0
  118. package/dist/app/assets/html2canvas-pro.esm-OQkwCdu_.js +6 -0
  119. package/dist/app/assets/html2canvas-pro.esm-OQkwCdu_.js.map +1 -0
  120. package/dist/app/assets/index-BW_YmKvl.css +2 -0
  121. package/dist/app/assets/index-D7D6ZRCW.js +212 -0
  122. package/dist/app/assets/index-D7D6ZRCW.js.map +1 -0
  123. package/dist/app/assets/jszip.min-XyfP2hUJ.js +3 -0
  124. package/dist/app/assets/jszip.min-XyfP2hUJ.js.map +1 -0
  125. package/dist/app/assets/layout-grid-Cq_e979G.js +2 -0
  126. package/dist/app/assets/layout-grid-Cq_e979G.js.map +1 -0
  127. package/dist/app/assets/lock-Di7P18Ts.js +2 -0
  128. package/dist/app/assets/lock-Di7P18Ts.js.map +1 -0
  129. package/dist/app/assets/rocket-DHdrCHKD.js +2 -0
  130. package/dist/app/assets/rocket-DHdrCHKD.js.map +1 -0
  131. package/dist/app/assets/shield-check-CxpHNdp0.js +2 -0
  132. package/dist/app/assets/shield-check-CxpHNdp0.js.map +1 -0
  133. package/dist/app/assets/smartphone-DXKiqu57.js +2 -0
  134. package/dist/app/assets/smartphone-DXKiqu57.js.map +1 -0
  135. package/dist/app/assets/stripeClient-CuZgvzca.js +2 -0
  136. package/dist/app/assets/stripeClient-CuZgvzca.js.map +1 -0
  137. package/dist/app/assets/terminal-J0iyJTv2.js +2 -0
  138. package/dist/app/assets/terminal-J0iyJTv2.js.map +1 -0
  139. package/dist/app/assets/triangle-alert-BA0HP6zD.js +2 -0
  140. package/dist/app/assets/triangle-alert-BA0HP6zD.js.map +1 -0
  141. package/dist/app/assets/useAuth-CoS4r8yi.js +22 -0
  142. package/dist/app/assets/useAuth-CoS4r8yi.js.map +1 -0
  143. package/dist/app/assets/users-C-fz7pbn.js +2 -0
  144. package/dist/app/assets/users-C-fz7pbn.js.map +1 -0
  145. package/dist/app/index.html +9 -8
  146. package/dist/assets/AgentCli-nIqgOG-i.js +17 -0
  147. package/dist/assets/AgentCli-nIqgOG-i.js.map +1 -0
  148. package/dist/assets/AgentHandoffPanel-Bf_AJepG.js +2 -0
  149. package/dist/assets/AgentHandoffPanel-Bf_AJepG.js.map +1 -0
  150. package/dist/assets/AgentStarterWorkflowFigure-DW4SMMy7.js +2 -0
  151. package/dist/assets/AgentStarterWorkflowFigure-DW4SMMy7.js.map +1 -0
  152. package/dist/assets/App-BRKxkubQ.css +1 -0
  153. package/dist/assets/App-CZiyX8-L.js +14 -0
  154. package/dist/assets/App-CZiyX8-L.js.map +1 -0
  155. package/dist/assets/AppReviewAso-DYOCuqgV.js +4 -0
  156. package/dist/assets/AppReviewAso-DYOCuqgV.js.map +1 -0
  157. package/dist/assets/Cancelled-CP6V6uDb.js +2 -0
  158. package/dist/assets/Cancelled-CP6V6uDb.js.map +1 -0
  159. package/dist/assets/CopyButton-BFCx6EPg.js +2 -0
  160. package/dist/assets/CopyButton-BFCx6EPg.js.map +1 -0
  161. package/dist/assets/DesignPartner-B4J7f0Bx.js +4 -0
  162. package/dist/assets/DesignPartner-B4J7f0Bx.js.map +1 -0
  163. package/dist/assets/FastlaneScreenshots-cdZE6cGY.js +90 -0
  164. package/dist/assets/FastlaneScreenshots-cdZE6cGY.js.map +1 -0
  165. package/dist/assets/FirstExport-qfY7uE8r.js +6 -0
  166. package/dist/assets/FirstExport-qfY7uE8r.js.map +1 -0
  167. package/dist/assets/FitPanel-B1J0V1jK.js +2 -0
  168. package/dist/assets/FitPanel-B1J0V1jK.js.map +1 -0
  169. package/dist/assets/FivePanelFramework-C4yq58kM.js +62 -0
  170. package/dist/assets/FivePanelFramework-C4yq58kM.js.map +1 -0
  171. package/dist/assets/ForgotPassword-KF_HFGyb.js +2 -0
  172. package/dist/assets/ForgotPassword-KF_HFGyb.js.map +1 -0
  173. package/dist/assets/Landing-B_CvZDXJ.js +2 -0
  174. package/dist/assets/Landing-B_CvZDXJ.js.map +1 -0
  175. package/dist/assets/LanguageSwitcher-hFv9zl1u.js +2 -0
  176. package/dist/assets/LanguageSwitcher-hFv9zl1u.js.map +1 -0
  177. package/dist/assets/Legal-BwGbEjDk.js +2 -0
  178. package/dist/assets/Legal-BwGbEjDk.js.map +1 -0
  179. package/dist/assets/NotFound-Ba1Bw7uu.js +2 -0
  180. package/dist/assets/NotFound-Ba1Bw7uu.js.map +1 -0
  181. package/dist/assets/Pricing-Dt-V4Gqc.js +20 -0
  182. package/dist/assets/Pricing-Dt-V4Gqc.js.map +1 -0
  183. package/dist/assets/Privacy-C6MrXYPO.js +2 -0
  184. package/dist/assets/Privacy-C6MrXYPO.js.map +1 -0
  185. package/dist/assets/Proof-C3DDFAhm.js +20 -0
  186. package/dist/assets/Proof-C3DDFAhm.js.map +1 -0
  187. package/dist/assets/ReleaseFitIntake-DBeb9AFJ.js +27 -0
  188. package/dist/assets/ReleaseFitIntake-DBeb9AFJ.js.map +1 -0
  189. package/dist/assets/SalesEntryQuickRequestCard-Bfa93AYu.js +2 -0
  190. package/dist/assets/SalesEntryQuickRequestCard-Bfa93AYu.js.map +1 -0
  191. package/dist/assets/Security-C1OmAgom.js +2 -0
  192. package/dist/assets/Security-C1OmAgom.js.map +1 -0
  193. package/dist/assets/SignIn-C_wwnmvu.js +2 -0
  194. package/dist/assets/SignIn-C_wwnmvu.js.map +1 -0
  195. package/dist/assets/SignUp-Dm5HalC6.js +2 -0
  196. package/dist/assets/SignUp-Dm5HalC6.js.map +1 -0
  197. package/dist/assets/SiteHeader-CJqQ0pL3.js +2 -0
  198. package/dist/assets/SiteHeader-CJqQ0pL3.js.map +1 -0
  199. package/dist/assets/StickyMobileCta-REC3DROG.js +2 -0
  200. package/dist/assets/StickyMobileCta-REC3DROG.js.map +1 -0
  201. package/dist/assets/StoreAssetsPipeline-DNnnBp0D.js +6 -0
  202. package/dist/assets/StoreAssetsPipeline-DNnnBp0D.js.map +1 -0
  203. package/dist/assets/Success-D6b4wLPD.js +2 -0
  204. package/dist/assets/Success-D6b4wLPD.js.map +1 -0
  205. package/dist/assets/Terms-BMt39FQK.js +2 -0
  206. package/dist/assets/Terms-BMt39FQK.js.map +1 -0
  207. package/dist/assets/ToolGuardrailsPanel-Cclxwdrb.js +2 -0
  208. package/dist/assets/ToolGuardrailsPanel-Cclxwdrb.js.map +1 -0
  209. package/dist/assets/ToolsIndex-d1szo5bn.js +6 -0
  210. package/dist/assets/ToolsIndex-d1szo5bn.js.map +1 -0
  211. package/dist/assets/TrustSalesEntryPanel-DuncpgMs.js +2 -0
  212. package/dist/assets/TrustSalesEntryPanel-DuncpgMs.js.map +1 -0
  213. package/dist/assets/WorkloadCalculator-BbFWF2Ls.js +5 -0
  214. package/dist/assets/WorkloadCalculator-BbFWF2Ls.js.map +1 -0
  215. package/dist/assets/agentHandoff-BGmHqDwv.js +2 -0
  216. package/dist/assets/agentHandoff-BGmHqDwv.js.map +1 -0
  217. package/dist/assets/apiClient-3WVm94VW.js +2 -0
  218. package/dist/assets/apiClient-3WVm94VW.js.map +1 -0
  219. package/dist/assets/calculator-CofuwQa8.js +2 -0
  220. package/dist/assets/calculator-CofuwQa8.js.map +1 -0
  221. package/dist/assets/check-Fm2iQO64.js +2 -0
  222. package/dist/assets/check-Fm2iQO64.js.map +1 -0
  223. package/dist/assets/chevron-down-BIXHKpnf.js +2 -0
  224. package/dist/assets/chevron-down-BIXHKpnf.js.map +1 -0
  225. package/dist/assets/chunk-BHe-jwch.js +1 -0
  226. package/dist/assets/circle-check-X08qqy40.js +2 -0
  227. package/dist/assets/circle-check-X08qqy40.js.map +1 -0
  228. package/dist/assets/copy-KD-LYJ0z.js +2 -0
  229. package/dist/assets/copy-KD-LYJ0z.js.map +1 -0
  230. package/dist/assets/crop-K1LOmRty.js +2 -0
  231. package/dist/assets/crop-K1LOmRty.js.map +1 -0
  232. package/dist/assets/designPartnerRequest-DYqMElJd.js +2 -0
  233. package/dist/assets/designPartnerRequest-DYqMElJd.js.map +1 -0
  234. package/dist/assets/designPartnerSalesEntry-BpRINg3I.js +2 -0
  235. package/dist/assets/designPartnerSalesEntry-BpRINg3I.js.map +1 -0
  236. package/dist/assets/download-BXzoc-Y3.js +2 -0
  237. package/dist/assets/download-BXzoc-Y3.js.map +1 -0
  238. package/dist/assets/eye-CHvLhG2r.js +2 -0
  239. package/dist/assets/eye-CHvLhG2r.js.map +1 -0
  240. package/dist/assets/file-text-CU-ETLz1.js +2 -0
  241. package/dist/assets/file-text-CU-ETLz1.js.map +1 -0
  242. package/dist/assets/folder-tree-raVH0Y5V.js +2 -0
  243. package/dist/assets/folder-tree-raVH0Y5V.js.map +1 -0
  244. package/dist/assets/grid-3x3-cWuhGQfz.js +2 -0
  245. package/dist/assets/grid-3x3-cWuhGQfz.js.map +1 -0
  246. package/dist/assets/hardeningOffer-tkjlPDU-.js +2 -0
  247. package/dist/assets/hardeningOffer-tkjlPDU-.js.map +1 -0
  248. package/dist/assets/hero/agent-starter-workflow.png +0 -0
  249. package/dist/assets/hero/agent-starter-workflow.webp +0 -0
  250. package/dist/assets/html2canvas-pro.esm-OQkwCdu_.js +6 -0
  251. package/dist/assets/html2canvas-pro.esm-OQkwCdu_.js.map +1 -0
  252. package/dist/assets/index-BW_YmKvl.css +2 -0
  253. package/dist/assets/index-D7D6ZRCW.js +212 -0
  254. package/dist/assets/index-D7D6ZRCW.js.map +1 -0
  255. package/dist/assets/jszip.min-XyfP2hUJ.js +3 -0
  256. package/dist/assets/jszip.min-XyfP2hUJ.js.map +1 -0
  257. package/dist/assets/layout-grid-Cq_e979G.js +2 -0
  258. package/dist/assets/layout-grid-Cq_e979G.js.map +1 -0
  259. package/dist/assets/lock-Di7P18Ts.js +2 -0
  260. package/dist/assets/lock-Di7P18Ts.js.map +1 -0
  261. package/dist/assets/rocket-DHdrCHKD.js +2 -0
  262. package/dist/assets/rocket-DHdrCHKD.js.map +1 -0
  263. package/dist/assets/shield-check-CxpHNdp0.js +2 -0
  264. package/dist/assets/shield-check-CxpHNdp0.js.map +1 -0
  265. package/dist/assets/smartphone-DXKiqu57.js +2 -0
  266. package/dist/assets/smartphone-DXKiqu57.js.map +1 -0
  267. package/dist/assets/stripeClient-CuZgvzca.js +2 -0
  268. package/dist/assets/stripeClient-CuZgvzca.js.map +1 -0
  269. package/dist/assets/terminal-J0iyJTv2.js +2 -0
  270. package/dist/assets/terminal-J0iyJTv2.js.map +1 -0
  271. package/dist/assets/triangle-alert-BA0HP6zD.js +2 -0
  272. package/dist/assets/triangle-alert-BA0HP6zD.js.map +1 -0
  273. package/dist/assets/useAuth-CoS4r8yi.js +22 -0
  274. package/dist/assets/useAuth-CoS4r8yi.js.map +1 -0
  275. package/dist/assets/users-C-fz7pbn.js +2 -0
  276. package/dist/assets/users-C-fz7pbn.js.map +1 -0
  277. package/dist/cancelled/index.html +3 -2
  278. package/dist/design-partner/index.html +6 -5
  279. package/dist/downloads/shipscreens-github-actions-template.yml +1 -1
  280. package/dist/forgot-password/index.html +3 -2
  281. package/dist/index.html +9 -8
  282. package/dist/legal/index.html +3 -2
  283. package/dist/llms-full.txt +80 -17
  284. package/dist/llms.txt +38 -12
  285. package/dist/mcp-server.json +4 -4
  286. package/dist/pricing/index.html +6 -5
  287. package/dist/privacy/index.html +3 -2
  288. package/dist/proof/index.html +6 -5
  289. package/dist/security/index.html +3 -2
  290. package/dist/signin/index.html +3 -2
  291. package/dist/signup/index.html +3 -2
  292. package/dist/success/index.html +3 -2
  293. package/dist/terms/index.html +3 -2
  294. package/dist/tools/5-panel-screenshot-framework/index.html +6 -5
  295. package/dist/tools/agent-cli/index.html +8 -7
  296. package/dist/tools/app-review-aso/index.html +6 -5
  297. package/dist/tools/app-store-localization-screenshot-automation/index.html +8 -7
  298. package/dist/tools/app-store-screenshot-automation/index.html +8 -7
  299. package/dist/tools/app-store-screenshot-requirements-checklist/index.html +8 -7
  300. package/dist/tools/claude-code-mcp-screenshot-automation/index.html +8 -7
  301. package/dist/tools/cursor-mcp-screenshot-automation/index.html +8 -7
  302. package/dist/tools/deterministic-screenshot-reruns/index.html +8 -7
  303. package/dist/tools/device-locale-screenshot-matrix/index.html +8 -7
  304. package/dist/tools/fastlane-screenshot-folder-structure/index.html +8 -7
  305. package/dist/tools/fastlane-screenshot-pipeline/index.html +8 -7
  306. package/dist/tools/fastlane-screenshots/index.html +6 -5
  307. package/dist/tools/first-export/index.html +6 -5
  308. package/dist/tools/gemini-cli-mcp-screenshot-automation/index.html +8 -7
  309. package/dist/tools/google-play-screenshot-automation/index.html +8 -7
  310. package/dist/tools/google-play-screenshot-requirements-checklist/index.html +8 -7
  311. package/dist/tools/index.html +6 -5
  312. package/dist/tools/ipad-screenshot-review-requirements/index.html +8 -7
  313. package/dist/tools/openai-responses-tool-screenshot-automation/index.html +8 -7
  314. package/dist/tools/screenshot-ci-pipeline/index.html +8 -7
  315. package/dist/tools/screenshot-naming-order-drift/index.html +8 -7
  316. package/dist/tools/screenshot-workload-calculator/index.html +6 -5
  317. package/dist/tools/store-assets-pipeline/index.html +3 -2
  318. package/dist/tools/vscode-copilot-mcp-screenshot-automation/index.html +8 -7
  319. package/package.json +7 -7
  320. package/dist/app/assets/AgentCli-xKYtzL3B.js +0 -17
  321. package/dist/app/assets/AgentCli-xKYtzL3B.js.map +0 -1
  322. package/dist/app/assets/App-C1cNw_fn.js +0 -13
  323. package/dist/app/assets/App-C1cNw_fn.js.map +0 -1
  324. package/dist/app/assets/App-oQfE_p3A.css +0 -1
  325. package/dist/app/assets/AppReviewAso-CaIT-L7Z.js +0 -4
  326. package/dist/app/assets/AppReviewAso-CaIT-L7Z.js.map +0 -1
  327. package/dist/app/assets/Cancelled-Dmw7PTD-.js +0 -2
  328. package/dist/app/assets/Cancelled-Dmw7PTD-.js.map +0 -1
  329. package/dist/app/assets/CopyButton-CPRHmu8l.js +0 -2
  330. package/dist/app/assets/CopyButton-CPRHmu8l.js.map +0 -1
  331. package/dist/app/assets/DesignPartner-Ckp1GhNv.js +0 -4
  332. package/dist/app/assets/DesignPartner-Ckp1GhNv.js.map +0 -1
  333. package/dist/app/assets/FastlaneScreenshots-CB-zv5Us.js +0 -100
  334. package/dist/app/assets/FastlaneScreenshots-CB-zv5Us.js.map +0 -1
  335. package/dist/app/assets/FirstExport-RXbvVQdK.js +0 -6
  336. package/dist/app/assets/FirstExport-RXbvVQdK.js.map +0 -1
  337. package/dist/app/assets/FitPanel-ic91y-49.js +0 -2
  338. package/dist/app/assets/FitPanel-ic91y-49.js.map +0 -1
  339. package/dist/app/assets/FivePanelFramework-BZKNcycb.js +0 -62
  340. package/dist/app/assets/FivePanelFramework-BZKNcycb.js.map +0 -1
  341. package/dist/app/assets/ForgotPassword-CKOfAvWk.js +0 -2
  342. package/dist/app/assets/ForgotPassword-CKOfAvWk.js.map +0 -1
  343. package/dist/app/assets/Landing-D0cuDDUk.js +0 -2
  344. package/dist/app/assets/Landing-D0cuDDUk.js.map +0 -1
  345. package/dist/app/assets/LanguageSwitcher-BrToLEgF.js +0 -2
  346. package/dist/app/assets/LanguageSwitcher-BrToLEgF.js.map +0 -1
  347. package/dist/app/assets/Legal-Cm-hVzjY.js +0 -2
  348. package/dist/app/assets/Legal-Cm-hVzjY.js.map +0 -1
  349. package/dist/app/assets/NotFound-B0I6I440.js +0 -2
  350. package/dist/app/assets/NotFound-B0I6I440.js.map +0 -1
  351. package/dist/app/assets/Pricing-p-NIjjtK.js +0 -29
  352. package/dist/app/assets/Pricing-p-NIjjtK.js.map +0 -1
  353. package/dist/app/assets/Privacy-BhfPkK0y.js +0 -2
  354. package/dist/app/assets/Privacy-BhfPkK0y.js.map +0 -1
  355. package/dist/app/assets/Proof-D-7QbTGX.js +0 -20
  356. package/dist/app/assets/Proof-D-7QbTGX.js.map +0 -1
  357. package/dist/app/assets/Security-DFafJQIT.js +0 -2
  358. package/dist/app/assets/Security-DFafJQIT.js.map +0 -1
  359. package/dist/app/assets/SignIn--6nNsUCm.js +0 -2
  360. package/dist/app/assets/SignIn--6nNsUCm.js.map +0 -1
  361. package/dist/app/assets/SignUp-yh5ydmFf.js +0 -2
  362. package/dist/app/assets/SignUp-yh5ydmFf.js.map +0 -1
  363. package/dist/app/assets/SiteHeader-NTK-cM9O.js +0 -2
  364. package/dist/app/assets/SiteHeader-NTK-cM9O.js.map +0 -1
  365. package/dist/app/assets/StickyMobileCta-DVXAyhaH.js +0 -2
  366. package/dist/app/assets/StickyMobileCta-DVXAyhaH.js.map +0 -1
  367. package/dist/app/assets/StoreAssetsPipeline-Cbs1bNK5.js +0 -6
  368. package/dist/app/assets/StoreAssetsPipeline-Cbs1bNK5.js.map +0 -1
  369. package/dist/app/assets/Success-C3n0m1XU.js +0 -2
  370. package/dist/app/assets/Success-C3n0m1XU.js.map +0 -1
  371. package/dist/app/assets/Terms-C72ybAwA.js +0 -2
  372. package/dist/app/assets/Terms-C72ybAwA.js.map +0 -1
  373. package/dist/app/assets/ToolGuardrailsPanel-meKxUeSB.js +0 -2
  374. package/dist/app/assets/ToolGuardrailsPanel-meKxUeSB.js.map +0 -1
  375. package/dist/app/assets/ToolsIndex-CnvNTvyW.js +0 -6
  376. package/dist/app/assets/ToolsIndex-CnvNTvyW.js.map +0 -1
  377. package/dist/app/assets/WorkloadCalculator-CK4qVUcQ.js +0 -5
  378. package/dist/app/assets/WorkloadCalculator-CK4qVUcQ.js.map +0 -1
  379. package/dist/app/assets/arrow-right-Dglia5EE.js +0 -2
  380. package/dist/app/assets/arrow-right-Dglia5EE.js.map +0 -1
  381. package/dist/app/assets/calculator-CAgtsVuH.js +0 -2
  382. package/dist/app/assets/calculator-CAgtsVuH.js.map +0 -1
  383. package/dist/app/assets/check-B5h9hATV.js +0 -2
  384. package/dist/app/assets/check-B5h9hATV.js.map +0 -1
  385. package/dist/app/assets/chevron-down-By2Ts8dG.js +0 -2
  386. package/dist/app/assets/chevron-down-By2Ts8dG.js.map +0 -1
  387. package/dist/app/assets/circle-check-DaJ6APMi.js +0 -2
  388. package/dist/app/assets/circle-check-DaJ6APMi.js.map +0 -1
  389. package/dist/app/assets/clipboard-copy-IDfWU9SE.js +0 -2
  390. package/dist/app/assets/clipboard-copy-IDfWU9SE.js.map +0 -1
  391. package/dist/app/assets/copy-KSn4Rc2b.js +0 -2
  392. package/dist/app/assets/copy-KSn4Rc2b.js.map +0 -1
  393. package/dist/app/assets/crop-C9hwiw0i.js +0 -2
  394. package/dist/app/assets/crop-C9hwiw0i.js.map +0 -1
  395. package/dist/app/assets/download-eqwxO8bs.js +0 -2
  396. package/dist/app/assets/download-eqwxO8bs.js.map +0 -1
  397. package/dist/app/assets/eye-Dg61f0nU.js +0 -2
  398. package/dist/app/assets/eye-Dg61f0nU.js.map +0 -1
  399. package/dist/app/assets/file-text-BQPKCil3.js +0 -2
  400. package/dist/app/assets/file-text-BQPKCil3.js.map +0 -1
  401. package/dist/app/assets/folder-tree-9hq6oigy.js +0 -2
  402. package/dist/app/assets/folder-tree-9hq6oigy.js.map +0 -1
  403. package/dist/app/assets/grid-3x3-BHXRyOIx.js +0 -2
  404. package/dist/app/assets/grid-3x3-BHXRyOIx.js.map +0 -1
  405. package/dist/app/assets/index-my6BmN7T.js +0 -204
  406. package/dist/app/assets/index-my6BmN7T.js.map +0 -1
  407. package/dist/app/assets/index-rv91vbLH.css +0 -1
  408. package/dist/app/assets/layout-grid-DDQvnEgx.js +0 -2
  409. package/dist/app/assets/layout-grid-DDQvnEgx.js.map +0 -1
  410. package/dist/app/assets/rocket-0KMviRpJ.js +0 -2
  411. package/dist/app/assets/rocket-0KMviRpJ.js.map +0 -1
  412. package/dist/app/assets/shield-check-BvKEQ2hc.js +0 -2
  413. package/dist/app/assets/shield-check-BvKEQ2hc.js.map +0 -1
  414. package/dist/app/assets/signIn-Ckla1_0O.js +0 -2
  415. package/dist/app/assets/signIn-Ckla1_0O.js.map +0 -1
  416. package/dist/app/assets/smartphone-I0w1b2DV.js +0 -2
  417. package/dist/app/assets/smartphone-I0w1b2DV.js.map +0 -1
  418. package/dist/app/assets/terminal-CLpUSQqd.js +0 -2
  419. package/dist/app/assets/terminal-CLpUSQqd.js.map +0 -1
  420. package/dist/app/assets/triangle-alert-w7TZ0yy2.js +0 -2
  421. package/dist/app/assets/triangle-alert-w7TZ0yy2.js.map +0 -1
  422. package/dist/app/assets/useAuth-N3hsUaDj.js +0 -4
  423. package/dist/app/assets/useAuth-N3hsUaDj.js.map +0 -1
  424. package/dist/app/assets/users-DsQdkuR3.js +0 -2
  425. package/dist/app/assets/users-DsQdkuR3.js.map +0 -1
  426. package/dist/assets/AgentCli-xKYtzL3B.js +0 -17
  427. package/dist/assets/AgentCli-xKYtzL3B.js.map +0 -1
  428. package/dist/assets/App-C1cNw_fn.js +0 -13
  429. package/dist/assets/App-C1cNw_fn.js.map +0 -1
  430. package/dist/assets/App-oQfE_p3A.css +0 -1
  431. package/dist/assets/AppReviewAso-CaIT-L7Z.js +0 -4
  432. package/dist/assets/AppReviewAso-CaIT-L7Z.js.map +0 -1
  433. package/dist/assets/Cancelled-Dmw7PTD-.js +0 -2
  434. package/dist/assets/Cancelled-Dmw7PTD-.js.map +0 -1
  435. package/dist/assets/CopyButton-CPRHmu8l.js +0 -2
  436. package/dist/assets/CopyButton-CPRHmu8l.js.map +0 -1
  437. package/dist/assets/DesignPartner-Ckp1GhNv.js +0 -4
  438. package/dist/assets/DesignPartner-Ckp1GhNv.js.map +0 -1
  439. package/dist/assets/FastlaneScreenshots-CB-zv5Us.js +0 -100
  440. package/dist/assets/FastlaneScreenshots-CB-zv5Us.js.map +0 -1
  441. package/dist/assets/FirstExport-RXbvVQdK.js +0 -6
  442. package/dist/assets/FirstExport-RXbvVQdK.js.map +0 -1
  443. package/dist/assets/FitPanel-ic91y-49.js +0 -2
  444. package/dist/assets/FitPanel-ic91y-49.js.map +0 -1
  445. package/dist/assets/FivePanelFramework-BZKNcycb.js +0 -62
  446. package/dist/assets/FivePanelFramework-BZKNcycb.js.map +0 -1
  447. package/dist/assets/ForgotPassword-CKOfAvWk.js +0 -2
  448. package/dist/assets/ForgotPassword-CKOfAvWk.js.map +0 -1
  449. package/dist/assets/Landing-D0cuDDUk.js +0 -2
  450. package/dist/assets/Landing-D0cuDDUk.js.map +0 -1
  451. package/dist/assets/LanguageSwitcher-BrToLEgF.js +0 -2
  452. package/dist/assets/LanguageSwitcher-BrToLEgF.js.map +0 -1
  453. package/dist/assets/Legal-Cm-hVzjY.js +0 -2
  454. package/dist/assets/Legal-Cm-hVzjY.js.map +0 -1
  455. package/dist/assets/NotFound-B0I6I440.js +0 -2
  456. package/dist/assets/NotFound-B0I6I440.js.map +0 -1
  457. package/dist/assets/Pricing-p-NIjjtK.js +0 -29
  458. package/dist/assets/Pricing-p-NIjjtK.js.map +0 -1
  459. package/dist/assets/Privacy-BhfPkK0y.js +0 -2
  460. package/dist/assets/Privacy-BhfPkK0y.js.map +0 -1
  461. package/dist/assets/Proof-D-7QbTGX.js +0 -20
  462. package/dist/assets/Proof-D-7QbTGX.js.map +0 -1
  463. package/dist/assets/Security-DFafJQIT.js +0 -2
  464. package/dist/assets/Security-DFafJQIT.js.map +0 -1
  465. package/dist/assets/SignIn--6nNsUCm.js +0 -2
  466. package/dist/assets/SignIn--6nNsUCm.js.map +0 -1
  467. package/dist/assets/SignUp-yh5ydmFf.js +0 -2
  468. package/dist/assets/SignUp-yh5ydmFf.js.map +0 -1
  469. package/dist/assets/SiteHeader-NTK-cM9O.js +0 -2
  470. package/dist/assets/SiteHeader-NTK-cM9O.js.map +0 -1
  471. package/dist/assets/StickyMobileCta-DVXAyhaH.js +0 -2
  472. package/dist/assets/StickyMobileCta-DVXAyhaH.js.map +0 -1
  473. package/dist/assets/StoreAssetsPipeline-Cbs1bNK5.js +0 -6
  474. package/dist/assets/StoreAssetsPipeline-Cbs1bNK5.js.map +0 -1
  475. package/dist/assets/Success-C3n0m1XU.js +0 -2
  476. package/dist/assets/Success-C3n0m1XU.js.map +0 -1
  477. package/dist/assets/Terms-C72ybAwA.js +0 -2
  478. package/dist/assets/Terms-C72ybAwA.js.map +0 -1
  479. package/dist/assets/ToolGuardrailsPanel-meKxUeSB.js +0 -2
  480. package/dist/assets/ToolGuardrailsPanel-meKxUeSB.js.map +0 -1
  481. package/dist/assets/ToolsIndex-CnvNTvyW.js +0 -6
  482. package/dist/assets/ToolsIndex-CnvNTvyW.js.map +0 -1
  483. package/dist/assets/WorkloadCalculator-CK4qVUcQ.js +0 -5
  484. package/dist/assets/WorkloadCalculator-CK4qVUcQ.js.map +0 -1
  485. package/dist/assets/arrow-right-Dglia5EE.js +0 -2
  486. package/dist/assets/arrow-right-Dglia5EE.js.map +0 -1
  487. package/dist/assets/calculator-CAgtsVuH.js +0 -2
  488. package/dist/assets/calculator-CAgtsVuH.js.map +0 -1
  489. package/dist/assets/check-B5h9hATV.js +0 -2
  490. package/dist/assets/check-B5h9hATV.js.map +0 -1
  491. package/dist/assets/chevron-down-By2Ts8dG.js +0 -2
  492. package/dist/assets/chevron-down-By2Ts8dG.js.map +0 -1
  493. package/dist/assets/circle-check-DaJ6APMi.js +0 -2
  494. package/dist/assets/circle-check-DaJ6APMi.js.map +0 -1
  495. package/dist/assets/clipboard-copy-IDfWU9SE.js +0 -2
  496. package/dist/assets/clipboard-copy-IDfWU9SE.js.map +0 -1
  497. package/dist/assets/copy-KSn4Rc2b.js +0 -2
  498. package/dist/assets/copy-KSn4Rc2b.js.map +0 -1
  499. package/dist/assets/crop-C9hwiw0i.js +0 -2
  500. package/dist/assets/crop-C9hwiw0i.js.map +0 -1
  501. package/dist/assets/download-eqwxO8bs.js +0 -2
  502. package/dist/assets/download-eqwxO8bs.js.map +0 -1
  503. package/dist/assets/eye-Dg61f0nU.js +0 -2
  504. package/dist/assets/eye-Dg61f0nU.js.map +0 -1
  505. package/dist/assets/file-text-BQPKCil3.js +0 -2
  506. package/dist/assets/file-text-BQPKCil3.js.map +0 -1
  507. package/dist/assets/folder-tree-9hq6oigy.js +0 -2
  508. package/dist/assets/folder-tree-9hq6oigy.js.map +0 -1
  509. package/dist/assets/grid-3x3-BHXRyOIx.js +0 -2
  510. package/dist/assets/grid-3x3-BHXRyOIx.js.map +0 -1
  511. package/dist/assets/index-my6BmN7T.js +0 -204
  512. package/dist/assets/index-my6BmN7T.js.map +0 -1
  513. package/dist/assets/index-rv91vbLH.css +0 -1
  514. package/dist/assets/layout-grid-DDQvnEgx.js +0 -2
  515. package/dist/assets/layout-grid-DDQvnEgx.js.map +0 -1
  516. package/dist/assets/rocket-0KMviRpJ.js +0 -2
  517. package/dist/assets/rocket-0KMviRpJ.js.map +0 -1
  518. package/dist/assets/shield-check-BvKEQ2hc.js +0 -2
  519. package/dist/assets/shield-check-BvKEQ2hc.js.map +0 -1
  520. package/dist/assets/signIn-Ckla1_0O.js +0 -2
  521. package/dist/assets/signIn-Ckla1_0O.js.map +0 -1
  522. package/dist/assets/smartphone-I0w1b2DV.js +0 -2
  523. package/dist/assets/smartphone-I0w1b2DV.js.map +0 -1
  524. package/dist/assets/terminal-CLpUSQqd.js +0 -2
  525. package/dist/assets/terminal-CLpUSQqd.js.map +0 -1
  526. package/dist/assets/triangle-alert-w7TZ0yy2.js +0 -2
  527. package/dist/assets/triangle-alert-w7TZ0yy2.js.map +0 -1
  528. package/dist/assets/useAuth-N3hsUaDj.js +0 -4
  529. package/dist/assets/useAuth-N3hsUaDj.js.map +0 -1
  530. package/dist/assets/users-DsQdkuR3.js +0 -2
  531. package/dist/assets/users-DsQdkuR3.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentCli-xKYtzL3B.js","sources":["../../src/pages/AgentCli.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { ArrowRight, CheckCircle2, ChevronDown, ClipboardCopy, Download, Terminal } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport CopyButton from '../components/CopyButton';\nimport FitPanel from '../components/FitPanel';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent as baseTrackEvent, trackEventAndFollowLink as baseTrackEventAndFollowLink } from '../lib/analytics';\n\nconst normalizeLang = (lang) => {\n const base = (lang || '').split('-')[0];\n return base === 'ja' ? 'ja' : 'en';\n};\n\nconst withEntrySource = (href, entrySource) => {\n if (!entrySource) return href;\n const [beforeHash, hash = ''] = String(href || '').split('#');\n const separator = beforeHash.includes('?') ? '&' : '?';\n return `${beforeHash}${separator}entry_source=${encodeURIComponent(entrySource)}${hash ? `#${hash}` : ''}`;\n};\n\nconst COPY = {\n en: {\n badge: 'Agent + CLI quickstart',\n title: 'Keep your design stack. Make screenshot reruns deterministic in CI.',\n subtitle:\n 'Run shipscreens wizard (or init) around the screenshots you already have, then build deterministic Fastlane-ready exports locally or in CI. ShipScreens is not another screenshot generator; it adds a non-interactive CLI/MCP lane, lock/verify/stage guardrails, stable panel order, and upload-safe output roots.',\n painLine: 'Built for teams where Figma/AI/manual exports already create images, but release week still breaks on panel order, naming, iPad/review checks, upload roots, or agent/CI handoff.',\n ctas: {\n primary: 'Run CLI quickstart',\n unlockPro: 'Unlock Pro (CLI)',\n goPro: 'Unlock Pro (CLI)',\n sample: 'Open sample project',\n },\n trustTitle: 'Check trust basics before upgrade',\n trustLinks: {\n pricing: 'Pricing',\n terms: 'Terms',\n privacy: 'Privacy',\n legal: 'Legal (Japan)',\n security: 'Security',\n proof: 'Proof',\n },\n demoTitle: 'Run a demo export (no assets required)',\n demoBody:\n 'Creates a throwaway demo project, then runs validate → lock → build → verify → stage so you can test a full deterministic upload-ready flow (folders + ZIP).',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: [\n 'Project inputs: shipscreens.config.yml + assets/ + shipscreens.lock.json',\n 'Build outputs: fastlane/ + fastlane_assets.zip (deterministic artifact)',\n 'Staged upload root: stage/ (clean tree for deliver/supply)',\n ],\n demoNote: 'First run may take longer while npx downloads the package. Delete the demo folder anytime.',\n steps: [\n {\n title: 'Scaffold config',\n body: 'Run shipscreens wizard (step-by-step) or init to create the contract around your existing PNGs and copy.',\n },\n {\n title: 'Replace PNGs + copy',\n body: 'Swap in real screenshots, set panel #1 to one concrete outcome, and lock naming/order before build.',\n },\n {\n title: 'Build + verify + stage',\n body: 'Run build/verify/stage to generate clean upload roots and catch path drift, panel-order drift, and mixed-folder mistakes before upload.',\n },\n ],\n preflightTitle: 'Before you run (prep checklist)',\n preflightBody: 'Have these ready so the CLI can run end-to-end without prompts.',\n preflightBullets: [\n 'PNG screenshots exist for every slide/locale/device path.',\n 'Locales + devices are finalized (output structure depends on them).',\n 'Panel #1 outcome sentence is finalized per locale.',\n 'Copy text per locale is ready (config or CSV).',\n 'Background/logo assets are final if used.',\n ],\n preflightNote: 'agent-run stops early if any PNG is missing or still a placeholder.',\n heroQuickstartTitle: '2-step quickstart (raw mode)',\n heroQuickstartBody: 'Fastest path: wizard + build. Add verify/stage right after first pass to lock in stable reruns.',\n heroQuickstartCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n heroProLabel: 'Then unlock Pro:',\n heroProCmd: 'npx --yes shipscreens auth login',\n allCommandsLabel: 'Copy all commands',\n allCommandsNote: 'Includes raw + rendered + auth.',\n allCommandsSections: {\n hero: '2-step quickstart (raw mode)',\n local: 'Local quickstart (raw mode)',\n rendered: 'CI quickstart (rendered mode)',\n auth: 'CLI auth',\n authManual: 'CLI auth (manual)',\n },\n pathsTitle: 'Recommended quickstart (raw mode)',\n paths: [\n {\n id: 'raw',\n badge: 'RAW',\n title: 'No browser (raw mode)',\n body: 'Fastest path. Uses your PNGs directly; no Playwright required.',\n cmdKey: 'local',\n },\n {\n id: 'rendered',\n badge: 'RENDERED',\n title: 'UI-grade render (Playwright)',\n body: 'Headless Chromium runs the app renderer for UI-grade output.',\n cmdKey: 'rendered',\n },\n ],\n localQuickstartTitle: 'Local quickstart (no browser)',\n localQuickstartBody: 'Start here with raw mode; keep verify/stage in the loop for upload safety.',\n localQuickstartCmd: [\n 'npx --yes shipscreens wizard',\n '# or: npx --yes shipscreens init',\n '# replace assets/en-US/01.png..05.png with your real screenshots',\n '# optional: npx --yes shipscreens copy import --csv copy.csv --import-mode merge',\n '# optional (submission QA): npx --yes shipscreens copy check --strict --write-pseudo-csv out/agent/copy-pseudo.csv --write-report-json out/agent/copy-check-report.json',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n 'npx --yes shipscreens verify --out out/agent --zip --profile appstore',\n '# optional: npx --yes shipscreens stage --from out/agent --out out/agent-stage --profile appstore',\n ].join('\\n'),\n proUnlockTitle: 'Unlock Pro (CLI)',\n proUnlockBody:\n 'Once release-safe reruns work, run CLI auth to remove the watermark and unlock full matrix exports + copy import.',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: 'Completes a one-time browser sign-in; then rerun build with --require-pro.',\n localTitle: 'Local-first execution (no uploads to ShipScreens)',\n localBullets: [\n 'Raw mode runs without Playwright or a browser.',\n 'Rendered mode uses headless Chromium locally or in CI.',\n 'The same contract can be called through the stdio MCP server for coding-agent workflows.',\n 'Screenshots stay on your machine (store upload still required).',\n ],\n promptTitle: 'Agent prompt (copy/paste)',\n promptBody: 'Use this to have an agent generate config + CSV reproducibly.',\n prompt: [\n 'You are preparing ShipScreens inputs for a local/CI CLI pipeline.',\n 'Output exactly two files in plain text with clear file markers:',\n '',\n 'FILE: shipscreens.config.yml',\n '<YAML>',\n '',\n 'FILE: copy.csv',\n '<CSV>',\n '',\n 'Constraints:',\n '- Use ASCII only.',\n '- Do not generate images. Only reference PNG file paths that will exist locally.',\n '- Use device ids from src/constants/devices.js (example: iphone69, iphone65, iphone61, ipad13, pixel8, pixel8pro, galaxy24ultra).',\n '- Keep slide count <= 10 unless explicitly asked.',\n '- Use 1-based slide numbering (Header_1, Subtitle_1, ...).',\n '- Fill slide text per locale directly in shipscreens.config.yml (CLI reads config only).',\n '- copy.csv is optional; keep it in sync with the config when provided.',\n '- If the device list is unclear, ask a single clarification question; otherwise default to iphone69 + pixel8.',\n ].join('\\n'),\n templateTitle: 'Config template (optional)',\n templateBody: 'Minimal example if you want to author manually.',\n template: [\n 'schemaVersion: 1',\n '',\n 'locales:',\n ' - id: en-US',\n '',\n 'devices:',\n ' - id: iphone69',\n ' platform: ios',\n ' - id: pixel8',\n ' platform: android',\n '',\n 'slides:',\n ' - id: 1',\n ' screenshot:',\n ' path: assets/en-US/01.png',\n ' text:',\n ' en-US:',\n ' header: New App',\n ' sub: Available Now',\n ].join('\\n'),\n quickstartTitle: 'CI quickstart (rendered mode)',\n quickstartBody: 'Rendered mode uses Playwright Chromium to run the app renderer headlessly; keep verify/stage for release safety.',\n quickstartCmd: [\n 'npm ci',\n 'npx playwright install --with-deps chromium',\n 'npm run shipscreens:validate -- --config shipscreens.config.yml',\n 'npx --yes shipscreens copy check --config shipscreens.config.yml --strict --write-pseudo-csv out/agent/copy-pseudo.csv --write-report-json out/agent/copy-check-report.json',\n 'npm run shipscreens:build -- --config shipscreens.config.yml --zip --out out/agent',\n 'npm run shipscreens:verify -- --config shipscreens.config.yml --out out/agent --zip --profile appstore',\n 'npm run shipscreens:stage -- --config shipscreens.config.yml --from out/agent --out out/agent-stage --profile appstore',\n ].join('\\n'),\n authTitle: 'Manual login (if browser does not open)',\n authBody: 'Use the manual flow only when the browser sign-in fails.',\n authCmd: [\n 'npx --yes shipscreens auth login',\n '# optional (staging): add --domain <cognito-domain>',\n 'npx --yes shipscreens auth status',\n 'npx --yes shipscreens build -- --config shipscreens.config.yml --zip --out out/agent --require-pro',\n ].join('\\n'),\n authManualCmd: [\n 'npx --yes shipscreens auth login --manual',\n '# optional (staging): add --domain <cognito-domain>',\n '# open the printed URL, then run:',\n 'npx --yes shipscreens auth finish --redirect-url \"<URL>\"',\n ].join('\\n'),\n proTitle: 'Upgrade unlocks',\n proBullets: [\n 'Deterministic reruns in CI (rendered exports)',\n 'Full matrix batch exports (devices × locales)',\n 'CSV/JSON copy import at scale',\n 'No watermark',\n ],\n downloadTitle: 'Template pack (optional)',\n downloadBody: 'Download the config + CSV files if you do not want to use init.',\n downloadConfig: 'Download shipscreens.config.yml',\n downloadCsv: 'Download copy.csv',\n downloadCiTitle: 'CI templates',\n downloadCiBody: 'Use these starter workflows if you want a copy-paste CI lane for ShipScreens.',\n downloadCiGithub: 'Download GitHub Actions template',\n downloadCiBitrise: 'Download Bitrise template',\n },\n ja: {\n badge: 'Agent + CLI クイックスタート',\n title: '今のデザイン運用のまま、スクショ再実行をCIで決定的にする',\n subtitle:\n 'shipscreens wizard(または init)で、今あるスクショを決定的なFastlane-readyへ載せ替えます。ShipScreensは新しい生成ツールではなく、non-interactive な CLI/MCP 導線、lock/verify/stage、訴求順固定、提出ルート固定を追加するレイヤーです。ShipScreensへアップロード不要(ストアへのアップロードは必要)。',\n painLine: 'Figma/AI/手動エクスポートで画像は作れるが、リリースごとに訴求順・命名・iPad審査・提出ルート・agent/CI handoff が崩れるチーム向け。',\n ctas: {\n primary: 'CLIクイックスタート',\n unlockPro: 'Proを解除(CLI)',\n goPro: 'Proを解除(CLI)',\n sample: 'サンプルを開く',\n },\n trustTitle: 'アップグレード前に料金・規約を確認',\n trustLinks: {\n pricing: '料金',\n terms: '利用規約',\n privacy: 'プライバシー',\n legal: '特商法表記',\n security: 'セキュリティ',\n proof: '実績',\n },\n demoTitle: 'デモを書き出す(素材不要)',\n demoBody:\n 'デモ用プロジェクトを作成し、validate → lock → build → verify → stage を一括実行して、決定的な提出フローを確認します(Fastlane-ready + ZIP)。',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: [\n '入力: shipscreens.config.yml + assets/ + shipscreens.lock.json',\n '出力: fastlane/ + fastlane_assets.zip(再現性artifact)',\n 'stage/: deliver/supply 向けのクリーンなルート',\n ],\n demoNote: '初回は npx がパッケージを取得するため時間がかかる場合があります。デモは削除してOKです。',\n steps: [\n {\n title: 'config を作成',\n body: 'shipscreens wizard(対話式)または init で、既存PNGとcopyを載せる契約を作ります。',\n },\n {\n title: 'PNG とコピーを差し替え',\n body: 'スクショを差し替え、1枚目の成果訴求、命名順、最小スコープを先に固定します。',\n },\n {\n title: 'build + verify + stage',\n body: 'build/verify/stage で提出ルートを整理し、アップロード前にパス崩れ・訴求順崩れ・混在事故を検知します。',\n },\n ],\n preflightTitle: '実行前の準備チェック',\n preflightBody: 'ここまで決まっているとCLIが止まらずに最後まで回ります。',\n preflightBullets: [\n 'PNGが全スライド/ロケール/端末パスに存在。',\n 'ロケールと端末構成が確定(出力構成が固定)。',\n '各ロケールで1枚目の成果文が確定。',\n '各ロケールのコピーが準備済み(config or CSV)。',\n '背景/ロゴを使う場合は素材確定。',\n ],\n preflightNote: 'agent-run はPNGが欠けている/プレースホルダーだと停止します。',\n heroQuickstartTitle: '2ステップクイックスタート(raw)',\n heroQuickstartBody: '最短は wizard → build。初回通過後すぐに verify/stage を追加して再実行を固定。',\n heroQuickstartCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n heroProLabel: '次にProを解除:',\n heroProCmd: 'npx --yes shipscreens auth login',\n allCommandsLabel: '全コマンドをコピー',\n allCommandsNote: 'raw + rendered + 認証をまとめてコピー。',\n allCommandsSections: {\n hero: '2ステップ(raw)',\n local: 'ローカル最短(raw)',\n rendered: 'CIクイックスタート(rendered)',\n auth: 'CLI認証',\n authManual: 'CLI認証(手動)',\n },\n pathsTitle: '最短パス(raw mode)',\n paths: [\n {\n id: 'raw',\n badge: 'RAW',\n title: 'ブラウザ不要(raw mode)',\n body: '最速。PNGをそのまま使うので Playwright 不要。',\n cmdKey: 'local',\n },\n {\n id: 'rendered',\n badge: 'RENDERED',\n title: 'UI品質(Playwright)',\n body: 'Headless Chromium でUIレンダリングを再現。',\n cmdKey: 'rendered',\n },\n ],\n localQuickstartTitle: 'ローカル最短(ブラウザ不要)',\n localQuickstartBody: 'まずは raw モードで最短実行し、verify/stage を常設して提出前チェックを固定。',\n localQuickstartCmd: [\n 'npx --yes shipscreens wizard',\n '# もしくは: npx --yes shipscreens init',\n '# assets/en-US/01.png〜05.png を実スクショに差し替え',\n '# 任意: npx --yes shipscreens copy import --csv copy.csv --import-mode merge',\n '# 任意(提出QA): npx --yes shipscreens copy check --strict --write-pseudo-csv out/agent/copy-pseudo.csv --write-report-json out/agent/copy-check-report.json',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n 'npx --yes shipscreens verify --out out/agent --zip --profile appstore',\n '# 任意: npx --yes shipscreens stage --from out/agent --out out/agent-stage --profile appstore',\n ].join('\\n'),\n proUnlockTitle: 'Proを解除(CLI)',\n proUnlockBody:\n 'release-safe な再実行フローが固まったら、CLI認証で透かし解除&フル一括とcopy運用を解放します。',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: '初回のみブラウザでサインインします。以後は --require-pro で再実行。',\n localTitle: 'ローカル完結実行(ShipScreensへアップロードなし)',\n localBullets: [\n 'raw モードは Playwright 不要・ブラウザ不要。',\n 'rendered モードは Headless Chromium をローカル/CIで実行。',\n '同じ契約を stdio MCP server から coding agent に渡せます。',\n 'スクショは端末に残る(ストアへのアップロードは必要)。',\n ],\n promptTitle: 'Agent プロンプト(コピペ)',\n promptBody: 'エージェントに config + CSV を安定して生成させるテンプレです。',\n prompt: [\n 'You are preparing ShipScreens inputs for a local/CI CLI pipeline.',\n 'Output exactly two files in plain text with clear file markers:',\n '',\n 'FILE: shipscreens.config.yml',\n '<YAML>',\n '',\n 'FILE: copy.csv',\n '<CSV>',\n '',\n 'Constraints:',\n '- Use ASCII only.',\n '- Do not generate images. Only reference PNG file paths that will exist locally.',\n '- Use device ids from src/constants/devices.js (example: iphone69, iphone65, iphone61, ipad13, pixel8, pixel8pro, galaxy24ultra).',\n '- Keep slide count <= 10 unless explicitly asked.',\n '- Use 1-based slide numbering (Header_1, Subtitle_1, ...).',\n '- Fill slide text per locale directly in shipscreens.config.yml (CLI reads config only).',\n '- copy.csv is optional; keep it in sync with the config when provided.',\n '- If the device list is unclear, ask a single clarification question; otherwise default to iphone69 + pixel8.',\n ].join('\\n'),\n templateTitle: 'config テンプレ(任意)',\n templateBody: 'init を使わずに手書きする場合の最小例。',\n template: [\n 'schemaVersion: 1',\n '',\n 'locales:',\n ' - id: en-US',\n '',\n 'devices:',\n ' - id: iphone69',\n ' platform: ios',\n ' - id: pixel8',\n ' platform: android',\n '',\n 'slides:',\n ' - id: 1',\n ' screenshot:',\n ' path: assets/en-US/01.png',\n ' text:',\n ' en-US:',\n ' header: New App',\n ' sub: Available Now',\n ].join('\\n'),\n quickstartTitle: 'CIクイックスタート(rendered mode)',\n quickstartBody: 'Playwright Chromium でUIをヘッドレス実行し、verify/stage でリリース事故を防ぎます。',\n quickstartCmd: [\n 'npm ci',\n 'npx playwright install --with-deps chromium',\n 'npm run shipscreens:validate -- --config shipscreens.config.yml',\n 'npx --yes shipscreens copy check --config shipscreens.config.yml --strict --write-pseudo-csv out/agent/copy-pseudo.csv --write-report-json out/agent/copy-check-report.json',\n 'npm run shipscreens:build -- --config shipscreens.config.yml --zip --out out/agent',\n 'npm run shipscreens:verify -- --config shipscreens.config.yml --out out/agent --zip --profile appstore',\n 'npm run shipscreens:stage -- --config shipscreens.config.yml --from out/agent --out out/agent-stage --profile appstore',\n ].join('\\n'),\n authTitle: '手動ログイン(ブラウザが開かない場合)',\n authBody: 'ブラウザが開かない時だけ手動ログインを使います。',\n authCmd: [\n 'npx --yes shipscreens auth login',\n '# 任意 (stg): --domain <cognito-domain> を付与',\n 'npx --yes shipscreens auth status',\n 'npx --yes shipscreens build -- --config shipscreens.config.yml --zip --out out/agent --require-pro',\n ].join('\\n'),\n authManualCmd: [\n 'npx --yes shipscreens auth login --manual',\n '# 任意 (stg): --domain <cognito-domain> を付与',\n '# 表示されたURLを開いた後、以下を実行:',\n 'npx --yes shipscreens auth finish --redirect-url \"<URL>\"',\n ].join('\\n'),\n proTitle: 'Proでできること',\n proBullets: [\n 'CIで決定的に再実行(rendered出力)',\n 'フル一括(端末×言語)',\n 'CSV/JSON copy 取り込み',\n '透かしなし',\n ],\n downloadTitle: 'テンプレDL(任意)',\n downloadBody: 'init を使わない場合のテンプレをDLできます。',\n downloadConfig: 'shipscreens.config.yml をDL',\n downloadCsv: 'copy.csv をDL',\n downloadCiTitle: 'CIテンプレ',\n downloadCiBody: 'ShipScreens用のCIレーンをすぐ作るための雛形です。',\n downloadCiGithub: 'GitHub Actions テンプレをDL',\n downloadCiBitrise: 'Bitrise テンプレをDL',\n },\n};\n\nconst MCP_SERVER_ARGS = ['--yes', 'shipscreens@latest', 'mcp', 'serve'];\n\nconst prettyJson = (value) => JSON.stringify(value, null, 2);\n\nconst STANDARD_MCP_BOOTSTRAP = prettyJson({\n mcpServers: {\n shipscreens: {\n command: 'npx',\n args: MCP_SERVER_ARGS,\n },\n },\n});\n\nconst VSCODE_MCP_BOOTSTRAP = prettyJson({\n servers: {\n shipscreens: {\n type: 'stdio',\n command: 'npx',\n args: MCP_SERVER_ARGS,\n },\n },\n});\n\nconst CLIENT_BOOTSTRAP_COPY = {\n en: {\n title: 'Agent client bootstrap',\n body: 'Run one workspace-local mcp init command first, then fall back to manual JSON only when you need to inspect or download the exact config.',\n commandTitle: 'Write config from CLI',\n configTitle: 'Manual JSON fallback',\n commandCopyLabel: 'Copy init command',\n configCopyLabel: 'Copy JSON',\n windowsNote:\n 'Claude Code on Windows can switch to `cmd` + `/c npx --yes shipscreens@latest mcp serve` if plain `npx` resolution fails.',\n openAiTitle: 'OpenAI Responses API',\n openAiBullets: [\n '`tool_choice=auto` lets the model decide when to call ShipScreens.',\n 'Use `tool_choice=required` when the workflow must force a ShipScreens tool call.',\n 'Keep the first command deterministic: `npx --yes shipscreens@latest demo`.',\n ],\n cards: [\n {\n id: 'claude_code',\n title: 'Claude Code',\n configFile: '.mcp.json',\n note: 'Project-local MCP config for Claude Code.',\n initCommand: 'npx --yes shipscreens@latest mcp init --client claude',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-claude-code-mcp.json',\n downloadLabel: 'Download .mcp.json',\n asset: 'client_bootstrap_claude_code',\n },\n {\n id: 'cursor',\n title: 'Cursor',\n configFile: '.cursor/mcp.json',\n note: 'Project-local MCP config for Cursor.',\n initCommand: 'npx --yes shipscreens@latest mcp init --client cursor',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-cursor-mcp.json',\n downloadLabel: 'Download .cursor/mcp.json',\n asset: 'client_bootstrap_cursor',\n },\n {\n id: 'vscode_copilot',\n title: 'VS Code Copilot',\n configFile: '.vscode/mcp.json',\n note: 'Workspace-level MCP config for VS Code agent mode / Copilot.',\n initCommand: 'npx --yes shipscreens@latest mcp init --client vscode',\n config: VSCODE_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-vscode-mcp.json',\n downloadLabel: 'Download .vscode/mcp.json',\n asset: 'client_bootstrap_vscode_copilot',\n },\n {\n id: 'gemini_cli',\n title: 'Gemini CLI',\n configFile: '.gemini/settings.json',\n note: 'Project-local or home-level MCP config for Gemini CLI.',\n initCommand: 'npx --yes shipscreens@latest mcp init --client gemini',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-gemini-mcp-settings.json',\n downloadLabel: 'Download .gemini/settings.json',\n asset: 'client_bootstrap_gemini_cli',\n },\n ],\n },\n ja: {\n title: 'Agent client bootstrap',\n body: 'まず workspace-local の mcp init コマンドを 1 つ実行し、JSON を手で貼るのは中身確認やDLが必要なときだけにします。',\n commandTitle: 'CLI で config を書く',\n configTitle: '手動 JSON の fallback',\n commandCopyLabel: 'init コマンドをコピー',\n configCopyLabel: 'JSON をコピー',\n windowsNote:\n 'Windows の Claude Code で `npx` 解決に失敗する場合は、`cmd` + `/c npx --yes shipscreens@latest mcp serve` に切り替えてください。',\n openAiTitle: 'OpenAI Responses API',\n openAiBullets: [\n '`tool_choice=auto` はモデルに ShipScreens 呼び出し可否を任せます。',\n '必ず ShipScreens を実行したいフローでは `tool_choice=required` を使います。',\n '最初のコマンドは `npx --yes shipscreens@latest demo` に固定するとぶれません。',\n ],\n cards: [\n {\n id: 'claude_code',\n title: 'Claude Code',\n configFile: '.mcp.json',\n note: 'Claude Code の project-local MCP config。',\n initCommand: 'npx --yes shipscreens@latest mcp init --client claude',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-claude-code-mcp.json',\n downloadLabel: '.mcp.json をDL',\n asset: 'client_bootstrap_claude_code',\n },\n {\n id: 'cursor',\n title: 'Cursor',\n configFile: '.cursor/mcp.json',\n note: 'Cursor の project-local MCP config。',\n initCommand: 'npx --yes shipscreens@latest mcp init --client cursor',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-cursor-mcp.json',\n downloadLabel: '.cursor/mcp.json をDL',\n asset: 'client_bootstrap_cursor',\n },\n {\n id: 'vscode_copilot',\n title: 'VS Code Copilot',\n configFile: '.vscode/mcp.json',\n note: 'VS Code agent mode / Copilot 向けの workspace MCP config。',\n initCommand: 'npx --yes shipscreens@latest mcp init --client vscode',\n config: VSCODE_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-vscode-mcp.json',\n downloadLabel: '.vscode/mcp.json をDL',\n asset: 'client_bootstrap_vscode_copilot',\n },\n {\n id: 'gemini_cli',\n title: 'Gemini CLI',\n configFile: '.gemini/settings.json',\n note: 'Gemini CLI の project-local / home-level MCP config。',\n initCommand: 'npx --yes shipscreens@latest mcp init --client gemini',\n config: STANDARD_MCP_BOOTSTRAP,\n downloadHref: '/downloads/shipscreens-gemini-mcp-settings.json',\n downloadLabel: '.gemini/settings.json をDL',\n asset: 'client_bootstrap_gemini_cli',\n },\n ],\n },\n};\n\nconst INTENT_ROUTE_COPY = {\n en: {\n appStoreAutomation: {\n intentKey: 'app_store_screenshot_automation',\n pathPrefix: '/tools/app-store-screenshot-automation',\n pageTitle: 'App Store Screenshot Automation - ShipScreens',\n badge: 'Automation intent',\n title: 'Automate App Store screenshots as a repeatable release step.',\n body: 'If you came for App Store screenshot automation, start with the first-export flow, then lock verify/stage so reruns stay deterministic.',\n primaryCta: 'Open first export path',\n primaryHref: '/tools/first-export/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'First export first, then choose pay-first or partner support.',\n },\n googlePlayAutomation: {\n intentKey: 'google_play_screenshot_automation',\n pathPrefix: '/tools/google-play-screenshot-automation',\n pageTitle: 'Google Play Screenshot Automation - ShipScreens',\n badge: 'Automation intent',\n title: 'Automate Google Play screenshots without breaking upload roots.',\n body: 'If you came for Google Play screenshot automation, start with first export, then lock folder contracts and reruns before supply uploads.',\n primaryCta: 'Open first export path',\n primaryHref: '/tools/first-export/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Start with first export, then lock the upload structure.',\n },\n appStoreLocalization: {\n intentKey: 'app_store_localization_automation',\n pathPrefix: '/tools/app-store-localization-screenshot-automation',\n pageTitle: 'App Store Localization Screenshot Automation - ShipScreens',\n badge: 'Localization intent',\n title: 'Fix locale x device screenshot drift before release week.',\n body: 'If you came for localization automation, use the store-assets pipeline flow first, then run deterministic matrix reruns in CLI.',\n primaryCta: 'Open localization pipeline',\n primaryHref: '/tools/store-assets-pipeline/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Lock locale/device contracts first, then scale.',\n },\n fastlanePipeline: {\n intentKey: 'fastlane_screenshot_pipeline',\n pathPrefix: '/tools/fastlane-screenshot-pipeline',\n pageTitle: 'Fastlane Screenshot Pipeline - ShipScreens',\n badge: 'Pipeline intent',\n title: 'Build a Fastlane-ready screenshot pipeline with deterministic reruns.',\n body: 'If you came for a Fastlane screenshot pipeline, start with exact folder + naming contracts, then run verify/stage on each release.',\n primaryCta: 'Open Fastlane folder map',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Folder contract first, then CI reruns.',\n },\n screenshotCiPipeline: {\n intentKey: 'screenshot_ci_pipeline',\n pathPrefix: '/tools/screenshot-ci-pipeline',\n pageTitle: 'Screenshot CI Pipeline - ShipScreens',\n badge: 'CI intent',\n title: 'Turn screenshot updates into a deterministic CI step.',\n body: 'If you came for screenshot CI pipeline setup, start with CLI quickstart and enforce verify/stage guardrails before store upload.',\n primaryCta: 'Open CI quickstart',\n primaryHref: '/tools/agent-cli/#quickstart',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'CI should fail on drift before submission, not after.',\n },\n claudeCodeMcp: {\n intentKey: 'claude_code_mcp_screenshot_automation',\n pathPrefix: '/tools/claude-code-mcp-screenshot-automation',\n pageTitle: 'Claude Code MCP Screenshot Automation - ShipScreens',\n badge: 'MCP intent',\n title: 'Wire ShipScreens into Claude Code with one project-local MCP config.',\n body: 'If you came for Claude Code MCP screenshot automation, start with the MCP bootstrap section, then run demo -> wizard -> build -> verify.',\n primaryCta: 'Open MCP bootstrap',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Project-local MCP config first, deterministic reruns second.',\n },\n cursorMcp: {\n intentKey: 'cursor_mcp_screenshot_automation',\n pathPrefix: '/tools/cursor-mcp-screenshot-automation',\n pageTitle: 'Cursor MCP Screenshot Automation - ShipScreens',\n badge: 'MCP intent',\n title: 'Give Cursor a deterministic screenshot tool instead of another prompt-only workflow.',\n body: 'If you came for Cursor MCP screenshot automation, start with the `.cursor/mcp.json` bootstrap, then keep the release flow on demo -> wizard -> build -> verify.',\n primaryCta: 'Open MCP bootstrap',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Treat screenshot reruns as a workspace tool, not a one-off prompt.',\n },\n vscodeCopilotMcp: {\n intentKey: 'vscode_copilot_mcp_screenshot_automation',\n pathPrefix: '/tools/vscode-copilot-mcp-screenshot-automation',\n pageTitle: 'VS Code Copilot MCP Screenshot Automation - ShipScreens',\n badge: 'MCP intent',\n title: 'Add ShipScreens to VS Code Copilot as a stdio build-step tool.',\n body: 'If you came for VS Code Copilot MCP screenshot automation, start with `.vscode/mcp.json`, then use the deterministic CLI path for demo -> wizard -> build -> verify.',\n primaryCta: 'Open MCP bootstrap',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'The config contract matters more than prompt prose once CI owns reruns.',\n },\n geminiCliMcp: {\n intentKey: 'gemini_cli_mcp_screenshot_automation',\n pathPrefix: '/tools/gemini-cli-mcp-screenshot-automation',\n pageTitle: 'Gemini CLI MCP Screenshot Automation - ShipScreens',\n badge: 'MCP intent',\n title: 'Use Gemini CLI as a deterministic screenshot operator, not a template generator.',\n body: 'If you came for Gemini CLI MCP screenshot automation, start with the MCP bootstrap section, then move into demo -> wizard -> build -> verify.',\n primaryCta: 'Open MCP bootstrap',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Keep the prompt small and the CLI contract explicit.',\n },\n openaiResponsesTool: {\n intentKey: 'openai_responses_tool_screenshot_automation',\n pathPrefix: '/tools/openai-responses-tool-screenshot-automation',\n pageTitle: 'OpenAI Responses Tool Screenshot Automation - ShipScreens',\n badge: 'Tool intent',\n title: 'Make screenshot automation an explicit tool call in OpenAI workflows.',\n body: 'If you came for OpenAI Responses tool screenshot automation, use the bootstrap/notes section first and force `tool_choice=required` when ShipScreens must execute.',\n primaryCta: 'Open MCP bootstrap',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Tool-choice policy belongs in the contract, not in a best-effort prompt.',\n },\n deterministicReruns: {\n intentKey: 'deterministic_screenshot_reruns',\n pathPrefix: '/tools/deterministic-screenshot-reruns',\n pageTitle: 'Deterministic Screenshot Reruns - ShipScreens',\n badge: 'Determinism intent',\n title: 'Make screenshot reruns reproducible across releases.',\n body: 'If deterministic reruns is your main pain, lock panel order + locale token + device token naming before touching visuals.',\n primaryCta: 'Open naming + slot map guide',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Naming drift is usually the hidden bottleneck.',\n },\n namingOrderDrift: {\n intentKey: 'screenshot_naming_order_drift',\n pathPrefix: '/tools/screenshot-naming-order-drift',\n pageTitle: 'Screenshot Naming Order Drift - ShipScreens',\n badge: 'Drift intent',\n title: 'Stop screenshot naming and order drift before release week.',\n body: 'If naming/order drift is breaking reruns, lock 01..05 slots, locale/device tokens, and upload roots before you touch the visuals.',\n primaryCta: 'Open naming + folder contract guide',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'The shortest fix is usually slot-map discipline, not more design rework.',\n },\n appStore: {\n intentKey: 'app_store_requirements',\n pathPrefix: '/tools/app-store-screenshot-requirements-checklist',\n pageTitle: 'App Store Screenshot Requirements Checklist - ShipScreens',\n badge: 'Requirements intent',\n title: 'Start with a checklist flow before implementation.',\n body: 'If you came for an App Store screenshot requirements checklist, start with the App Review + ASO quick check, then move to pay-first or partner support.',\n primaryCta: 'Open App Review + ASO checklist',\n primaryHref: '/tools/app-review-aso/#checks',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Run checklist first, then choose the offer path.',\n },\n googlePlay: {\n intentKey: 'google_play_requirements',\n pathPrefix: '/tools/google-play-screenshot-requirements-checklist',\n pageTitle: 'Google Play Screenshot Requirements Checklist - ShipScreens',\n badge: 'Requirements intent',\n title: 'Start with a checklist flow before implementation.',\n body: 'If you came for a Google Play screenshot requirements checklist, start with the App Review + ASO quick check, then move to pay-first or partner support.',\n primaryCta: 'Open App Review + ASO checklist',\n primaryHref: '/tools/app-review-aso/#checks',\n payFirstCta: 'Open pay-first path',\n designPartnerCta: 'Open Design Partner',\n proofCta: 'Open proof + case snapshots',\n note: 'Run checklist first, then choose the offer path.',\n },\n },\n ja: {\n appStoreAutomation: {\n intentKey: 'app_store_screenshot_automation',\n pathPrefix: '/tools/app-store-screenshot-automation',\n pageTitle: 'App Store スクリーンショット自動化 - ShipScreens',\n badge: '自動化導線',\n title: 'App Store スクショ更新を毎リリース再現可能にします。',\n body: 'App Store スクショ自動化目的なら、まず first export を通し、その後 verify/stage を固定して再実行のズレを止めます。',\n primaryCta: 'first export 導線を開く',\n primaryHref: '/tools/first-export/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '先に first export、次にオファー選択で進めます。',\n },\n googlePlayAutomation: {\n intentKey: 'google_play_screenshot_automation',\n pathPrefix: '/tools/google-play-screenshot-automation',\n pageTitle: 'Google Play スクリーンショット自動化 - ShipScreens',\n badge: '自動化導線',\n title: 'Google Play の提出ルートを崩さず自動化します。',\n body: 'Google Play スクショ自動化目的なら、first export の後にフォルダ契約を固定し、supply前に再実行を検証します。',\n primaryCta: 'first export 導線を開く',\n primaryHref: '/tools/first-export/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '提出ルートを先に固定してから拡張します。',\n },\n appStoreLocalization: {\n intentKey: 'app_store_localization_automation',\n pathPrefix: '/tools/app-store-localization-screenshot-automation',\n pageTitle: 'App Store ローカライズスクショ自動化 - ShipScreens',\n badge: 'ローカライズ導線',\n title: 'locale x device の崩れをリリース前に止めます。',\n body: 'ローカライズ自動化目的なら、先に store-assets pipeline で受け渡しを固定し、CLIで行列再実行を回します。',\n primaryCta: 'ローカライズ導線を開く',\n primaryHref: '/tools/store-assets-pipeline/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: 'locale/device 契約を先に固定してから拡張します。',\n },\n fastlanePipeline: {\n intentKey: 'fastlane_screenshot_pipeline',\n pathPrefix: '/tools/fastlane-screenshot-pipeline',\n pageTitle: 'Fastlane スクリーンショットパイプライン - ShipScreens',\n badge: 'パイプライン導線',\n title: 'Fastlane向けスクショパイプラインを再現可能にします。',\n body: 'Fastlane パイプライン目的なら、フォルダ/命名契約を先に固定し、verify/stage を毎リリースで実行します。',\n primaryCta: 'Fastlane フォルダ設計を開く',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '先にフォルダ契約、次にCI再実行です。',\n },\n screenshotCiPipeline: {\n intentKey: 'screenshot_ci_pipeline',\n pathPrefix: '/tools/screenshot-ci-pipeline',\n pageTitle: 'スクリーンショット CI パイプライン - ShipScreens',\n badge: 'CI導線',\n title: 'スクショ更新を CI の再現可能ステップにします。',\n body: 'Screenshot CI 目的なら、CLI quickstart から始めて verify/stage ガードレールを必須化します。',\n primaryCta: 'CIクイックスタートを開く',\n primaryHref: '/tools/agent-cli/#quickstart',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '提出後ではなく、CIで先に失敗を検出します。',\n },\n claudeCodeMcp: {\n intentKey: 'claude_code_mcp_screenshot_automation',\n pathPrefix: '/tools/claude-code-mcp-screenshot-automation',\n pageTitle: 'Claude Code MCP スクリーンショット自動化 - ShipScreens',\n badge: 'MCP導線',\n title: 'Claude Code に project-local MCP config で ShipScreens を渡します。',\n body: 'Claude Code MCP 目的なら、まず MCP bootstrap を貼り、その後 demo -> wizard -> build -> verify の順で固定します。',\n primaryCta: 'MCP bootstrap を開く',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '先に project-local MCP config、次に決定的 rerun 契約です。',\n },\n cursorMcp: {\n intentKey: 'cursor_mcp_screenshot_automation',\n pathPrefix: '/tools/cursor-mcp-screenshot-automation',\n pageTitle: 'Cursor MCP スクリーンショット自動化 - ShipScreens',\n badge: 'MCP導線',\n title: 'Cursor に prompt だけでなく決定的な screenshot tool を渡します。',\n body: 'Cursor MCP 目的なら、まず `.cursor/mcp.json` を貼り、その後 demo -> wizard -> build -> verify を release 契約として固定します。',\n primaryCta: 'MCP bootstrap を開く',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '一発プロンプトではなく workspace tool として扱います。',\n },\n vscodeCopilotMcp: {\n intentKey: 'vscode_copilot_mcp_screenshot_automation',\n pathPrefix: '/tools/vscode-copilot-mcp-screenshot-automation',\n pageTitle: 'VS Code Copilot MCP スクリーンショット自動化 - ShipScreens',\n badge: 'MCP導線',\n title: 'VS Code Copilot に stdio build-step tool として ShipScreens を追加します。',\n body: 'VS Code Copilot MCP 目的なら、まず `.vscode/mcp.json` を設定し、その後 demo -> wizard -> build -> verify の決定的フローに乗せます。',\n primaryCta: 'MCP bootstrap を開く',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: 'prompt より先に stdio 契約を固定します。',\n },\n geminiCliMcp: {\n intentKey: 'gemini_cli_mcp_screenshot_automation',\n pathPrefix: '/tools/gemini-cli-mcp-screenshot-automation',\n pageTitle: 'Gemini CLI MCP スクリーンショット自動化 - ShipScreens',\n badge: 'MCP導線',\n title: 'Gemini CLI をテンプレ生成ではなく決定的 screenshot operator にします。',\n body: 'Gemini CLI MCP 目的なら、まず MCP bootstrap を貼り、その後 demo -> wizard -> build -> verify を固定します。',\n primaryCta: 'MCP bootstrap を開く',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '短いプロンプトより、明示的な CLI 契約を優先します。',\n },\n openaiResponsesTool: {\n intentKey: 'openai_responses_tool_screenshot_automation',\n pathPrefix: '/tools/openai-responses-tool-screenshot-automation',\n pageTitle: 'OpenAI Responses Tool スクリーンショット自動化 - ShipScreens',\n badge: 'Tool導線',\n title: 'OpenAI workflow で screenshot automation を明示的な tool call にします。',\n body: 'OpenAI Responses tool 目的なら、まず bootstrap / note を確認し、ShipScreens を必ず呼ばせたい箇所では `tool_choice=required` を使います。',\n primaryCta: 'MCP bootstrap を開く',\n primaryHref: '/tools/agent-cli/#agent-bootstrap',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: 'tool-choice 方針は prompt ではなく契約に置きます。',\n },\n deterministicReruns: {\n intentKey: 'deterministic_screenshot_reruns',\n pathPrefix: '/tools/deterministic-screenshot-reruns',\n pageTitle: '決定的スクリーンショット再実行 - ShipScreens',\n badge: '再実行導線',\n title: '毎リリースで同じ結果を再現できるようにします。',\n body: '決定的再実行が目的なら、見た目より先に panel順 + locale token + device token 命名を固定します。',\n primaryCta: '命名/slot mapガイドを開く',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '隠れたボトルネックは命名ドリフトです。',\n },\n namingOrderDrift: {\n intentKey: 'screenshot_naming_order_drift',\n pathPrefix: '/tools/screenshot-naming-order-drift',\n pageTitle: 'スクリーンショット命名・順序ドリフト - ShipScreens',\n badge: 'ドリフト導線',\n title: '命名と順序のドリフトをリリース前に止めます。',\n body: '命名/順序のズレが再実行を壊すなら、見た目を触る前に 01..05 slot、locale/device token、upload root を固定します。',\n primaryCta: '命名/フォルダ契約ガイドを開く',\n primaryHref: '/tools/fastlane-screenshots/',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '最短の対策はデザイン追加ではなく slot map の固定です。',\n },\n appStore: {\n intentKey: 'app_store_requirements',\n pathPrefix: '/tools/app-store-screenshot-requirements-checklist',\n pageTitle: 'App Store スクリーンショット要件チェックリスト - ShipScreens',\n badge: '要件チェック導線',\n title: '実装に入る前に、まずチェックフローを通します。',\n body: 'App Store の要件チェック目的で来た場合は、先に App Review / ASO クイックチェックを通し、その後 pay-first か partner 支援に進んでください。',\n primaryCta: 'App Review / ASO チェックを開く',\n primaryHref: '/tools/app-review-aso/#checks',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '先にチェック、次にオファー選択の順序で進めます。',\n },\n googlePlay: {\n intentKey: 'google_play_requirements',\n pathPrefix: '/tools/google-play-screenshot-requirements-checklist',\n pageTitle: 'Google Play スクリーンショット要件チェックリスト - ShipScreens',\n badge: '要件チェック導線',\n title: '実装に入る前に、まずチェックフローを通します。',\n body: 'Google Play の要件チェック目的で来た場合は、先に App Review / ASO クイックチェックを通し、その後 pay-first か partner 支援に進んでください。',\n primaryCta: 'App Review / ASO チェックを開く',\n primaryHref: '/tools/app-review-aso/#checks',\n payFirstCta: 'pay-first 導線を開く',\n designPartnerCta: 'Design Partner を開く',\n proofCta: '実績・証跡を確認する',\n note: '先にチェック、次にオファー選択の順序で進めます。',\n },\n },\n};\n\nconst AgentCli = () => {\n const { i18n, t } = useTranslation();\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const copy = COPY[lang] || COPY.en;\n const currentPath = typeof window !== 'undefined' ? window.location.pathname : '/tools/agent-cli/';\n const intentCopySet = INTENT_ROUTE_COPY[lang] || INTENT_ROUTE_COPY.en;\n const intentRouteCopy = Object.values(intentCopySet).find((candidate) => currentPath.startsWith(candidate.pathPrefix)) || null;\n const intentRouteEntrySource = intentRouteCopy ? `${intentRouteCopy.intentKey}_intent` : 'agent_cli';\n const analyticsParams = { intent_route: intentRouteCopy?.intentKey || 'default' };\n const trackEvent = (name, params = {}) => baseTrackEvent(name, { ...params, ...analyticsParams });\n const trackEventAndFollowLink = (event, name, params = {}) =>\n baseTrackEventAndFollowLink(event, name, { ...params, ...analyticsParams });\n const buildInternalHref = (href, suffix) => withEntrySource(href, `${intentRouteEntrySource}_${suffix}`);\n const supportEmail = 'support@shimaumaservices.co.jp';\n const trustDisclosure =\n lang === 'ja'\n ? '返金: デジタルサービスの性質上、法令で必要な場合を除き返金はありません。いつでも解約可能です。会社: Shimauma Services, Inc.(東京)。'\n : 'Refund: due to the digital nature of the service, payments are non-refundable except where required by law. Cancel anytime. Company: Shimauma Services, Inc. (Tokyo).';\n const trustContactLabel = lang === 'ja' ? '問い合わせ' : 'Contact';\n const partnerSubject = t('landing.partner.emailSubject', { defaultValue: 'ShipScreens first export review' });\n const partnerBody = t('landing.partner.emailBody', { defaultValue: '' });\n const partnerMailto = `mailto:${supportEmail}?subject=${encodeURIComponent(partnerSubject)}&body=${encodeURIComponent(\n partnerBody\n )}`;\n const openAppHref = buildInternalHref('/app/?sample=5panel', 'open_app_header');\n const goProHeroHref = buildInternalHref('/app/?sample=5panel&upgrade=1', 'go_pro_hero');\n const goProFooterHref = buildInternalHref('/app/?sample=5panel&upgrade=1', 'go_pro_footer');\n const sampleProjectHref = buildInternalHref('/app/?sample=5panel', 'open_sample_project');\n const logoHref = buildInternalHref('/', 'open_logo_header');\n const toolsHref = buildInternalHref('/tools/', 'open_tools_header');\n const pricingHeaderHref = buildInternalHref('/pricing', 'open_pricing_header');\n const pricingHref = buildInternalHref('/pricing', 'open_pricing');\n const termsHref = buildInternalHref('/terms', 'open_terms');\n const privacyHref = buildInternalHref('/privacy', 'open_privacy');\n const legalHref = buildInternalHref('/legal', 'open_legal');\n const securityHref = buildInternalHref('/security', 'open_security');\n const proofHref = buildInternalHref('/proof', 'open_proof');\n const designPartnerOfferHref = buildInternalHref('/design-partner/', 'open_design_partner_offer');\n const intentPrimaryBaseHref = intentRouteCopy?.primaryHref || '/tools/agent-cli/#quickstart';\n const intentPrimarySeparator = intentPrimaryBaseHref.includes('?') ? '&' : '?';\n const intentPrimaryHref = `${intentPrimaryBaseHref}${intentPrimarySeparator}entry_source=${intentRouteEntrySource}_primary`;\n const intentPayFirstHref = `/pricing?offer=pay_first&entry_source=${intentRouteEntrySource}_pay_first`;\n const intentDesignPartnerHref = `/design-partner/?entry_source=${intentRouteEntrySource}_design_partner`;\n const intentProofHref = `/proof?entry_source=${intentRouteEntrySource}_proof`;\n const designPartnerOfferLabel = lang === 'ja' ? 'オファー詳細を見る' : 'See offer details';\n const bootstrapCopy = CLIENT_BOOTSTRAP_COPY[lang] || CLIENT_BOOTSTRAP_COPY.en;\n const quickstartAnchorHref = '#quickstart';\n const configDownloadHref = '/downloads/shipscreens-agent-cli-config.yml';\n const csvDownloadHref = '/downloads/shipscreens-agent-cli-copy.csv';\n const githubActionsTemplateHref = '/downloads/shipscreens-github-actions-template.yml';\n const bitriseTemplateHref = '/downloads/shipscreens-bitrise-template.yml';\n const top20TemplatePackCsvHref = '/downloads/shipscreens-top20-category-headline-pack-2026-02.csv';\n const top20TemplatePackGuideHref = '/downloads/shipscreens-top20-category-headline-pack-2026-02.md';\n const localizationHandoffTemplateHref = '/downloads/shipscreens-localization-handoff-template.csv';\n const localizationCiChecklistHref = '/downloads/shipscreens-localization-ci-checklist-2026-02.md';\n const variantMatrixTemplateHref = '/downloads/shipscreens-aso-variant-matrix-template.csv';\n const jpCaseSnapshotsHref = '/downloads/shipscreens-japan-case-snapshots-2026-02.md';\n const extraPackTitle = lang === 'ja' ? 'カテゴリ/ローカライズ運用テンプレ' : 'Category + localization packs';\n const extraPackBody =\n lang === 'ja'\n ? 'トップ20カテゴリ×2訴求、翻訳受け渡し、ASO変種管理、JPケース資料をまとめて利用できます。'\n : 'Use top-20 category x2 copy starters, localization handoff templates, ASO variant planning, and JP case snapshots.';\n const top20CsvLabel = lang === 'ja' ? 'トップ20カテゴリ×2(CSV)' : 'Top20 category x2 (CSV)';\n const top20GuideLabel = lang === 'ja' ? 'トップ20パック使い方(MD)' : 'Top20 pack guide (MD)';\n const localizationHandoffLabel = lang === 'ja' ? 'ローカライズ受け渡し(CSV)' : 'Localization handoff (CSV)';\n const localizationCiLabel = lang === 'ja' ? 'ローカライズCIチェック(MD)' : 'Localization CI checklist (MD)';\n const variantMatrixLabel = lang === 'ja' ? 'ASO変種管理テンプレ(CSV)' : 'ASO variant matrix (CSV)';\n const jpCaseLabel = lang === 'ja' ? '日本向けケース資料(MD)' : 'Japan case snapshots (MD)';\n const copyButtonLabel = t('common.copy', { defaultValue: 'Copy' });\n const codeToggleLabel = t('common.showCommands', { defaultValue: 'Show commands' });\n const defaultCodeOpen = typeof window === 'undefined' ? true : window.matchMedia('(min-width: 640px)').matches;\n const heroQuickstartBadge = lang === 'ja' ? '2ステップ' : '2 STEPS';\n const rawPath = (copy.paths || []).find((item) => item.id === 'raw');\n const renderedPath = (copy.paths || []).find((item) => item.id === 'rendered');\n const allCommandsSections = copy.allCommandsSections || {};\n const allCommands = [\n `# ${allCommandsSections.hero || '2-step quickstart (raw mode)'}`,\n copy.heroQuickstartCmd,\n '',\n `# ${allCommandsSections.local || 'Local quickstart (raw mode)'}`,\n copy.localQuickstartCmd,\n '',\n `# ${allCommandsSections.rendered || 'CI quickstart (rendered mode)'}`,\n copy.quickstartCmd,\n '',\n `# ${allCommandsSections.auth || 'CLI auth'}`,\n copy.authCmd,\n '',\n `# ${allCommandsSections.authManual || 'CLI auth (manual)'}`,\n copy.authManualCmd,\n ].join('\\n');\n\n usePageTitle('titles.agentCli', { defaultValue: intentRouteCopy?.pageTitle || copy.title });\n\n useEffect(() => {\n baseTrackEvent('tool_view', { tool: 'agent_cli', intent_route: intentRouteCopy?.intentKey || 'default' });\n }, [intentRouteCopy?.intentKey]);\n\n return (\n <div className=\"min-h-screen bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950 text-white\">\n <StagingBadge />\n <SiteHeader\n variant=\"dark\"\n active=\"tools\"\n logoHref={logoHref}\n toolsHref={toolsHref}\n pricingHref={pricingHeaderHref}\n openAppHref={openAppHref}\n onToolsClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_tools_header' })\n }\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_app_header' })\n }\n primaryCta={{\n href: quickstartAnchorHref,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n {copy.ctas.primary} <ArrowRight size={16} />\n </span>\n ),\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'quickstart_header' }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-12\">\n <section className=\"max-w-3xl mx-auto text-center space-y-4\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold\">\n <Terminal size={14} />\n {copy.badge}\n </div>\n <h1 className=\"text-3xl md:text-5xl font-black leading-tight\">{copy.title}</h1>\n <p className=\"text-slate-300 text-lg leading-relaxed\">{copy.subtitle}</p>\n {copy.painLine && <p className=\"text-sm text-slate-400\">{copy.painLine}</p>}\n <div className=\"flex flex-col sm:flex-row gap-3 justify-center pt-2\">\n <a\n href={quickstartAnchorHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'quickstart_hero' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {copy.ctas.primary} <ArrowRight size={16} />\n </a>\n <a\n href={goProHeroHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'unlock_pro_hero_top' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl border border-amber-400/50 bg-amber-500/10 text-amber-100 font-bold hover:bg-amber-500/20 transition\"\n >\n {copy.ctas.unlockPro || copy.ctas.goPro} <ArrowRight size={16} />\n </a>\n </div>\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] text-slate-500 font-semibold\">{copy.trustTitle}</div>\n <div className=\"flex flex-wrap gap-2\">\n <a\n href={pricingHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_pricing_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.pricing}\n </a>\n <a\n href={termsHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_terms_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.terms}\n </a>\n <a\n href={privacyHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_privacy_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.privacy}\n </a>\n <a\n href={legalHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_legal_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.legal}\n </a>\n <a\n href={securityHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_security_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.security}\n </a>\n <a\n href={proofHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_proof_trust' })\n }\n className=\"text-[11px] text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.trustLinks.proof}\n </a>\n </div>\n <p className=\"text-[11px] text-slate-500\">\n {trustDisclosure}{' '}\n {trustContactLabel}:{' '}\n <a\n href={`mailto:${supportEmail}`}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_contact_trust' })\n }\n className=\"underline underline-offset-4 hover:text-slate-300\"\n >\n {supportEmail}\n </a>\n </p>\n </div>\n {intentRouteCopy && (\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/70 border border-blue-500/40 rounded-2xl p-4 space-y-3\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-blue-200 font-semibold\">\n {intentRouteCopy.badge}\n </div>\n <h2 className=\"text-base font-bold text-white\">{intentRouteCopy.title}</h2>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{intentRouteCopy.body}</p>\n <div className=\"flex flex-col sm:flex-row sm:flex-wrap gap-2\">\n <a\n href={intentPrimaryHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_intent_primary_bridge' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl bg-blue-500 text-white font-semibold hover:bg-blue-600 transition\"\n >\n {intentRouteCopy.primaryCta} <ArrowRight size={14} />\n </a>\n <a\n href={intentPayFirstHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_intent_pay_first_offer' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-semibold hover:bg-slate-900 transition\"\n >\n {intentRouteCopy.payFirstCta} <ArrowRight size={14} />\n </a>\n <a\n href={intentDesignPartnerHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_intent_design_partner_offer' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-semibold hover:bg-slate-900 transition\"\n >\n {intentRouteCopy.designPartnerCta} <ArrowRight size={14} />\n </a>\n <a\n href={intentProofHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_intent_proof_offer' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-semibold hover:bg-slate-900 transition\"\n >\n {intentRouteCopy.proofCta} <ArrowRight size={14} />\n </a>\n </div>\n <p className=\"text-xs text-slate-500\">{intentRouteCopy.note}</p>\n </div>\n )}\n </section>\n\n <CliPreflightCard\n compact\n href=\"#preflight\"\n onClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_preflight_card' })}\n className=\"max-w-xl mx-auto\"\n />\n\n <FitPanel className=\"max-w-4xl mx-auto w-full\" />\n\n {copy.demoTitle && copy.demoCmd && (\n <section id=\"demo\" className=\"max-w-4xl mx-auto\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"text-lg font-bold text-white\">{copy.demoTitle}</div>\n {copy.demoBody && <p className=\"text-sm text-slate-300\">{copy.demoBody}</p>}\n {(copy.demoBullets || []).length > 0 && (\n <ul className=\"space-y-2 text-sm text-slate-300\">\n {copy.demoBullets.map((item) => (\n <li key={item} className=\"flex items-center gap-2\">\n <CheckCircle2 size={16} className=\"text-emerald-400\" />\n {item}\n </li>\n ))}\n </ul>\n )}\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.demoCmd}</pre>\n </div>\n <CopyButton\n value={copy.demoCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_demo_cmd' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n {copy.demoNote && <p className=\"text-xs text-slate-500\">{copy.demoNote}</p>}\n </div>\n </section>\n )}\n\n {copy.proUnlockTitle && copy.proUnlockCmd && (\n <section className=\"max-w-4xl mx-auto\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-lg font-bold text-white\">{copy.proUnlockTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-amber-200 bg-amber-500/10 border border-amber-400/30 px-2 py-1 rounded-full\">\n PRO\n </span>\n </div>\n {copy.proUnlockBody && <p className=\"text-sm text-slate-300\">{copy.proUnlockBody}</p>}\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.proUnlockCmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <CopyButton\n value={copy.proUnlockCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_pro_unlock' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n <a\n href={goProHeroHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'unlock_pro_hero' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-5 py-2 rounded-lg bg-white text-slate-900 font-bold hover:scale-[1.02] transition\"\n >\n {copy.ctas.unlockPro || copy.ctas.goPro} <ArrowRight size={16} />\n </a>\n </div>\n {copy.proUnlockNote && <p className=\"text-xs text-slate-500\">{copy.proUnlockNote}</p>}\n </div>\n </section>\n )}\n\n {copy.heroQuickstartCmd && (\n <section className=\"max-w-4xl mx-auto\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{copy.heroQuickstartTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-blue-200 bg-blue-500/10 border border-blue-400/30 px-2 py-1 rounded-full\">\n {heroQuickstartBadge}\n </span>\n </div>\n {copy.heroQuickstartBody && <p className=\"text-sm text-slate-300\">{copy.heroQuickstartBody}</p>}\n <details className=\"group\" open={defaultCodeOpen}>\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{codeToggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <div className=\"mt-2 rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.heroQuickstartCmd}</pre>\n </div>\n </details>\n <CopyButton\n value={copy.heroQuickstartCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_hero_quickstart' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n {copy.heroProCmd && (\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-slate-400\">\n {copy.heroProLabel && <span>{copy.heroProLabel}</span>}\n <div className=\"inline-flex items-center gap-2 px-2 py-1 rounded-md border border-slate-800 bg-slate-950 text-slate-200\">\n <code>{copy.heroProCmd}</code>\n <CopyButton\n value={copy.heroProCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_hero_pro_cmd' })}\n className=\"text-[11px] px-2 py-0.5 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition\"\n />\n </div>\n <a\n href={goProHeroHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'unlock_pro_inline' })\n }\n className=\"inline-flex items-center gap-1 text-amber-200 hover:text-amber-100 transition-colors font-semibold\"\n >\n {copy.ctas.unlockPro || copy.ctas.goPro} <ArrowRight size={12} />\n </a>\n </div>\n )}\n </div>\n </section>\n )}\n\n <section className=\"grid md:grid-cols-3 gap-6\">\n {copy.steps.map((step, index) => (\n <div key={step.title} className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"text-xs font-semibold text-blue-200\">STEP {index + 1}</div>\n <div className=\"text-lg font-bold text-white\">{step.title}</div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{step.body}</p>\n </div>\n ))}\n </section>\n\n {copy.preflightTitle && (\n <section id=\"preflight\" className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"text-lg font-bold text-white\">{copy.preflightTitle}</div>\n {copy.preflightBody && <p className=\"text-sm text-slate-300\">{copy.preflightBody}</p>}\n <ul className=\"space-y-2 text-sm text-slate-300\">\n {(copy.preflightBullets || []).map((item) => (\n <li key={item} className=\"flex items-center gap-2\">\n <CheckCircle2 size={16} className=\"text-emerald-400\" />\n {item}\n </li>\n ))}\n </ul>\n {copy.preflightNote && <p className=\"text-xs text-slate-500\">{copy.preflightNote}</p>}\n </section>\n )}\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"text-lg font-bold text-white\">{copy.localTitle}</div>\n <ul className=\"space-y-2 text-sm text-slate-300\">\n {copy.localBullets.map((item) => (\n <li key={item} className=\"flex items-center gap-2\">\n <CheckCircle2 size={16} className=\"text-green-400\" />\n {item}\n </li>\n ))}\n </ul>\n </section>\n\n <section id=\"quickstart\" className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-lg font-bold text-white\">{copy.pathsTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-emerald-200 bg-emerald-500/10 border border-emerald-400/30 px-2 py-1 rounded-full\">\n {lang === 'ja' ? '推奨' : 'RECOMMENDED'}\n </span>\n </div>\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3\">\n <CopyButton\n value={allCommands}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_all_commands' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copy.allCommandsLabel || copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n {copy.allCommandsNote && <span className=\"text-xs text-slate-500\">{copy.allCommandsNote}</span>}\n </div>\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950/60 p-5 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{rawPath?.title || copy.localQuickstartTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-blue-200 bg-blue-500/10 border border-blue-400/30 px-2 py-1 rounded-full\">\n {rawPath?.badge || 'RAW'}\n </span>\n </div>\n <p className=\"text-sm text-slate-300\">{rawPath?.body || copy.localQuickstartBody}</p>\n <details className=\"group\" open={defaultCodeOpen}>\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{codeToggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <div className=\"mt-2 rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.localQuickstartCmd}</pre>\n </div>\n </details>\n <CopyButton\n value={copy.localQuickstartCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_raw_quickstart' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n\n <details className=\"rounded-2xl border border-slate-800 bg-slate-950/60 p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{renderedPath?.title || copy.quickstartTitle}</span>\n <span className=\"flex items-center gap-2\">\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-blue-200 bg-blue-500/10 border border-blue-400/30 px-2 py-1 rounded-full\">\n {renderedPath?.badge || 'RENDERED'}\n </span>\n <ChevronDown size={16} className=\"text-slate-400\" />\n </span>\n </summary>\n <div className=\"mt-3 space-y-3\">\n <p className=\"text-sm text-slate-300\">{renderedPath?.body || copy.quickstartBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.quickstartCmd}</pre>\n </div>\n <CopyButton\n value={copy.quickstartCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_rendered_quickstart' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n </details>\n </section>\n\n <section id=\"agent-bootstrap\" className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-lg font-bold text-white\">{bootstrapCopy.title}</div>\n <a\n href={quickstartAnchorHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_quickstart_from_bootstrap' })\n }\n className=\"text-sm text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {copy.ctas.primary}\n </a>\n </div>\n <p className=\"text-sm text-slate-300\">{bootstrapCopy.body}</p>\n <div className=\"grid xl:grid-cols-2 gap-4\">\n {bootstrapCopy.cards.map((card) => (\n <div key={card.id} className=\"rounded-2xl border border-slate-800 bg-slate-950/60 p-4 space-y-3\">\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3\">\n <div className=\"space-y-1\">\n <div className=\"text-sm font-bold text-white\">{card.title}</div>\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{card.configFile}</div>\n <p className=\"text-xs text-slate-400\">{card.note}</p>\n </div>\n <a\n href={card.downloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: card.asset })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n <Download size={14} />\n {card.downloadLabel}\n </a>\n </div>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <div className=\"mb-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {bootstrapCopy.commandTitle}\n </div>\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{card.initCommand}</pre>\n </div>\n <CopyButton\n value={card.initCommand}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: `copy_bootstrap_init_${card.id}` })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || bootstrapCopy.commandCopyLabel}\n </>\n )}\n </CopyButton>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <div className=\"mb-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {bootstrapCopy.configTitle}\n </div>\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{card.config}</pre>\n </div>\n <CopyButton\n value={card.config}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: `copy_bootstrap_${card.id}` })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || bootstrapCopy.configCopyLabel}\n </>\n )}\n </CopyButton>\n </div>\n ))}\n </div>\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950/60 p-4 space-y-3\">\n <div className=\"text-sm font-bold text-white\">{bootstrapCopy.openAiTitle}</div>\n <ul className=\"space-y-2 text-sm text-slate-300\">\n {bootstrapCopy.openAiBullets.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <CheckCircle2 size={16} className=\"mt-0.5 text-green-400 shrink-0\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n </div>\n <p className=\"text-xs text-slate-500\">{bootstrapCopy.windowsNote}</p>\n </section>\n\n <section className=\"space-y-4\">\n <div className=\"text-xs uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {lang === 'ja' ? '詳細・任意' : 'Advanced / Optional'}\n </div>\n\n <details className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.promptTitle}</span>\n <span className=\"flex items-center gap-2 text-[10px] font-semibold text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n <ChevronDown size={14} className=\"text-slate-500\" />\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.promptBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.prompt}</pre>\n </div>\n <CopyButton\n value={copy.prompt}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_agent_prompt' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n </details>\n\n <details className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.templateTitle}</span>\n <span className=\"flex items-center gap-2 text-[10px] font-semibold text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n <ChevronDown size={14} className=\"text-slate-500\" />\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.templateBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.template}</pre>\n </div>\n <CopyButton\n value={copy.template}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n </details>\n\n <details id=\"downloads\" className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.downloadTitle}</span>\n <span className=\"flex items-center gap-2 text-[10px] font-semibold text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n <ChevronDown size={14} className=\"text-slate-500\" />\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.downloadBody}</p>\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <a\n href={configDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'config_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-white text-slate-900 font-bold hover:scale-[1.01] transition\"\n >\n <Download size={16} />\n {copy.downloadConfig}\n </a>\n <a\n href={csvDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'copy_csv' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {copy.downloadCsv}\n </a>\n </div>\n <div className=\"pt-1 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {copy.downloadCiTitle}\n </div>\n <p className=\"text-xs text-slate-400\">{copy.downloadCiBody}</p>\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <a\n href={githubActionsTemplateHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'ci_template_github_actions' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {copy.downloadCiGithub}\n </a>\n <a\n href={bitriseTemplateHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'ci_template_bitrise' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {copy.downloadCiBitrise}\n </a>\n </div>\n </div>\n <div className=\"pt-1 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{extraPackTitle}</div>\n <p className=\"text-xs text-slate-400\">{extraPackBody}</p>\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <a\n href={top20TemplatePackCsvHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'top20_category_pack_csv' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {top20CsvLabel}\n </a>\n <a\n href={top20TemplatePackGuideHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'top20_category_pack_guide' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {top20GuideLabel}\n </a>\n <a\n href={localizationHandoffTemplateHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'localization_handoff_csv' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {localizationHandoffLabel}\n </a>\n <a\n href={localizationCiChecklistHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'localization_ci_checklist_md' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {localizationCiLabel}\n </a>\n <a\n href={variantMatrixTemplateHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'aso_variant_matrix_csv' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {variantMatrixLabel}\n </a>\n <a\n href={jpCaseSnapshotsHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'agent_cli', asset: 'jp_case_snapshots_md' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n <Download size={16} />\n {jpCaseLabel}\n </a>\n </div>\n </div>\n </div>\n </details>\n\n <details className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.authTitle}</span>\n <span className=\"flex items-center gap-2 text-[10px] font-semibold text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n <ChevronDown size={14} className=\"text-slate-500\" />\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.authBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.authCmd}</pre>\n </div>\n <CopyButton\n value={copy.authCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_cli_auth' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.authManualCmd}</pre>\n </div>\n <CopyButton\n value={copy.authManualCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'copy_cli_auth_manual' })}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <ClipboardCopy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n </details>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"text-lg font-bold text-white\">{copy.proTitle}</div>\n <ul className=\"space-y-2 text-sm text-slate-300\">\n {copy.proBullets.map((item) => (\n <li key={item} className=\"flex items-center gap-2\">\n <CheckCircle2 size={16} className=\"text-green-400\" />\n {item}\n </li>\n ))}\n </ul>\n <div className=\"flex flex-col sm:flex-row gap-3 pt-2\">\n <a\n href={goProFooterHref}\n onClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'go_pro_footer' })}\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl bg-white text-slate-900 font-bold hover:scale-[1.02] transition\"\n >\n {copy.ctas.goPro} <ArrowRight size={16} />\n </a>\n <a\n href={sampleProjectHref}\n onClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_sample_project_footer' })}\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.ctas.sample} <ArrowRight size={16} />\n </a>\n </div>\n </section>\n\n <section\n id=\"design-partner\"\n className=\"max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\"\n >\n <div className=\"text-lg font-bold text-white\">{t('landing.partner.title')}</div>\n <div className=\"text-sm text-slate-300 leading-relaxed\">{t('landing.partner.body')}</div>\n <a\n href={designPartnerOfferHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'open_design_partner_offer' })\n }\n className=\"inline-flex items-center gap-2 text-sm text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {designPartnerOfferLabel} <ArrowRight size={14} />\n </a>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={partnerMailto}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'email_design_partner' })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {t('landing.partner.emailCta')} <ArrowRight size={16} />\n </a>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'agent_cli', cta: 'dm_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {t('landing.partner.dmCta')}\n </a>\n </div>\n <div className=\"text-xs text-slate-500\">\n {t('landing.partner.emailLabel')}{' '}\n <a href={`mailto:${supportEmail}`} className=\"underline underline-offset-4 hover:text-white\">\n {supportEmail}\n </a>\n </div>\n </section>\n </main>\n <StickyMobileCta\n primary={{\n label: copy.ctas.primary,\n href: quickstartAnchorHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'sticky_quickstart' }),\n }}\n secondary={{\n label: copy.ctas.sample,\n href: sampleProjectHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'agent_cli', cta: 'sticky_sample' }),\n }}\n />\n </div>\n );\n};\n\nexport default AgentCli;\n"],"names":["normalizeLang","lang","withEntrySource","href","entrySource","beforeHash","hash","separator","COPY","MCP_SERVER_ARGS","prettyJson","value","STANDARD_MCP_BOOTSTRAP","VSCODE_MCP_BOOTSTRAP","CLIENT_BOOTSTRAP_COPY","INTENT_ROUTE_COPY","AgentCli","i18n","t","useTranslation","copy","currentPath","intentCopySet","intentRouteCopy","candidate","intentRouteEntrySource","analyticsParams","trackEvent","name","params","baseTrackEvent","trackEventAndFollowLink","event","baseTrackEventAndFollowLink","buildInternalHref","suffix","supportEmail","trustDisclosure","trustContactLabel","partnerSubject","partnerBody","partnerMailto","openAppHref","goProHeroHref","goProFooterHref","sampleProjectHref","logoHref","toolsHref","pricingHeaderHref","pricingHref","termsHref","privacyHref","legalHref","securityHref","proofHref","designPartnerOfferHref","intentPrimaryBaseHref","intentPrimarySeparator","intentPrimaryHref","intentPayFirstHref","intentDesignPartnerHref","intentProofHref","designPartnerOfferLabel","bootstrapCopy","quickstartAnchorHref","configDownloadHref","csvDownloadHref","githubActionsTemplateHref","bitriseTemplateHref","top20TemplatePackCsvHref","top20TemplatePackGuideHref","localizationHandoffTemplateHref","localizationCiChecklistHref","variantMatrixTemplateHref","jpCaseSnapshotsHref","extraPackTitle","extraPackBody","top20CsvLabel","top20GuideLabel","localizationHandoffLabel","localizationCiLabel","variantMatrixLabel","jpCaseLabel","copyButtonLabel","codeToggleLabel","defaultCodeOpen","heroQuickstartBadge","rawPath","item","renderedPath","allCommandsSections","allCommands","usePageTitle","useEffect","jsxs","jsx","StagingBadge","SiteHeader","ArrowRight","Terminal","CliPreflightCard","FitPanel","CheckCircle2","CopyButton","copyLabel","Fragment","ClipboardCopy","ChevronDown","step","index","card","Download","StickyMobileCta"],"mappings":"ylBAYA,MAAMA,GAAiBC,IACPA,GAAQ,IAAI,MAAM,GAAG,EAAE,CAAC,IACtB,KAAO,KAAO,KAG1BC,GAAkB,CAACC,EAAMC,IAAgB,CAC7C,GAAI,CAACA,EAAa,OAAOD,EACzB,KAAM,CAACE,EAAYC,EAAO,EAAE,EAAI,OAAOH,GAAQ,EAAE,EAAE,MAAM,GAAG,EACtDI,EAAYF,EAAW,SAAS,GAAG,EAAI,IAAM,IACnD,MAAO,GAAGA,CAAU,GAAGE,CAAS,gBAAgB,mBAAmBH,CAAW,CAAC,GAAGE,EAAO,IAAIA,CAAI,GAAK,EAAE,EAC1G,EAEME,EAAO,CACX,GAAI,CACF,MAAO,yBACP,MAAO,sEACP,SACE,uTACF,SAAU,oLACV,KAAM,CACJ,QAAS,qBACT,UAAW,mBACX,MAAO,mBACP,OAAQ,qBAAA,EAEV,WAAY,oCACZ,WAAY,CACV,QAAS,UACT,MAAO,QACP,QAAS,UACT,MAAO,gBACP,SAAU,WACV,MAAO,OAAA,EAET,UAAW,yCACX,SACE,+JACF,QAAS,6BACT,YAAa,CACX,2EACA,0EACA,4DAAA,EAEF,SAAU,6FACV,MAAO,CACL,CACE,MAAO,kBACP,KAAM,0GAAA,EAER,CACE,MAAO,sBACP,KAAM,qGAAA,EAER,CACE,MAAO,yBACP,KAAM,yIAAA,CACR,EAEF,eAAgB,kCAChB,cAAe,kEACf,iBAAkB,CAChB,4DACA,sEACA,qDACA,iDACA,2CAAA,EAEF,cAAe,sEACf,oBAAqB,+BACrB,mBAAoB,kGACpB,kBAAmB,CACjB,+BACA,8DAAA,EACA,KAAK;AAAA,CAAI,EACX,aAAc,mBACd,WAAY,mCACZ,iBAAkB,oBAClB,gBAAiB,kCACjB,oBAAqB,CACnB,KAAM,+BACN,MAAO,8BACP,SAAU,gCACV,KAAM,WACN,WAAY,mBAAA,EAEd,WAAY,oCACZ,MAAO,CACL,CACE,GAAI,MACJ,MAAO,MACP,MAAO,wBACP,KAAM,iEACN,OAAQ,OAAA,EAEV,CACE,GAAI,WACJ,MAAO,WACP,MAAO,+BACP,KAAM,+DACN,OAAQ,UAAA,CACV,EAEF,qBAAsB,gCACtB,oBAAqB,6EACrB,mBAAoB,CAClB,+BACA,mCACA,mEACA,mFACA,0KACA,+DACA,wEACA,mGAAA,EACA,KAAK;AAAA,CAAI,EACX,eAAgB,mBAChB,cACE,oHACF,aAAc,mCACd,cAAe,6EACf,WAAY,oDACZ,aAAc,CACZ,iDACA,yDACA,2FACA,iEAAA,EAEF,YAAa,4BACb,WAAY,gEACZ,OAAQ,CACN,oEACA,kEACA,GACA,+BACA,SACA,GACA,iBACA,QACA,GACA,eACA,oBACA,mFACA,oIACA,oDACA,6DACA,2FACA,yEACA,+GAAA,EACA,KAAK;AAAA,CAAI,EACX,cAAe,6BACf,aAAc,kDACd,SAAU,CACR,mBACA,GACA,WACA,gBACA,GACA,WACA,mBACA,oBACA,iBACA,wBACA,GACA,UACA,YACA,kBACA,kCACA,YACA,eACA,0BACA,4BAAA,EACA,KAAK;AAAA,CAAI,EACX,gBAAiB,gCACjB,eAAgB,mHAChB,cAAe,CACb,SACA,8CACA,kEACA,8KACA,qFACA,yGACA,wHAAA,EACA,KAAK;AAAA,CAAI,EACX,UAAW,0CACX,SAAU,2DACV,QAAS,CACP,mCACA,sDACA,oCACA,oGAAA,EACA,KAAK;AAAA,CAAI,EACX,cAAe,CACb,4CACA,sDACA,oCACA,0DAAA,EACA,KAAK;AAAA,CAAI,EACX,SAAU,kBACV,WAAY,CACV,gDACA,gDACA,gCACA,cAAA,EAEF,cAAe,2BACf,aAAc,kEACd,eAAgB,kCAChB,YAAa,oBACb,gBAAiB,eACjB,eAAgB,gFAChB,iBAAkB,mCAClB,kBAAmB,2BAAA,EAErB,GAAI,CACF,MAAO,uBACP,MAAO,gCACP,SACE,yMACF,SAAU,mFACV,KAAM,CACJ,QAAS,cACT,UAAW,cACX,MAAO,cACP,OAAQ,SAAA,EAEV,WAAY,oBACZ,WAAY,CACV,QAAS,KACT,MAAO,OACP,QAAS,SACT,MAAO,QACP,SAAU,SACV,MAAO,IAAA,EAET,UAAW,gBACX,SACE,wGACF,QAAS,6BACT,YAAa,CACX,+DACA,mDACA,oCAAA,EAEF,SAAU,kDACV,MAAO,CACL,CACE,MAAO,aACP,KAAM,0DAAA,EAER,CACE,MAAO,gBACP,KAAM,wCAAA,EAER,CACE,MAAO,yBACP,KAAM,8DAAA,CACR,EAEF,eAAgB,aAChB,cAAe,gCACf,iBAAkB,CAChB,0BACA,yBACA,oBACA,iCACA,kBAAA,EAEF,cAAe,wCACf,oBAAqB,qBACrB,mBAAoB,wDACpB,kBAAmB,CACjB,+BACA,8DAAA,EACA,KAAK;AAAA,CAAI,EACX,aAAc,YACd,WAAY,mCACZ,iBAAkB,YAClB,gBAAiB,+BACjB,oBAAqB,CACnB,KAAM,aACN,MAAO,cACP,SAAU,uBACV,KAAM,QACN,WAAY,WAAA,EAEd,WAAY,iBACZ,MAAO,CACL,CACE,GAAI,MACJ,MAAO,MACP,MAAO,mBACP,KAAM,iCACN,OAAQ,OAAA,EAEV,CACE,GAAI,WACJ,MAAO,WACP,MAAO,mBACP,KAAM,kCACN,OAAQ,UAAA,CACV,EAEF,qBAAsB,iBACtB,oBAAqB,kDACrB,mBAAoB,CAClB,+BACA,qCACA,2CACA,6EACA,0JACA,+DACA,wEACA,6FAAA,EACA,KAAK;AAAA,CAAI,EACX,eAAgB,cAChB,cACE,4DACF,aAAc,mCACd,cAAe,4CACf,WAAY,iCACZ,aAAc,CACZ,iCACA,+CACA,gDACA,6BAAA,EAEF,YAAa,mBACb,WAAY,yCACZ,OAAQ,CACN,oEACA,kEACA,GACA,+BACA,SACA,GACA,iBACA,QACA,GACA,eACA,oBACA,mFACA,oIACA,oDACA,6DACA,2FACA,yEACA,+GAAA,EACA,KAAK;AAAA,CAAI,EACX,cAAe,kBACf,aAAc,yBACd,SAAU,CACR,mBACA,GACA,WACA,gBACA,GACA,WACA,mBACA,oBACA,iBACA,wBACA,GACA,UACA,YACA,kBACA,kCACA,YACA,eACA,0BACA,4BAAA,EACA,KAAK;AAAA,CAAI,EACX,gBAAiB,4BACjB,eAAgB,8DAChB,cAAe,CACb,SACA,8CACA,kEACA,8KACA,qFACA,yGACA,wHAAA,EACA,KAAK;AAAA,CAAI,EACX,UAAW,sBACX,SAAU,2BACV,QAAS,CACP,mCACA,4CACA,oCACA,oGAAA,EAC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"}