@wix/agent-skills 1.35.1 → 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 (820) hide show
  1. package/package.json +8 -3
  2. package/skills/wix-app/references/CODE_QUALITY.md +1 -1
  3. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +27 -29
  4. package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +1 -1
  5. package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +26 -25
  6. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +12 -42
  7. package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +9 -20
  8. package/skills/wix-app/references/editor-react-component/MANIFEST-ERRORS.md +5 -4
  9. package/skills/wix-app/references/editor-react-component/PARTS.md +1 -1
  10. package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +1 -1
  11. package/skills/wix-app/references/editor-react-component/VECTOR-ART.md +95 -0
  12. package/skills/wix-app/references/editor-react-component/VISUAL-QUALITY.md +39 -0
  13. package/skills/wix-docs/references/CALLING.md +1 -1
  14. package/skills/wix-headless-kit/guides/api-run.md +1 -1
  15. package/skills/wix-headless-kit/install/pins.json +1 -1
  16. package/skills/wix-headless-templates/blog/seed/seed-blog.mjs +1 -1
  17. package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +0 -1
  18. package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +1 -1
  19. package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +0 -1
  20. package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +1 -1
  21. package/skills/wix-headless-templates/donations/rest/campaigns.ts +0 -1
  22. package/skills/wix-headless-templates/donations/rest/donate.ts +1 -1
  23. package/skills/wix-headless-templates/events/seed/seed-events.mjs +1 -1
  24. package/skills/wix-headless-templates/faq/INSTRUCTIONS.md +1 -1
  25. package/skills/wix-headless-templates/faq/app/wix/faq/faq.ts +2 -2
  26. package/skills/wix-headless-templates/faq/project/src/wix/faq/faq.ts +2 -2
  27. package/skills/wix-headless-templates/faq/rest/faq.ts +2 -2
  28. package/skills/wix-headless-templates/faq/seed/SEED.md +1 -1
  29. package/skills/wix-headless-templates/faq/seed/read-site.mjs +1 -1
  30. package/skills/wix-headless-templates/faq/seed/seed-faq.mjs +5 -5
  31. package/skills/wix-headless-templates/forms/app/wix/forms/forms.ts +2 -2
  32. package/skills/wix-headless-templates/forms/app/wix/forms/submissions.ts +2 -2
  33. package/skills/wix-headless-templates/forms/project/src/wix/forms/forms.ts +2 -2
  34. package/skills/wix-headless-templates/forms/project/src/wix/forms/submissions.ts +2 -2
  35. package/skills/wix-headless-templates/members/seed/read-site.mjs +1 -1
  36. package/skills/wix-headless-templates/pricing-plans/app/wix/pricing-plans/plan-access.ts +1 -1
  37. package/skills/wix-headless-templates/pricing-plans/project/src/wix/pricing-plans/plan-access.ts +1 -1
  38. package/skills/wix-headless-templates/pricing-plans/rest/plan-access.ts +1 -1
  39. package/skills/wix-headless-templates/restaurants/app/wix/restaurants/menu.ts +0 -1
  40. package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/menu.ts +0 -1
  41. package/skills/wix-headless-templates/restaurants/rest/menu.ts +0 -1
  42. package/skills/wix-headless-templates/shared/rest/client.ts +1 -1
  43. package/skills/wix-headless-templates/shared/seed/site.mjs +2 -1
  44. package/skills/wix-manage/SKILL.md +3 -3
  45. package/skills/wix-manage/references/cms/cms-data-items-crud.md +78 -1
  46. package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +11 -11
  47. package/skills/wix-manage/references/google-ads/get-campaign-suggestions.md +0 -1
  48. package/skills/wix-manage/references/google-ads/install-and-create-account.md +0 -1
  49. package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +20 -51
  50. package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +4 -4
  51. package/skills/wix-manage/references/rich-content/ricos-converter-service.md +1 -1
  52. package/skills/wix-base44-connector/SKILL.md +0 -437
  53. package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +0 -78
  54. package/skills/wix-base44-connector/scripts/utils.cjs +0 -466
  55. package/skills/wix-export/SKILL.md +0 -83
  56. package/skills/wix-harmony-editor/.publish-manifest.json +0 -8
  57. package/skills/wix-harmony-editor/COPY-SITE.md +0 -494
  58. package/skills/wix-harmony-editor/SKILL.md +0 -317
  59. package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +0 -249
  60. package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +0 -225
  61. package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +0 -89
  62. package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +0 -76
  63. package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +0 -212
  64. package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +0 -44
  65. package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +0 -45
  66. package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +0 -53
  67. package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +0 -76
  68. package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +0 -16
  69. package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +0 -150
  70. package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +0 -27
  71. package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +0 -56
  72. package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +0 -211
  73. package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +0 -29
  74. package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +0 -92
  75. package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +0 -56
  76. package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +0 -73
  77. package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +0 -67
  78. package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +0 -102
  79. package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +0 -40
  80. package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +0 -191
  81. package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +0 -61
  82. package/skills/wix-harmony-editor/scripts/launch.sh +0 -359
  83. package/skills/wix-headless/SKILL.md +0 -151
  84. package/skills/wix-headless/references/AI_FEATURES.md +0 -178
  85. package/skills/wix-headless/references/CAPABILITIES.md +0 -117
  86. package/skills/wix-headless/references/CONTENT.md +0 -36
  87. package/skills/wix-headless/references/DESIGN.md +0 -55
  88. package/skills/wix-headless/references/DISCOVERY.md +0 -80
  89. package/skills/wix-headless/references/DOC_DISCOVERY.md +0 -43
  90. package/skills/wix-headless/references/FEEDBACK.md +0 -129
  91. package/skills/wix-headless/references/IMAGE_GENERATION.md +0 -80
  92. package/skills/wix-headless/references/SDK_HANDOFF.md +0 -108
  93. package/skills/wix-headless/references/SEED.md +0 -74
  94. package/skills/wix-headless/references/SETUP.md +0 -60
  95. package/skills/wix-headless/references/astro.md +0 -98
  96. package/skills/wix-headless/references/inline-recipes/experience-donations.md +0 -102
  97. package/skills/wix-headless/references/inline-recipes/experience-store.md +0 -49
  98. package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +0 -196
  99. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +0 -590
  100. package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +0 -279
  101. package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +0 -163
  102. package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +0 -146
  103. package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +0 -203
  104. package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +0 -696
  105. package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +0 -124
  106. package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +0 -160
  107. package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +0 -118
  108. package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +0 -132
  109. package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +0 -126
  110. package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +0 -254
  111. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +0 -191
  112. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +0 -213
  113. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +0 -161
  114. package/skills/wix-headless/references/inline-recipes/setup-blog.md +0 -175
  115. package/skills/wix-headless/references/inline-recipes/setup-bookings.md +0 -232
  116. package/skills/wix-headless/references/inline-recipes/setup-cms.md +0 -200
  117. package/skills/wix-headless/references/inline-recipes/setup-donations.md +0 -15
  118. package/skills/wix-headless/references/inline-recipes/setup-events.md +0 -196
  119. package/skills/wix-headless/references/inline-recipes/setup-forms.md +0 -288
  120. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +0 -214
  121. package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +0 -155
  122. package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +0 -229
  123. package/skills/wix-headless/references/inline-recipes/setup-rentals.md +0 -254
  124. package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +0 -73
  125. package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +0 -197
  126. package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +0 -136
  127. package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +0 -152
  128. package/skills/wix-headless/references/managed/AUTHENTICATION.md +0 -71
  129. package/skills/wix-headless/references/managed/CONNECT.md +0 -74
  130. package/skills/wix-headless/references/managed/CREATE.md +0 -149
  131. package/skills/wix-headless/references/managed/DEPLOYMENT.md +0 -104
  132. package/skills/wix-headless/references/non-astro.md +0 -59
  133. package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +0 -22
  134. package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +0 -15
  135. package/skills/wix-headless/references/stripe/AUTHENTICATION.md +0 -55
  136. package/skills/wix-headless/references/stripe/DEPLOYMENT.md +0 -71
  137. package/skills/wix-headless/scripts/bootstrap.mjs +0 -156
  138. package/skills/wix-headless-replatform/.publish-manifest.json +0 -8
  139. package/skills/wix-headless-replatform/SKILL.md +0 -116
  140. package/skills/wix-headless-replatform/agents/openai.yaml +0 -6
  141. package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +0 -43
  142. package/skills/wix-headless-replatform/references/extraction-schema.md +0 -187
  143. package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +0 -137
  144. package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +0 -41
  145. package/skills/wix-headless-replatform/references/output-contract.md +0 -93
  146. package/skills/wix-headless-replatform/references/post-build-gap-contract.md +0 -125
  147. package/skills/wix-headless-replatform/references/qa-checklist.md +0 -83
  148. package/skills/wix-headless-replatform/references/safety.md +0 -19
  149. package/skills/wix-headless-replatform/references/ui-normalization-contract.md +0 -70
  150. package/skills/wix-headless-replatform/references/workflow.md +0 -157
  151. package/skills/wix-headless-replatform/registry/README.md +0 -20
  152. package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +0 -28
  153. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +0 -54
  154. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +0 -60
  155. package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +0 -48
  156. package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +0 -21
  157. package/skills/wix-headless-replatform/registry/registry.json +0 -36
  158. package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +0 -32
  159. package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +0 -62
  160. package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +0 -64
  161. package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +0 -42
  162. package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +0 -73
  163. package/skills/wix-headless-replatform/schemas/build-plan.schema.json +0 -10
  164. package/skills/wix-headless-replatform/schemas/candidate.schema.json +0 -19
  165. package/skills/wix-headless-replatform/schemas/common.schema.json +0 -33
  166. package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +0 -10
  167. package/skills/wix-headless-replatform/schemas/decision-request.schema.json +0 -10
  168. package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +0 -28
  169. package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +0 -34
  170. package/skills/wix-headless-replatform/schemas/final-report.schema.json +0 -10
  171. package/skills/wix-headless-replatform/schemas/foundation.schema.json +0 -11
  172. package/skills/wix-headless-replatform/schemas/metadata.schema.json +0 -11
  173. package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +0 -17
  174. package/skills/wix-headless-replatform/schemas/page-capture.schema.json +0 -11
  175. package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +0 -33
  176. package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +0 -11
  177. package/skills/wix-headless-replatform/schemas/unit.schema.json +0 -40
  178. package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +0 -844
  179. package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +0 -163
  180. package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +0 -42
  181. package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +0 -228
  182. package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +0 -87
  183. package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +0 -505
  184. package/skills/wix-headless-replatform/scripts/discover-urls.mjs +0 -142
  185. package/skills/wix-headless-replatform/scripts/extract-assets.mjs +0 -140
  186. package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +0 -637
  187. package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +0 -1903
  188. package/skills/wix-headless-replatform/scripts/extract-page.mjs +0 -2461
  189. package/skills/wix-headless-replatform/scripts/extract-seo.mjs +0 -25
  190. package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +0 -63
  191. package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +0 -126
  192. package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +0 -180
  193. package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +0 -98
  194. package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +0 -103
  195. package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +0 -176
  196. package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +0 -261
  197. package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +0 -25
  198. package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +0 -342
  199. package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +0 -140
  200. package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +0 -22
  201. package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +0 -143
  202. package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +0 -288
  203. package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +0 -266
  204. package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +0 -111
  205. package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +0 -570
  206. package/skills/wix-headless-replatform/scripts/lib/common.mjs +0 -329
  207. package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +0 -121
  208. package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +0 -282
  209. package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +0 -61
  210. package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +0 -374
  211. package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +0 -243
  212. package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +0 -1139
  213. package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +0 -326
  214. package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +0 -184
  215. package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +0 -396
  216. package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +0 -168
  217. package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +0 -10
  218. package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +0 -194
  219. package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +0 -348
  220. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +0 -141
  221. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +0 -43
  222. package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +0 -18
  223. package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +0 -64
  224. package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +0 -31
  225. package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +0 -358
  226. package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +0 -25
  227. package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +0 -39
  228. package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +0 -107
  229. package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +0 -96
  230. package/skills/wix-headless-replatform/scripts/site-clone.mjs +0 -658
  231. package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +0 -29
  232. package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +0 -669
  233. package/skills/wix-headless-replatform/scripts/visual-qa.mjs +0 -370
  234. package/skills/wix-import/SKILL.md +0 -90
  235. package/skills/wix-replatform/.publish-manifest.json +0 -8
  236. package/skills/wix-replatform/CLI.md +0 -162
  237. package/skills/wix-replatform/README.md +0 -52
  238. package/skills/wix-replatform/SKILL.md +0 -238
  239. package/skills/wix-replatform/console/account.css +0 -1
  240. package/skills/wix-replatform/console/app.css +0 -1
  241. package/skills/wix-replatform/console/app.js +0 -117
  242. package/skills/wix-replatform/console/index.html +0 -4
  243. package/skills/wix-replatform/console/json.css +0 -11
  244. package/skills/wix-replatform/lib/agent-adapters/index.js +0 -71
  245. package/skills/wix-replatform/lib/app-page-routing.js +0 -75
  246. package/skills/wix-replatform/lib/artifact-freshness.js +0 -225
  247. package/skills/wix-replatform/lib/blocked-data-requests.js +0 -427
  248. package/skills/wix-replatform/lib/census-reconciliation.js +0 -426
  249. package/skills/wix-replatform/lib/completion-report.js +0 -1580
  250. package/skills/wix-replatform/lib/config-env.js +0 -133
  251. package/skills/wix-replatform/lib/confirmed-pictures.js +0 -212
  252. package/skills/wix-replatform/lib/dependency-readiness.js +0 -423
  253. package/skills/wix-replatform/lib/dependency-recovery.js +0 -21
  254. package/skills/wix-replatform/lib/destination-choice.js +0 -163
  255. package/skills/wix-replatform/lib/destination-handoff.js +0 -62
  256. package/skills/wix-replatform/lib/destination-http.js +0 -81
  257. package/skills/wix-replatform/lib/destination-route.js +0 -98
  258. package/skills/wix-replatform/lib/destination.js +0 -919
  259. package/skills/wix-replatform/lib/discovered-census.js +0 -231
  260. package/skills/wix-replatform/lib/discovered-set-status.js +0 -255
  261. package/skills/wix-replatform/lib/document-url-guard.js +0 -203
  262. package/skills/wix-replatform/lib/entity-qa-attestation.js +0 -339
  263. package/skills/wix-replatform/lib/entity-verification.js +0 -18
  264. package/skills/wix-replatform/lib/execution-capability.js +0 -120
  265. package/skills/wix-replatform/lib/execution-log.js +0 -170
  266. package/skills/wix-replatform/lib/execution-manifest.js +0 -203
  267. package/skills/wix-replatform/lib/execution-state.js +0 -195
  268. package/skills/wix-replatform/lib/expectations-ledger.js +0 -96
  269. package/skills/wix-replatform/lib/generated-plugin-handoff.js +0 -140
  270. package/skills/wix-replatform/lib/import-readiness-contract.js +0 -23
  271. package/skills/wix-replatform/lib/import-recovery.js +0 -1107
  272. package/skills/wix-replatform/lib/imported-redirect-targets.js +0 -608
  273. package/skills/wix-replatform/lib/internal-link-reconciliation.js +0 -166
  274. package/skills/wix-replatform/lib/link-audit.js +0 -173
  275. package/skills/wix-replatform/lib/link-census.js +0 -194
  276. package/skills/wix-replatform/lib/link-plan.js +0 -148
  277. package/skills/wix-replatform/lib/link-verification.js +0 -274
  278. package/skills/wix-replatform/lib/link-write-journal.js +0 -42
  279. package/skills/wix-replatform/lib/local-state.js +0 -1481
  280. package/skills/wix-replatform/lib/member-completion.js +0 -658
  281. package/skills/wix-replatform/lib/member-crosswalk.js +0 -69
  282. package/skills/wix-replatform/lib/member-outcome-registry.js +0 -265
  283. package/skills/wix-replatform/lib/migration-completion.js +0 -311
  284. package/skills/wix-replatform/lib/operator-identity.js +0 -47
  285. package/skills/wix-replatform/lib/orchestration-decisions.js +0 -248
  286. package/skills/wix-replatform/lib/orchestration-preflight.js +0 -525
  287. package/skills/wix-replatform/lib/orchestration-router.js +0 -698
  288. package/skills/wix-replatform/lib/orchestration-state.js +0 -631
  289. package/skills/wix-replatform/lib/order-reference-readiness.js +0 -30
  290. package/skills/wix-replatform/lib/payments-outcome-registry.js +0 -200
  291. package/skills/wix-replatform/lib/plugin-cms-fallback.js +0 -618
  292. package/skills/wix-replatform/lib/preservation-approval-stamp.js +0 -54
  293. package/skills/wix-replatform/lib/product-media-deferral.js +0 -96
  294. package/skills/wix-replatform/lib/progress-log.js +0 -240
  295. package/skills/wix-replatform/lib/progress-log.sh +0 -140
  296. package/skills/wix-replatform/lib/read-back-approval.js +0 -184
  297. package/skills/wix-replatform/lib/read-back-comparison.js +0 -136
  298. package/skills/wix-replatform/lib/read-back-contract.js +0 -243
  299. package/skills/wix-replatform/lib/read-back-extract.js +0 -118
  300. package/skills/wix-replatform/lib/read-back-gate.js +0 -734
  301. package/skills/wix-replatform/lib/read-back-reads.js +0 -94
  302. package/skills/wix-replatform/lib/read-back-state.js +0 -107
  303. package/skills/wix-replatform/lib/read-back-summary.js +0 -81
  304. package/skills/wix-replatform/lib/rerun-conflicts.js +0 -334
  305. package/skills/wix-replatform/lib/run-controller.js +0 -401
  306. package/skills/wix-replatform/lib/seo-outcome-registry.js +0 -45
  307. package/skills/wix-replatform/lib/setup-verification.js +0 -148
  308. package/skills/wix-replatform/lib/source-access.js +0 -231
  309. package/skills/wix-replatform/lib/source-coverage.js +0 -1130
  310. package/skills/wix-replatform/lib/source-secrets.js +0 -277
  311. package/skills/wix-replatform/lib/structured-link-patch.js +0 -59
  312. package/skills/wix-replatform/lib/task-state.js +0 -110
  313. package/skills/wix-replatform/lib/url-preservation-report.js +0 -319
  314. package/skills/wix-replatform/lib/url-preservation-state.js +0 -739
  315. package/skills/wix-replatform/lib/url-redirect-plan.js +0 -728
  316. package/skills/wix-replatform/lib/url-verification.js +0 -315
  317. package/skills/wix-replatform/lib/user-action-effects.js +0 -42
  318. package/skills/wix-replatform/lib/user-actions.js +0 -264
  319. package/skills/wix-replatform/lib/website-handoff.js +0 -1220
  320. package/skills/wix-replatform/lib/wix-client-callers.js +0 -54
  321. package/skills/wix-replatform/lib/wix-dashboard-url.js +0 -35
  322. package/skills/wix-replatform/lib/write-verification-state.js +0 -92
  323. package/skills/wix-replatform/lib/write-verification.js +0 -274
  324. package/skills/wix-replatform/resources/rp-destination/SKILL.md +0 -137
  325. package/skills/wix-replatform/resources/rp-discovery/SKILL.md +0 -357
  326. package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +0 -47
  327. package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +0 -1369
  328. package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +0 -70
  329. package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +0 -482
  330. package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +0 -442
  331. package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +0 -64
  332. package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +0 -112
  333. package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +0 -143
  334. package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +0 -244
  335. package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +0 -3158
  336. package/skills/wix-replatform/resources/rp-mapper/SKILL.md +0 -947
  337. package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +0 -217
  338. package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +0 -303
  339. package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +0 -88
  340. package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +0 -148
  341. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +0 -378
  342. package/skills/wix-replatform/resources/rp-preflight/SKILL.md +0 -40
  343. package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +0 -55
  344. package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +0 -60
  345. package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +0 -89
  346. package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +0 -36
  347. package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +0 -123
  348. package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +0 -124
  349. package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +0 -522
  350. package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +0 -56
  351. package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +0 -91
  352. package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +0 -255
  353. package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +0 -253
  354. package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +0 -44
  355. package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +0 -481
  356. package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +0 -136
  357. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
  358. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +0 -310
  359. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +0 -1081
  360. package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +0 -618
  361. package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +0 -969
  362. package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +0 -196
  363. package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +0 -66
  364. package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +0 -60
  365. package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +0 -95
  366. package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +0 -82
  367. package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +0 -66
  368. package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +0 -153
  369. package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +0 -394
  370. package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +0 -200
  371. package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +0 -34
  372. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +0 -44
  373. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +0 -1470
  374. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +0 -446
  375. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +0 -474
  376. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +0 -879
  377. package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +0 -426
  378. package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +0 -24
  379. package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +0 -18
  380. package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +0 -40
  381. package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +0 -76
  382. package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +0 -51
  383. package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +0 -35
  384. package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +0 -20
  385. package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +0 -18
  386. package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +0 -31
  387. package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +0 -21
  388. package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +0 -21
  389. package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +0 -30
  390. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +0 -150
  391. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +0 -36
  392. package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +0 -48
  393. package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +0 -20
  394. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +0 -8
  395. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +0 -6
  396. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +0 -8
  397. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +0 -8
  398. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +0 -12
  399. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +0 -6
  400. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +0 -13
  401. package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +0 -13
  402. package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +0 -73
  403. package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +0 -13
  404. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +0 -693
  405. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +0 -283
  406. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +0 -191
  407. package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +0 -115
  408. package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +0 -201
  409. package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +0 -146
  410. package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +0 -970
  411. package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +0 -73
  412. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +0 -115
  413. package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +0 -91
  414. package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +0 -440
  415. package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +0 -125
  416. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +0 -252
  417. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +0 -183
  418. package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +0 -333
  419. package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +0 -426
  420. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +0 -400
  421. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +0 -633
  422. package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +0 -1127
  423. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +0 -194
  424. package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +0 -100
  425. package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +0 -157
  426. package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +0 -234
  427. package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +0 -101
  428. package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +0 -755
  429. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +0 -1074
  430. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +0 -149
  431. package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +0 -25
  432. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +0 -444
  433. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +0 -186
  434. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +0 -1422
  435. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +0 -343
  436. package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +0 -680
  437. package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +0 -272
  438. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +0 -373
  439. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +0 -101
  440. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +0 -81
  441. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +0 -128
  442. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +0 -18
  443. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +0 -104
  444. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +0 -44
  445. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +0 -49
  446. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +0 -94
  447. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +0 -863
  448. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +0 -52
  449. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +0 -161
  450. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +0 -180
  451. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +0 -286
  452. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +0 -79
  453. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +0 -120
  454. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +0 -128
  455. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +0 -88
  456. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +0 -80
  457. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +0 -46
  458. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +0 -55
  459. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +0 -99
  460. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +0 -55
  461. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +0 -160
  462. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +0 -81
  463. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +0 -60
  464. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +0 -74
  465. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +0 -75
  466. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +0 -60
  467. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +0 -44
  468. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +0 -57
  469. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +0 -141
  470. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +0 -54
  471. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +0 -158
  472. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +0 -97
  473. package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +0 -86
  474. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +0 -90
  475. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +0 -51
  476. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +0 -103
  477. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +0 -2409
  478. package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +0 -273
  479. package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +0 -11
  480. package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +0 -71
  481. package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +0 -13
  482. package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +0 -1046
  483. package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +0 -36
  484. package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +0 -57
  485. package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +0 -322
  486. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +0 -70
  487. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +0 -29
  488. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +0 -71
  489. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +0 -83
  490. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +0 -95
  491. package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +0 -66
  492. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +0 -332
  493. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +0 -75
  494. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +0 -181
  495. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +0 -130
  496. package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +0 -180
  497. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +0 -161
  498. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +0 -25
  499. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +0 -67
  500. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +0 -75
  501. package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +0 -41
  502. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +0 -204
  503. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +0 -27
  504. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +0 -275
  505. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +0 -105
  506. package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +0 -77
  507. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +0 -306
  508. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +0 -44
  509. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +0 -171
  510. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +0 -182
  511. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +0 -129
  512. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +0 -192
  513. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +0 -123
  514. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +0 -85
  515. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +0 -112
  516. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +0 -191
  517. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +0 -164
  518. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +0 -462
  519. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +0 -122
  520. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +0 -98
  521. package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +0 -86
  522. package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +0 -128
  523. package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +0 -38
  524. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +0 -73
  525. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +0 -107
  526. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +0 -89
  527. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +0 -118
  528. package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +0 -93
  529. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +0 -86
  530. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +0 -56
  531. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +0 -121
  532. package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +0 -134
  533. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +0 -41
  534. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +0 -50
  535. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +0 -87
  536. package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +0 -130
  537. package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +0 -1418
  538. package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +0 -41
  539. package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +0 -24
  540. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +0 -75
  541. package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +0 -71
  542. package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +0 -119
  543. package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +0 -23
  544. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +0 -71
  545. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +0 -82
  546. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +0 -77
  547. package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +0 -205
  548. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +0 -41
  549. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +0 -46
  550. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +0 -137
  551. package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +0 -133
  552. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +0 -7
  553. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +0 -36
  554. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +0 -71
  555. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +0 -67
  556. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +0 -72
  557. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +0 -74
  558. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +0 -69
  559. package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +0 -61
  560. package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +0 -111
  561. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +0 -109
  562. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +0 -73
  563. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +0 -148
  564. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +0 -91
  565. package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +0 -79
  566. package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +0 -32
  567. package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +0 -49
  568. package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +0 -103
  569. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +0 -203
  570. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +0 -42
  571. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +0 -119
  572. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +0 -111
  573. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +0 -81
  574. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +0 -241
  575. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +0 -118
  576. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +0 -111
  577. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +0 -79
  578. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +0 -221
  579. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +0 -84
  580. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +0 -178
  581. package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +0 -87
  582. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +0 -106
  583. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +0 -64
  584. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +0 -119
  585. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +0 -94
  586. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +0 -113
  587. package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +0 -65
  588. package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +0 -64
  589. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +0 -165
  590. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +0 -60
  591. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +0 -201
  592. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +0 -306
  593. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +0 -229
  594. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +0 -55
  595. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +0 -715
  596. package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +0 -567
  597. package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +0 -73
  598. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +0 -194
  599. package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +0 -133
  600. package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +0 -150
  601. package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +0 -491
  602. package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +0 -104
  603. package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +0 -673
  604. package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +0 -835
  605. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +0 -119
  606. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +0 -566
  607. package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +0 -249
  608. package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +0 -260
  609. package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +0 -63
  610. package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +0 -187
  611. package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +0 -64
  612. package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +0 -1027
  613. package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +0 -90
  614. package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +0 -420
  615. package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +0 -177
  616. package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +0 -151
  617. package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +0 -723
  618. package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +0 -353
  619. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +0 -1437
  620. package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +0 -354
  621. package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +0 -134
  622. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +0 -221
  623. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +0 -248
  624. package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +0 -321
  625. package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +0 -231
  626. package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +0 -28
  627. package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +0 -14
  628. package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +0 -34
  629. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +0 -388
  630. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +0 -255
  631. package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +0 -6041
  632. package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +0 -3
  633. package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +0 -150
  634. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +0 -69
  635. package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +0 -100
  636. package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +0 -112
  637. package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +0 -484
  638. package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +0 -318
  639. package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +0 -2831
  640. package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +0 -318
  641. package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +0 -83
  642. package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +0 -243
  643. package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +0 -94
  644. package/skills/wix-replatform/scripts/artifact-freshness.js +0 -76
  645. package/skills/wix-replatform/scripts/census-reconciliation.js +0 -25
  646. package/skills/wix-replatform/scripts/cms-fallback.js +0 -89
  647. package/skills/wix-replatform/scripts/discovered-census.js +0 -26
  648. package/skills/wix-replatform/scripts/discovered-set-status.js +0 -33
  649. package/skills/wix-replatform/scripts/entity-qa-attestation.js +0 -130
  650. package/skills/wix-replatform/scripts/execution-health-check.js +0 -415
  651. package/skills/wix-replatform/scripts/execution-manifest-validate.js +0 -43
  652. package/skills/wix-replatform/scripts/execution-state-prepare.js +0 -128
  653. package/skills/wix-replatform/scripts/expectations-ledger.js +0 -44
  654. package/skills/wix-replatform/scripts/import-contract-verify.js +0 -183
  655. package/skills/wix-replatform/scripts/internal-link-audit.js +0 -90
  656. package/skills/wix-replatform/scripts/item-seo-tags-verify.js +0 -205
  657. package/skills/wix-replatform/scripts/migration-completion.js +0 -76
  658. package/skills/wix-replatform/scripts/orchestration-preflight.js +0 -67
  659. package/skills/wix-replatform/scripts/orchestration-route.js +0 -77
  660. package/skills/wix-replatform/scripts/orchestration-state.js +0 -381
  661. package/skills/wix-replatform/scripts/read-back-gate.js +0 -175
  662. package/skills/wix-replatform/scripts/replatform-console.js +0 -146
  663. package/skills/wix-replatform/scripts/replatform.js +0 -436
  664. package/skills/wix-replatform/scripts/source-secrets.js +0 -77
  665. package/skills/wix-replatform/scripts/url-redirects.js +0 -286
  666. package/skills/wix-replatform/scripts/user-action.js +0 -58
  667. package/skills/wix-replatform/scripts/website-handoff-generate.js +0 -64
  668. package/skills/wix-replatform/scripts/wix-dashboard-url.js +0 -54
  669. package/skills/wix-replatform/scripts/wix-destination.js +0 -143
  670. package/skills/wix-replatform/scripts/wix-headless-scaffold.js +0 -762
  671. package/skills/wix-vibe-headless/SKILL.md +0 -183
  672. package/skills/wix-vibe-headless/install/deploy.cjs +0 -221
  673. package/skills/wix-vibe-headless/install/pin-agents-md.cjs +0 -35
  674. package/skills/wix-vibe-headless/platforms/README.md +0 -26
  675. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed-with-install.md +0 -127
  676. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +0 -121
  677. package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +0 -87
  678. package/skills/wix-vibe-headless/platforms/base44.md +0 -148
  679. package/skills/wix-vibe-headless/platforms/generic.md +0 -132
  680. package/skills/wix-vibe-headless/references/_shared/nav/nav.tanstack.js +0 -30
  681. package/skills/wix-vibe-headless/references/_shared/routing.md +0 -86
  682. package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +0 -270
  683. package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +0 -43
  684. package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +0 -25
  685. package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +0 -15
  686. package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +0 -35
  687. package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +0 -38
  688. package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +0 -40
  689. package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +0 -54
  690. package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +0 -65
  691. package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +0 -50
  692. package/skills/wix-vibe-headless/references/blog/app/rest/wix-blog.js +0 -217
  693. package/skills/wix-vibe-headless/references/blog/seed/SEED.md +0 -99
  694. package/skills/wix-vibe-headless/references/blog/seed/seed-blog.cjs +0 -269
  695. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +0 -342
  696. package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +0 -65
  697. package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +0 -67
  698. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +0 -47
  699. package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +0 -13
  700. package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +0 -126
  701. package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +0 -128
  702. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +0 -110
  703. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +0 -58
  704. package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +0 -95
  705. package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +0 -94
  706. package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +0 -89
  707. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +0 -148
  708. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +0 -250
  709. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +0 -300
  710. package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +0 -154
  711. package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.cjs +0 -333
  712. package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.cjs +0 -267
  713. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +0 -178
  714. package/skills/wix-vibe-headless/references/cms/app/collection.config.js +0 -31
  715. package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +0 -18
  716. package/skills/wix-vibe-headless/references/cms/app/rest/wix-cms.js +0 -231
  717. package/skills/wix-vibe-headless/references/cms/seed/SEED.md +0 -145
  718. package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +0 -88
  719. package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +0 -112
  720. package/skills/wix-vibe-headless/references/donations/seed/SEED.md +0 -11
  721. package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +0 -258
  722. package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +0 -267
  723. package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +0 -23
  724. package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +0 -43
  725. package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +0 -13
  726. package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +0 -29
  727. package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +0 -57
  728. package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +0 -78
  729. package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +0 -27
  730. package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +0 -54
  731. package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +0 -40
  732. package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +0 -81
  733. package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +0 -48
  734. package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +0 -36
  735. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-browse.js +0 -136
  736. package/skills/wix-vibe-headless/references/events/app/rest/wix-events-registration.js +0 -187
  737. package/skills/wix-vibe-headless/references/events/seed/SEED.md +0 -103
  738. package/skills/wix-vibe-headless/references/events/seed/seed-events.cjs +0 -251
  739. package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +0 -487
  740. package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +0 -425
  741. package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +0 -187
  742. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +0 -238
  743. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +0 -108
  744. package/skills/wix-vibe-headless/references/forms/seed/SEED.md +0 -1836
  745. package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +0 -328
  746. package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +0 -101
  747. package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +0 -33
  748. package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +0 -21
  749. package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +0 -29
  750. package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +0 -54
  751. package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +0 -77
  752. package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +0 -36
  753. package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +0 -32
  754. package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +0 -35
  755. package/skills/wix-vibe-headless/references/members/app/rest/wix-members-auth.js +0 -390
  756. package/skills/wix-vibe-headless/references/members/install/Register.jsx +0 -22
  757. package/skills/wix-vibe-headless/references/members/seed/SEED.md +0 -21
  758. package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +0 -270
  759. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +0 -31
  760. package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +0 -15
  761. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +0 -39
  762. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +0 -15
  763. package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +0 -29
  764. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +0 -35
  765. package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +0 -27
  766. package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +0 -25
  767. package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +0 -39
  768. package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +0 -27
  769. package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +0 -60
  770. package/skills/wix-vibe-headless/references/portfolio/app/rest/wix-portfolio.js +0 -223
  771. package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +0 -90
  772. package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.cjs +0 -236
  773. package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +0 -280
  774. package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +0 -35
  775. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +0 -48
  776. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +0 -16
  777. package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +0 -35
  778. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +0 -25
  779. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +0 -28
  780. package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +0 -30
  781. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +0 -30
  782. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +0 -53
  783. package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +0 -28
  784. package/skills/wix-vibe-headless/references/pricing-plans/app/rest/wix-pricing-plans.js +0 -157
  785. package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +0 -82
  786. package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.cjs +0 -251
  787. package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +0 -13
  788. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +0 -290
  789. package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +0 -81
  790. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +0 -71
  791. package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +0 -43
  792. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +0 -21
  793. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +0 -72
  794. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +0 -66
  795. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +0 -32
  796. package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +0 -73
  797. package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +0 -28
  798. package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +0 -102
  799. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-menu.js +0 -224
  800. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +0 -218
  801. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-reservations.js +0 -107
  802. package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +0 -176
  803. package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.cjs +0 -452
  804. package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +0 -56
  805. package/skills/wix-vibe-headless/references/shared/app/lib/nav.js +0 -9
  806. package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +0 -185
  807. package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +0 -8
  808. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +0 -471
  809. package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +0 -20
  810. package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +0 -167
  811. package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +0 -83
  812. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductCard.js +0 -104
  813. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +0 -163
  814. package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +0 -83
  815. package/skills/wix-vibe-headless/references/storefront/app/hooks/useVariantOptions.js +0 -76
  816. package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +0 -64
  817. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +0 -176
  818. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +0 -218
  819. package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +0 -174
  820. package/skills/wix-vibe-headless/references/storefront/seed/seed-store.cjs +0 -546
