@wix/agent-skills 1.33.1 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/README.md +2 -0
  2. package/package.json +1 -1
  3. package/skills/wix-export/SKILL.md +83 -0
  4. package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
  5. package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
  6. package/skills/wix-harmony-editor/SKILL.md +317 -0
  7. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
  8. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
  9. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
  10. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
  11. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
  12. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
  13. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
  14. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
  15. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
  16. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
  17. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
  18. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
  19. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
  20. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
  21. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
  22. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
  23. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
  24. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
  25. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
  26. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
  27. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
  28. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
  29. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
  30. package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
  31. package/skills/wix-headless/SKILL.md +7 -2
  32. package/skills/wix-headless/references/CAPABILITIES.md +6 -1
  33. package/skills/wix-headless/references/DISCOVERY.md +2 -1
  34. package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
  35. package/skills/wix-headless/references/SEED.md +3 -2
  36. package/skills/wix-headless/references/SETUP.md +1 -0
  37. package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
  38. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
  39. package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
  40. package/skills/wix-headless/references/managed/CREATE.md +1 -1
  41. package/skills/wix-headless-kit/SKILL.md +110 -21
  42. package/skills/wix-headless-kit/guides/api-run.md +15 -13
  43. package/skills/wix-headless-kit/guides/existing-site.md +31 -0
  44. package/skills/wix-headless-kit/guides/migration.md +49 -17
  45. package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
  46. package/skills/wix-headless-kit/install/context.mjs +61 -6
  47. package/skills/wix-headless-kit/install/pins.json +1 -1
  48. package/skills/wix-headless-kit/install/setup.mjs +107 -12
  49. package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
  50. package/skills/wix-headless-replatform/SKILL.md +116 -0
  51. package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
  52. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
  53. package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
  54. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
  55. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
  56. package/skills/wix-headless-replatform/references/output-contract.md +93 -0
  57. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
  58. package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
  59. package/skills/wix-headless-replatform/references/safety.md +19 -0
  60. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
  61. package/skills/wix-headless-replatform/references/workflow.md +157 -0
  62. package/skills/wix-headless-replatform/registry/README.md +20 -0
  63. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
  64. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
  65. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
  66. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
  67. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
  68. package/skills/wix-headless-replatform/registry/registry.json +36 -0
  69. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
  70. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
  71. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
  72. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
  73. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
  74. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
  75. package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
  76. package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
  77. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
  78. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
  79. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
  80. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
  81. package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
  82. package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
  83. package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
  84. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
  85. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
  86. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
  87. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
  88. package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
  89. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
  90. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
  91. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
  92. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
  93. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
  94. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
  95. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
  96. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
  97. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
  98. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
  99. package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
  100. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
  101. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
  102. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
  103. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
  104. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
  105. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
  106. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
  107. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
  108. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
  109. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
  110. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
  111. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
  112. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
  113. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
  114. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
  115. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
  116. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
  117. package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
  118. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
  119. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
  120. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
  121. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
  122. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
  123. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
  124. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
  125. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
  126. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
  127. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
  128. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
  129. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
  130. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
  131. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
  132. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
  133. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
  134. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
  135. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
  136. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
  137. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
  138. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
  139. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
  140. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
  141. package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
  142. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
  143. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
  144. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
  145. package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
  146. package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
  147. package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
  148. package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
  149. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
  150. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
  151. package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
  152. package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
  153. package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
  154. package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
  155. package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
  156. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
  157. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
  158. package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
  159. package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
  160. package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
  161. package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
  162. package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
  163. package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
  164. package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
  165. package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
  166. package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
  167. package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
  168. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
  169. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
  170. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
  171. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
  172. package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
  173. package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
  174. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
  175. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
  176. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
  177. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
  178. package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
  179. package/skills/wix-import/SKILL.md +90 -0
  180. package/skills/wix-manage/SKILL.md +13 -3
  181. package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
  182. package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
  183. package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
  184. package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
  185. package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
  186. package/skills/wix-manage/references/sites/upload-static-site.md +127 -8
  187. package/skills/wix-replatform/.publish-manifest.json +5 -5
  188. package/skills/wix-replatform/CLI.md +162 -0
  189. package/skills/wix-replatform/README.md +52 -0
  190. package/skills/wix-replatform/SKILL.md +229 -684
  191. package/skills/wix-replatform/console/account.css +1 -0
  192. package/skills/wix-replatform/console/app.css +1 -0
  193. package/skills/wix-replatform/console/app.js +117 -0
  194. package/skills/wix-replatform/console/index.html +4 -0
  195. package/skills/wix-replatform/console/json.css +11 -0
  196. package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
  197. package/skills/wix-replatform/lib/app-page-routing.js +75 -0
  198. package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
  199. package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
  200. package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
  201. package/skills/wix-replatform/lib/completion-report.js +1393 -13
  202. package/skills/wix-replatform/lib/config-env.js +85 -11
  203. package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
  204. package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
  205. package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
  206. package/skills/wix-replatform/lib/destination-choice.js +163 -0
  207. package/skills/wix-replatform/lib/destination-handoff.js +62 -0
  208. package/skills/wix-replatform/lib/destination-http.js +81 -0
  209. package/skills/wix-replatform/lib/destination-route.js +98 -0
  210. package/skills/wix-replatform/lib/destination.js +919 -0
  211. package/skills/wix-replatform/lib/discovered-census.js +231 -0
  212. package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
  213. package/skills/wix-replatform/lib/document-url-guard.js +203 -0
  214. package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
  215. package/skills/wix-replatform/lib/entity-verification.js +18 -0
  216. package/skills/wix-replatform/lib/execution-capability.js +120 -0
  217. package/skills/wix-replatform/lib/execution-log.js +170 -0
  218. package/skills/wix-replatform/lib/execution-manifest.js +20 -2
  219. package/skills/wix-replatform/lib/execution-state.js +22 -0
  220. package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
  221. package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
  222. package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
  223. package/skills/wix-replatform/lib/import-recovery.js +800 -6
  224. package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
  225. package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
  226. package/skills/wix-replatform/lib/link-audit.js +173 -0
  227. package/skills/wix-replatform/lib/link-census.js +194 -0
  228. package/skills/wix-replatform/lib/link-plan.js +148 -0
  229. package/skills/wix-replatform/lib/link-verification.js +274 -0
  230. package/skills/wix-replatform/lib/link-write-journal.js +42 -0
  231. package/skills/wix-replatform/lib/local-state.js +869 -30
  232. package/skills/wix-replatform/lib/member-completion.js +658 -0
  233. package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
  234. package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
  235. package/skills/wix-replatform/lib/migration-completion.js +311 -0
  236. package/skills/wix-replatform/lib/operator-identity.js +47 -0
  237. package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
  238. package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
  239. package/skills/wix-replatform/lib/orchestration-router.js +608 -32
  240. package/skills/wix-replatform/lib/orchestration-state.js +188 -12
  241. package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
  242. package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
  243. package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
  244. package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
  245. package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
  246. package/skills/wix-replatform/lib/progress-log.js +19 -3
  247. package/skills/wix-replatform/lib/read-back-approval.js +184 -0
  248. package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
  249. package/skills/wix-replatform/lib/read-back-contract.js +243 -0
  250. package/skills/wix-replatform/lib/read-back-extract.js +118 -0
  251. package/skills/wix-replatform/lib/read-back-gate.js +734 -0
  252. package/skills/wix-replatform/lib/read-back-reads.js +94 -0
  253. package/skills/wix-replatform/lib/read-back-state.js +107 -0
  254. package/skills/wix-replatform/lib/read-back-summary.js +81 -0
  255. package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
  256. package/skills/wix-replatform/lib/run-controller.js +401 -0
  257. package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
  258. package/skills/wix-replatform/lib/setup-verification.js +148 -0
  259. package/skills/wix-replatform/lib/source-access.js +231 -0
  260. package/skills/wix-replatform/lib/source-coverage.js +1130 -0
  261. package/skills/wix-replatform/lib/source-secrets.js +277 -0
  262. package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
  263. package/skills/wix-replatform/lib/task-state.js +110 -0
  264. package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
  265. package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
  266. package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
  267. package/skills/wix-replatform/lib/url-verification.js +315 -0
  268. package/skills/wix-replatform/lib/user-action-effects.js +42 -0
  269. package/skills/wix-replatform/lib/user-actions.js +264 -0
  270. package/skills/wix-replatform/lib/website-handoff.js +1220 -0
  271. package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
  272. package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
  273. package/skills/wix-replatform/lib/write-verification-state.js +92 -0
  274. package/skills/wix-replatform/lib/write-verification.js +274 -0
  275. package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
  276. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
  277. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
  278. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
  279. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
  280. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
  281. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
  282. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
  283. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
  284. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
  285. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
  286. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
  287. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
  288. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
  289. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
  290. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
  291. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
  292. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
  293. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
  294. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
  295. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
  296. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
  297. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
  298. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
  299. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
  300. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
  301. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
  302. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
  303. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
  304. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  305. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
  306. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
  307. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
  308. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
  309. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
  310. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
  311. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
  312. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
  313. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
  314. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
  315. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
  316. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
  317. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
  318. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
  319. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
  320. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
  321. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
  322. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
  323. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
  324. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
  325. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
  326. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
  327. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
  328. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
  329. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
  330. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
  331. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
  332. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
  333. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
  334. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
  335. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
  336. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
  337. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
  338. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
  339. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
  340. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
  341. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
  342. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
  343. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
  344. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
  345. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
  346. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
  347. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
  348. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
  349. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
  350. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
  351. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
  352. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
  353. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
  354. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
  355. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
  356. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
  357. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
  358. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
  359. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
  360. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
  361. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
  362. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
  363. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
  364. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
  365. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
  366. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
  367. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
  368. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
  369. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
  370. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
  371. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
  372. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
  373. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
  374. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
  375. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
  376. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
  377. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
  378. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
  379. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
  380. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
  381. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
  382. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
  383. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
  384. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
  385. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
  386. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
  387. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
  388. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
  389. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
  390. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
  391. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
  392. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
  393. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
  394. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
  395. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
  396. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
  397. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
  398. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
  399. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
  400. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
  401. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
  402. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
  403. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
  404. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
  405. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
  406. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
  407. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
  408. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
  409. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
  410. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
  411. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
  412. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
  413. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
  414. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
  415. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
  416. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
  417. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
  418. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
  419. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
  420. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
  421. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
  422. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
  423. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
  424. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
  425. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
  426. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
  427. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
  428. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
  429. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
  430. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
  431. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
  432. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
  433. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
  434. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
  435. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
  436. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
  437. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
  438. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
  439. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
  440. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
  441. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
  442. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
  443. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
  444. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
  445. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
  446. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
  447. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
  448. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
  449. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
  450. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
  451. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
  452. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
  453. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
  454. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
  455. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
  456. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
  457. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
  458. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
  459. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
  460. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
  461. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
  462. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
  463. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
  464. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
  465. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
  466. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
  467. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
  468. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
  469. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
  470. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
  471. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
  472. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
  473. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
  474. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
  475. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
  476. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
  477. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
  478. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
  479. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
  480. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
  481. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
  482. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
  483. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
  526. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
  527. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
  528. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
  529. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
  530. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
  531. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
  532. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
  533. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
  534. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
  535. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
  536. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
  537. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
  538. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
  539. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
  540. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
  541. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
  542. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
  543. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
  544. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
  545. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
  546. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
  547. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
  548. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
  549. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
  550. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
  551. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
  552. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
  553. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
  554. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
  555. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
  556. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
  557. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
  558. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
  559. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
  560. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
  561. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
  562. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
  563. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
  564. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
  565. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
  566. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
  567. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
  568. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
  569. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
  570. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
  571. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
  572. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
  573. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
  574. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
  575. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
  576. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
  577. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
  578. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
  579. package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
  580. package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
  581. package/skills/wix-replatform/scripts/discovered-census.js +26 -0
  582. package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
  583. package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
  584. package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
  585. package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
  586. package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
  587. package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
  588. package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
  589. package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
  590. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
  591. package/skills/wix-replatform/scripts/migration-completion.js +76 -0
  592. package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
  593. package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
  594. package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
  595. package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
  596. package/skills/wix-replatform/scripts/replatform-console.js +146 -0
  597. package/skills/wix-replatform/scripts/replatform.js +436 -0
  598. package/skills/wix-replatform/scripts/source-secrets.js +77 -0
  599. package/skills/wix-replatform/scripts/url-redirects.js +286 -0
  600. package/skills/wix-replatform/scripts/user-action.js +58 -0
  601. package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
  602. package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
  603. package/skills/wix-replatform/scripts/wix-destination.js +143 -0
  604. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
  605. package/skills/wix-vibe-headless/SKILL.md +7 -3
  606. package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
  607. package/skills/wix-vibe-headless/platforms/base44.md +1 -0
  608. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
  609. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
  610. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
  611. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
  612. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
  613. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
  614. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
  615. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
  616. package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
