@wix/agent-skills 1.36.0 → 1.36.1

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 (776) hide show
  1. package/package.json +8 -3
  2. package/skills/wix-headless-kit/install/pins.json +1 -1
  3. package/skills/wix-manage/SKILL.md +3 -3
  4. package/skills/wix-manage/references/cms/cms-data-items-crud.md +78 -1
  5. package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +11 -11
  6. package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +20 -51
  7. package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +4 -4
  8. package/skills/wix-base44-connector/SKILL.md +0 -437
  9. package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +0 -78
  10. package/skills/wix-base44-connector/scripts/utils.cjs +0 -466
  11. package/skills/wix-export/SKILL.md +0 -83
  12. package/skills/wix-harmony-editor/.publish-manifest.json +0 -8
  13. package/skills/wix-harmony-editor/COPY-SITE.md +0 -494
  14. package/skills/wix-harmony-editor/SKILL.md +0 -317
  15. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +0 -249
  16. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +0 -225
  17. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +0 -89
  18. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +0 -76
  19. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +0 -212
  20. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +0 -44
  21. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +0 -45
  22. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +0 -53
  23. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +0 -76
  24. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +0 -16
  25. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +0 -150
  26. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +0 -27
  27. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +0 -56
  28. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +0 -211
  29. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +0 -29
  30. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +0 -92
  31. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +0 -56
  32. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +0 -73
  33. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +0 -67
  34. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +0 -102
  35. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +0 -40
  36. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +0 -191
  37. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +0 -61
  38. package/skills/wix-harmony-editor/scripts/launch.sh +0 -359
  39. package/skills/wix-headless/SKILL.md +0 -151
  40. package/skills/wix-headless/references/AI_FEATURES.md +0 -178
  41. package/skills/wix-headless/references/CAPABILITIES.md +0 -117
  42. package/skills/wix-headless/references/CONTENT.md +0 -36
  43. package/skills/wix-headless/references/DESIGN.md +0 -55
  44. package/skills/wix-headless/references/DISCOVERY.md +0 -80
  45. package/skills/wix-headless/references/DOC_DISCOVERY.md +0 -43
  46. package/skills/wix-headless/references/FEEDBACK.md +0 -129
  47. package/skills/wix-headless/references/IMAGE_GENERATION.md +0 -80
  48. package/skills/wix-headless/references/SDK_HANDOFF.md +0 -108
  49. package/skills/wix-headless/references/SEED.md +0 -74
  50. package/skills/wix-headless/references/SETUP.md +0 -60
  51. package/skills/wix-headless/references/astro.md +0 -98
  52. package/skills/wix-headless/references/inline-recipes/experience-donations.md +0 -102
  53. package/skills/wix-headless/references/inline-recipes/experience-store.md +0 -49
  54. package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +0 -196
  55. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +0 -590
  56. package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +0 -279
  57. package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +0 -163
  58. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +0 -146
  59. package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +0 -203
  60. package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +0 -696
  61. package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +0 -124
  62. package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +0 -160
  63. package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +0 -118
  64. package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +0 -132
  65. package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +0 -126
  66. package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +0 -254
  67. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +0 -191
  68. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +0 -213
  69. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +0 -161
  70. package/skills/wix-headless/references/inline-recipes/setup-blog.md +0 -175
  71. package/skills/wix-headless/references/inline-recipes/setup-bookings.md +0 -232
  72. package/skills/wix-headless/references/inline-recipes/setup-cms.md +0 -200
  73. package/skills/wix-headless/references/inline-recipes/setup-donations.md +0 -15
  74. package/skills/wix-headless/references/inline-recipes/setup-events.md +0 -196
  75. package/skills/wix-headless/references/inline-recipes/setup-forms.md +0 -288
  76. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +0 -214
  77. package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +0 -155
  78. package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +0 -229
  79. package/skills/wix-headless/references/inline-recipes/setup-rentals.md +0 -254
  80. package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +0 -73
  81. package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +0 -197
  82. package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +0 -136
  83. package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +0 -152
  84. package/skills/wix-headless/references/managed/AUTHENTICATION.md +0 -71
  85. package/skills/wix-headless/references/managed/CONNECT.md +0 -74
  86. package/skills/wix-headless/references/managed/CREATE.md +0 -149
  87. package/skills/wix-headless/references/managed/DEPLOYMENT.md +0 -104
  88. package/skills/wix-headless/references/non-astro.md +0 -59
  89. package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +0 -22
  90. package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +0 -15
  91. package/skills/wix-headless/references/stripe/AUTHENTICATION.md +0 -55
  92. package/skills/wix-headless/references/stripe/DEPLOYMENT.md +0 -71
  93. package/skills/wix-headless/scripts/bootstrap.mjs +0 -156
  94. package/skills/wix-headless-replatform/.publish-manifest.json +0 -8
  95. package/skills/wix-headless-replatform/SKILL.md +0 -116
  96. package/skills/wix-headless-replatform/agents/openai.yaml +0 -6
  97. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +0 -43
  98. package/skills/wix-headless-replatform/references/extraction-schema.md +0 -187
  99. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +0 -137
  100. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +0 -41
  101. package/skills/wix-headless-replatform/references/output-contract.md +0 -93
  102. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +0 -125
  103. package/skills/wix-headless-replatform/references/qa-checklist.md +0 -83
  104. package/skills/wix-headless-replatform/references/safety.md +0 -19
  105. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +0 -70
  106. package/skills/wix-headless-replatform/references/workflow.md +0 -157
  107. package/skills/wix-headless-replatform/registry/README.md +0 -20
  108. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +0 -28
  109. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +0 -54
  110. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +0 -60
  111. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +0 -48
  112. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +0 -21
  113. package/skills/wix-headless-replatform/registry/registry.json +0 -36
  114. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +0 -32
  115. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +0 -62
  116. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +0 -64
  117. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +0 -42
  118. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +0 -73
  119. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +0 -10
  120. package/skills/wix-headless-replatform/schemas/candidate.schema.json +0 -19
  121. package/skills/wix-headless-replatform/schemas/common.schema.json +0 -33
  122. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +0 -10
  123. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +0 -10
  124. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +0 -28
  125. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +0 -34
  126. package/skills/wix-headless-replatform/schemas/final-report.schema.json +0 -10
  127. package/skills/wix-headless-replatform/schemas/foundation.schema.json +0 -11
  128. package/skills/wix-headless-replatform/schemas/metadata.schema.json +0 -11
  129. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +0 -17
  130. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +0 -11
  131. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +0 -33
  132. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +0 -11
  133. package/skills/wix-headless-replatform/schemas/unit.schema.json +0 -40
  134. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +0 -844
  135. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +0 -163
  136. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +0 -42
  137. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +0 -228
  138. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +0 -87
  139. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +0 -505
  140. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +0 -142
  141. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +0 -140
  142. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +0 -637
  143. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +0 -1903
  144. package/skills/wix-headless-replatform/scripts/extract-page.mjs +0 -2461
  145. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +0 -25
  146. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +0 -63
  147. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +0 -126
  148. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +0 -180
  149. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +0 -98
  150. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +0 -103
  151. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +0 -176
  152. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +0 -261
  153. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +0 -25
  154. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +0 -342
  155. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +0 -140
  156. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +0 -22
  157. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +0 -143
  158. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +0 -288
  159. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +0 -266
  160. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +0 -111
  161. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +0 -570
  162. package/skills/wix-headless-replatform/scripts/lib/common.mjs +0 -329
  163. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +0 -121
  164. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +0 -282
  165. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +0 -61
  166. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +0 -374
  167. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +0 -243
  168. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +0 -1139
  169. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +0 -326
  170. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +0 -184
  171. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +0 -396
  172. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +0 -168
  173. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +0 -10
  174. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +0 -194
  175. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +0 -348
  176. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +0 -141
  177. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +0 -43
  178. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +0 -18
  179. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +0 -64
  180. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +0 -31
  181. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +0 -358
  182. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +0 -25
  183. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +0 -39
  184. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +0 -107
  185. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +0 -96
  186. package/skills/wix-headless-replatform/scripts/site-clone.mjs +0 -658
  187. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +0 -29
  188. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +0 -669
  189. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +0 -370
  190. package/skills/wix-import/SKILL.md +0 -90
  191. package/skills/wix-replatform/.publish-manifest.json +0 -8
  192. package/skills/wix-replatform/CLI.md +0 -162
  193. package/skills/wix-replatform/README.md +0 -52
  194. package/skills/wix-replatform/SKILL.md +0 -238
  195. package/skills/wix-replatform/console/account.css +0 -1
  196. package/skills/wix-replatform/console/app.css +0 -1
  197. package/skills/wix-replatform/console/app.js +0 -117
  198. package/skills/wix-replatform/console/index.html +0 -4
  199. package/skills/wix-replatform/console/json.css +0 -11
  200. package/skills/wix-replatform/lib/agent-adapters/index.js +0 -71
  201. package/skills/wix-replatform/lib/app-page-routing.js +0 -75
  202. package/skills/wix-replatform/lib/artifact-freshness.js +0 -225
  203. package/skills/wix-replatform/lib/blocked-data-requests.js +0 -427
  204. package/skills/wix-replatform/lib/census-reconciliation.js +0 -426
  205. package/skills/wix-replatform/lib/completion-report.js +0 -1580
  206. package/skills/wix-replatform/lib/config-env.js +0 -133
  207. package/skills/wix-replatform/lib/confirmed-pictures.js +0 -212
  208. package/skills/wix-replatform/lib/dependency-readiness.js +0 -423
  209. package/skills/wix-replatform/lib/dependency-recovery.js +0 -21
  210. package/skills/wix-replatform/lib/destination-choice.js +0 -163
  211. package/skills/wix-replatform/lib/destination-handoff.js +0 -62
  212. package/skills/wix-replatform/lib/destination-http.js +0 -81
  213. package/skills/wix-replatform/lib/destination-route.js +0 -98
  214. package/skills/wix-replatform/lib/destination.js +0 -919
  215. package/skills/wix-replatform/lib/discovered-census.js +0 -231
  216. package/skills/wix-replatform/lib/discovered-set-status.js +0 -255
  217. package/skills/wix-replatform/lib/document-url-guard.js +0 -203
  218. package/skills/wix-replatform/lib/entity-qa-attestation.js +0 -339
  219. package/skills/wix-replatform/lib/entity-verification.js +0 -18
  220. package/skills/wix-replatform/lib/execution-capability.js +0 -120
  221. package/skills/wix-replatform/lib/execution-log.js +0 -170
  222. package/skills/wix-replatform/lib/execution-manifest.js +0 -203
  223. package/skills/wix-replatform/lib/execution-state.js +0 -195
  224. package/skills/wix-replatform/lib/expectations-ledger.js +0 -96
  225. package/skills/wix-replatform/lib/generated-plugin-handoff.js +0 -140
  226. package/skills/wix-replatform/lib/import-readiness-contract.js +0 -23
  227. package/skills/wix-replatform/lib/import-recovery.js +0 -1107
  228. package/skills/wix-replatform/lib/imported-redirect-targets.js +0 -608
  229. package/skills/wix-replatform/lib/internal-link-reconciliation.js +0 -166
  230. package/skills/wix-replatform/lib/link-audit.js +0 -173
  231. package/skills/wix-replatform/lib/link-census.js +0 -194
  232. package/skills/wix-replatform/lib/link-plan.js +0 -148
  233. package/skills/wix-replatform/lib/link-verification.js +0 -274
  234. package/skills/wix-replatform/lib/link-write-journal.js +0 -42
  235. package/skills/wix-replatform/lib/local-state.js +0 -1481
  236. package/skills/wix-replatform/lib/member-completion.js +0 -658
  237. package/skills/wix-replatform/lib/member-crosswalk.js +0 -69
  238. package/skills/wix-replatform/lib/member-outcome-registry.js +0 -265
  239. package/skills/wix-replatform/lib/migration-completion.js +0 -311
  240. package/skills/wix-replatform/lib/operator-identity.js +0 -47
  241. package/skills/wix-replatform/lib/orchestration-decisions.js +0 -248
  242. package/skills/wix-replatform/lib/orchestration-preflight.js +0 -525
  243. package/skills/wix-replatform/lib/orchestration-router.js +0 -698
  244. package/skills/wix-replatform/lib/orchestration-state.js +0 -631
  245. package/skills/wix-replatform/lib/order-reference-readiness.js +0 -30
  246. package/skills/wix-replatform/lib/payments-outcome-registry.js +0 -200
  247. package/skills/wix-replatform/lib/plugin-cms-fallback.js +0 -618
  248. package/skills/wix-replatform/lib/preservation-approval-stamp.js +0 -54
  249. package/skills/wix-replatform/lib/product-media-deferral.js +0 -96
  250. package/skills/wix-replatform/lib/progress-log.js +0 -240
  251. package/skills/wix-replatform/lib/progress-log.sh +0 -140
  252. package/skills/wix-replatform/lib/read-back-approval.js +0 -184
  253. package/skills/wix-replatform/lib/read-back-comparison.js +0 -136
  254. package/skills/wix-replatform/lib/read-back-contract.js +0 -243
  255. package/skills/wix-replatform/lib/read-back-extract.js +0 -118
  256. package/skills/wix-replatform/lib/read-back-gate.js +0 -734
  257. package/skills/wix-replatform/lib/read-back-reads.js +0 -94
  258. package/skills/wix-replatform/lib/read-back-state.js +0 -107
  259. package/skills/wix-replatform/lib/read-back-summary.js +0 -81
  260. package/skills/wix-replatform/lib/rerun-conflicts.js +0 -334
  261. package/skills/wix-replatform/lib/run-controller.js +0 -401
  262. package/skills/wix-replatform/lib/seo-outcome-registry.js +0 -45
  263. package/skills/wix-replatform/lib/setup-verification.js +0 -148
  264. package/skills/wix-replatform/lib/source-access.js +0 -231
  265. package/skills/wix-replatform/lib/source-coverage.js +0 -1130
  266. package/skills/wix-replatform/lib/source-secrets.js +0 -277
  267. package/skills/wix-replatform/lib/structured-link-patch.js +0 -59
  268. package/skills/wix-replatform/lib/task-state.js +0 -110
  269. package/skills/wix-replatform/lib/url-preservation-report.js +0 -319
  270. package/skills/wix-replatform/lib/url-preservation-state.js +0 -739
  271. package/skills/wix-replatform/lib/url-redirect-plan.js +0 -728
  272. package/skills/wix-replatform/lib/url-verification.js +0 -315
  273. package/skills/wix-replatform/lib/user-action-effects.js +0 -42
  274. package/skills/wix-replatform/lib/user-actions.js +0 -264
  275. package/skills/wix-replatform/lib/website-handoff.js +0 -1220
  276. package/skills/wix-replatform/lib/wix-client-callers.js +0 -54
  277. package/skills/wix-replatform/lib/wix-dashboard-url.js +0 -35
  278. package/skills/wix-replatform/lib/write-verification-state.js +0 -92
  279. package/skills/wix-replatform/lib/write-verification.js +0 -274
  280. package/skills/wix-replatform/resources/rp-destination/SKILL.md +0 -137
  281. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +0 -357
  282. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +0 -47
  283. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +0 -1369
  284. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +0 -70
  285. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +0 -482
  286. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +0 -442
  287. package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +0 -64
  288. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +0 -112
  289. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +0 -143
  290. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +0 -244
  291. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +0 -3158
  292. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +0 -947
  293. package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +0 -217
  294. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +0 -303
  295. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +0 -88
  296. package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +0 -148
  297. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +0 -378
  298. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +0 -40
  299. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +0 -55
  300. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +0 -60
  301. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +0 -89
  302. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +0 -36
  303. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +0 -123
  304. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +0 -124
  305. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +0 -522
  306. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +0 -56
  307. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +0 -91
  308. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +0 -255
  309. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +0 -253
  310. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +0 -44
  311. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +0 -481
  312. package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +0 -136
  313. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  314. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +0 -310
  315. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +0 -1081
  316. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +0 -618
  317. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +0 -969
  318. package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +0 -196
  319. package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +0 -66
  320. package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +0 -60
  321. package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +0 -95
  322. package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +0 -82
  323. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +0 -66
  324. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +0 -153
  325. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +0 -394
  326. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +0 -200
  327. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +0 -34
  328. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +0 -44
  329. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +0 -1470
  330. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +0 -446
  331. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +0 -474
  332. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +0 -879
  333. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +0 -426
  334. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +0 -24
  335. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +0 -18
  336. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +0 -40
  337. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +0 -76
  338. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +0 -51
  339. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +0 -35
  340. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +0 -20
  341. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +0 -18
  342. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +0 -31
  343. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +0 -21
  344. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +0 -21
  345. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +0 -30
  346. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +0 -150
  347. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +0 -36
  348. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +0 -48
  349. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +0 -20
  350. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +0 -8
  351. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +0 -6
  352. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +0 -8
  353. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +0 -8
  354. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +0 -12
  355. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +0 -6
  356. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +0 -13
  357. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +0 -13
  358. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +0 -73
  359. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +0 -13
  360. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +0 -693
  361. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +0 -283
  362. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +0 -191
  363. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +0 -115
  364. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +0 -201
  365. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +0 -146
  366. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +0 -970
  367. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +0 -73
  368. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +0 -115
  369. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +0 -91
  370. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +0 -440
  371. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +0 -125
  372. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +0 -252
  373. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +0 -183
  374. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +0 -333
  375. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +0 -426
  376. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +0 -400
  377. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +0 -633
  378. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +0 -1127
  379. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +0 -194
  380. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +0 -100
  381. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +0 -157
  382. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +0 -234
  383. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +0 -101
  384. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +0 -755
  385. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +0 -1074
  386. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +0 -149
  387. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +0 -25
  388. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +0 -444
  389. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +0 -186
  390. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +0 -1422
  391. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +0 -343
  392. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +0 -680
  393. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +0 -272
  394. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +0 -373
  395. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +0 -101
  396. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +0 -81
  397. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +0 -128
  398. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +0 -18
  399. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +0 -104
  400. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +0 -44
  401. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +0 -49
  402. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +0 -94
  403. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +0 -863
  404. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +0 -52
  405. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +0 -161
  406. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +0 -180
  407. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +0 -286
  408. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +0 -79
  409. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +0 -120
  410. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +0 -128
  411. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +0 -88
  412. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +0 -80
  413. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +0 -46
  414. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +0 -55
  415. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +0 -99
  416. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +0 -55
  417. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +0 -160
  418. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +0 -81
  419. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +0 -60
  420. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +0 -74
  421. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +0 -75
  422. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +0 -60
  423. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +0 -44
  424. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +0 -57
  425. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +0 -141
  426. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +0 -54
  427. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +0 -158
  428. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +0 -97
  429. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +0 -86
  430. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +0 -90
  431. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +0 -51
  432. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +0 -103
  433. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +0 -2409
  434. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +0 -273
  435. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +0 -11
  436. package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +0 -71
  437. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +0 -13
  438. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +0 -1046
  439. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +0 -36
  440. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +0 -57
  441. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +0 -322
  442. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +0 -70
  443. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +0 -29
  444. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +0 -71
  445. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +0 -83
  446. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +0 -95
  447. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +0 -66
  448. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +0 -332
  449. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +0 -75
  450. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +0 -181
  451. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +0 -130
  452. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +0 -180
  453. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +0 -161
  454. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +0 -25
  455. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +0 -67
  456. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +0 -75
  457. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +0 -41
  458. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +0 -204
  459. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +0 -27
  460. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +0 -275
  461. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +0 -105
  462. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +0 -77
  463. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +0 -297
  464. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +0 -44
  465. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +0 -171
  466. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +0 -182
  467. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +0 -129
  468. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +0 -192
  469. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +0 -123
  470. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +0 -85
  471. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +0 -112
  472. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +0 -191
  473. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +0 -164
  474. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +0 -462
  475. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +0 -122
  476. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +0 -98
  477. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +0 -86
  478. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +0 -128
  479. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +0 -38
  480. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +0 -73
  481. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +0 -107
  482. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +0 -89
  483. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +0 -118
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +0 -93
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +0 -86
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +0 -56
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +0 -121
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +0 -134
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +0 -41
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +0 -50
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +0 -87
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +0 -130
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +0 -1418
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +0 -41
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +0 -24
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +0 -75
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +0 -71
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +0 -119
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +0 -23
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +0 -71
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +0 -82
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +0 -77
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +0 -205
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +0 -41
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +0 -46
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +0 -137
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +0 -133
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +0 -7
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +0 -36
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +0 -71
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +0 -67
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +0 -72
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +0 -74
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +0 -69
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +0 -61
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +0 -111
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +0 -109
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +0 -73
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +0 -148
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +0 -91
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +0 -79
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +0 -32
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +0 -49
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +0 -103
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +0 -203
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +0 -42
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +0 -119
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +0 -111
  529. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +0 -81
  530. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +0 -241
  531. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +0 -118
  532. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +0 -111
  533. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +0 -79
  534. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +0 -221
  535. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +0 -84
  536. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +0 -178
  537. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +0 -87
  538. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +0 -106
  539. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +0 -64
  540. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +0 -119
  541. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +0 -94
  542. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +0 -113
  543. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +0 -65
  544. package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +0 -64
  545. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +0 -165
  546. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +0 -60
  547. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +0 -201
  548. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +0 -306
  549. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +0 -229
  550. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +0 -55
  551. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +0 -715
  552. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +0 -567
  553. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +0 -73
  554. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +0 -194
  555. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +0 -133
  556. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +0 -150
  557. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +0 -491
  558. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +0 -104
  559. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +0 -673
  560. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +0 -835
  561. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +0 -119
  562. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +0 -566
  563. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +0 -249
  564. package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +0 -260
  565. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +0 -63
  566. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +0 -187
  567. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +0 -64
  568. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +0 -1027
  569. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +0 -90
  570. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +0 -420
  571. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +0 -177
  572. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +0 -151
  573. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +0 -723
  574. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +0 -353
  575. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +0 -1437
  576. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +0 -354
  577. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +0 -134
  578. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +0 -221
  579. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +0 -248
  580. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +0 -321
  581. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +0 -231
  582. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +0 -28
  583. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +0 -14
  584. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +0 -34
  585. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +0 -388
  586. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +0 -255
  587. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +0 -6041
  588. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +0 -3
  589. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +0 -150
  590. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +0 -69
  591. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +0 -100
  592. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +0 -112
  593. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +0 -484
  594. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +0 -318
  595. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +0 -2831
  596. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +0 -318
  597. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +0 -83
  598. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +0 -243
  599. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +0 -94
  600. package/skills/wix-replatform/scripts/artifact-freshness.js +0 -76
  601. package/skills/wix-replatform/scripts/census-reconciliation.js +0 -25
  602. package/skills/wix-replatform/scripts/cms-fallback.js +0 -89
  603. package/skills/wix-replatform/scripts/discovered-census.js +0 -26
  604. package/skills/wix-replatform/scripts/discovered-set-status.js +0 -33
  605. package/skills/wix-replatform/scripts/entity-qa-attestation.js +0 -130
  606. package/skills/wix-replatform/scripts/execution-health-check.js +0 -415
  607. package/skills/wix-replatform/scripts/execution-manifest-validate.js +0 -43
  608. package/skills/wix-replatform/scripts/execution-state-prepare.js +0 -128
  609. package/skills/wix-replatform/scripts/expectations-ledger.js +0 -44
  610. package/skills/wix-replatform/scripts/import-contract-verify.js +0 -183
  611. package/skills/wix-replatform/scripts/internal-link-audit.js +0 -90
  612. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +0 -205
  613. package/skills/wix-replatform/scripts/migration-completion.js +0 -76
  614. package/skills/wix-replatform/scripts/orchestration-preflight.js +0 -67
  615. package/skills/wix-replatform/scripts/orchestration-route.js +0 -77
  616. package/skills/wix-replatform/scripts/orchestration-state.js +0 -381
  617. package/skills/wix-replatform/scripts/read-back-gate.js +0 -175
  618. package/skills/wix-replatform/scripts/replatform-console.js +0 -146
  619. package/skills/wix-replatform/scripts/replatform.js +0 -436
  620. package/skills/wix-replatform/scripts/source-secrets.js +0 -77
  621. package/skills/wix-replatform/scripts/url-redirects.js +0 -286
  622. package/skills/wix-replatform/scripts/user-action.js +0 -58
  623. package/skills/wix-replatform/scripts/website-handoff-generate.js +0 -64
  624. package/skills/wix-replatform/scripts/wix-dashboard-url.js +0 -54
  625. package/skills/wix-replatform/scripts/wix-destination.js +0 -143
  626. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +0 -762
  627. package/skills/wix-vibe-headless/SKILL.md +0 -183
  628. package/skills/wix-vibe-headless/install/deploy.cjs +0 -221
  629. package/skills/wix-vibe-headless/install/pin-agents-md.cjs +0 -35
  630. package/skills/wix-vibe-headless/platforms/README.md +0 -26
  631. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed-with-install.md +0 -127
  632. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +0 -121
  633. package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +0 -87
  634. package/skills/wix-vibe-headless/platforms/base44.md +0 -148
  635. package/skills/wix-vibe-headless/platforms/generic.md +0 -132
  636. package/skills/wix-vibe-headless/references/_shared/nav/nav.tanstack.js +0 -30
  637. package/skills/wix-vibe-headless/references/_shared/routing.md +0 -86
  638. package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +0 -270
  639. package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +0 -43
  640. package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +0 -25
  641. package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +0 -15
  642. package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +0 -35
  643. package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +0 -38
  644. package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +0 -40
  645. package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +0 -54
  646. package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +0 -65
  647. package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +0 -50
  648. package/skills/wix-vibe-headless/references/blog/app/rest/wix-blog.js +0 -217
  649. package/skills/wix-vibe-headless/references/blog/seed/SEED.md +0 -99
  650. package/skills/wix-vibe-headless/references/blog/seed/seed-blog.cjs +0 -269
  651. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +0 -342
  652. package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +0 -65
  653. package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +0 -67
  654. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +0 -47
  655. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +0 -13
  656. package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +0 -126
  657. package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +0 -128
  658. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +0 -110
  659. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +0 -58
  660. package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +0 -95
  661. package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +0 -94
  662. package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +0 -89
  663. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +0 -148
  664. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +0 -250
  665. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +0 -300
  666. package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +0 -154
  667. package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.cjs +0 -333
  668. package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.cjs +0 -267
  669. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +0 -178
  670. package/skills/wix-vibe-headless/references/cms/app/collection.config.js +0 -31
  671. package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +0 -18
  672. package/skills/wix-vibe-headless/references/cms/app/rest/wix-cms.js +0 -231
  673. package/skills/wix-vibe-headless/references/cms/seed/SEED.md +0 -145
  674. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +0 -88
  675. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +0 -112
  676. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +0 -11
  677. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +0 -258
  678. package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +0 -267
  679. package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +0 -23
  680. package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +0 -43
  681. package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +0 -13
  682. package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +0 -29
  683. package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +0 -57
  684. package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +0 -78
  685. package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +0 -27
  686. package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +0 -54
  687. package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +0 -40
  688. package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +0 -81
  689. package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +0 -48
  690. package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +0 -36
  691. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-browse.js +0 -136
  692. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-registration.js +0 -187
  693. package/skills/wix-vibe-headless/references/events/seed/SEED.md +0 -103
  694. package/skills/wix-vibe-headless/references/events/seed/seed-events.cjs +0 -251
  695. package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +0 -487
  696. package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +0 -425
  697. package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +0 -187
  698. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +0 -238
  699. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +0 -108
  700. package/skills/wix-vibe-headless/references/forms/seed/SEED.md +0 -1836
  701. package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +0 -328
  702. package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +0 -101
  703. package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +0 -33
  704. package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +0 -21
  705. package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +0 -29
  706. package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +0 -54
  707. package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +0 -77
  708. package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +0 -36
  709. package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +0 -32
  710. package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +0 -35
  711. package/skills/wix-vibe-headless/references/members/app/rest/wix-members-auth.js +0 -390
  712. package/skills/wix-vibe-headless/references/members/install/Register.jsx +0 -22
  713. package/skills/wix-vibe-headless/references/members/seed/SEED.md +0 -21
  714. package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +0 -270
  715. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +0 -31
  716. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +0 -15
  717. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +0 -39
  718. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +0 -15
  719. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +0 -29
  720. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +0 -35
  721. package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +0 -27
  722. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +0 -25
  723. package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +0 -39
  724. package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +0 -27
  725. package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +0 -60
  726. package/skills/wix-vibe-headless/references/portfolio/app/rest/wix-portfolio.js +0 -223
  727. package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +0 -90
  728. package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.cjs +0 -236
  729. package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +0 -280
  730. package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +0 -35
  731. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +0 -48
  732. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +0 -16
  733. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +0 -35
  734. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +0 -25
  735. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +0 -28
  736. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +0 -30
  737. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +0 -30
  738. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +0 -53
  739. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +0 -28
  740. package/skills/wix-vibe-headless/references/pricing-plans/app/rest/wix-pricing-plans.js +0 -157
  741. package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +0 -82
  742. package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.cjs +0 -251
  743. package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +0 -13
  744. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +0 -290
  745. package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +0 -81
  746. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +0 -71
  747. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +0 -43
  748. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +0 -21
  749. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +0 -72
  750. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +0 -66
  751. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +0 -32
  752. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +0 -73
  753. package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +0 -28
  754. package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +0 -102
  755. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-menu.js +0 -224
  756. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +0 -218
  757. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-reservations.js +0 -107
  758. package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +0 -176
  759. package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.cjs +0 -452
  760. package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +0 -56
  761. package/skills/wix-vibe-headless/references/shared/app/lib/nav.js +0 -9
  762. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +0 -185
  763. package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +0 -8
  764. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +0 -471
  765. package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +0 -20
  766. package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +0 -167
  767. package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +0 -83
  768. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductCard.js +0 -104
  769. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +0 -163
  770. package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +0 -83
  771. package/skills/wix-vibe-headless/references/storefront/app/hooks/useVariantOptions.js +0 -76
  772. package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +0 -64
  773. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +0 -176
  774. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +0 -218
  775. package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +0 -174
  776. package/skills/wix-vibe-headless/references/storefront/seed/seed-store.cjs +0 -546