@@ -1,491 +0,0 @@
1
- 'use strict';
2
-
3
- // A spent coupon must not import redeemable, and a migrated coupon must be identifiable.
4
- //
5
- // A bearer voucher is money: a fixed amount off, single use, no scope, no minimum, no expiry.
6
- // Whoever holds the code can spend it. rp-source-wordpress/lib/coupon-discovery.js already gets
7
- // the STATIC rule right (exhausted at capture -> imported inactive, because Wix starts its own
8
- // usage count at zero). This module covers the TEMPORAL half, which nothing else does:
9
- //
10
- // * the snapshot the import reads is dated, and a stale one is refused rather than imported;
11
- // * a voucher spent between capture and write is not written at all;
12
- // * a voucher spent AFTER the import is reconciled at cutover against a fresh source read.
13
- //
14
- // THE UPDATE RULE, measured live against a disposable store with throwaway codes, all deleted
15
- // afterwards. Update Coupon WORKS, and the trap is the request shape:
16
- //
17
- // PATCH /stores/v2/coupons/{id}
18
- // body { specification: { active: false } } + fieldMask -> WRITES
19
- // fieldMask may be `?fieldMask=active`, `?fieldMask.paths=active`, or body
20
- // `fieldMask: { paths: ['active'] }`. Paths are specification field names (`active`,
21
- // `tags`) WITHOUT a `specification.` prefix -- `specification.active` 500s.
22
- // body { specification: { active: false } } with NO fieldMask -> 400, named clearly
23
- // body { specification: <THE WHOLE SPEC> } + fieldMask: ['active'] -> 200, body {}, NO-OP
24
- //
25
- // THAT LAST LINE IS THE WHOLE HAZARD. Send only the fields being changed. Sending the full
26
- // specification alongside a narrow field mask is accepted with 200 and an empty body and changes
27
- // nothing -- re-read at +15s, +45s and +150s confirmed no change, which is far longer than this
28
- // surface's own read lag. A repair pass built that way reports thousands of vouchers closed while
29
- // every one stays spendable: a false pass on money. Hence verifyRemedyApplied below, which
30
- // refuses to call any 2xx an applied remedy without a post-settle read-back.
31
- //
32
- // PUT /stores/v2/coupons/{id} is 404 (no such route) and there is no v3 coupons surface.
33
- // DELETE /stores/v2/coupons/{id} works (200, gone within ~4s), and a deleted CODE can be
34
- // re-created -- but re-creating mints a new coupon id, so deactivating in place is preferred.
35
- //
36
- // One call can set `active` and `tags` together: `?fieldMask=active,tags`. Verified.
37
- //
38
- // Pure: no I/O, no clock of its own. Every function takes `now` and the already-read data, so the
39
- // same inputs always give the same verdict.
40
-
41
- const OUTCOMES = Object.freeze({
42
- // Pre-write.
43
- WRITE_OK: 'voucher-still-redeemable-at-write',
44
- SPENT_AFTER_CAPTURE: 'coupons-spent-after-capture',
45
- UNDECIDABLE: 'voucher-usage-unknown-at-write',
46
- PRECISION_UNSUPPORTED: 'voucher-face-value-precision-unsupported',
47
- // Post-import.
48
- RECONCILED_MATCH: 'voucher-drift-reconciled',
49
- REMEDY_PENDING: 'voucher-drift-remedy-pending',
50
- SOURCE_GONE: 'voucher-source-row-missing',
51
- TARGET_GONE: 'voucher-target-row-missing',
52
- TARGET_STATE_UNREADABLE: 'voucher-target-state-unreadable',
53
- });
54
-
55
- // The remedies the platform actually offers, in preference order. DEACTIVATE is first because it
56
- // keeps the coupon id, the code, the dates and the amount -- the merchant keeps a readable record
57
- // of a voucher that can no longer be cashed, and nothing that referenced the coupon id is
58
- // orphaned. DELETE stays available because it is the only option if a code must disappear
59
- // entirely; note it frees the code for re-creation but mints a new id.
60
- const REMEDY = Object.freeze({
61
- DEACTIVATE: 'deactivate-on-target',
62
- DELETE: 'delete-on-target',
63
- NONE: 'no-action-needed',
64
- ASK: 'owner-decision-required',
65
- });
66
-
67
- // The tag vocabulary, frozen here so two passes cannot invent variants of the same word. `tags` is a real validated field on the coupon specification
68
- // (array<string>, max 100 items, max 255 chars each) and it is settable at create AND updatable
69
- // in place through the same minimal-specification PATCH as `active`.
70
- const TAGS = Object.freeze({
71
- IMPORTED: 'Imported',
72
- ALREADY_USED: 'Already_Used',
73
- PARTIALLY_USED: 'Partially_Used',
74
- DISABLED_AT_SOURCE: 'Disabled_At_Source',
75
- });
76
- const KNOWN_TAGS = Object.freeze(Object.values(TAGS));
77
-
78
- const SNAPSHOT = Object.freeze({
79
- FRESH: 'snapshot-fresh',
80
- STALE: 'snapshot-stale',
81
- UNDATED: 'snapshot-undated',
82
- });
83
-
84
- // A usage LIMIT: 0, '' and null all mean UNLIMITED in WooCommerce, never "no uses allowed".
85
- // The source adapter already applies this; repeating it here is deliberate, because this module
86
- // re-reads the source directly and a limit that changed to unlimited between the two reads came
87
- // back as 0 and read as "exhausted" -- proposing to switch off a coupon the merchant had just
88
- // made unlimited.
89
- function usageLimitOrUnlimited(value) {
90
- const n = integerOrNull(value);
91
- return n === null || n === 0 ? null : n;
92
- }
93
-
94
- function integerOrNull(value) {
95
- if (value === undefined || value === null || value === '') return null;
96
- const text = String(value).trim();
97
- if (!/^\d+$/.test(text)) return null;
98
- return Number(text);
99
- }
100
-
101
- function epochMsOrNull(value) {
102
- if (value === undefined || value === null || value === '') return null;
103
- if (typeof value === 'number') return Number.isFinite(value) ? value : null;
104
- const text = String(value).trim();
105
- if (/^\d+$/.test(text)) return Number(text);
106
- // WooCommerce `*_gmt` fields carry no timezone suffix and are UTC. Same rule as
107
- // coupon-discovery.js, repeated here rather than imported: this module must not depend on a
108
- // source adapter.
109
- const iso = /[zZ]|[+-]\d\d:?\d\d$/.test(text) ? text : `${text}Z`;
110
- const parsed = Date.parse(iso);
111
- return Number.isFinite(parsed) ? parsed : null;
112
- }
113
-
114
- // Money is carried EXACTLY, never rounded into shape. `Number(text).toFixed(2)` turns a source
115
- // value of 19.999 into 20.00 and 1.004 into 1.00, and a reconciliation built on that reports a
116
- // source and a target that differ as equal -- false verified equality on money, which is the one
117
- // result a reconciliation must never produce. So: parse, keep every digit, and count the decimal
118
- // places so a caller can refuse what the target cannot represent rather than round into it.
119
- function exactAmount(value) {
120
- const text = value === undefined || value === null ? '' : String(value).trim();
121
- if (!/^-?\d+(\.\d+)?$/.test(text)) return null;
122
- const bare = text.startsWith('-') ? text.slice(1) : text;
123
- const [whole, frac = ''] = bare.split('.');
124
- const trimmed = frac.replace(/0+$/, '');
125
- return {
126
- // Canonical, and lossless: trailing zeros are not precision, so 150.00 and 150 are one value.
127
- exact: trimmed ? `${String(BigInt(whole))}.${trimmed}` : String(BigInt(whole)),
128
- decimals: trimmed.length,
129
- };
130
- }
131
-
132
- // The target stores money to 2 decimal places. More than that is not a rounding decision we get
133
- // to make on the merchant's behalf -- it is a value the target cannot hold, and it is reported.
134
- const TARGET_DECIMALS = 2;
135
-
136
- // Minor units as a BigInt, so a total of thousands of coupons cannot drift the way a float sum
137
- // does. Returns null when any value carries precision the target cannot represent.
138
- function toMinorUnits(amount) {
139
- const parsed = exactAmount(amount);
140
- if (parsed === null || parsed.decimals > TARGET_DECIMALS) return null;
141
- const [whole, frac = ''] = parsed.exact.split('.');
142
- return BigInt(whole) * 100n + BigInt((frac + '00').slice(0, 2));
143
- }
144
- // How a face value is REPORTED. Representable amounts render as money (two places, so 150 and
145
- // 150.00 read alike); anything the target cannot hold keeps every digit it came with, so the gap
146
- // names the real value rather than a tidied one.
147
- function displayAmount(value) {
148
- const parsed = exactAmount(value);
149
- if (parsed === null) return null;
150
- if (parsed.decimals > TARGET_DECIMALS) return parsed.exact;
151
- return minorUnitsToDecimal(toMinorUnits(parsed.exact));
152
- }
153
-
154
- function minorUnitsToDecimal(minor) {
155
- const negative = minor < 0n;
156
- const abs = negative ? -minor : minor;
157
- return `${negative ? '-' : ''}${abs / 100n}.${String(abs % 100n).padStart(2, '0')}`;
158
- }
159
-
160
- // Narrowed to bearer vouchers. A bearer voucher is the money-instrument shape and NOT every coupon:
161
- // a percentage promo re-imported after being spent is a discount someone gets twice, which does
162
- // not earn a per-coupon fresh read. Reads a WooCommerce coupon row.
163
- function isBearerVoucher(coupon) {
164
- if (!coupon || typeof coupon !== 'object') return false;
165
- const type = String(coupon.discount_type || '').trim();
166
- if (type !== 'fixed_cart') return false;
167
- if (coupon.free_shipping === true) return false;
168
- // Minor units, not a float: "is there a money amount here" must not depend on parsing money
169
- // through a double. A value too precise for the target is still a money amount -- the narrowing
170
- // decides what KIND of coupon this is; the precision gap is reported elsewhere.
171
- const parsed = exactAmount(coupon.amount);
172
- if (parsed === null || BigInt(parsed.exact.replace('.', '').replace(/^0+(?=\d)/, '') || '0') === 0n) return false;
173
- const scoped = (Array.isArray(coupon.product_ids) && coupon.product_ids.length > 0)
174
- || (Array.isArray(coupon.product_categories) && coupon.product_categories.length > 0);
175
- if (scoped) return false;
176
- const minimum = exactAmount(coupon.minimum_amount);
177
- if (minimum !== null && BigInt(minimum.exact.replace('.', '').replace(/^0+(?=\d)/, '') || '0') > 0n) return false;
178
- // Single use is what makes it a bearer instrument rather than a standing promo. `usage_limit`
179
- // 0 or empty is UNLIMITED in WooCommerce (the trap coupon-discovery.js documents), so an
180
- // unlimited code is explicitly NOT a voucher.
181
- return integerOrNull(coupon.usage_limit) === 1;
182
- }
183
-
184
- // A snapshot that cannot be dated is refused exactly like a stale one: "we do not
185
- // know when this was captured" and "this was captured too long ago" are the same risk for a money
186
- // instrument, and neither may be treated as fresh.
187
- function classifySnapshot({ capturedAt, now, maxAgeMs } = {}) {
188
- const captured = epochMsOrNull(capturedAt);
189
- const at = epochMsOrNull(now);
190
- if (at === null) throw new Error('classifySnapshot needs `now`');
191
- if (!Number.isInteger(maxAgeMs) || maxAgeMs <= 0) throw new Error('classifySnapshot needs a positive integer maxAgeMs (the run\'s freshness budget)');
192
- if (captured === null) {
193
- return { verdict: SNAPSHOT.UNDATED, capturedAt: null, ageMs: null, maxAgeMs, fresh: false, reason: 'the source snapshot carries no capture time, so its redeemability values cannot be dated' };
194
- }
195
- const ageMs = at - captured;
196
- if (ageMs > maxAgeMs) {
197
- return { verdict: SNAPSHOT.STALE, capturedAt: captured, ageMs, maxAgeMs, fresh: false, reason: `the source snapshot is ${Math.round(ageMs / 3600000)}h old and the run's budget is ${Math.round(maxAgeMs / 3600000)}h; a voucher spent since capture would import fully redeemable` };
198
- }
199
- return { verdict: SNAPSHOT.FRESH, capturedAt: captured, ageMs, maxAgeMs, fresh: true, reason: null };
200
- }
201
-
202
- // Per voucher, immediately before the write. `snapshotCoupon` is the row the
203
- // plan was built from; `freshCoupon` is the row just re-read from the source, or null when the
204
- // re-read failed. A failed re-read is UNDECIDABLE and writes nothing -- an undecidable money
205
- // instrument written active is a giveaway.
206
- function classifyPreWriteDrift({ snapshotCoupon, freshCoupon } = {}) {
207
- if (!snapshotCoupon || !snapshotCoupon.code) throw new Error('classifyPreWriteDrift needs the snapshot coupon row (with a code)');
208
- const code = String(snapshotCoupon.code);
209
- const parsed = exactAmount(snapshotCoupon.amount);
210
- const faceValue = displayAmount(snapshotCoupon.amount);
211
- const facePrecisionUnsupported = parsed !== null && parsed.decimals > TARGET_DECIMALS;
212
- const base = { code, faceValue, facePrecisionUnsupported, remedy: REMEDY.NONE };
213
-
214
- // A face value the target cannot hold is refused BEFORE anything else. Writing it means the
215
- // target silently holds a different amount from the source while every check reports a match,
216
- // and that is worse than not writing the coupon at all.
217
- if (facePrecisionUnsupported) {
218
- return { ...base, outcome: OUTCOMES.PRECISION_UNSUPPORTED, write: false, reason: `the face value ${faceValue} carries more than ${TARGET_DECIMALS} decimal places, which the target cannot hold. Report it; do not round it into the target` };
219
- }
220
- if (!freshCoupon) {
221
- return { ...base, outcome: OUTCOMES.UNDECIDABLE, write: false, reason: 'the pre-write re-read of this coupon did not return a row; redeemability is unknown and unknown is not written' };
222
- }
223
- const limit = usageLimitOrUnlimited(freshCoupon.usage_limit);
224
- const rawLimit = integerOrNull(freshCoupon.usage_limit);
225
- const count = integerOrNull(freshCoupon.usage_count);
226
- if (count === null || (rawLimit === null && freshCoupon.usage_limit !== 0 && freshCoupon.usage_limit !== null && freshCoupon.usage_limit !== undefined && String(freshCoupon.usage_limit).trim() !== '')) {
227
- return { ...base, outcome: OUTCOMES.UNDECIDABLE, write: false, reason: 'the re-read row has unreadable usage fields', usageLimit: freshCoupon.usage_limit, usageCount: freshCoupon.usage_count };
228
- }
229
- // Unlimited is never exhausted, however high the count.
230
- if (limit === null) {
231
- return { ...base, outcome: OUTCOMES.WRITE_OK, write: true, writeActive: true, setTags: [TAGS.IMPORTED], usageCount: count, usageLimit: null, usageUnlimited: true };
232
- }
233
- const snapshotCount = integerOrNull(snapshotCoupon.usage_count) || 0;
234
- if (count >= limit) {
235
- // An exhausted coupon is WRITTEN, switched off. Skipping it loses the record and
236
- // loses the crosswalk row that historical orders referencing this code need. It keeps a
237
- // positive limit because the target rejects a limit of zero.
238
- return {
239
- ...base,
240
- outcome: count > snapshotCount ? OUTCOMES.SPENT_AFTER_CAPTURE : OUTCOMES.WRITE_OK,
241
- write: true,
242
- writeActive: false,
243
- setTags: [TAGS.IMPORTED, TAGS.ALREADY_USED],
244
- usageCount: count,
245
- usageLimit: limit,
246
- spentSinceCapture: count > snapshotCount,
247
- reason: count > snapshotCount
248
- ? `spent at source after the snapshot was captured (${snapshotCount} -> ${count} of ${limit}); written switched off so ${faceValue || 'its value'} cannot be redeemed again, and the record survives`
249
- : `already used up at capture (${count} of ${limit}); written switched off as a record of the promotion`,
250
- };
251
- }
252
- const remaining = limit - count;
253
- return {
254
- ...base,
255
- outcome: OUTCOMES.WRITE_OK,
256
- write: true,
257
- writeActive: true,
258
- // The uses the holder has LEFT, never the original limit.
259
- writeUsageLimit: remaining,
260
- setTags: count > 0 ? [TAGS.IMPORTED, TAGS.PARTIALLY_USED] : [TAGS.IMPORTED],
261
- usageCount: count,
262
- usageLimit: limit,
263
- };
264
- }
265
-
266
- // Per already-written voucher, at cutover. `receipt` is the import receipt
267
- // ({ code, wixId, kind }); `freshCoupon` is the source row re-read now, or null; `targetCoupon`
268
- // is the coupon as it reads back on Wix, or null.
269
- function classifyPostImportDrift({ receipt, freshCoupon, targetCoupon } = {}) {
270
- if (!receipt || !receipt.code) throw new Error('classifyPostImportDrift needs an import receipt with a code');
271
- const code = String(receipt.code);
272
- const wixId = receipt.wixId ? String(receipt.wixId) : null;
273
- const rawAmount = exactAmount(freshCoupon && freshCoupon.amount) !== null ? (freshCoupon && freshCoupon.amount) : receipt.faceValue;
274
- const parsed = exactAmount(rawAmount);
275
- const faceValue = displayAmount(rawAmount);
276
- // A face value the target cannot hold is a GAP, never a rounded number that reads as agreement.
277
- const facePrecisionUnsupported = parsed !== null && parsed.decimals > TARGET_DECIMALS;
278
- const base = { code, wixId, faceValue, facePrecisionUnsupported };
279
-
280
- if (!targetCoupon) {
281
- // Not "fine": this surface's read lag is long enough that absent is UNKNOWN, never gone.
282
- return { ...base, outcome: OUTCOMES.TARGET_GONE, remedy: REMEDY.ASK, reason: 'the coupon did not read back from the target; this surface\'s read lag makes absent indistinguishable from deleted, so re-read before concluding anything' };
283
- }
284
- // FINDING 1: `active` must be an explicit boolean. An object with no `active` at all read as
285
- // "not true" and therefore as "already switched off" -- a partial or truncated read-back
286
- // silently reported a coupon as handled. Absent is UNKNOWN, always.
287
- const targetSpec = targetCoupon.specification || targetCoupon;
288
- const targetActive = typeof targetSpec.active === 'boolean' ? targetSpec.active : null;
289
- if (targetActive === null) {
290
- return { ...base, outcome: OUTCOMES.TARGET_STATE_UNREADABLE, remedy: REMEDY.ASK, reason: 'the target row came back without a readable `active` flag, so whether it is redeemable is unknown; re-read rather than assuming either state' };
291
- }
292
- if (!freshCoupon) {
293
- return { ...base, outcome: OUTCOMES.SOURCE_GONE, remedy: REMEDY.ASK, targetActive: targetActive === true, reason: 'the source row for this code was not found in the fresh read; it may have been deleted at source, which is a different decision from being spent' };
294
- }
295
- const count = integerOrNull(freshCoupon.usage_count);
296
- const rawLimit = freshCoupon.usage_limit;
297
- const limitReadable = rawLimit === null || rawLimit === undefined || String(rawLimit).trim() === '' || integerOrNull(rawLimit) !== null;
298
- if (count === null || !limitReadable) {
299
- return { ...base, outcome: OUTCOMES.SOURCE_GONE, remedy: REMEDY.ASK, targetActive, reason: 'the fresh source row has unreadable usage fields, so drift cannot be decided' };
300
- }
301
- // FINDING 4: 0 / empty means UNLIMITED, so an unlimited coupon is never "spent".
302
- const limit = usageLimitOrUnlimited(rawLimit);
303
- const spentAtSource = limit !== null && count >= limit;
304
- if (spentAtSource && targetActive === true) {
305
- return {
306
- ...base,
307
- outcome: OUTCOMES.REMEDY_PENDING,
308
- remedy: REMEDY.DEACTIVATE,
309
- targetActive: true,
310
- usageCount: count,
311
- usageLimit: limit,
312
- sourceRedeemedAt: freshCoupon.date_modified_gmt || freshCoupon.date_modified || null,
313
- // switch it off and say why in the same call, so the record survives
314
- // and is self-explanatory in the dashboard.
315
- setTags: [TAGS.IMPORTED, TAGS.ALREADY_USED],
316
- reason: `spent at source (${count} of ${limit}) and still active on the target, so ${faceValue || 'its value'} is redeemable a second time. Remedy: deactivate in place and tag ${TAGS.ALREADY_USED} -- the coupon id, code, dates and amount all survive`,
317
- };
318
- }
319
- if (spentAtSource && targetActive === false) {
320
- return { ...base, outcome: OUTCOMES.RECONCILED_MATCH, remedy: REMEDY.NONE, targetActive: false, usageCount: count, usageLimit: limit, reason: 'used up at source and already switched off on the target' };
321
- }
322
- return { ...base, outcome: OUTCOMES.RECONCILED_MATCH, remedy: REMEDY.NONE, targetActive, usageCount: count, usageLimit: limit, usageUnlimited: limit === null, reason: limit === null ? 'unlimited at source and still redeemable on the target' : 'still redeemable at source and still redeemable on the target' };
323
- }
324
-
325
- // Turns the per-voucher verdicts into the remedy plan a human approves: counts,
326
- // the money still live on the target, and one row per code with everything needed to rule on it.
327
- // Read-only by construction — this returns a plan, it does not apply one.
328
- function buildVoucherDriftPlan({ verdicts = [], ordersByCouponCode = {}, currency = null } = {}) {
329
- if (!Array.isArray(verdicts)) throw new Error('buildVoucherDriftPlan needs an array of verdicts');
330
- const counts = {
331
- [OUTCOMES.RECONCILED_MATCH]: 0,
332
- [OUTCOMES.REMEDY_PENDING]: 0,
333
- [OUTCOMES.SOURCE_GONE]: 0,
334
- [OUTCOMES.TARGET_GONE]: 0,
335
- [OUTCOMES.TARGET_STATE_UNREADABLE]: 0,
336
- };
337
- const rows = [];
338
- // FINDING 2: precision is judged across ALL verdicts, including the reconciled ones that never
339
- // reach `rows`. A coupon whose face value the target cannot hold is a gap whatever its drift
340
- // verdict says, and filtering it out before the check produced an approvable plan with no row.
341
- const precisionGaps = verdicts.filter((v) => v && v.facePrecisionUnsupported === true)
342
- .map((v) => ({ code: v.code, faceValue: v.faceValue, outcome: v.outcome }));
343
- let liveLiability = 0n;
344
- let liabilityUnknownFor = 0;
345
- for (const v of verdicts) {
346
- if (!v || !v.outcome) throw new Error('every verdict needs an outcome');
347
- if (counts[v.outcome] === undefined) throw new Error(`buildVoucherDriftPlan got a pre-write outcome it cannot plan for: ${v.outcome}`);
348
- counts[v.outcome] += 1;
349
- if (v.outcome !== OUTCOMES.REMEDY_PENDING && v.remedy === REMEDY.NONE) continue;
350
- if (v.outcome === OUTCOMES.REMEDY_PENDING) {
351
- // Exact integer arithmetic, and a value the target cannot represent is NOT folded into the
352
- // total: a liability figure that quietly rounded its inputs is worse than one that says
353
- // which codes it could not count.
354
- const minor = v.faceValue === null || v.faceValue === undefined ? null : toMinorUnits(v.faceValue);
355
- if (minor === null) liabilityUnknownFor += 1;
356
- else liveLiability += minor;
357
- }
358
- const affectedOrders = ordersByCouponCode[v.code] || [];
359
- rows.push({
360
- code: v.code,
361
- wixId: v.wixId || null,
362
- faceValue: v.faceValue === undefined ? null : v.faceValue,
363
- facePrecisionUnsupported: v.facePrecisionUnsupported === true,
364
- outcome: v.outcome,
365
- remedy: v.remedy,
366
- targetActive: v.targetActive === true,
367
- sourceRedeemedAt: v.sourceRedeemedAt || null,
368
- setTags: Array.isArray(v.setTags) ? [...v.setTags] : null,
369
- // deleting removes a record an imported order points at through
370
- // appliedDiscounts[].coupon.id. The owner rules with that list visible, not after.
371
- affectedOrders: [...affectedOrders],
372
- reason: v.reason || null,
373
- });
374
- }
375
- rows.sort((a, b) => {
376
- const bm = toMinorUnits(b.faceValue) ?? -1n;
377
- const am = toMinorUnits(a.faceValue) ?? -1n;
378
- return bm === am ? a.code.localeCompare(b.code) : (bm > am ? 1 : -1);
379
- });
380
-
381
- const blocking = [];
382
- if (precisionGaps.length > 0) {
383
- blocking.push({ code: 'voucher-face-value-precision-unsupported', detail: `${precisionGaps.length} coupon(s) carry a face value with more than ${TARGET_DECIMALS} decimal places, which the target cannot hold: ${precisionGaps.slice(0, 5).map((r) => `${r.code} (${r.faceValue})`).join(', ')}. Report the gap — do NOT round it into the target and do not count it in the liability` });
384
- }
385
- if (counts[OUTCOMES.TARGET_STATE_UNREADABLE] > 0) {
386
- blocking.push({ code: 'voucher-target-state-unreadable', detail: `${counts[OUTCOMES.TARGET_STATE_UNREADABLE]} coupon(s) came back without a readable \`active\` flag. Whether they are redeemable is unknown — re-read before approving a plan built on them` });
387
- }
388
- if (counts[OUTCOMES.TARGET_GONE] > 0) {
389
- blocking.push({ code: 'voucher-target-read-incomplete', detail: `${counts[OUTCOMES.TARGET_GONE]} voucher(s) did not read back from the target. Absent is UNKNOWN on this surface, not deleted — re-read after a settle before approving a plan built on it` });
390
- }
391
- return {
392
- counts,
393
- rows,
394
- // the count and the money are the same fact, and only one of them gets decided on.
395
- liability: {
396
- currency: currency ? String(currency) : null,
397
- live: minorUnitsToDecimal(liveLiability),
398
- codes: counts[OUTCOMES.REMEDY_PENDING],
399
- // Codes whose face value could not be counted exactly -- unreadable, or carrying more
400
- // precision than the target can hold. The total above EXCLUDES them, and saying so is the
401
- // point: a total that silently absorbed them would look complete.
402
- unknownValueFor: liabilityUnknownFor,
403
- },
404
- blocking,
405
- approvable: blocking.length === 0,
406
- // There is no apply path in this module on purpose. A caller that wants to act reads
407
- // `rows[].remedy`, gets an explicit owner decision, and is verified afterwards.
408
- readOnly: true,
409
- };
410
- }
411
-
412
- // Builds the Update Coupon request for a remedy, in the ONE shape that actually
413
- // writes: a specification carrying ONLY the changed fields, plus a field mask naming them.
414
- // Refusing to build any other shape is the point -- a caller that spreads the existing
415
- // specification in gets a 200 and a silent no-op, which is the defect this whole module guards.
416
- function buildRemedyRequest({ couponId, remedy, setTags } = {}) {
417
- if (!couponId) throw new Error('buildRemedyRequest needs the target couponId');
418
- if (remedy === REMEDY.DELETE) {
419
- return { method: 'DELETE', url: `/stores/v2/coupons/${encodeURIComponent(couponId)}` };
420
- }
421
- if (remedy !== REMEDY.DEACTIVATE) throw new Error(`buildRemedyRequest knows ${REMEDY.DEACTIVATE} and ${REMEDY.DELETE}, not ${String(remedy)}`);
422
- const specification = { active: false };
423
- const paths = ['active'];
424
- if (setTags !== undefined && setTags !== null) {
425
- if (!Array.isArray(setTags) || setTags.some((t) => typeof t !== 'string' || !t)) throw new Error('setTags must be an array of non-empty strings');
426
- const unknown = setTags.filter((t) => !KNOWN_TAGS.includes(t));
427
- // The vocabulary is frozen on purpose: `tags` cannot be edited without another update, and a
428
- // typo'd tag is indistinguishable from a real one to whoever reads the dashboard later.
429
- if (unknown.length > 0) throw new Error(`unknown tag(s) ${unknown.join(', ')}; the frozen vocabulary is ${KNOWN_TAGS.join(', ')}`);
430
- specification.tags = [...setTags];
431
- paths.push('tags');
432
- }
433
- return {
434
- method: 'PATCH',
435
- url: `/stores/v2/coupons/${encodeURIComponent(couponId)}`,
436
- // ONLY the changed fields. Never the full specification -- see the header block.
437
- body: { specification, fieldMask: { paths } },
438
- };
439
- }
440
-
441
- // The one thing a caller must never do is believe the status code. Given the response
442
- // of a remedy call and a read-back taken after a settle, say what actually happened.
443
- function verifyRemedyApplied({ remedy, responseStatus, readBackAfterSettle, settleMs } = {}) {
444
- if (remedy !== REMEDY.DELETE && remedy !== REMEDY.DEACTIVATE) {
445
- throw new Error(`verifyRemedyApplied knows ${REMEDY.DEACTIVATE} and ${REMEDY.DELETE}, not ${String(remedy)} `);
446
- }
447
- const ok = responseStatus === 200 || responseStatus === 204;
448
- if (!ok) return { applied: false, verdict: 'remedy-failed', reason: `the ${remedy === REMEDY.DELETE ? 'delete' : 'update'} returned ${String(responseStatus)}` };
449
- if (readBackAfterSettle === undefined) {
450
- return { applied: false, verdict: 'remedy-unverified', reason: 'a 2xx is not evidence of a change on this surface -- a PATCH carrying the FULL specification alongside a narrow field mask returns 200 with an empty body and writes nothing; pass the post-settle read-back' };
451
- }
452
- const settleS = Math.round((settleMs || 0) / 1000);
453
- if (remedy === REMEDY.DELETE) {
454
- if (readBackAfterSettle === null) return { applied: true, verdict: 'remedy-applied', reason: `the code is absent from the target after ~${settleS}s, which is what a delete looks like` };
455
- return { applied: false, verdict: 'remedy-unverified', reason: 'the coupon still reads back after the delete; treat as UNKNOWN and re-read, do not re-issue' };
456
- }
457
- // DEACTIVATE: absent is NOT success here. A deactivated coupon must still be readable; an
458
- // absent one means something deleted it, which is a different outcome than the one requested.
459
- if (readBackAfterSettle === null) {
460
- return { applied: false, verdict: 'remedy-unverified', reason: `the coupon did not read back after ~${settleS}s. A deactivate leaves the record in place, so absent is UNKNOWN (this surface's read lag), never "switched off"` };
461
- }
462
- const spec = readBackAfterSettle.specification || readBackAfterSettle;
463
- // FINDING 1: only an explicit `false` is proof. `{}` and `{active: undefined}` previously fell
464
- // through to "applied" -- a truncated or partial read-back reported a coupon as switched off
465
- // when nothing had been read at all.
466
- if (spec.active === false) {
467
- return { applied: true, verdict: 'remedy-applied', reason: `active reads back false after ~${settleS}s${Array.isArray(spec.tags) ? `, tags ${JSON.stringify(spec.tags)}` : ''}` };
468
- }
469
- if (spec.active === true) {
470
- return { applied: false, verdict: 'remedy-unverified', reason: `the update returned 2xx and the coupon still reads back active after ~${settleS}s -- the signature of a full-specification PATCH being silently ignored. Re-send with ONLY the changed fields` };
471
- }
472
- return { applied: false, verdict: 'remedy-unverified', reason: `the read-back carried no readable \`active\` flag after ~${settleS}s, so nothing was confirmed. Re-read; absent is never proof of a change` };
473
- }
474
-
475
- module.exports = {
476
- OUTCOMES,
477
- REMEDY,
478
- TAGS,
479
- KNOWN_TAGS,
480
- SNAPSHOT,
481
- isBearerVoucher,
482
- exactAmount,
483
- toMinorUnits,
484
- displayAmount,
485
- classifySnapshot,
486
- classifyPreWriteDrift,
487
- classifyPostImportDrift,
488
- buildVoucherDriftPlan,
489
- buildRemedyRequest,
490
- verifyRemedyApplied,
491
- };
@@ -1,104 +0,0 @@
1
- 'use strict';
2
-
3
- // A source customer -> a Wix member.contact, and the phone/name/address mapping that decides
4
- // what gets carried and what gets refused.
5
- //
6
- // Two traps this exists for:
7
- // * Create Member's `contact.phones[]` rejects anything that is not already E.164
8
- // (VERIFIED LIVE: "050-1234567" 400s INVALID_PHONE; "+972501234567" is accepted). WooCommerce
9
- // phones are local-format text, so every phone needs converting or dropping -- never sent
10
- // as-is, and never invented when the source shape can't be read with confidence.
11
- // * Contacts dedupe on phone number, and Create Member reuses whatever contact already carries
12
- // a matching phone -- VERIFIED LIVE: creating a second member with an unrelated name but the
13
- // same phone as a FIRST member (even after that first member was deleted -- deleting a member
14
- // does not delete its contact) returned the FIRST member's contactId, silently attaching the
15
- // second person's name onto the first person's contact record. Two different source customers
16
- // who share a phone number (a shared home line, a placeholder store number, a typo) would be
17
- // merged into one Wix identity. The caller (wix-writers.js ensureMember) is responsible for
18
- // checking Contacts for a phone collision before ever sending a phone on a CREATE.
19
-
20
- const { MEMBER_FINDING, tallyMemberOutcomes } = require('../../../lib/member-outcome-registry.js');
21
-
22
- // Calling code + whether the national number carries a leading trunk '0' to strip, for the
23
- // countries this project has needed so far. Deliberately small: an unlisted country REFUSES the
24
- // phone (findings, not a guess) rather than emitting a plausible-looking wrong number.
25
- const COUNTRY_PHONE_RULES = Object.freeze({
26
- IL: { callingCode: '972', trunkPrefix: '0' },
27
- US: { callingCode: '1', trunkPrefix: null },
28
- CA: { callingCode: '1', trunkPrefix: null },
29
- GB: { callingCode: '44', trunkPrefix: '0' },
30
- FR: { callingCode: '33', trunkPrefix: '0' },
31
- DE: { callingCode: '49', trunkPrefix: '0' },
32
- IT: { callingCode: '39', trunkPrefix: null },
33
- ES: { callingCode: '34', trunkPrefix: null },
34
- AU: { callingCode: '61', trunkPrefix: '0' },
35
- NL: { callingCode: '31', trunkPrefix: '0' },
36
- });
37
-
38
- const E164 = /^\+[1-9]\d{6,14}$/;
39
-
40
- // Never invents digits: either the input already carries a confident international shape, or it
41
- // converts under an explicit, deterministic rule for a known country, or it is refused outright.
42
- function normalizePhoneE164(rawPhone, countryCode) {
43
- const raw = rawPhone === undefined || rawPhone === null ? '' : String(rawPhone).trim();
44
- if (!raw) return { ok: false, reason: 'empty' };
45
- const asIs = raw.replace(/[\s().-]/g, '');
46
- if (E164.test(asIs)) return { ok: true, phone: asIs };
47
- const country = countryCode ? String(countryCode).trim().toUpperCase() : '';
48
- const rule = COUNTRY_PHONE_RULES[country];
49
- if (!rule) return { ok: false, reason: country ? 'unsupported-country' : 'no-country-code' };
50
- const digits = raw.replace(/\D/g, '');
51
- if (!digits) return { ok: false, reason: 'no-digits' };
52
- const national = rule.trunkPrefix && digits.startsWith(rule.trunkPrefix) ? digits.slice(rule.trunkPrefix.length) : digits;
53
- if (national.length < 4 || national.length > 14) return { ok: false, reason: 'implausible-length' };
54
- const candidate = `+${rule.callingCode}${national}`;
55
- if (!E164.test(candidate)) return { ok: false, reason: 'invalid-shape' };
56
- return { ok: true, phone: candidate };
57
- }
58
-
59
- // A generic customer -> Member.contact (Create Member's shape: firstName, lastName, phones[],
60
- // addresses[], no email -- the login email is a sibling field, never here). Findings, not thrown
61
- // errors: a field this can't carry is reported and dropped, the rest of the contact still writes.
62
- // Trims BEFORE testing for presence, everywhere -- a whitespace-only value (" ") is truthy as a
63
- // raw string, and review (2026-09-06) found the field-by-field checks below testing the raw value
64
- // first: a source record with a lone space in a name or address field would have written that
65
- // space through as if it were real data, rather than being treated as absent.
66
- function nonEmpty(value) {
67
- if (value === null || value === undefined) return null;
68
- const trimmed = String(value).trim();
69
- return trimmed === '' ? null : trimmed;
70
- }
71
-
72
- function buildMemberContact({ firstName = null, lastName = null, phone = null, countryCode = null, address = null } = {}) {
73
- const findings = [];
74
- const contact = {};
75
- const first = nonEmpty(firstName); if (first) contact.firstName = first;
76
- const last = nonEmpty(lastName); if (last) contact.lastName = last;
77
- if (nonEmpty(phone)) {
78
- const normalized = normalizePhoneE164(phone, countryCode);
79
- if (normalized.ok) contact.phones = [normalized.phone];
80
- else findings.push({ code: MEMBER_FINDING.PHONE_NOT_NORMALIZED, reason: normalized.reason });
81
- }
82
- if (address && typeof address === 'object') {
83
- const a = {};
84
- const addressLine = nonEmpty(address.addressLine); if (addressLine) a.addressLine = addressLine;
85
- const addressLine2 = nonEmpty(address.addressLine2); if (addressLine2) a.addressLine2 = addressLine2;
86
- const city = nonEmpty(address.city); if (city) a.city = city;
87
- // Free text: Members V1 stores an unrecognized code as `subdivisionFullname` rather than
88
- // rejecting it (verified live), so WooCommerce's state field -- sometimes an ISO subdivision
89
- // code, sometimes a free-text region name -- is passed through as-is, never validated here.
90
- const subdivision = nonEmpty(address.subdivision); if (subdivision) a.subdivision = subdivision;
91
- const country = nonEmpty(address.country); if (country) a.country = country.toUpperCase();
92
- const postalCode = nonEmpty(address.postalCode); if (postalCode) a.postalCode = postalCode;
93
- if (Object.keys(a).length > 0) contact.addresses = [a];
94
- }
95
- return { contact, findings };
96
- }
97
-
98
- // Mirrors tallyCouponWriteOutcomes / tallyPlanWriteOutcomes's shape. The buckets come from the
99
- // member outcome registry, which throws on a code it does not know rather than counting it.
100
- function tallyMemberWriteOutcomes(outcomes = []) {
101
- return tallyMemberOutcomes(outcomes);
102
- }
103
-
104
- module.exports = { COUNTRY_PHONE_RULES, normalizePhoneE164, buildMemberContact, tallyMemberWriteOutcomes };