@@ -0,0 +1,318 @@
1
+ 'use strict';
2
+
3
+ // Deterministic digest of a Claude Code session transcript.
4
+ //
5
+ // Pure function over JSONL already on disk: no model call, no network, no
6
+ // judgment. Given the same transcript files it must return byte-identical
7
+ // output, so every derived number here comes straight from fields Claude Code
8
+ // itself writes to the transcript — never from a guess or a heuristic that
9
+ // could drift between runs.
10
+ //
11
+ // Two loci write the identical JSONL shape: a local run
12
+ // under `~/.claude/projects/<escaped-cwd>/<sessionId>.jsonl`, and a sandbox
13
+ // run under `.persist/claude/projects/` inside the checkpoint (the sandbox
14
+ // symlinks `~/.claude` into the checkpointed tree). This module only ever
15
+ // reads a list of file paths, so it does not care which locus produced them.
16
+
17
+ const fs = require('node:fs');
18
+ const path = require('node:path');
19
+
20
+ // A repeated identical tool call is the signature of the unbounded-retry hang
21
+ // class — this is the threshold at which a streak counts as a
22
+ // loop rather than ordinary retry-with-backoff.
23
+ const RETRY_LOOP_MIN_REPEATS = 3;
24
+ // A gap this long between two timestamped transcript records is time the
25
+ // human or an external system held the run, not active agent work — mirrors
26
+ // the recorder's own IMPLICIT_WAIT_MIN_MS (telemetry-recorder.js) so the two
27
+ // idle notions agree on the same threshold.
28
+ const IDLE_GAP_MIN_MS = 60 * 1000;
29
+ const TOP_FAILING_MAX = 10;
30
+ const RETRY_LOOPS_MAX = 10;
31
+
32
+ function stableStringify(value) {
33
+ if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`;
34
+ if (value && typeof value === 'object') {
35
+ const keys = Object.keys(value).sort();
36
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(value[k])}`).join(',')}}`;
37
+ }
38
+ return JSON.stringify(value);
39
+ }
40
+
41
+ // Claude Code's own project-directory escaping: every character outside
42
+ // [A-Za-z0-9] becomes `-` (verified against this repo's own
43
+ // ~/.claude/projects/<escaped-cwd> directory names).
44
+ function escapeCwd(cwd) {
45
+ return String(cwd).replace(/[^A-Za-z0-9]/g, '-');
46
+ }
47
+
48
+ function readSessionRecords(file) {
49
+ const raw = fs.readFileSync(file, 'utf8');
50
+ const records = [];
51
+ let malformed = 0;
52
+ for (const line of raw.split('\n')) {
53
+ if (line.trim() === '') continue;
54
+ try {
55
+ records.push(JSON.parse(line));
56
+ } catch {
57
+ malformed += 1;
58
+ }
59
+ }
60
+ return { records, malformed };
61
+ }
62
+
63
+ // First/last top-level `timestamp` and the `cwd` of a session file, without
64
+ // holding the whole parse result — used to decide which sibling sessions
65
+ // belong to this run before paying for the full digest pass.
66
+ function peekSession(file) {
67
+ const { records } = readSessionRecords(file);
68
+ let firstTs = null;
69
+ let lastTs = null;
70
+ let cwd = null;
71
+ for (const record of records) {
72
+ if (typeof record.timestamp !== 'string') continue;
73
+ const ms = Date.parse(record.timestamp);
74
+ if (!Number.isFinite(ms)) continue;
75
+ if (firstTs === null) firstTs = ms;
76
+ lastTs = ms;
77
+ if (cwd === null && typeof record.cwd === 'string') cwd = record.cwd;
78
+ }
79
+ return { firstTs, lastTs, cwd };
80
+ }
81
+
82
+ // Every sibling `.jsonl` in the same project directory as `anchorTranscript`
83
+ // whose recorded `cwd` matches and whose time range overlaps
84
+ // [windowStartMs, windowEndMs]. A resumed run spans several sessionIds —
85
+ // this is the correlation the manifest then writes
86
+ // down once so a later reader never has to re-derive it.
87
+ function discoverRunSessions(anchorTranscript, { windowStartMs, windowEndMs }) {
88
+ const dir = path.dirname(anchorTranscript);
89
+ const anchor = peekSession(anchorTranscript);
90
+ const cwd = anchor.cwd;
91
+ const entries = fs.readdirSync(dir).filter((name) => name.endsWith('.jsonl'));
92
+ const included = [];
93
+ for (const name of entries) {
94
+ const file = path.join(dir, name);
95
+ const info = peekSession(file);
96
+ if (info.firstTs === null) continue;
97
+ if (cwd !== null && info.cwd !== null && info.cwd !== cwd) continue;
98
+ if (info.lastTs < windowStartMs || info.firstTs > windowEndMs) continue;
99
+ included.push({
100
+ sessionId: path.basename(name, '.jsonl'),
101
+ path: file,
102
+ firstTs: info.firstTs,
103
+ lastTs: info.lastTs,
104
+ });
105
+ }
106
+ included.sort((a, b) => a.firstTs - b.firstTs);
107
+ if (included.length === 0) {
108
+ // The anchor transcript itself always counts, even if its own window
109
+ // check above (identical file) somehow fails a boundary comparison.
110
+ included.push({ sessionId: path.basename(anchorTranscript, '.jsonl'), path: anchorTranscript, ...anchor });
111
+ }
112
+ return included;
113
+ }
114
+
115
+ function toolUseBlocks(message) {
116
+ const content = message && message.content;
117
+ if (!Array.isArray(content)) return [];
118
+ return content.filter((c) => c && c.type === 'tool_use');
119
+ }
120
+
121
+ function toolResultBlocks(message) {
122
+ const content = message && message.content;
123
+ if (!Array.isArray(content)) return [];
124
+ return content.filter((c) => c && c.type === 'tool_result');
125
+ }
126
+
127
+ // A genuine human turn, as distinct from a tool result: both travel as
128
+ // `type: "user"` records in Claude Code's transcript (matching the
129
+ // Anthropic Messages API, where a tool_result is also role:"user"). A tool
130
+ // result carries `toolUseResult` and/or tool_result content blocks; a
131
+ // sidechain user record is the orchestrator's prompt *to* a subagent, not a
132
+ // person. Excluding both is what makes this the friction half of
133
+ // adoption-vs-friction rather than an inflated turn count.
134
+ function isHumanTurn(record) {
135
+ if (record.type !== 'user' || record.isSidechain || record.isMeta) return false;
136
+ if (record.toolUseResult !== undefined) return false;
137
+ if (toolResultBlocks(record.message).length > 0) return false;
138
+ return true;
139
+ }
140
+
141
+ function topN(counts, n) {
142
+ return [...counts.entries()]
143
+ .map(([tool, count]) => ({ tool, n: count }))
144
+ .sort((a, b) => b.n - a.n || a.tool.localeCompare(b.tool))
145
+ .slice(0, n);
146
+ }
147
+
148
+ // The deterministic digest itself: counts, durations, tool
149
+ // names — never client data, never free text. `stageForTs(ms)` is an
150
+ // optional pure lookup (typically built from the telemetry journal's
151
+ // stage_start/stage_end intervals) used only to label which stage a retry
152
+ // loop or edit fell in; omitting it leaves `stage: null` rather than guessing.
153
+ function computeDigest(sessionFiles, { tailComplete = true, stageForTs = () => null } = {}) {
154
+ if (!Array.isArray(sessionFiles) || sessionFiles.length === 0) {
155
+ throw new Error('computeDigest requires at least one session file');
156
+ }
157
+
158
+ let ccVersion = null;
159
+ let transcriptTurns = 0;
160
+ let humanTurns = 0;
161
+ let agentTurns = 0;
162
+ let sidechainTurns = 0;
163
+ let inputTokens = 0;
164
+ let outputTokens = 0;
165
+ let cacheReadTokens = 0;
166
+ let cacheCreationTokens = 0;
167
+ let toolCalls = 0;
168
+ let toolFailures = 0;
169
+ const toolFailureCounts = new Map();
170
+ const toolNameById = new Map();
171
+ const editedFiles = new Set();
172
+ let hookBlocks = 0;
173
+ let hookErrors = 0;
174
+ const retryLoops = [];
175
+ const timestampsMs = [];
176
+
177
+ let streakKey = null;
178
+ let streakTool = null;
179
+ let streakLen = 0;
180
+ let streakStartTs = null;
181
+ const flushStreak = () => {
182
+ if (streakLen >= RETRY_LOOP_MIN_REPEATS) {
183
+ retryLoops.push({ tool: streakTool, repeats: streakLen, stage: stageForTs(streakStartTs) });
184
+ }
185
+ streakKey = null;
186
+ streakTool = null;
187
+ streakLen = 0;
188
+ streakStartTs = null;
189
+ };
190
+
191
+ for (const session of [...sessionFiles].sort((a, b) => (a.firstTs || 0) - (b.firstTs || 0))) {
192
+ const { records } = readSessionRecords(session.path);
193
+ for (const record of records) {
194
+ if (typeof record.version === 'string') ccVersion = record.version;
195
+ const tsMs = typeof record.timestamp === 'string' ? Date.parse(record.timestamp) : NaN;
196
+ if (Number.isFinite(tsMs)) timestampsMs.push(tsMs);
197
+
198
+ if (record.type === 'assistant') {
199
+ transcriptTurns += 1;
200
+ if (record.isSidechain) sidechainTurns += 1;
201
+ else agentTurns += 1;
202
+ const usage = record.message && record.message.usage;
203
+ if (usage) {
204
+ inputTokens += usage.input_tokens || 0;
205
+ outputTokens += usage.output_tokens || 0;
206
+ cacheReadTokens += usage.cache_read_input_tokens || 0;
207
+ cacheCreationTokens += usage.cache_creation_input_tokens || 0;
208
+ }
209
+ for (const block of toolUseBlocks(record.message)) {
210
+ toolNameById.set(block.id, block.name);
211
+ toolCalls += 1;
212
+ const key = `${block.name}:${stableStringify(block.input)}`;
213
+ if (key === streakKey) {
214
+ streakLen += 1;
215
+ } else {
216
+ flushStreak();
217
+ streakKey = key;
218
+ streakTool = block.name;
219
+ streakLen = 1;
220
+ streakStartTs = Number.isFinite(tsMs) ? tsMs : streakStartTs;
221
+ }
222
+ }
223
+ continue;
224
+ }
225
+
226
+ if (record.type === 'user') {
227
+ if (isHumanTurn(record)) {
228
+ transcriptTurns += 1;
229
+ humanTurns += 1;
230
+ }
231
+ for (const result of toolResultBlocks(record.message)) {
232
+ const name = toolNameById.get(result.tool_use_id) || 'unknown';
233
+ if (result.is_error) {
234
+ toolFailures += 1;
235
+ toolFailureCounts.set(name, (toolFailureCounts.get(name) || 0) + 1);
236
+ // A tool call whose result is an error breaks any retry streak it
237
+ // was part of only if the NEXT call changes shape; a genuine retry
238
+ // loop is agent-driven (repeated tool_use), so failures are
239
+ // counted but do not themselves reset the streak tracker above.
240
+ }
241
+ }
242
+ continue;
243
+ }
244
+
245
+ if (record.type === 'system') {
246
+ if (Array.isArray(record.hookErrors)) hookErrors += record.hookErrors.length;
247
+ if (record.preventedContinuation === true) hookBlocks += 1;
248
+ continue;
249
+ }
250
+
251
+ if (record.type === 'file-history-snapshot' && record.isSnapshotUpdate === true) {
252
+ const backups = record.snapshot && record.snapshot.trackedFileBackups;
253
+ if (backups && typeof backups === 'object') {
254
+ for (const filePath of Object.keys(backups)) editedFiles.add(filePath);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ flushStreak();
260
+
261
+ timestampsMs.sort((a, b) => a - b);
262
+ const wallMs = timestampsMs.length > 1 ? timestampsMs[timestampsMs.length - 1] - timestampsMs[0] : 0;
263
+ let idleMs = 0;
264
+ let longestGapMs = 0;
265
+ for (let i = 1; i < timestampsMs.length; i += 1) {
266
+ const gap = timestampsMs[i] - timestampsMs[i - 1];
267
+ if (gap > longestGapMs) longestGapMs = gap;
268
+ if (gap >= IDLE_GAP_MIN_MS) idleMs += gap;
269
+ }
270
+ const activeMs = Math.max(0, wallMs - idleMs);
271
+
272
+ retryLoops.sort((a, b) => b.repeats - a.repeats);
273
+
274
+ return {
275
+ source: {
276
+ sessions: sessionFiles.length,
277
+ transcript_turns: transcriptTurns,
278
+ cc_version: ccVersion,
279
+ tail_complete: tailComplete,
280
+ },
281
+ cost: {
282
+ input_tokens: inputTokens,
283
+ output_tokens: outputTokens,
284
+ cache_read_input_tokens: cacheReadTokens,
285
+ cache_creation_input_tokens: cacheCreationTokens,
286
+ },
287
+ interaction: {
288
+ human_turns: humanTurns,
289
+ agent_turns: agentTurns,
290
+ sidechain_turns: sidechainTurns,
291
+ },
292
+ time: {
293
+ wall_ms: wallMs,
294
+ active_ms: activeMs,
295
+ idle_ms: idleMs,
296
+ longest_gap_ms: longestGapMs,
297
+ },
298
+ tools: {
299
+ calls: toolCalls,
300
+ failures: toolFailures,
301
+ top_failing: topN(toolFailureCounts, TOP_FAILING_MAX),
302
+ },
303
+ signals: {
304
+ retry_loops: retryLoops.slice(0, RETRY_LOOPS_MAX),
305
+ hook_blocks: hookBlocks,
306
+ hook_errors: hookErrors,
307
+ files_edited_mid_run: editedFiles.size,
308
+ },
309
+ };
310
+ }
311
+
312
+ module.exports = {
313
+ RETRY_LOOP_MIN_REPEATS,
314
+ IDLE_GAP_MIN_MS,
315
+ escapeCwd,
316
+ discoverRunSessions,
317
+ computeDigest,
318
+ };
@@ -9,8 +9,8 @@
9
9
  //
10
10
  // TRAP this deliberately handles: a bulk write logs ONE audit row PER ITEM, each carrying the
11
11
  // BATCH's total latency. Summing `latencyMs` across rows therefore multiplies one call's latency by
12
- // its item count — on a real run that turned 346s of elapsed import into 1,050,992ms of "API time",
13
- // three times longer than the stage existed. Rows are collapsed per distinct
12
+ // its item count — the "API time" total can come out many times longer than the stage itself
13
+ // lasted. Rows are collapsed per distinct
14
14
  // (runId, endpoint, batch, latencyMs) so a batch counts once, while genuinely separate calls
15
15
  // (category creates, link calls) each count individually.
16
16
 
@@ -14,17 +14,30 @@
14
14
  // node scripts/rp-telemetry.js meter '{"model_ms":42000,"output_tokens":18000}'
15
15
  // node scripts/rp-telemetry.js wait start [--halt <subtype> --skill <s> [--what '<text>']]
16
16
  // node scripts/rp-telemetry.js wait end
17
+ // node scripts/rp-telemetry.js digest --transcript <path to CC session jsonl> [--offline]
17
18
  // node scripts/rp-telemetry.js finalize '<rollup-json>'
18
19
  // node scripts/rp-telemetry.js rebuild [--attempt <n>] [--push]
19
20
  // node scripts/rp-telemetry.js status
20
21
  //
22
+ // `digest`: call it just before `finalize`. It parses the Claude
23
+ // Code session transcript that produced this run — no model, no network, so a
24
+ // failure here must never abort the migration (`|| true` it). Pass `--offline`
25
+ // when re-running it later against a checkpointed or local transcript to
26
+ // produce the digest for a run that died before ever calling it; omitted, the
27
+ // digest is the in-run call and necessarily misses the final few turns it is
28
+ // itself part of (`source.tail_complete: false`). Also copies this run's
29
+ // sessions into telemetry/transcripts/<sessionId>.jsonl.gz + manifest.json.
30
+ //
21
31
  // Output: one JSON object on stdout. {"ok":true,...} on success; on rejection
22
32
  // {"ok":false,"errors":[...],"hint":...} with exit code 1 — fix and retry.
23
33
 
24
34
  const fs = require('node:fs');
35
+ const path = require('node:path');
36
+ const zlib = require('node:zlib');
25
37
  const recorder = require('../lib/telemetry-recorder.js');
38
+ const transcriptDigestLib = require('../lib/transcript-digest.js');
26
39
 
27
- const VALUE_FLAGS = new Set(['--project', '--outcome', '--halt', '--skill', '--what', '--attempt', '--stage']);
40
+ const VALUE_FLAGS = new Set(['--project', '--outcome', '--halt', '--skill', '--what', '--attempt', '--stage', '--transcript']);
28
41
  // Meter measurements are accepted as kebab-case flags so a shell script can report its own timing
29
42
  // without composing JSON: --api-ms 1234 --api-calls 73.
30
43
  const METER_FLAGS = new Map(
@@ -32,12 +45,36 @@ const METER_FLAGS = new Map(
32
45
  .map((key) => [`--${key.replace(/_/g, '-')}`, key]),
33
46
  );
34
47
 
48
+ const SOURCE_READ_FLAGS = new Map(
49
+ ['discovery_queries', 'scoped_queries', 'tier_refusals', 'redacted_values']
50
+ .map((key) => [`--${key.replace(/_/g, '-')}`, key]),
51
+ );
52
+ // Repeatable, because a run touches several tables: --discovery-table postmeta --discovery-table wc_orders_meta
53
+ const SOURCE_READ_LIST_FLAGS = new Map([['--discovery-table', 'discovery_tables'], ['--scoped-table', 'scoped_tables']]);
54
+
35
55
  function parseArgs(argv) {
36
56
  const positional = [];
37
57
  const flags = {};
38
58
  const meter = {};
59
+ const sourceRead = {};
39
60
  for (let i = 0; i < argv.length; i += 1) {
40
61
  const arg = argv[i];
62
+ if (SOURCE_READ_FLAGS.has(arg)) {
63
+ const raw = argv[i + 1];
64
+ const value = Number(raw);
65
+ if (!Number.isFinite(value)) fail([`${arg} expects a number (got: ${raw === undefined ? '(none)' : raw})`]);
66
+ sourceRead[SOURCE_READ_FLAGS.get(arg)] = value;
67
+ i += 1;
68
+ continue;
69
+ }
70
+ if (SOURCE_READ_LIST_FLAGS.has(arg)) {
71
+ const key = SOURCE_READ_LIST_FLAGS.get(arg);
72
+ const raw = argv[i + 1];
73
+ if (raw === undefined) fail([`${arg} expects a bare table name`]);
74
+ sourceRead[key] = [...(sourceRead[key] || []), raw];
75
+ i += 1;
76
+ continue;
77
+ }
41
78
  if (VALUE_FLAGS.has(arg)) {
42
79
  flags[arg.slice(2)] = argv[i + 1];
43
80
  i += 1;
@@ -49,13 +86,15 @@ function parseArgs(argv) {
49
86
  i += 1;
50
87
  } else if (arg === '--push') {
51
88
  flags.push = true;
89
+ } else if (arg === '--offline') {
90
+ flags.offline = true;
52
91
  } else if (arg.startsWith('--')) {
53
92
  fail([`unknown flag: ${arg}`]);
54
93
  } else {
55
94
  positional.push(arg);
56
95
  }
57
96
  }
58
- return { positional, flags, meter };
97
+ return { positional, flags, meter, sourceRead };
59
98
  }
60
99
 
61
100
  function fail(errors, hint) {
@@ -73,8 +112,58 @@ function parseJsonArg(raw, label) {
73
112
  return undefined;
74
113
  }
75
114
 
115
+ // Locates a `stage` for a timestamp from this run's own journal, so a retry
116
+ // loop or hook block in the digest can be attributed to the stage it fell in
117
+ // without the pure parser having to know anything about telemetry stages.
118
+ function stageIntervalsFor(state, nowMs) {
119
+ const intervals = state.entries.map((e) => ({ stage: e.stage, start: Date.parse(e.start), end: Date.parse(e.end) }));
120
+ if (state.openStage) {
121
+ intervals.push({ stage: state.openStage, start: Date.parse(state.openStageStart), end: nowMs });
122
+ }
123
+ return (ms) => {
124
+ if (!Number.isFinite(ms)) return null;
125
+ const hit = intervals.find((iv) => ms >= iv.start && ms <= iv.end);
126
+ return hit ? hit.stage : null;
127
+ };
128
+ }
129
+
130
+ async function runDigest(projectDir, transcriptPath, { offline }) {
131
+ const journal = recorder.readJournal(projectDir);
132
+ if (!journal) fail(['no active telemetry run in this project'], "call `rp-telemetry.js start` first");
133
+ const state = recorder.replay(journal.records);
134
+ if (!state.runStart) fail(['telemetry journal is corrupt: missing run-start record']);
135
+
136
+ const windowStartMs = Date.parse(state.runStart.ts);
137
+ const nowMs = Date.now();
138
+ const sessions = transcriptDigestLib.discoverRunSessions(transcriptPath, { windowStartMs, windowEndMs: nowMs });
139
+ const digest = transcriptDigestLib.computeDigest(sessions, {
140
+ tailComplete: offline === true,
141
+ stageForTs: stageIntervalsFor(state, nowMs),
142
+ });
143
+
144
+ // Copy, never move — Claude Code owns the original.
145
+ const transcriptsDir = path.join(projectDir, 'telemetry', 'transcripts');
146
+ fs.mkdirSync(transcriptsDir, { recursive: true });
147
+ const manifestPath = path.join(transcriptsDir, 'manifest.json');
148
+ const manifest = fs.existsSync(manifestPath) ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) : {};
149
+ const runId = state.runStart.run_id;
150
+ const sessionIds = new Set(manifest[runId] || []);
151
+ for (const session of sessions) {
152
+ const dest = path.join(transcriptsDir, `${session.sessionId}.jsonl.gz`);
153
+ if (!fs.existsSync(dest)) fs.writeFileSync(dest, zlib.gzipSync(fs.readFileSync(session.path)));
154
+ sessionIds.add(session.sessionId);
155
+ }
156
+ manifest[runId] = [...sessionIds];
157
+ const manifestTemp = `${manifestPath}.${process.pid}.tmp`;
158
+ fs.writeFileSync(manifestTemp, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
159
+ fs.renameSync(manifestTemp, manifestPath);
160
+
161
+ const recorded = await recorder.transcriptDigest(projectDir, digest);
162
+ return { ...recorded, sessions_included: sessions.length, tail_complete: digest.source.tail_complete };
163
+ }
164
+
76
165
  async function main() {
77
- const { positional, flags, meter } = parseArgs(process.argv.slice(2));
166
+ const { positional, flags, meter, sourceRead } = parseArgs(process.argv.slice(2));
78
167
  const [command, ...rest] = positional;
79
168
  const projectDir = flags.project || process.cwd();
80
169
  if (!fs.existsSync(projectDir) || !fs.statSync(projectDir).isDirectory()) {
@@ -104,6 +193,14 @@ async function main() {
104
193
  result = recorder.meter(projectDir, payload);
105
194
  break;
106
195
  }
196
+ case 'source-read': {
197
+ // Counts key/value source reads; accumulates across calls, so a reader can
198
+ // report per batch. Table lists come as repeated --discovery-table/--scoped-table flags.
199
+ const fromJson = rest[0] === undefined ? {} : parseJsonArg(rest[0], 'source-read');
200
+ const payload = { ...fromJson, ...sourceRead };
201
+ result = recorder.sourceRead(projectDir, payload);
202
+ break;
203
+ }
107
204
  case 'wait':
108
205
  result = await recorder.wait(projectDir, rest[0], {
109
206
  haltSubtype: flags.halt,
@@ -111,6 +208,11 @@ async function main() {
111
208
  what: flags.what,
112
209
  });
113
210
  break;
211
+ case 'digest':
212
+ if (!flags.transcript) fail(['--transcript <path to Claude Code session jsonl> is required']);
213
+ if (!fs.existsSync(flags.transcript)) fail([`transcript not found: ${flags.transcript}`]);
214
+ result = await runDigest(projectDir, flags.transcript, { offline: flags.offline === true });
215
+ break;
114
216
  case 'finalize':
115
217
  result = await recorder.finalize(projectDir, parseJsonArg(rest[0], 'rollup'));
116
218
  break;
@@ -126,7 +228,7 @@ async function main() {
126
228
  default:
127
229
  fail(
128
230
  [`unknown command: ${command || '(none)'}`],
129
- 'commands: start, dims, record, stage start|end, meter, wait start|end, finalize, rebuild, status',
231
+ 'commands: start, dims, record, stage start|end, meter, wait start|end, digest, finalize, rebuild, status',
130
232
  );
131
233
  return;
132
234
  }
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: rp-website-continuation
3
+ description: >-
4
+ Continues a website-mode migration from the validated backend handoff through frontend
5
+ build, post-build gap analysis/fixing, release, and a durable frontend completion receipt.
6
+ ---
7
+
8
+ # rp-website-continuation
9
+
10
+ Use this resource only when the orchestration router returns
11
+ `nextResource: resources/rp-website-continuation/`.
12
+
13
+ ## Contract
14
+
15
+ **Editor destinations.** When `targetSiteType` is `studio` or `harmony`, there is no
16
+ supported automatic website migration: never invoke `wix-headless-replatform`, never scaffold
17
+ `frontend/`, and never publish the site. The router reports
18
+ `editor_website_handoff_outstanding`; keep the website obligation outstanding as the
19
+ completion report's `editor_website_unfinished` / `editor_publication_outstanding` operator
20
+ actions (site owner/designer, then Cutover Operator) and do not claim combined completion until
21
+ a valid released `website/completion.json` exists for the bound site.
22
+
23
+ For `deliveryMode=website`, this is a frontend-only run — but it still needs a destination,
24
+ and that destination is still `rp-destination`'s job, not this skill's or
25
+ `wix-headless-replatform`'s. Do not let `wix-headless-replatform` scaffold its own site here:
26
+ its only safeguard against a duplicate is "does a local folder already have a
27
+ `package.json`," which is not the same account-confirmation gate, `WIX_SITE_ID`
28
+ persistence, and dashboard-URL report that every other delivery mode gets.
29
+
30
+ 1. Resolve the destination via `rp-destination` first, scaffolding into
31
+ `<projectDir>/frontend` with `--site-template blank` (there is no backend catalog to
32
+ provision for, and this matches `wix-headless-replatform`'s own default template choice
33
+ for the home-scope clone this invocation performs). Persist `WIX_SITE_ID` in
34
+ `config/wix.env` and report the dashboard URL, same as any other mode.
35
+ 2. Then invoke `wix-headless-replatform` with the source URL and
36
+ `--out <projectDir>/frontend`; do not run backend discovery, mapping, setup, or import.
37
+ Because `<projectDir>/frontend` already contains a valid scaffold from step 1,
38
+ `wix-headless-replatform`'s own standalone reuse check finds it and continues from
39
+ there instead of scaffolding a second site.
40
+
41
+ Finish its build and gap loop. Only when the user explicitly requested facelift at intake,
42
+ run the separate post-clone UI/UX Pro Max facelift and acceptance review; otherwise do not
43
+ load that stage. Then release and write `website/completion.json` with
44
+ `finalize-migration-website.mjs --project-dir <projectDir> --out <projectDir>/frontend
45
+ --release-url <public-url>`.
46
+
47
+ `execution/completion-report.json` means backend import accounting. It is not the terminal
48
+ result of a `deliveryMode=management_and_website` migration.
49
+
50
+ **Two different documents, two different jobs.** `website/handoff.json` is the
51
+ backend-to-frontend package: a website build needs its bindings contract *before* it starts, so
52
+ it keeps being produced when it is, from the plan. It is **not** the run's account of the
53
+ migration. That is `execution/review/migration-handoff.md`, generated after the last write from
54
+ `execution/completion-report.json` — never hand `handoff-summary.md` to anyone as the account of
55
+ what the migration did.
56
+
57
+ The freshness check composes with this: once the backend import writes its completion report,
58
+ `liveImportSummary` or `recoveryLog`, the recorded fingerprint moves and the router returns
59
+ `stale_website_handoff`, forcing the package to be regenerated from the finished run before the
60
+ frontend build consumes it.
61
+
62
+ When the route reason is `missing_website_handoff` or `stale_website_handoff`, first run
63
+ `node skills/wix-replatform/scripts/website-handoff-generate.js <projectDir>` and route
64
+ again. Otherwise load the current `website/handoff.json`, then invoke
65
+ `wix-headless-replatform` in migration mode via its `--handoff` flag:
66
+
67
+ ```bash
68
+ node scripts/site-clone.mjs <source-url> --handoff <projectDir>/website/handoff.json
69
+ ```
70
+
71
+ **`--handoff` is required here, not optional.** It is the only thing that puts
72
+ `wix-headless-replatform` into migration-phase mode; without it the skill falls back to
73
+ standalone mode and unconditionally scaffolds and executes a new `@wix/new headless` call —
74
+ a second, orphaned site, which is exactly the failure "never create a second destination
75
+ site" (see `rp-destination`) exists to prevent. Continue its actual build, post-build gap
76
+ analysis, bounded fix loop, and release sequence. Do not stop after implementation or a
77
+ successful build.
78
+
79
+ The frontend skill must atomically write `website/completion.json` before this resource can
80
+ finish. A successful receipt has the current `handoffFingerprint`, completed screenshot
81
+ review, zero unresolved critical/high gaps, and a released (or explicitly not-applicable)
82
+ release state.
83
+
84
+ If a genuine blocker remains after required 1-click recovery/escalation retries, persist a
85
+ `status: "blocked"` receipt with the blocker code, evidence, attempted recovery, owner,
86
+ and exact unblock action. Then route again. Do not describe a pending storefront as a
87
+ completed migration.
88
+
89
+ After the gap loop has passed and the storefront is released, write the receipt with:
90
+
91
+ ```bash
92
+ node skills/wix-headless-replatform/scripts/finalize-migration-website.mjs \
93
+ --handoff <projectDir>/website/handoff.json --release-url <public-url>
94
+ ```
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const path = require('node:path');
5
+ const {
6
+ buildReconciliation
7
+ } = require('../lib/census-reconciliation.js');
8
+ async function main(args = process.argv.slice(2)) {
9
+ if (args.length !== 2 || args[0] !== 'build') throw new Error('Usage: census-reconciliation.js build <projectDir>');
10
+ const result = await buildReconciliation(path.resolve(args[1]));
11
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
12
+ if (result.errors.length) process.exitCode = 1;
13
+ return result;
14
+ }
15
+ if (require.main === module) main().catch(error => {
16
+ process.stderr.write(`${JSON.stringify({
17
+ ok: false,
18
+ code: error.code || 'census_reconciliation_failed',
19
+ message: error.message
20
+ })}\n`);
21
+ process.exitCode = 1;
22
+ });
23
+ module.exports = {
24
+ main
25
+ };