@@ -1,1046 +0,0 @@
1
- ---
2
- name: rp-target-wix
3
- description: >-
4
- Wix target adapter with verified write primitives, shared execution runtimes, and contract tests.
5
- Use when vendoring Wix writers, validating API shapes, or Wix provisioning mechanics.
6
- ---
7
-
8
- # rp-target-wix
9
-
10
- Wix **target adapter**. Owns the Wix-side write surface and shared execution runtime that every migration shares —
11
- verified once here so the platform-agnostic stages and per-project codegen never
12
- re-derive (and re-break) it. This is the symmetric counterpart to `rp-source-wordpress`:
13
- that adapter owns *reading* a source platform; this one owns *writing* to Wix.
14
-
15
- ## Verified variant inventory import
16
-
17
- `lib/stores-inventory.js` exports `inventoryForVariant`, `resolveInventoryLocation`, and
18
- `reconcileInventory(wix, rows, {expectedCount, gaps, locationId?})`. Rows carry resolved
19
- `productId`, `variantId`, and `inventory: {inStock:boolean}` OR `{quantity:integer}`.
20
- `expectedCount` must equal rows plus named source gaps. Bulk writes follow complete location-
21
- scoped reads; existing items reconcile or update by revision, then values and availability
22
- are read back. Failure remains partial and the next invocation re-reads before writing.
23
- The existing single-create inventory helpers remain available for narrow probes; imports
24
- use the bulk reconciliation path. `trackQuantity` is derived and must never be sent.
25
- Read `domains/stores/entities/inventory-item.json` and the setup inventory-probe contract.
26
-
27
- ## When this skill is used
28
-
29
- Not a stage in the flow — a reference + shared library consulted by:
30
-
31
- - **`rp-import-codegen`** vendors `lib/wix-writers.js` into the project (like the
32
- `wp-http` transport) plus the shared write/setup runtime modules, and generates thin
33
- project-specific write specs/transforms that **call these primitives/runtime APIs**.
34
- Codegen does not re-emit Wix API plumbing.
35
- - **`rp-setup-discovery` / `rp-execute-setup`** consult the "Verified endpoints" and
36
- "Provisioning" notes for app-install / Wix-Data / collection mechanics.
37
-
38
- Because the Wix surface is identical across source platforms, adding a new source
39
- (`rp-source-shopify`, …) requires **no change here**.
40
-
41
- ## Shared runtime boundary
42
-
43
- ### App page routing
44
-
45
- `app-page-routing-capabilities.json` is the per-family gate for
46
- `lib/app-page-routing.js` and `scripts/internal-link-audit.js route`. The shared
47
- `lib/url-mapper-transport.js` builds writer-side create/update/read requests over an
48
- injected authenticated sender and requires destination inspection. Only the Stores
49
- product URL Mapper payload currently has a recorded request and saved-state read-back
50
- shape. Its writer-side pattern may be configured after Stores installation and before
51
- frontend creation, but it is **not** evidence that the frontend serves that route. The
52
- generated transport supplies the migration credential and writer-side read/write methods;
53
- the public reader's empty mapping is not a valid read-back. Use the recorded request
54
- and read-back fixture in `app-page-routing-capabilities.json`.
55
-
56
- Every other discovered app family remains `unverified` until its exact key, page
57
- identifier, variables, supported method, request and read-back fixture are committed to
58
- the capability file and tested. Portfolio and Builder Blog remain unverified. Never infer
59
- one family's adapter from another or use full-site registration. A missing or conflicting
60
- route produces a local route result and an Import Operator item; it does not become a
61
- served route through the URL ledger.
62
-
63
- This adapter owns the **shared Wix layer** written once for all migrations.
64
-
65
- It should own:
66
-
67
- - verified request builders and endpoint primitives
68
- - shared Wix client/auth handling
69
- - shared retry and throttling policy
70
- - generic write execution runtime
71
- - generic setup execution/runtime behavior
72
- - checkpoint helpers
73
- - local crosswalk helpers (`state/crosswalk/crosswalk.ndjson` authority, append-only
74
- attempt journal, optional CMS mirror seed/upload adapters)
75
- - URL preservation helpers (`state/url-preservation/` base paths, ledger, planned
76
- redirects, and unresolved route rows) and the SEO Redirects writer
77
- (`lib/seo-redirects.js`: Bulk Create only, declared APP/WIX_USER identity with Manage SEO Settings, no `forceReplace`,
78
- durable write intents and List Redirects reconciliation; user-token API create/read-back
79
- verified, frontend serving and full live acceptance still unverified)
80
- - NDJSON record-stream I/O (`lib/ndjson.js`): streaming read/write, batching by count and by
81
- cost, cursoring, and append-only producers. Migration data files are record streams, so the
82
- scan/batch/cursor primitives live here once instead of being re-derived by codegen.
83
- - audit log emission
84
- - compact execution report generation
85
- - contract tests for stable request/runtime behavior
86
-
87
- Per-migration code generation should own only:
88
-
89
- - field maps
90
- - transforms
91
- - write specs
92
- - setup-plan renderings
93
- - entity ordering
94
- - dependency wiring — populate `WriteSpec.dependencyRefs` from each in-scope entity's
95
- domain-knowledge `dependsOn` field, not re-derived per project
96
-
97
- ## Write contract (the verified Wix surface)
98
-
99
- ### Capability and dependency boundary
100
-
101
- `createWixClient` accepts only object-identity capabilities issued by the shared runtime.
102
- An unprivileged client admits registered read builders only; a raw request is not a
103
- trusted read. Import clients require a bound task plus the gate's current per-batch
104
- `readinessGrant` and `sourceStableKey` on every write, including auxiliary writes and
105
- dry-run captures. Every import write must retain the closed writer builder’s object identity and sealed method, URL, body and headers. A raw, copied or modified request is refused even with a valid grant; use the shared marked builders and grant wrappers. Use `writers.bindRecordClient(taskClient, { readinessGrant, sourceStableKey })` for library composites, or `writers.withReadinessGrant(request, { readinessGrant, sourceStableKey })` for individual builders; these preserve trusted builder marks. Before standard product inventory reconciliation, read the current product through that record client and call `registerImportInventoryScope(recordClient, canonicalProduct, targetProduct)`. It requires a same-record successful product write or current site-bound crosswalk, correlates variants by choices, and binds stock to that record, product, variants and read location/item revisions. Standard reviewed quantity/location behavior remains available; quick Shopify retains its separate boolean/default-location scope. A serialized/copied capability, caller phase or stale/foreign-site grant
106
- is refused before transport. Setup and quick mode use their own bounded issuers, never an
107
- import bypass. Disposable probes require the explicit ownership confirmation and are
108
- restricted to the shipped verification callers.
109
-
110
- Use `lib/dependency-readiness.js` for producer binding, task evaluation and record-level
111
- reference resolution. Its closed states distinguish complete, empty, partial, setup-passed,
112
- approved/unapproved exclusion and unknown evidence. Setup remains task-complete. The
113
- diagnostic projection is not an input. Keep latest journal outcomes, site-bound pass
114
- evidence and existing contact/product verification as the authority; task ordering alone
115
- cannot grant write permission.
116
-
117
- Quick mode loads only its shipped adapter contract and keeps declared dependencies in
118
- contract order. Shopify product capability additionally admits exactly product tags and
119
- bounded inventory work for products created/read through that same client. Inventory still
120
- correlates real product, variant, item and location evidence, preserves partial stock
121
- outcomes, and never receives a raw-transport or probe exception.
122
-
123
- `lib/wix-writers.js` exposes pure request builders (`build*Request`) + executors. Shapes
124
- marked **VERIFIED** were validated by a real call against a live site, not just read from
125
- docs. Shapes marked **UNVERIFIED** are docs-schema/MCP-derived bootstrap primitives that
126
- must be surfaced in execution plans until a live contract call promotes them. It also
127
- exports `sendDirectRest` and `notifyMissingWriter` for generated native REST paths when
128
- Wix has a native entity but this adapter does not yet ship a dedicated primitive.
129
-
130
- This resource should also expose shared execution-runtime modules above those primitives,
131
- so generated migrations use one common path for retries, throttling, checkpointing,
132
- reporting, and audit logging.
133
-
134
- **Read/return contract for `query*` executors.** Every `query*` executor
135
- (`queryStoresProducts`, `queryStoresCategories`, `queryContacts`, `queryCoupons`,
136
- `queryOrders`) **unwraps the response to the entity array and returns one page**, discarding
137
- `pagingMetadata`. Two failure modes follow, both of which have shipped:
138
-
139
- - **The return value IS the array.** Reading `.products` / `.categories` off it a second time
140
- gives `undefined` → `[]`. A dedupe index or existing-entity safety net then comes back
141
- empty *without erroring*, which is indistinguishable from a fresh site — so the import
142
- duplicates what is already there, and a setup verification reports 0 categories on a site
143
- with 25.
144
- - **These executors cannot be cursor-paged**, because the cursor is in the metadata they
145
- discarded. Use a `queryAll*` primitive where one exists — `queryAllStoresCategories`,
146
- `queryAllStoresProducts`, `queryAllDataItems` — otherwise send
147
- `wix.send(build<X>Request(body))` and read `pagingMetadata.cursors.next` off the raw
148
- response.
149
-
150
- Every sweep used for dedupe must **throw on a partial result rather than return it**. "Empty
151
- net" and "empty store" look identical to the caller, and the caller assumes the second.
152
-
153
- ## Domain entity suitability knowledge
154
-
155
- Target entity suitability lives in `domains/`, not in a large prose table in this skill.
156
- Use the deterministic reader as the normal access path:
157
-
158
- ```bash
159
- node scripts/domain-knowledge.js list-domains
160
- node scripts/domain-knowledge.js list-entities --domain stores
161
- node scripts/domain-knowledge.js read-entity --ref stores/product
162
- node scripts/domain-knowledge.js resolve-source --source-system woocommerce --source-entity product
163
- node scripts/domain-knowledge.js resolve-source --route /wc/v3/products
164
- node scripts/domain-knowledge.js list-flagged --flag IMPORT_UNRELIABLE
165
- node scripts/domain-knowledge.js summarize-entities --refs stores/product,ecom/order
166
- ```
167
-
168
- `domains/index.json` is generated from domain/entity files and checked in. After editing
169
- domain knowledge, run:
170
-
171
- ```bash
172
- node scripts/domain-knowledge-validate.js --write-index
173
- ```
174
-
175
- **Authoring or editing any entity file also requires the dependency check**, both
176
- directions: (1) what does *this* entity need to already exist and be crosswalked — record it in
177
- `dependsOn: string[]` (a `domain/entity` ref array; empty is a real, reviewed answer, not the same
178
- as the field being absent); (2) does this entity change what an *already-written* entity's
179
- `dependsOn` should say (e.g. authoring `gift-cards/gift-card` should have prompted revisiting
180
- `ecom/order.json` — it hadn't, until it was caught by hand). `domain-knowledge-validate.js`
181
- checks `dependsOn` refs resolve and the whole graph stays acyclic whenever the field is present, but
182
- it is not yet required on every entity — `node scripts/domain-knowledge-validate.js
183
- --list-missing-deps` prints the live backlog of entities that have never had it authored at all;
184
- that command is the source of truth, not a hand-maintained list.
185
-
186
- `domains/SERVICE-PLUGINS.md` covers the escalation ladder for a source capability with no native
187
- Wix primitive: **native primitive first, always**, then a Wix **service plugin** (Wix calls an
188
- endpoint we host and we answer per request), and only then a recorded gap. It carries the cost list,
189
- a worked example — bounded quantity discount bands, implemented live 2026-08-31 — and a catalog of
190
- all 25 service plugins with per-plugin migration relevance. Read it before writing "Wix cannot
191
- express this" into a gap report.
192
-
193
- `writerId` values in entity files must match exported functions from `lib/wix-writers.js`;
194
- use `null` for direct REST plans, setup/manual work, or unsupported native gaps.
195
-
196
- Entity files may also expose `fieldContracts[]` for verified nested write paths. These
197
- are machine-readable contracts for codegen and dry-run validators, not replacements for
198
- the human notes below. For Stores products, `domains/stores/entities/product.json`
199
- records the verified Catalog V3 create contract for `product.subscriptionDetails`,
200
- including required nested paths, allowed recurrence values, read-back behavior, and the
201
- live-validated `subscriptions[].description <= 60` constraint. Generated transforms
202
- should consume that metadata through the vendored `wix-writers.js` exports instead of
203
- copying limits into project-local code.
204
-
205
- Live verification helpers must not edit `domains/` directly. When a probe changes a
206
- target write assumption, emit a proposal artifact and let the orchestrator promote it
207
- deliberately:
208
-
209
- ```bash
210
- node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores subscription-create \
211
- --artifact migrations/<project>/setup/stores-subscription-verification.json \
212
- --proposal-artifact migrations/<project>/setup/contract-ledger-proposal.json
213
- ```
214
-
215
- Use `lib/contract-ledger.js` to validate the handoff: a passed verification without a
216
- proposal is incomplete, and a proposal that is neither promoted into `fieldContracts[]`
217
- nor explicitly deferred is stale product knowledge. Codegen should consume
218
- `fieldContracts[]` through `scripts/domain-knowledge.js summarize-entities`, which
219
- includes promoted contracts.
220
-
221
- ### Dual product descriptions
222
-
223
- When a canonical product contains both `shortDescription` and `description`,
224
- `lib/wix-build.js` writes one Stores `plainDescription`: short body, `<hr />`, then long
225
- body. HTML-empty bodies and normalized, case-insensitive `lorem ipsum…` filler are
226
- treated as empty independently, so a real companion body remains. The horizontal-rule
227
- serialization is unverified in a live Wix storefront: canary it and capture a Hebrew/RTL
228
- screenshot before any bulk import or remediation backfill.
229
-
230
- | Capability | Endpoint | Notes / traps |
231
- | --- | --- | --- |
232
- | HTML → rich content | `POST /ricos/v1/ricos-document/convert/to-ricos` | VERIFIED. `options.plugins` enum is **UPPERCASE** — the docs example shows lowercase and 400s. |
233
- | Import media from URL | `POST /site-media/v1/files/import` | VERIFIED. **Async**: response is `PENDING`; poll `GET /site-media/v1/files/{id}` for `READY` before referencing. |
234
- | Blog category | `POST /blog/v3/categories` | VERIFIED. body `{ category: { label, slug, description } }`. |
235
- | Blog tag | `POST /blog/v3/tags` | VERIFIED. Body is **top-level `{ label, language }`** — NOT `{ tag: { label, slug } }`; slug is derived. |
236
- | Blog post | `POST /blog/v3/draft-posts` → `…/{id}/publish` | VERIFIED. `memberId` **required** (3rd-party). VERIFIED (2026-08-02): the **site owner's auto-created user-member** satisfies it — it was already present on our API-provisioned test site with zero Members-area interaction (single-site observation), so attribute-to-owner needs no member provisioning. **Resolve it via `listMembers` + `loginEmail` match — never derive it from the account/user GUID** (the observed id equality is a single observation, undocumented). Also VERIFIED (2026-08-02): author is **re-assignable after publish** — `PATCH /blog/v3/draft-posts/{id}` `{ draftPost: { memberId } }` then republish updates the published post's author (post id == draft id; republish fires non-suppressed events — do author-upgrade passes inside the notification-mute window). Visible custom cover media requires **both** `heroImage.id` and `media: { displayed:true, custom:true, wixMedia:{ image:{ id }}}`. `heroImage.id` alone leaves the cover hidden. |
237
- | Blog posts (bulk) | `POST /blog/v3/bulk/draft-posts/create` | UNVERIFIED bootstrap (public docs + wix/skills `wix-manage` recipe, 2026-07-21). Max **20 posts/call**; `bulkCreateDraftPosts` chunks larger inputs. Prefer over per-post creates for N ≥ 2 (single create runs ~25–30s/call per the recipe). Publish is still per-post — a bulk `publish` flag is unverified. Surface in the execution plan until the live contract call promotes it. |
238
- | CMS item | `POST /wix-data/v2/items` | VERIFIED. `{ dataCollectionId, dataItem: { data } }`. Requires Wix Data enabled (else `WDE0110`). |
239
- | Members | `GET`/`POST /members/v1/members` | VERIFIED. dedup by `loginEmail` (gated PII; use a fallback member when absent). VERIFIED (2026-08-02, single-site observation): the target-site member list can already contain **auto-created user-members** for the owner/contributing Wix users (`status: APPROVED`; resolve by `loginEmail`, never by deriving from the account GUID — the observed id equality is undocumented) — never dedupe or count these against source-site members; `DELETE /members/v1/members/{id}` works for cleaning up importer-created members. Throughput: **no bulk create; documented ≥1s spacing** (10k ≈ 3h serial floor — plan + resume via crosswalk). Create sends **no email** and does **not** fire the signup automations trigger (source-confirmed) — silent by default. **Activation policy (decided 2026-08-03): passwords are never imported, and passwordless members complete the standard forgot-password flow (confirmed).** Delivery = post-import **label-wave automation**: owner creates one dashboard automation (trigger `label added`, e.g. `migrated-2026` → owner-branded email: "Log in → Forgot password"); importer applies the label via API in batches for rate control/re-targeting; enable only after the import window. **Never mass-send** `send-set-password-email` (3h single-use link), and never fetch/store per-member reset links — they are credential-equivalent secrets and the no-link flow needs none. |
240
- | Stores product (BULK — the scale path) | `POST /stores/v3/bulk/products-with-inventory/create` | UNVERIFIED bootstrap. **Use this, not per-product creates, for any catalog above a handful** — 1000 products is 11 calls instead of 1000. Creates up to 100 products with inline options, inline brand/ribbon/infoSections, all variants AND per-variant inventory items in one request. **Five caps apply simultaneously and exceeding ANY ONE rejects the whole request:** products ≤100, `variantsInfo.variants` ≤1000 total, `options` ≤100 total, `modifiers` ≤100 total, `infoSections` ≤100 total. With 2 options per product the options cap binds at **50** products, not 100 — so batch with `lib/ndjson.js` → `readBatchesByLimits` using the exported `BULK_PRODUCT_LIMITS` + `storesProductBulkCost`, never on record count alone. **TRAP: bulk is NOT atomic** — a `200` can carry per-item failures in `results[].itemMetadata.success`; never infer success from the HTTP status. **TRAP: correlate results by `itemMetadata.originalIndex`**, not response position. **TRAP: `bulkActionMetadata.undetailedFailures`** counts failures whose detail the server dropped; ignoring it silently loses records. `returnEntity:false` (default) still returns `itemMetadata.id`, which is all a crosswalk needs — pass `true` only for a contract probe that must inspect the created entity. `bulkCreateStoresProductsWithInventory` handles normalization, correlation and the unaccounted-item check, returning `{ results, succeeded, failed, undetailedFailures, unaccounted }`. Normalization is purely local — HTML descriptions travel as `plainDescription` for Wix to convert server-side — so a batch is **one** HTTP call. It used to convert one description per product first, which made a 100-product batch 101 calls and reliably tripped the Ricos endpoint's 403 throttle. |
241
- | Stores product | `POST /stores/v3/products`, `POST /stores/v3/products/query`, `PATCH /stores/v3/products/{id}`, `GET /stores/v3/products/{id}`, `GET /stores/v3/products/slug/{slug}` | VERIFIED (2026-07-05; media patch verified live). `buildCreateStoresProductRequest` runs `normalizeStoresProductV3`, which bakes in the create traps: PHYSICAL requires `physicalProperties:{}`; simple/V1-ish top-level `price`, `sku`, and physical properties are moved into a single V3 variant; option/variant choice names clamped to 50 (identical truncation both places); variant `optionChoiceNames.renderType` defaulted to `TEXT_CHOICES`; `compareAtPrice` dropped unless strictly > `actualPrice`; variant `price` must be a **money object** (`{ actualPrice: { amount: "14.95" } }`) — a bare string/number 400s "Expected an object" (verified 2026-07-19), so the normalizer coerces scalar prices. **Descriptions:** a string `description` is HTML and is moved to **`plainDescription`** by `normalizeStoresProductV3`; Wix converts that to rich content server-side, so the product path never calls the Ricos endpoint (`description` proper is a Ricos document *object* — HTML there is a type error). **TRAP: `plainDescription` is silently ignored when `description` is also set** — a 200 with an empty description — so the normalizer throws when both are present. **TRAP: hard cap of 16,000 characters** (the old Ricos path chunked at 28k and merged, so it was effectively unbounded); over-long bodies throw rather than truncate, and need an info section or an explicit `mapping-gaps.json` entry. For product media, prefer `media.itemsInfo.items[]` with external `url` values when the source URLs are publicly reachable: the Stores product API ingests them in the background, avoiding the slower, heavily-throttled Media Manager pre-import path. Use pre-imported Wix media ids only when the target flow requires them. **Upsert lookups:** `getStoresProduct(wix, id)` and `getStoresProductBySlug(wix, slug)` return the product or throw 404 — callers should catch and treat as `null` for "not found". **Catalog sweeps:** `queryStoresProducts` returns **one page** unwrapped to the array with the cursor discarded, so a crosswalk-recovery or name-match safety net must use **`queryAllStoresProducts(wix)`**, which follows the cursor and throws rather than returning a partial index. **Slugs:** sanitizing is owned by `lib/wix-build.js` (`toWixSlug`, applied automatically via the `coerce: 'slug'` rule on `product.slug`), not by this module and deliberately not by `normalizeStoresProductV3` — the writer passes the caller's slug through unchanged so URL preservation can record the original next to the derived `plannedTargetSlug`. It matters because Wix rejects anything outside `[a-z0-9-]` and slug validation precedes application, so one bad slug (Shopify mints `ph-5_5` from a "pH 5.5" title) 400s the entire bulk batch rather than just that product. **General patch:** `patchStoresProduct(wix, { productId, revision, ...fields })` applies `normalizeStoresProductV3`, so a string `description` moves to `plainDescription` here too; `revision` from the existing product is required. UNVERIFIED for get-by-id, get-by-slug, and general-field patch (endpoint VERIFIED; arbitrary-field patching and slug lookup not yet live-tested). **Variable products / variant matrices:** Wix Stores V3 requires server-assigned `optionChoiceId` GUIDs before a variant matrix can be built — those IDs do not exist until after the initial `createStoresProduct` call returns. A single-pass import therefore cannot create a full variant matrix in one call. The two-pass approach: (1) create the product with options declared (but no variants), (2) create each option choice via `POST /stores/v3/products/{id}/options/{optionId}/choices` to obtain server-assigned choice IDs, (3) create variants via `POST /stores/v3/products/{id}/variants`. When the two-pass flow is out of scope (e.g. public-data single-pass run), import as a single-variant product at the base price, record the fidelity loss in `mapping-gaps.json`, surface it in the execution-plan report, and ensure the generated product detail page renders `productOptions` when non-empty so the storefront is ready once options are added. |
242
- | Stores category | `POST /categories/v1/categories`, `POST /categories/v1/categories/query` | VERIFIED (2026-07-05) for create. Body `{ category, treeReference }` — `treeReference` is **top-level** (sibling of `category`, `{appNamespace:"@wix/stores"}`); nesting it 400s "treeReference must not be empty". Empty optional strings such as `description: ""` are omitted. **Query:** same top-level `treeReference` trap applies. `queryStoresCategories(wix)` returns **one page (100 max)** unwrapped to the array — it does **not** return all categories, and the unwrap discards the cursor so it cannot be paged. Any dedupe/upsert index must use **`queryAllStoresCategories(wix)`**, which follows `pagingMetadata.cursors.next` and throws rather than returning a partial index. A site with more than 100 categories reads back only 100 through the single-page call, which would duplicate the missing ones. UNVERIFIED for query (not yet live-tested). |
243
- | Wix Tag (global) | `POST /tags/v1/tags` | UNVERIFIED bootstrap. Body `{ tag: { name, fqdn } }`. FQDN for Stores V3 products: `"wix.stores.catalog.v3.product"`. Max 100 tags per FQDN. Create tags before products; crosswalk tag IDs into product `tags.publicTags.tagIds[]` at create time. Tags are a native Wix entity — do not route product tags to CMS. |
244
- | Stores inventory | `POST /stores/v3/inventory-items`, `POST /stores/v3/bulk/inventory-items/create`, `POST /stores/v3/bulk/inventory-items/update` | VERIFIED LIVE for single create, bulk create/update, Inventory and default-location Catalog read-back. Imports use `reconcileInventory` with the full expected variant count; persist its report and complete the inventory checkpoint only when `status:complete` and `complete:true`. No-data remains distinct. `buildCreateInventoryItemRequest` requires exactly one explicit `inStock` boolean or `quantity` integer; omitting both now throws instead of sending an unspecified stock policy. `trackQuantity` is validated for compatibility but omitted from requests because it is read-only. |
245
- | Stores category membership | `POST /categories/v1/bulk/categories/add-item` | VERIFIED (2026-07-05). `{ item:{ catalogItemId, appId }, categoryIds[], treeReference }`; `appId` = Wix Stores `215238eb-…`, `catalogItemId` = Wix product id. **`bulkAddItemToCategories(wix, payload)` takes exactly one `{ productId, categoryIds }` object — never extra positional arguments** (a generated call site once passed three, silently dropping the third and sending `undefined` for both fields on every call; see `lib/stores-category-attach.js`). Do not call it inline and trust the resolved promise: use `reconcileCategoryAttachment(wix, rows, opts)`, which calls it with the correct shape, never swallows a write error, and reads every product back (`DIRECT_CATEGORIES_INFO`) before marking a row attached — an ADD is confirmed by "every expected id present", never exact set equality. |
246
- | Contacts | `POST /contacts/v5/contacts`, `POST /contacts/v5/bulk/contacts/upsert`, `POST /contacts/v5/contacts/query`, `GET /contacts/v5/contacts/{id}`, `PATCH /contacts/v5/contacts/{id}` | **GA** (docs verified 2026-08-04 — was Developer Preview when selected on 2026-07-26). Do not fall back to V4 unless a migration explicitly chooses a legacy compatibility path. **The GA contact shape is FLAT** — no `info` wrapper, no `emails.items`/`phones.items` list wrappers: one main `email`/`phone` (contact matching + subscription status live on these) plus `additionalEmails`/`additionalPhones` arrays; `addresses[]` keeps postal fields **nested under `address`**; `company` is `{ name, jobTitle }`. Create and update both take `{ contact, allowDuplicates }`; update requires the current `revision` and has **no fieldMask**. Phone tags: `OTHER`/`MAIN`/`HOME`/`MOBILE`/`WORK`/`FAX` (no `UNTAGGED`). `buildCreateContactRequest`/`buildUpdateContactRequest` accept the flat GA `contact` (legacy `info` payloads convert strictly — non-mechanical keys like `extendedFields`/`labelKeys` throw). Live create/query/update verification is still pending a token with Contacts permissions (2026-07-26 probe got `403`) — keep V5 writers surfaced as UNVERIFIED in execution reports until a live contract test promotes them. **Custom fields (GA):** the V5 contact carries `extendedFields.namespaces.<ns>`; per the V5 contact-object docs, definitions go through the **Data Extension Schema API with FQDN `wix.contacts.*.contact`** (user-defined values under `_user_fields`). The V4 Contacts Extended Fields API (`POST /contacts/v4/extended-fields`, values under `info.extendedFields`) pairs with the V4 surface only — do not mix. CAVEAT: the Data Extension Schema intro's supported-objects table does not list contacts yet (docs inconsistency at GA cutover); verify the DES path live during setup before relying on it. **Labels → tags:** V5 exposes `tags.privateTags.tagIds[]` managed via the Tags API (same FQDN); V4 label APIs and the `labels_added` automation trigger are a V4-surface concept — resolve the tag/label story during setup before planning post-import label waves through V5 writers. |
247
- | Coupons | `POST /stores/v2/coupons`, `POST /stores/v2/coupons/query`, `DELETE /stores/v2/coupons/{id}` | `createCoupon` VERIFIED LIVE (stores/coupon entity, multi-thousand import). **Contract:** use `ensureCoupon({ specification })` — Query Coupons by exact `specification.code` (paced, retried; the write is not readable immediately), zero matches creates, one reconciles, more is ambiguous and creates nothing. The specification comes from `rp-source-wordpress/lib/coupon-discovery.js` `mapCouponToWix`; never hand-roll it (epoch-ms times, explicit `appliesToSubscriptions`, exhausted codes `active: false`). **Redeemability is REFUSED unless it was decided:** `ensureCoupon`, `bulkCreateCoupons` and `normalizeCouponSpecification` all throw before any network call unless the specification carries a boolean `active` and either a positive-integer `usageLimit` or the directive `usageUnlimited: true` (stripped before the body is built; `usageLimit: 0` is rejected by the target, so unlimited has no sentinel number). Both fields are optional on the API and each omission resolves the expensive way -- absent `active` reads as ON, and the target's own usage count starts at zero. CREATE paths only: `updateCouponFields` must keep carrying only the fields being changed. **Scope is enforced by the writer**, so a hand-rolled specification now fails locally instead of on the store: `normalizeCouponSpecification` derives `scope.namespace` from `scope.group.name` (`product`/`collection` -> `stores`, `form` -> `forms`; never a flat constant) and REFUSES an unenumerated group name, a nameless group, a group with no `entityId`, or a namespace/group pair that is not one of the five accepted pairs -- naming the field, the value and the accepted values. A refusal throws; it never drops the scope, because a dropped scope is a storewide coupon. `bulkCreateCoupons` sets refused specifications aside BEFORE it sends, reports each one `coupon-scope-shape-invalid` keyed by code, and writes the rest in one call. A scoped coupon should carry `scopeTarget: {visible}` -- the caller's verdict on the restricted product or collection: `{visible: false}` is refused unsent as `coupon-scope-target-hidden` (never widened to storewide, never parked with `active: false`), and an omitted `scopeTarget` writes but marks the result `coupon-scope-target-visibility-unchecked`. |
248
- | Members | `POST /members/v1/members`, `POST /members/v1/members/query`, `GET /members/v1/members/{id}`, `POST /contacts/v5/contacts/query` | Create VERIFIED LIVE. **Contract:** `ensureMember({ loginEmail, contact, knownMemberId })` (`customer-member.js` builds `contact` from a source customer — `buildMemberContact`, phone via `normalizePhoneE164`, never sent un-converted: Create Member 400s on anything not already E.164). Reconciles by a crosswalk row read back and verified (`member-crosswalk-row-stale` if not), else Query Members by `loginEmail` (one match reconciles, more is ambiguous); before every create that carries a phone, Contacts V5 is queried by that phone and it is DROPPED (`member-phone-collision-dropped`) on a match — Create Member reuses an existing contact with a matching phone even from a DELETED member, and two different customers would otherwise merge into one Wix identity. Persist `loginEmail` on the crosswalk row (`lib/member-crosswalk.js`) or `resolveOrderBuyer` cannot link anything. Create Member ≥1s apart (documented floor). |
249
- | Pricing plans | `POST /pricing-plans/v3/plans`, `POST /pricing-plans/v3/plans/query`, `POST /pricing-plans/v2/plans/{id}/archive` | Create VERIFIED LIVE 2026-08-16 (pricing-plans/plan entity). **Contract:** `ensurePlanDefinition({ plan, idempotencyKey, knownPlanId })` — the reconciliation IDENTITY is the client-minted `pricingVariants[].id` (offer-derived, preserved by Wix), never the name (names are cut to 50 chars and collide). A `knownPlanId` is read back (`GET /pricing-plans/v3/plans/{id}`) and adopted only if it exists, is not archived and carries our variant id, else `plan-crosswalk-row-stale`; then Query Plans by name, filtered to plans carrying our variant id (one reconciles, more is ambiguous, a merchant's same-named plan is ignored); then Create Plan ≥1s apart with `idempotencyKey` in the BODY beside `plan` (a header is ignored). An adopted plan that is ours but no longer inert is reported (`plan-reconciled-not-inert`), not archived. The body comes from `lib/pricing-plan-definition.js` `buildPlanDefinition` and is REFUSED unless `visibility: PRIVATE` and `buyable: false`; the CREATED plan is checked too and archived at once if it came back purchasable (`plan-failed`, cause `created-plan-not-inert`, `archived: true|false` — a FAILED archive is reported as such with `archiveError`, and `tallyPlanWriteOutcomes` counts it on `plans-live-hazard`, which blocks the report). `status: ACTIVE` is required though undocumented. Archive is the V2 call; V3 has none. |
250
- | eCom order | **`POST /ecom/v1/orders/import`** (historical orders), `POST /ecom/v1/orders/query`, `POST /ecom/v1/orders/{orderId}/activities/add` | **VERIFIED LIVE** (2026-08-12; re-verified 2026-08-16 with applied discounts, line-item description lines and merchant notes). Import Order is the only import-safe path — see `ecom/order.json`. **Caller-supplied `id` VERIFIED LIVE 2026-09-05:** a never-seen GUID is accepted and kept; a re-send with an existing id silently REPLACES the whole body (attached payments and extendedFields survive); a non-GUID is a 400. `lib/order-history.js` derives the id from the source — do not pick one, and never re-send an existing order. **`POST /ecom/v1/orders` (createOrder) remains BLOCKED for migration**: it decrements inventory, emails the buyer and auto-creates contacts. TRAP: `order.number` must be numeric — a prefixed source number fails the whole call with a bare `400 {"message":"Not a numeric value"}` and no field path. |
251
- | Site notifications mute | `POST /notification-preferences/v1/site-mute/mute`, `POST /notification-preferences/v1/site-mute/unmute`, `GET /notification-preferences/v1/site-mute` | VERIFIED (2026-08-04, full cycle live on a test target: mute → state read → idempotent re-mute → unmute → state restored, all 200). Mutes **all** notifications of the site in context — all recipients, all channels; sendability denied regardless of recipient-level preferences. All three calls return `{ siteMuteState: { muted, reason?, mutedBy: { wixUserId } } }`; executors unwrap to `siteMuteState`. Mute body `{ reason?: string }` (≤500, clamped by the builder) — always pass a project-identifying reason (`RePlatform migration — <project>`) so the mute is auditable. **TRAP: re-mute overwrites `reason`** (last caller wins) — the import preflight's idempotent re-call must pass the same reason as setup. **AUTH TRAP: user tokens only** — the CLI-minted `OauthNG` site token (`WIX_AUTH_TOKEN` from `config/wix.env`) works; an account API key gets a uniform empty-body 403 on all three endpoints. Hard invariant: when mute is in effect (always for `WIX_SITE_STRATEGY=new`; explicit opt-in for existing sites), a failed mute halts the run before any import write — no degraded mode. `unmuteSiteNotifications` is **never called by the flow itself** — explicit owner request only; after an on-request unmute, confirm `muted: false` via `getSiteMuteState`. |
252
- | Direct native REST | any Wix REST path derived by codegen | UNVERIFIED generated path for native Wix entities missing a dedicated adapter writer. Must log, call `notifyMissingWriter`, and be shown in the execution plan. |
253
-
254
- ## Safe-mode contact replacement
255
-
256
- `lib/wix-writers.js` exports the shared safe-mode runtime:
257
-
258
- ```js
259
- createSafeModeConfig(env)
260
- mockEmailForEntity(entityType, entityId)
261
- sanitizeContactFieldsForSafeMode(value, options)
262
- sanitizeWixRequestBody(body, options)
263
- ```
264
-
265
- Generated imports must pass `safeModeOptions` to writer builders/executors when
266
- `SAFE_MODE` is enabled. Request builders sanitize a copied request body before returning
267
- it and throw `SafeModeBlockedError` before any send when suspicious non-replaced email
268
- values remain.
269
-
270
- Safe-mode replacement paths use deterministic request-body paths with object fields,
271
- array wildcards, and Wix wrapper arrays, for example:
272
-
273
- ```text
274
- contact.email.email
275
- contact.additionalEmails[].email
276
- contact.phone.phone
277
- order.billingInfo.email
278
- dataItem.data.submissions[].email
279
- ```
280
-
281
- Replacement only touches primitive leaf values — a generic path that lands on an object
282
- (such as the GA Contacts V5 `email` object) is skipped rather than clobbered, and any raw
283
- email left inside a skipped object still trips the suspicious-value block.
284
-
285
- Target domain entity files may define `safeModeContactFields[]` with `{ kind, targetPath,
286
- source, notes }` entries. Mapper/codegen must merge those target hints with source-side
287
- contact evidence and user mappings, then pass resolved request-body paths to the shared
288
- writers.
289
-
290
- ### Stores subscription validation
291
-
292
- `lib/wix-writers.js` exports the Stores subscription contract and deterministic helpers:
293
-
294
- - `STORES_SUBSCRIPTION_CONTRACT`
295
- - `normalizeStoresProductSubscriptions`
296
- - `validateStoresProductSubscriptionDetails`
297
-
298
- Generated import code should call the normalizer from product transforms and the
299
- validator during dry-run and immediately before live create. Validation failures are
300
- record-level preflight failures/deferred outcomes; do not send known-invalid
301
- subscription payloads to Wix to discover field errors live.
302
-
303
- Catalog V3 subscriptions are a native Stores target, not an automatic CMS fallback or
304
- semantic loss. Product create with `subscriptionDetails.allowOneTimePurchases` and
305
- `subscriptions[]` entries containing `title`, `description`, `frequency`, `interval`, and
306
- `autoRenewal` was verified live on 2026-07-26; Wix returned
307
- server-assigned subscription option ids. Mapping/codegen should emit native recurring product
308
- creates when the source cadence is known. General subscription patching remains unverified.
309
-
310
- ### Stores live verification helpers
311
-
312
- Use the shared Stores verification CLI for live target checks that would otherwise become
313
- migration-local snippets:
314
-
315
- ```bash
316
- node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores subscription-create \
317
- --artifact migrations/<project>/setup/stores-subscription-verification.json \
318
- --proposal-artifact migrations/<project>/setup/contract-ledger-proposal.json
319
- node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores product-count \
320
- --artifact migrations/<project>/execution/stores-product-count-verification.json
321
- node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores product-by-source-marker \
322
- --marker-path customFields.sourceId --marker-value <source-id> \
323
- --artifact migrations/<project>/execution/stores-product-marker-verification.json
324
- node skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js stores delete-probe \
325
- --product-id <probe-product-id> \
326
- --artifact migrations/<project>/setup/stores-probe-cleanup.json
327
- ```
328
-
329
- The CLI reads `WIX_AUTH_TOKEN` and `WIX_SITE_ID` from the environment or
330
- `config/wix.env` under the current project root, creates the shared Wix client, and sends
331
- requests through `wix.send(...)`. It writes machine-readable artifacts with the target
332
- site id, endpoint, method, verified nested paths, discovered constraints, probe id,
333
- cleanup status, warnings, recovery instructions, and timestamp. Failed probe cleanup is
334
- not hidden: the artifact must remain with an explicit warning and a `delete-probe`
335
- recovery command.
336
-
337
- ## Routed URL preservation behavior
338
-
339
- URL preservation is a mapping and execution-state concern. This adapter owns only the
340
- Wix-side facts that generated code may rely on when deciding whether a final target URL is
341
- known.
342
-
343
- Current import-only phase rules:
344
-
345
- - Do not configure Wix redirects or site routing.
346
- - Do not guess a destination relative URL from a slug when Wix route behavior has not been
347
- verified for that entity and delivery mode.
348
- - When the destination base path or final URL is unknown, write URL ledger rows with
349
- `urlStatus: "pending_target_route"` or `target_url_missing` and record unresolved rows
350
- for the future website-builder phase.
351
- - When a Wix create/update response or a safe declared lookup returns a final slug or
352
- relative path, generated code may record it as `actualTargetSlug` or
353
- `actualTargetRelativeUrl` and write a redirect plan if it differs from the source URL.
354
-
355
- Known routed entity status:
356
-
357
- | Entity | URL behavior contract |
358
- | --- | --- |
359
- | Blog posts | Create/publish is verified for content writes. Final public route exposure after publish is not verified here; generated code must treat the target route as `pending_target_route` unless a safe lookup in the generated write spec proves the final relative URL. |
360
- | Blog categories | Category create is verified. Final public category route exposure is not verified here; default to `pending_target_route`. |
361
- | Stores products | Product create and slug-bearing product operations are verified, but arbitrary route/base-path configuration is not part of this phase. Generated code may record actual target slugs only when returned or safely looked up; target relative URLs remain `pending_target_route` unless the route pattern is explicitly verified in the project. |
362
- | Stores categories/collections | Category create is verified. Final collection/category route exposure is not verified here; default to `pending_target_route`. |
363
- | CMS items with dynamic pages | CMS item writes are verified. Dynamic page route patterns are site-builder configuration, not native item import output; default to `pending_target_route` unless website-builder artifacts define the route. |
364
-
365
- ## Shared execution runtime contract
366
-
367
- In addition to endpoint primitives, this adapter should define the reusable runtime API
368
- that generated migrations call.
369
-
370
- Conceptual contracts:
371
-
372
- ```ts
373
- executeWriteSpec({
374
- spec,
375
- items,
376
- client,
377
- dryRun,
378
- runContext,
379
- }): Promise<WriteExecutionReport>
380
-
381
- executeSetupPlan({
382
- plan,
383
- client,
384
- dryRun,
385
- runContext,
386
- }): Promise<SetupExecutionReport>
387
- ```
388
-
389
- The exact filenames are implementation details, but the shared runtime should be the
390
- single place that owns generic Wix execution mechanics.
391
-
392
- ### `WriteSpec` contract
393
-
394
- Generated migrations should pass a declarative `WriteSpec` into the shared runtime.
395
-
396
- Each spec should define, as applicable:
397
-
398
- - `entity`
399
- - `mode`: `create | update | upsert | bulk_create | bulk_upsert`
400
- - `create`
401
- - `update`
402
- - `lookup`
403
- - `bulk`
404
- - `batchSize`
405
- - `concurrency`
406
- - `retryPolicy`
407
- - `throttlePolicy`
408
- - `auditKeys`
409
- - `crosswalkAuthority: "local"`
410
- - `cmsMirror`
411
- - `crosswalkStrategy`
412
- - `reconciliationStrategy`
413
- - `dependencyRefs`
414
- - `verificationLevel`: `verified | unverified`
415
-
416
- This resource should document how each field is interpreted by the runtime.
417
-
418
- ### `WriteExecutionReport` contract
419
-
420
- The shared runtime should return a compact, token-aware report suitable for the agent.
421
-
422
- It should include:
423
-
424
- - run ID
425
- - entity
426
- - counts: input, attempted, created, updated, skipped, failed, retried, throttled
427
- - grouped error buckets
428
- - references to fuller on-disk logs
429
-
430
- The runtime should prefer grouped summaries over raw per-record detail.
431
-
432
- These per-entity or per-phase reports are intermediate runtime outputs. They are inputs to
433
- the final completion artifact, not replacements for it.
434
-
435
- ### Completion artifact contract
436
-
437
- The shared runtime should support deterministic emission of a final machine-readable
438
- completion artifact for the whole run.
439
-
440
- Preferred output:
441
-
442
- - `execution/completion-report.json`
443
-
444
- This artifact should be the authoritative source for:
445
-
446
- - final run status
447
- - final imported/updated/skipped/failed counts
448
- - separate dry-run counts when `dryRun: true`: requests built, Wix calls skipped,
449
- would-create/update/delete, would require live lookup, and local validation failures
450
- - grouped skipped/deferred outcomes
451
- - grouped failure outcomes
452
- - dashboard/editor/preview destinations
453
- - artifact references for audit/error/execution logs
454
-
455
- The shared runtime should also support deterministic rendering inputs for:
456
-
457
- - `execution/review/completion-summary.md`
458
-
459
- The rendered summary should be derived from `completion-report.json`, not independently
460
- invented by the agent.
461
-
462
- ### Audit log contract
463
-
464
- The shared runtime should emit append-only machine-readable audit events.
465
-
466
- Preferred format: NDJSON.
467
-
468
- Each event should capture, at minimum:
469
-
470
- - timestamp
471
- - run ID
472
- - phase: `setup | import`
473
- - entity
474
- - operation
475
- - source ID when applicable
476
- - target ID when known
477
- - endpoint or primitive used
478
- - attempt number
479
- - result status
480
- - HTTP status or platform error code when applicable
481
- - latency
482
-
483
- The `run ID` is required because audit files are append-only across dry-runs, retries, and
484
- recovery passes. Completion reports should be generated from runtime counters for the
485
- current run and may use audit aggregation only when filtered by `run ID`. The shared
486
- `lib/audit-summary.js` helper enforces this filter for fallback/verification summaries.
487
-
488
- ### Dry-run runtime contract
489
-
490
- The shared Wix runtime exports `createDryRunConfig`, `normalizeDryRunValue`,
491
- `createWixClient`, and `createWixSetupExecutor`.
492
-
493
- Dry-run is enabled by `DRY_RUN=true` or by the generated entrypoint's `--dry-run` flag.
494
- It is disabled by default. `true`, `1`, `yes`, and `on` enable it; `false`, `0`, `no`,
495
- and `off` disable it.
496
-
497
- When `createWixClient({ dryRun: true })` is used:
498
-
499
- - `authToken` and `siteId` may be blank unless the generated project requires the site ID
500
- for a local artifact namespace;
501
- - `send()` must not call `fetch`, SDK, MCP, or CLI transports;
502
- - `send()` must capture the would-send request under
503
- `state/attempts/wix-request-captures.ndjson` when `projectDir` or `requestCapturePath`
504
- is supplied;
505
- - captured headers must omit `Authorization` and redact secret-like header/body keys;
506
- - captured bodies must be after `SAFE_MODE` contact-value sanitization;
507
- - response payloads must preserve the live shape expected by writer helpers, for example
508
- `{ contact }`, `{ product }`, `{ dataItem }`, `{ file }`, or an expected collection
509
- field such as `{ contacts: [] }` for skipped queries.
510
-
511
- Dry-run placeholder target IDs are not live authority. If downstream local execution
512
- needs them, write them only to `state/crosswalk/dry-run-crosswalk.ndjson` or keep them
513
- in memory. Never append simulated target IDs to `state/crosswalk/crosswalk.ndjson` and
514
- never upload them to a CMS crosswalk mirror.
515
-
516
- When `createWixSetupExecutor({ dryRun: true })` is used, each setup step must first be
517
- reduced to a structured intent, then captured as `planned_dry_run` without invoking MCP,
518
- CLI, SDK, or REST transports that access or mutate Wix account/site state.
519
-
520
- ### Artifact authority at run completion
521
-
522
- The shared runtime contract should preserve explicit artifact authority:
523
-
524
- 1. `execution-log.md` for chronology and operator/debug context only
525
- 2. `completion-report.json` for final outcome
526
- 3. `completion-summary.md` for deterministic user-facing rendering
527
-
528
- The runtime should not force downstream consumers to reconstruct final outcome by reading
529
- raw audit logs or chronological execution logs.
530
-
531
- ### A rejected write and a write of unknown outcome are different results
532
-
533
- `createWixClient().send` checks the response status **before** it tries to read
534
- the body, and every failure it throws says which of two things happened:
535
-
536
- - **Rejected.** The response body parsed. The target made a decision and stands behind it.
537
- `outcomeKnown: true`, `status` set, `body` parsed, `applicationErrorCode` populated when
538
- the envelope carried one. Report it and classify it by status; only the duplicate-protected transient paths below may retry.
539
- - **Unknown.** The body did not parse — a gateway or protection layer answered ahead of the
540
- service with an HTML error page — or the transport threw before any response arrived.
541
- `outcomeKnown: false`, with `rawBody` holding the first 400 characters of what actually
542
- came back and `status` set to what the target returned (`null` only when no response
543
- arrived at all). Nobody knows whether the write was applied, and the honest report says so.
544
-
545
- A **2xx** whose body does not parse is *unknown*, not a success: it usually means the request
546
- never reached the service, and returning `null` there is how an unwritten record becomes a
547
- written one in the report. An **empty** body on a 2xx is not unparseable and still returns
548
- `null`, as several Wix deletes answer exactly that way.
549
-
550
- `describeError` carries `outcomeKnown: false` through to the results ledger, so the
551
- distinction survives being written down.
552
-
553
- **One exported test decides whether a failure is worth trying again:
554
- `isTransientWixError` (with `TRANSIENT_WIX_STATUSES`), from `lib/wix-writers.js`.** It keys
555
- on the target's numeric status (`429`, `500`, `502`, `503`, `504`) and on the
556
- no-response-at-all marker, and on nothing else — never on the error's message text, which is
557
- truncated at 400 characters by design, and never on `applicationErrorCode`, in either
558
- direction. `403` is excluded: it is one endpoint's observed throttle and a real permission
559
- failure everywhere else. No caller may define its own copy.
560
-
561
- It answers "is this condition likely to clear". It does **not** answer "is it safe to try
562
- again" — only the call site knows that. Exactly two write paths retry (3 attempts, with 500 /
563
- 1500 ms between attempts): the order import and the reconcile-plus-payment-write pair, both inside
564
- `importOrderHistory`, and both only because they reconcile against the target first. Nothing
565
- else does, because a write that is not reconciled first and fails after the target committed
566
- would be retried into a duplicate record.
567
-
568
- ### Retry and throttling policy
569
-
570
- This adapter should define one shared retry/throttling contract rather than letting each
571
- migration invent its own.
572
-
573
- It should classify, at minimum:
574
-
575
- - retryable transport/network failures
576
- - retryable `429` responses
577
- - retryable `5xx` responses
578
- - non-retryable `4xx` validation failures unless explicitly listed otherwise
579
-
580
- When the server provides backoff hints such as `Retry-After`, the shared runtime should
581
- honor them.
582
-
583
- ### Bulk and fallback policy
584
-
585
- The shared runtime should know:
586
-
587
- - when a native bulk primitive exists and is preferred
588
- - when to fall back from bulk to per-record writes
589
- - when an upsert requires lookup + create/update orchestration
590
- - when an unverified native path must be surfaced before execution rather than used
591
- silently
592
-
593
- ## Media policy by target
594
-
595
- Do not treat all media the same. The target domain decides whether media must exist in Wix
596
- first or can be ingested through the entity API itself.
597
-
598
- - **Wix Stores products:** prefer external URLs on `media.itemsInfo.items[]` and let the
599
- product API ingest them in the background. This is the default path when the URLs are
600
- publicly reachable.
601
-
602
- What one item accepts, from the machine-readable Catalog V3 spec (component
603
- `ProductMedia`) — not from the prose article, which disagrees on the cap:
604
-
605
- | Field | Direction | Constraint |
606
- | --- | --- | --- |
607
- | `setBy.id` **or** `setBy.url` | **in** | a `oneOf` — exactly one per item |
608
- | `altText` | **in** | 1–1000 characters |
609
- | `displayName` | **in** | max 80, and **only** accepted when the item is set by `url` |
610
- | `mediaType`, `uploadId` | out | read-only |
611
- | `media.image`, `media.video` | out | read-only; populated when the item is set by `id` |
612
- | `thumbnail` | out | Wix-generated; needs `THUMBNAIL` in the request's `fields` array |
613
- | `media.main` (on the parent) | out | read-only; always the first entry of `itemsInfo.items` — reorder the array to change it |
614
-
615
- ⚠️ **`thumbnail` is not an input.** It looks like a second image URL you could supply and
616
- it is not — `fields` is defined as *"Fields to include in the response"*, so `THUMBNAIL`
617
- only asks Wix to return a derivative it generated from the one file you uploaded. There is
618
- no input that influences it, and none that raises an already-ingested item's quality: the
619
- URL you send is that image's permanent ceiling. Send the source's original, maximum-
620
- resolution file — the source adapter owns that choice (WordPress sources: `wp-image-url.js`).
621
-
622
- ⚠️ **The cap is disputed by Wix's own docs.** The schema says `maxItems: 50` on
623
- `itemsInfo.items`; the *About Product Media* article says 15. Follow the schema and do not
624
- design near either bound.
625
-
626
- ⚠️ The article also says `width`/`height` are not populated for URL-set media. Observed
627
- behaviour contradicts it — a URL-set item read back live returned both — so reading
628
- dimensions back is a usable post-ingest check. Confirm at first live run before reporting
629
- it as a guarantee.
630
-
631
- ⚠️ **The 200 is a queue acknowledgement, not a delivery — and a failed ingest empties the
632
- gallery.** This is the most expensive trap on this endpoint, so it gets its own paragraph.
633
- The write returns 200 with the item echoed back as `mediaType: "UNKNOWN_MEDIA_TYPE"` and an
634
- `uploadId`; Wix fetches the URL afterwards, on its own side, with no callback and no status
635
- endpoint. `media.itemsInfo.items` is a **full replace**, so the product's existing image is
636
- discarded the moment the PATCH is accepted. When the later fetch fails, Wix **drops the item**
637
- and the product is left with **no images at all** — 200 on the write, no error anywhere, and
638
- the old picture already gone.
639
-
640
- It is transient and unattributable: observed live on a valid, publicly reachable 2048×2048
641
- JPEG that ingested fine on the very next identical attempt. Nothing about the file or the
642
- request predicts it, so there is nothing to validate up front.
643
-
644
- | Observed live | Frequency |
645
- | --- | --- |
646
- | Items not ingested 60 s after an accepted write | a sizable minority |
647
- | Of those, fixed by one identical retry | nearly all |
648
- | Writes refused by an **edge-level 429** whose body is an HTML page, not JSON | occasional |
649
-
650
- So: **never treat a 200 as done.** Read the product back with `?fields=MEDIA_ITEMS_INFO`
651
- (a plain `GET` returns only `media.main` and looks empty even when healthy), and re-send
652
- anything whose items lack an `image.id`. A miss is *not yet known*, never *failed* — only
653
- re-sending distinguishes "still in flight" from "dropped and gone". Use
654
- `patchStoresProductMediaVerified`, which does this, rather than `patchStoresProductMedia`,
655
- which returns on the 200. Re-read the `revision` each round: the accepted-but-not-ingested
656
- write already incremented it.
657
-
658
- ⚠️ Two different failures, **one retry list**. A write refused with 429 leaves the OLD image
659
- in place; a write accepted but never ingested leaves NOTHING. Anything that did not reach the
660
- verified state goes into the next round, whatever went wrong — recording one of them as an
661
- error and dropping it out of the loop is how a run reports success over products it never
662
- fixed. Keep the write pool small (3 concurrent, not 6) so the edge limiter is not the thing
663
- the retry loop spends its rounds on.
664
-
665
- **WordPress-family URL provenance is enforced here.** A generated importer uses the exact
666
- `confirmedPictures` instance exported by `wix-writers.js` for declaration, source reads and
667
- confirmation; a separately required toolkit or vendored copy does not activate this writer.
668
- After declaring `orchestration/decisions.json` → `sourcePlatform.value`, guarded importers call
669
- `assertProductMediaGuardActive()` at startup and stop if this writer's own guard is inactive.
670
- Under exact `woocommerce` or `wordpress` declarations, `buildStoresProductMedia` accepts URL
671
- items only when the complete ordered list came from `confirmPictures` (or an exact
672
- normalization registered by `deriveConfirmed`). Create, bulk create, general patch, media
673
- patch and verified media patch all cross this boundary; the verified path checks before its
674
- first read. Hand-built strings, objects, clones, subsets, extensions and reorders throw before
675
- any Wix request. Wix media ids, other source identities and undeclared legacy callers retain
676
- their current behavior.
677
-
678
- ⚠️ **A round that failed must back off before the next one, and it is a different wait from
679
- the settle wait.** The settle wait comes *after* an accepted write, so a round that throws
680
- never reaches it — retry immediately and the loop burns all its rounds in milliseconds against
681
- a rate limit that lasts tens of seconds, which is a retry loop that only looks like one. Two
682
- waits, two purposes: `settleMs` waits for an accepted write to finish ingesting, `retryDelayMs`
683
- waits for a refusal to lift. Skip the delay after the final round — there is nothing left to
684
- wait for and the caller should not pay for it.
685
- - **Wix Blog cover images and other surfaces that require a Wix media id at create/update
686
- time:** import media first, then pass the Wix media id into the entity payload.
687
- - **Generic Media Manager import** is a fallback/shared primitive, not the default for
688
- every entity carrying media.
689
-
690
- ## Media import source URL reachability
691
-
692
- The media primitive imports by URL: Wix servers fetch the provided `sourceUrl`. Public
693
- HTTPS URLs are expected; `localhost`, `127.0.0.1`, Docker-only hosts, and other
694
- private-only URLs are not reachable by Wix during a live import. This is optional source
695
- preparation and, as far as we know today, affects media import only.
696
-
697
- If the source system is local, the migration should either:
698
-
699
- - expose the source through a public HTTPS tunnel, then pass/rewire media URLs to that
700
- public base URL; or
701
- - skip/defer media import and clearly state which media-dependent references will be
702
- missing until media is imported.
703
-
704
- Ngrok quick setup for macOS:
705
-
706
- ```bash
707
- brew install ngrok
708
- ngrok config add-authtoken "<YOUR_AUTHTOKEN>"
709
- ngrok http 8090
710
- export WP_BASE_URL=https://<id>.ngrok-free.app
711
- ```
712
-
713
- ## Validate by real call — do not trust doc examples
714
-
715
- Codegen-time MCP doc checks confirm an endpoint *exists*; they do **not** confirm the
716
- request *shape works*. The live wporg-news import proved doc examples can be wrong
717
- (lowercase Ricos plugins → 400) or incomplete (featured image field, tag body). The
718
- rule for this adapter:
719
-
720
- - Treat a shape as verified **only after a real call succeeds** — encode the working
721
- shape here with a `// VERIFIED:` (or `// VERIFIED-TRAP:`) note and a date.
722
- - A `// UNVERIFIED:` primitive is allowed as a bootstrap point for generated code, but it
723
- is not a silent live-write permission. The execution plan must call it out, and setup
724
- verification must either promote it with a sandbox/live validation or route to fallback.
725
- - Keep `tests/target-wix/contract-test.js` current: it issues one real call per primitive
726
- against a sandbox site and is the single place schema drift surfaces. Tests live in the
727
- repo's `tests/` tree rather than in this bundle, so the published product carries no test
728
- harnesses. Run from the repo root:
729
-
730
- ```bash
731
- bash tests/run-all.sh target-wix
732
- WIX_AUTH_TOKEN=... WIX_SITE_ID=... bash tests/run-all.sh target-wix
733
- ```
734
-
735
- Without credentials the shape checks still run and the live calls are skipped.
736
- `tests/target-wix/ndjson-contract-test.js` covers `lib/ndjson.js` and never needs
737
- credentials.
738
-
739
- For live verification runs, pass `--progress-log <path>` and poll it per
740
- `CONVENTIONS.md#progress-log-polling`.
741
-
742
- Run on a cadence and after any Wix API change. A failing contract test — not a stranger's
743
- broken import — is how we learn the surface moved.
744
-
745
- ## Stores catalog is Catalog V3 only — Catalog V1 is not supported
746
-
747
- **A migration only ever writes to a `V3_CATALOG` site.** Catalog V1 is not a supported
748
- destination: there is no V1 write primitive here, no V1 fallback, and none should be added
749
- (a former V1 fallback was removed — it only masked real V3 errors as spurious `428`s). A V1
750
- site is a **blocker the run halts on**, not a variant the adapter, the mapper, or codegen
751
- accommodates. The V3 create traps are handled in `lib/wix-writers.js`
752
- (`normalizeStoresProductV3` + the top-level `treeReference` builder), so callers never
753
- re-hit them.
754
-
755
- **On a site this run created, a Stores install is guaranteed Catalog V3.** This section
756
- used to require verifying that live, because a site scaffolded
757
- from the `blank` headless template, with Stores installed afterwards through the App
758
- Installation API, could come up `V1_CATALOG` — Catalog version is fixed at provisioning, so
759
- every V3 write on such a site failed and the site had to be abandoned. The Wix platform has
760
- since changed: Catalog V3 is now guaranteed at provisioning regardless of scaffold
761
- template, so that failure mode can no longer occur for a newly-created site, and neither
762
- the `--site-template commerce` requirement nor the pre-write version gate apply anymore.
763
-
764
- This does **not** extend to an existing site this run did not create — `rp-execute-setup`
765
- ("A `V1_CATALOG` verdict is terminal here") still treats that case as a live risk and
766
- halts on it, since a pre-existing site's catalog version predates this guarantee.
767
-
768
- ## Order history: payment records, refunds and preserved invoice documents
769
-
770
- Import Order creates **no** payment record — a freshly imported order reads back with
771
- `payments: []` — so payment history is a separate write, and refunds have nothing to reference
772
- until it exists. And the order write itself has no idempotency unless it is given an id.
773
-
774
- **The contract is one call: `importOrderHistory` in `lib/order-history.js`.** It owns
775
- the per-order sequence — derive the order id, read or write the crosswalk, import, gate, one
776
- reconciliation read, payment, refunds, invoice document — and returns every stage's outcome:
777
-
778
- ```js
779
- const { importOrderHistory, createProjectOrderCrosswalk } = require('./lib/order-history.js');
780
- const result = await importOrderHistory(wix, {
781
- order, // mapped Import Order body, no `id`
782
- sourceId, sourceSiteHost,
783
- evidence, // { amount, paidDate, altPaidDate, currency, status, methodName, providerTransactionId,
784
- // offlinePayment, cardDisplay, refunds: [{ sourceId, amount, reason }],
785
- // invoice: { approval, sourceUrl, invoiceNumber, pendingMediaFileId },
786
- // utcOffsetMinutes, // a fact about the SHOP
787
- // paidDateZone, altPaidDateZone } // 'utc' | 'site-local', a fact about
788
- // each source KEY. The offset is applied only to a stamp declared 'site-local'.
789
- // Supplying utcOffsetMinutes beside a present stamp with no clock is REFUSED.
790
- crosswalk, // createProjectOrderCrosswalk({ projectDir }) — required, persisted
791
- setupVerification, // setup/extended-field-verification.json, read once per run
792
- });
793
- // result.outcomes = { order, payment, refunds: [{ sourceId, sourceOccurrence, outcome, refundId, paymentId }], invoice }
794
- // result.findings, result.errors (partial failures carry a cause), result.orderId, result.paymentId
795
- ```
796
-
797
- Its guarantees, each the answer to a failure mode seen in end-to-end testing:
798
-
799
- - The **order id is derived** from `sourceSiteHost` and `sourceId` and the crosswalk row is
800
- written before any further write. Hit or miss, the target is asked by id once — a read, not a
801
- duplicated store, and not a phantom order either. A crosswalk row from before derived ids (a Wix-minted id) wins and
802
- is counted as `order-id-from-crosswalk`. An existing order is **never re-sent**: Import Order's
803
- replace is silent and would overwrite a merchant's edits.
804
- - **Evidence keys are a contract.** An unknown key throws and names the right one; it does not
805
- report an ineligible order. The target currency is `order.currency`.
806
- - **One reconciliation read per order**, shared by the payment and every refund. Refund occurrences
807
- are assigned inside from source ids; pass all of an order's refunds together.
808
- - **Every stage returns an outcome**, and a stage that failed after the order existed returns
809
- `payment-failed` / `refund-failed` / `invoice-failed` with `errors.<stage>.cause`, so a resume
810
- reconciles the order and retries only what failed. An order-stage failure fails the rest for the
811
- cause `order-not-imported`; a target that cannot be read is `order-target-read-failed` and
812
- writes nothing.
813
- - **The buyer's member id comes through `buyer`, never on the body**, and the body's `buyerInfo.email` must be the billing email the member was corroborated against.
814
- `lib/order-buyer.js` `resolveOrderBuyer({ sourceCustomerId, billingEmail, memberCrosswalk,
815
- contactCrosswalk })` links `buyerInfo.memberId` only when the member crosswalk row's `loginEmail`
816
- equals the order's billing email; a guest, a missing row or a mismatch links nothing and reports
817
- (`buyer-*` outcomes). The result is stamped; the composite sets `buyerInfo` from it and refuses a
818
- body that carries `memberId` itself. Import Order stores ANY GUID there unvalidated (verified
819
- live), so this is the only guard.
820
- - The invoice `approval` goes to the writer unchanged. The merchant opt-in is applied when the
821
- plan is built, nowhere else — and `resolvePreservationPlan()` stamps what it approves
822
- (`lib/preservation-approval-stamp.js`), so the writer refuses an opt-in that did not come from
823
- the plan. A READY Media file whose order patch failed comes back as
824
- `invoice-fields-write-failed` with `pendingMediaFileId`; the composite remembers it in the
825
- crosswalk (`getInvoiceFile`/`setInvoiceFile`) and the resume records that file instead of
826
- importing another. The crosswalk contract is four methods, all required.
827
- - **Every crosswalk hit is verified with one paced order read.** A hit is not proof: a row
828
- pointing at an order the target no longer has (a cleared migration) is re-imported under the
829
- derived id and counted as `order-reimported-after-deletion`. One read per order per run, hit or
830
- miss.
831
-
832
- Live: `tests/target-wix/order-history-live-sentinel.js` (credential-gated) — three runs against a
833
- disposable site, one order and one payment afterwards, cleaned up through Bulk Delete Imported
834
- Orders. Passed 2026-09-05.
835
-
836
- ### Per-writer reference — what the composite calls, in this order
837
-
838
- The writers keep their contracts and remain callable; the composite is a new caller of them. This
839
- is what each one guarantees, kept here because the guarantees are the reason the sequence is safe:
840
-
841
- 1. **Gate on the source, first.** `evaluatePaymentEligibility()` in `lib/order-payment-mapping.js`
842
- requires a positive amount AND a source paid date. An order total is not evidence of payment;
843
- neither is an order status, and neither is a transaction reference. Ineligible orders are
844
- reported under a named reason and never reach the target — which is also what keeps target
845
- reads proportional to evidenced payments rather than to the whole order population.
846
- 2. **Build the record**, with `buildPaymentRecord()`. `status` sits at payment level, not inside
847
- `regularPaymentDetails`. `savedPaymentMethod` is never set: the field is writable but no
848
- reusable credential can accompany it, so setting it asserts a charging agreement that does not
849
- exist. An unknown offline/online class is OMITTED, never guessed — that is how a card payment
850
- ends up labelled as cash.
851
- 3. **Reconcile before creating**, with `writeOrderPayment()`. It reads the order's existing
852
- payments every run and matches by provider reference, else by an exact fingerprint of the
853
- payment facts. The migration's own crosswalk is a hint, not proof of target state: it does not
854
- survive "Wix write succeeded, crosswalk write failed", and it is blind to payments the merchant
855
- created by hand. Exactly one match reconciles, more than one is ambiguous and prohibits
856
- creation, and a failed target read is its own outcome — **never** permission to create. Add
857
- Payments fails the ENTIRE call if a duplicate external transaction id is present, so writing
858
- blind breaks the run and can double recorded revenue.
859
- 4. **Refund only what the source evidences**, with `ensureOrderPaymentAndRefund()`. Assign
860
- occurrence numbers first and pass `sourceOccurrence` (the composite does this from the refunds'
861
- source ids; a direct caller uses `assignRefundOccurrences()`): two
862
- distinct source refunds can share a payment and an amount, and without it the second one
863
- reconciles against the first and is silently dropped. It no longer
864
- fabricates a payment to give a refund something to point at; a qualified refund whose order
865
- evidences no payment is reported as `refund-without-payment`. `externalRefund` is a hardcoded
866
- literal `true` — it defaults to `false`, which calls the payment provider for real. Omit
867
- `sideEffects` entirely: that is what suppresses restock and the customer email. The refund date
868
- cannot be preserved (read-only and immutable), so every written refund discloses that loss, and
869
- the true date must not be smuggled into the customer-visible `customerReason`.
870
- 5. **Preserve invoice documents by reference**, with `preserveOrderInvoiceDocument()`. Pass the
871
- `approval` straight from `resolvePreservationPlan()`, and pass `sourceSiteHost` with it. The
872
- writer refuses anything that is not an approval naming that exact URL, and it re-derives the
873
- DECISION from its own classification rather than trusting the approval's `action`: a document
874
- that is not on the source site needs `merchantOptedIn` however the approval is labelled — and
875
- the opt-in is believed only under the planner's provenance stamp.
876
- `action` is caller-supplied, and trusting it meant a caller could relabel a third-party
877
- document `preserve` and have it imported on nobody's authority. With no `sourceSiteHost` the
878
- guard answers `third-party`, so omitting it fails closed. Pass the persisted
879
- `setup/extended-field-verification.json` as `setupVerification`. When a previous run left an
880
- import in flight, pass its `pendingMediaFileId` back so the import RESUMES instead of creating
881
- another private orphan. It reads the
882
- order itself — pass an `orderId`, not an order object — so an existing file id suppresses the
883
- import and a re-run cannot import a second copy of a tax document. Pass the setup verification
884
- receipt (`setup/extended-field-verification.json`): without it the write is refused as
885
- `invoice-fields-not-provisioned`. The file is imported `private: true`; only the returned id is kept,
886
- because the Import File response echoes `sourceUrl` and that URL is a bearer link. Update Order MERGES the `extendedFields` object it is given — verified live: a foreign
887
- key survived a patch that never mentioned it. The write still sends the complete object, which
888
- is precautionary rather than load-bearing. Do not describe it as preventing data loss; the API
889
- does that itself. The Data Extension SCHEMA PUT is the opposite — there the merge is the only
890
- thing preserving a merchant's fields.
891
-
892
- **Never call the invoicing service.** Re-issuing a historical tax document mints a second legal
893
- document under a different number, and whether publishing one emails the customer is undocumented
894
- in either direction. The contract is non-use, and it is provable:
895
- `tests/target-wix/no-invoices-api-contract-test.js` scans the published tree.
896
-
897
- Extended fields must be provisioned and verified before any value is written — see
898
- `lib/data-extension-schema.js` (orders, products, Contacts V5), `lib/contact-extended-fields.js`
899
- (legacy Contacts V4, explicit opt-in only) and the provisioning section in `rp-execute-setup`. A
900
- value write is blocked until setup verified that exact field. Contact values go under
901
- `extendedFields.namespaces._user_fields` with V5 writers, or `info.extendedFields.<verifiedKey>`
902
- with V4 writers — never both.
903
-
904
- ## Coupons, coupon usage and plan definitions
905
-
906
- Four small target-side pieces, all pure except the writers named in the table above:
907
-
908
- - `lib/coupon-redemption-drift.js` — **a bearer voucher is money, and its redeemability must be
909
- decided at write time, not from the discovery snapshot.** `isBearerVoucher(coupon)` narrows to
910
- the money-instrument shape (a fixed amount, no scope, no minimum, `usage_limit: 1`);
911
- `classifySnapshot({ capturedAt, now, maxAgeMs })` refuses an undated or stale snapshot;
912
- `classifyPreWriteDrift` refuses to write a voucher spent since capture (`coupons-spent-after-capture`)
913
- and refuses to write one it cannot decide; `classifyPostImportDrift` + `buildVoucherDriftPlan`
914
- produce the cutover remedy plan, with face value and affected orders per code;
915
- `verifyRemedyApplied` insists on a post-settle read-back.
916
- **One measured fact drives all of it.** Update Coupon WRITES when the specification carries
917
- ONLY the changed fields plus a field mask — so a spent voucher is deactivated in place, keeping
918
- its id, code, dates and amount. Send the FULL specification alongside a narrow mask and it
919
- returns **200 with an empty body and writes nothing**: the shape everyone reaches for first, and
920
- a pass that counts 2xx responses reports a false pass on money. `buildRemedyRequest` can only
921
- emit the minimal form; `verifyRemedyApplied` refuses to call any 2xx applied without a
922
- post-settle read-back. `specification.tags` is the one usable marker field (every alternative is
923
- silently dropped) and the vocabulary is frozen: `Imported` on everything a migration
924
- writes, plus `Already_Used` or `Disabled_At_Source` on a disabled one. All recorded as pitfalls
925
- on `domains/stores/entities/coupon.json`.
926
- - `lib/order-applied-discount-build.js` — `buildCouponAppliedDiscounts({ couponLines,
927
- resolveCoupon })` turns a source order's coupon lines into `appliedDiscounts[]` entries of the
928
- `coupon` variant (`{ id, code, name, amount: { amount } }`, `discountType: GLOBAL`) for the
929
- Import Order body. There is no standalone write: the entity `ecom/order-applied-discount` is
930
- written through `importOrder`. A code the coupon crosswalk cannot resolve produces NO entry and
931
- an unresolved line — never a dangling coupon id. Import Order stores money as-is, so
932
- `priceSummary.discount` must already agree with the entries.
933
- - `lib/pricing-plan-definition.js` — `evaluatePlanSources({ B1, B2, B3 })` (the row-count gate
934
- and the "none found" wording), `buildPlanDefinition(offer)` (PRIVATE, unbuyable, ACTIVE; name
935
- and description truncated WITH a finding; 7-day minimum cycle and 10-year maximum), and
936
- `assertInertPlan`, which the request builder and writer both call.
937
- - Live: `tests/target-wix/coupon-plan-live-sentinel.js` (credential-gated, cleans up) — one coupon
938
- of each mapped type including an expired and an exhausted one, one inert plan, one imported
939
- order carrying a coupon usage. Its verdicts are recorded as pitfalls on the entity files.
940
-
941
- ## What stays in codegen (not here)
942
-
943
- Per-project field maps and ordering (which source field → which `data` key, the
944
- media/author/taxonomy ref maps, upsert-by-key) live in the generated transforms/write
945
- specs. This adapter holds the invariant Wix request shapes, transport, and shared
946
- execution mechanics. Collection names and schemas (`PodcastEpisodes`, …) are
947
- project-specific and come from the mapping plan.
948
-
949
- ## Provisioning pointers (see rp-execute-setup)
950
-
951
- - Apps (Blog, Members) install via the App Installation API; ground `appDefId` from the
952
- official "Apps Created by Wix" table.
953
- - **Wix Data enablement** (`WDE0110`): install the **Wix Data app `appDefId
954
- e593b0bd-b783-45b8-97c2-873d42aacaf4`** via the App Installation API; afterward `POST
955
- /wix-data/v2/collections` creates NATIVE collections with no `WDE0110` (verified live).
956
- Fallback: a custom app with a data-collections extension (declares collections at
957
- install time, but can't express REFERENCE fields).
958
-
959
- ## Scope & coverage
960
-
961
- Wix has many apps/entities (Stores, Bookings, Events, Restaurants, Pricing Plans, CRM,
962
- …). This adapter does **not** pre-build all of them. Coverage is **demand-driven** and
963
- grows through reviewed releases. A migration may still target a native Wix entity before a
964
- dedicated primitive exists; in that case codegen emits a native REST path using
965
- `sendDirectRest`, logs the missing primitive, and calls `notifyMissingWriter` so the
966
- RePlatform team can add the writer later.
967
-
968
- **Native target ladder when no dedicated writer exists:**
969
-
970
- 1. **Use the dedicated `rp-target-wix` primitive** when one exists.
971
- 2. **If Wix has a native entity but no dedicated primitive, generate a native REST call**
972
- from Wix MCP/docs-schema, mark it `UNVERIFIED`, log it, call `notifyMissingWriter`, and
973
- surface it in the execution plan before any write. This is not a silent live write.
974
- 3. **Use CMS only when there is no suitable native Wix entity, or when the native entity
975
- is explicitly rejected for fidelity/side-effect reasons.** CMS is not a fallback for a
976
- missing adapter writer.
977
- 4. **Halt** if neither a native path nor an acceptable CMS/custom target exists.
978
-
979
- The invariant: **anything not backed by a verified primitive is surfaced to the user for
980
- consent before execution** — never written silently.
981
-
982
- ## Setup runtime expectations
983
-
984
- This adapter should also define the shared setup-side runtime used by setup execution.
985
-
986
- It should cover reusable mechanics for:
987
-
988
- - app installation and verification
989
- - Wix Data enablement verification
990
- - CMS collection and field provisioning when supported
991
- - setup step ordering/checkpointing
992
- - setup audit logging
993
- - setup execution reporting
994
-
995
- `rp-execute-setup` should consume setup artifacts through this runtime rather than
996
- re-implementing setup mechanics in skill-local prose or one-off scripts.
997
-
998
- ## Contract-test expectations
999
-
1000
- Contract tests should validate not only request builders, but also the most important
1001
- shared runtime invariants.
1002
-
1003
- Examples:
1004
-
1005
- - verified request shapes still serialize correctly
1006
- - retry policy classifies common Wix failures correctly
1007
- - throttle/backoff handling honors server hints
1008
- - compact reports preserve stable top-level fields
1009
- - completion reports preserve stable top-level fields
1010
- - audit events preserve the agreed machine-readable shape
1011
-
1012
- Default-location `reconcileInventory` outcomes include `catalogVerification`: exact Catalog variant availability must agree even when no stock write is needed. Catalog reads are grouped per product with at most four concurrent reads and bounded retries. Non-default locations mark this check `not-applicable`; Inventory-only success is not a default-location Catalog completion verdict.
1013
-
1014
-
1015
- ## Verified contact and product import callers
1016
-
1017
- Use `lib/contact-import.js` `importContacts` and `lib/product-import.js` `importProducts`
1018
- for standard imports. They reconcile source identities before writes, persist candidate
1019
- IDs in project-local state, and publish crosswalks only after identity/value read-back.
1020
- The request primitives do not themselves certify a mapping. `lib/bulk-results.js` selects
1021
- rules through explicit Contacts V5 / products-with-inventory / Inventory adapters; missing
1022
- indexes are unresolved, never positional fallbacks. Blog bulk remains outside those adapters.
1023
-
1024
- Product SEO runs inside `importProducts` for rows carrying `seo` (a
1025
- `lib/product-seo.js` `planProductSeo` plan). It writes only proven or owner-materialized
1026
- title/description tags through `product.seoData`, verifies each field on the product and in
1027
- Item SEO `resolvedTags`, and reports `report.seo.stageResiduals`. Item SEO bulk set is refused
1028
- for `STORES_PRODUCT`. Verification is bounded: at most 3 products in flight, every read through
1029
- the shared `sharedTargetReadPacer()` (start slots reserved atomically and re-checked after a late timer wake, so actual starts
1030
- stay >=60 ms apart), an
1031
- immediate first `resolvedTags` read, and batch retry rounds whose settle wait stays within
1032
- 31 s per stage. `report.seo.timing` reports `settleWaitMs`, `pacingWaitMs` and `backoffWaitMs`
1033
- separately; the last two are summed per-call waits, never added to wall-clock.
1034
-
1035
- `lib/write-verification.js` forwards to the shared runtime comparators in
1036
- `skills/wix-replatform/lib/write-verification.js`. Contacts normalize only the
1037
- main email (trim/lowercase) and compare other mapped values exactly after the existing
1038
- per-source sanitizer. Phone-only identity and distinct source keys sharing a target block
1039
- and report. Product variant matching uses source-fixed projections and exact target IDs;
1040
- stock and default-location Catalog verification remain in `reconcileInventory`.
1041
-
1042
- The existing subscription probe now records `valueEvidence`. Contract-ledger proposal
1043
- creation and promotion recheck those inputs; toggling `status` or supplying only present
1044
- paths cannot establish verified values. Existing published contracts remain in place.
1045
- These changes add no automatic probe or global canary gate. Schema fingerprints retained
1046
- as development evidence must be computed from saved docs-tool output, not authored claims.