@wix/agent-skills 1.33.0 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/package.json +2 -2
- package/skills/wix-app/references/DASHBOARD_PAGE.md +1 -1
- package/skills/wix-export/SKILL.md +83 -0
- package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
- package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
- package/skills/wix-harmony-editor/SKILL.md +317 -0
- package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
- package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
- package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
- package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
- package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
- package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
- package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
- package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
- package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
- package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
- package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
- package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
- package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
- package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
- package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
- package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
- package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
- package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
- package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
- package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
- package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
- package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
- package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
- package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
- package/skills/wix-headless/SKILL.md +7 -2
- package/skills/wix-headless/references/CAPABILITIES.md +6 -1
- package/skills/wix-headless/references/DISCOVERY.md +2 -1
- package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
- package/skills/wix-headless/references/SEED.md +3 -2
- package/skills/wix-headless/references/SETUP.md +1 -0
- package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
- package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
- package/skills/wix-headless/references/managed/CREATE.md +1 -1
- package/skills/wix-headless-kit/SKILL.md +110 -21
- package/skills/wix-headless-kit/guides/api-run.md +15 -13
- package/skills/wix-headless-kit/guides/existing-site.md +31 -0
- package/skills/wix-headless-kit/guides/migration.md +49 -17
- package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
- package/skills/wix-headless-kit/install/context.mjs +61 -6
- package/skills/wix-headless-kit/install/pins.json +1 -1
- package/skills/wix-headless-kit/install/setup.mjs +107 -12
- package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
- package/skills/wix-headless-replatform/SKILL.md +116 -0
- package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
- package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
- package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
- package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
- package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
- package/skills/wix-headless-replatform/references/output-contract.md +93 -0
- package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
- package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
- package/skills/wix-headless-replatform/references/safety.md +19 -0
- package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
- package/skills/wix-headless-replatform/references/workflow.md +157 -0
- package/skills/wix-headless-replatform/registry/README.md +20 -0
- package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
- package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
- package/skills/wix-headless-replatform/registry/registry.json +36 -0
- package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
- package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
- package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
- package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
- package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
- package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
- package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
- package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
- package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
- package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
- package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
- package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
- package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
- package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
- package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
- package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
- package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
- package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
- package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
- package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
- package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
- package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
- package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
- package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
- package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
- package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
- package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
- package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
- package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
- package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
- package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
- package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
- package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
- package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
- package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
- package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
- package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
- package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
- package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
- package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
- package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
- package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
- package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
- package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
- package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
- package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
- package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
- package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
- package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
- package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
- package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
- package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
- package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
- package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
- package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
- package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
- package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
- package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
- package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
- package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
- package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
- package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
- package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
- package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
- package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
- package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
- package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
- package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
- package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
- package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
- package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
- package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
- package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
- package/skills/wix-import/SKILL.md +90 -0
- package/skills/wix-manage/SKILL.md +38 -10
- package/skills/wix-manage/references/automations/actions.md +11 -11
- package/skills/wix-manage/references/automations/activation-status.md +6 -9
- package/skills/wix-manage/references/automations/api-catalog.md +48 -32
- package/skills/wix-manage/references/automations/automation-model.md +97 -22
- package/skills/wix-manage/references/automations/bracket-expressions.md +7 -7
- package/skills/wix-manage/references/automations/build-and-manage-automations.md +140 -309
- package/skills/wix-manage/references/automations/conditions.md +187 -0
- package/skills/wix-manage/references/automations/schemas-and-scheduling.md +191 -0
- package/skills/wix-manage/references/automations/special-actions.md +210 -0
- package/skills/wix-manage/references/automations/triggers.md +47 -10
- package/skills/wix-manage/references/automations/validation-and-verification.md +320 -0
- package/skills/wix-manage/references/custom-apps/use-app-tools.md +124 -0
- package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
- package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
- package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
- package/skills/wix-manage/references/events/create-wix-event.md +136 -73
- package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
- package/skills/wix-manage/references/events/manage-event-guests.md +366 -0
- package/skills/wix-manage/references/events/manage-event-tickets.md +293 -0
- package/skills/wix-manage/references/events/manage-wix-events.md +313 -55
- package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
- package/skills/wix-manage/references/sites/upload-static-site.md +127 -8
- package/skills/wix-manage/references/stores/update-product-with-options.md +58 -2
- package/skills/wix-replatform/.publish-manifest.json +5 -5
- package/skills/wix-replatform/CLI.md +162 -0
- package/skills/wix-replatform/README.md +52 -0
- package/skills/wix-replatform/SKILL.md +229 -684
- package/skills/wix-replatform/console/account.css +1 -0
- package/skills/wix-replatform/console/app.css +1 -0
- package/skills/wix-replatform/console/app.js +117 -0
- package/skills/wix-replatform/console/index.html +4 -0
- package/skills/wix-replatform/console/json.css +11 -0
- package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
- package/skills/wix-replatform/lib/app-page-routing.js +75 -0
- package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
- package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
- package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
- package/skills/wix-replatform/lib/completion-report.js +1393 -13
- package/skills/wix-replatform/lib/config-env.js +85 -11
- package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
- package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
- package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
- package/skills/wix-replatform/lib/destination-choice.js +163 -0
- package/skills/wix-replatform/lib/destination-handoff.js +62 -0
- package/skills/wix-replatform/lib/destination-http.js +81 -0
- package/skills/wix-replatform/lib/destination-route.js +98 -0
- package/skills/wix-replatform/lib/destination.js +919 -0
- package/skills/wix-replatform/lib/discovered-census.js +231 -0
- package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
- package/skills/wix-replatform/lib/document-url-guard.js +203 -0
- package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
- package/skills/wix-replatform/lib/entity-verification.js +18 -0
- package/skills/wix-replatform/lib/execution-capability.js +120 -0
- package/skills/wix-replatform/lib/execution-log.js +170 -0
- package/skills/wix-replatform/lib/execution-manifest.js +20 -2
- package/skills/wix-replatform/lib/execution-state.js +22 -0
- package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
- package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
- package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
- package/skills/wix-replatform/lib/import-recovery.js +800 -6
- package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
- package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
- package/skills/wix-replatform/lib/link-audit.js +173 -0
- package/skills/wix-replatform/lib/link-census.js +194 -0
- package/skills/wix-replatform/lib/link-plan.js +148 -0
- package/skills/wix-replatform/lib/link-verification.js +274 -0
- package/skills/wix-replatform/lib/link-write-journal.js +42 -0
- package/skills/wix-replatform/lib/local-state.js +869 -30
- package/skills/wix-replatform/lib/member-completion.js +658 -0
- package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
- package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
- package/skills/wix-replatform/lib/migration-completion.js +311 -0
- package/skills/wix-replatform/lib/operator-identity.js +47 -0
- package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
- package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
- package/skills/wix-replatform/lib/orchestration-router.js +608 -32
- package/skills/wix-replatform/lib/orchestration-state.js +188 -12
- package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
- package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
- package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
- package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
- package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
- package/skills/wix-replatform/lib/progress-log.js +19 -3
- package/skills/wix-replatform/lib/read-back-approval.js +184 -0
- package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
- package/skills/wix-replatform/lib/read-back-contract.js +243 -0
- package/skills/wix-replatform/lib/read-back-extract.js +118 -0
- package/skills/wix-replatform/lib/read-back-gate.js +734 -0
- package/skills/wix-replatform/lib/read-back-reads.js +94 -0
- package/skills/wix-replatform/lib/read-back-state.js +107 -0
- package/skills/wix-replatform/lib/read-back-summary.js +81 -0
- package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
- package/skills/wix-replatform/lib/run-controller.js +401 -0
- package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
- package/skills/wix-replatform/lib/setup-verification.js +148 -0
- package/skills/wix-replatform/lib/source-access.js +231 -0
- package/skills/wix-replatform/lib/source-coverage.js +1130 -0
- package/skills/wix-replatform/lib/source-secrets.js +277 -0
- package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
- package/skills/wix-replatform/lib/task-state.js +110 -0
- package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
- package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
- package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
- package/skills/wix-replatform/lib/url-verification.js +315 -0
- package/skills/wix-replatform/lib/user-action-effects.js +42 -0
- package/skills/wix-replatform/lib/user-actions.js +264 -0
- package/skills/wix-replatform/lib/website-handoff.js +1220 -0
- package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
- package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
- package/skills/wix-replatform/lib/write-verification-state.js +92 -0
- package/skills/wix-replatform/lib/write-verification.js +274 -0
- package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
- package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
- package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
- package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
- package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
- package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
- package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
- package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
- package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
- package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
- package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
- package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
- package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
- package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
- package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
- package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
- package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
- package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
- package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
- package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
- package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
- package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
- package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
- package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
- package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
- package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
- package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
- package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
- package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
- package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
- package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
- package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
- package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
- package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
- package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
- package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
- package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
- package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
- package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
- package/skills/wix-replatform/scripts/discovered-census.js +26 -0
- package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
- package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
- package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
- package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
- package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
- package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
- package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
- package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
- package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
- package/skills/wix-replatform/scripts/migration-completion.js +76 -0
- package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
- package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
- package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
- package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
- package/skills/wix-replatform/scripts/replatform-console.js +146 -0
- package/skills/wix-replatform/scripts/replatform.js +436 -0
- package/skills/wix-replatform/scripts/source-secrets.js +77 -0
- package/skills/wix-replatform/scripts/url-redirects.js +286 -0
- package/skills/wix-replatform/scripts/user-action.js +58 -0
- package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
- package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
- package/skills/wix-replatform/scripts/wix-destination.js +143 -0
- package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
- package/skills/wix-vibe-headless/SKILL.md +7 -3
- package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
- package/skills/wix-vibe-headless/platforms/base44.md +1 -0
- package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
- package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
- package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
- package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
- package/skills/wix-manage/references/custom-apps/use-app-skills-and-app-tools.md +0 -208
- package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
const fs = require('node:fs/promises');
|
|
4
4
|
const path = require('node:path');
|
|
5
5
|
const crypto = require('node:crypto');
|
|
6
|
+
const { getDecisionValue, isExplicitUserOneClick } = require('./orchestration-decisions.js');
|
|
7
|
+
const { ensureLedger } = require('./expectations-ledger.js');
|
|
8
|
+
const cmsFallback = require('./plugin-cms-fallback.js');
|
|
6
9
|
|
|
7
10
|
const SCHEMA_VERSION = 1;
|
|
8
11
|
|
|
9
|
-
const RUN_STATUS = new Set(['running', 'completed', 'partial', 'blocked', 'failed']);
|
|
12
|
+
const RUN_STATUS = new Set(['running', 'completed', 'partial', 'blocked', 'failed', 'cancel_requested', 'canceled', 'interrupted']);
|
|
10
13
|
const ACTIVE_PHASE = new Set(['orchestration', 'discovery', 'mapping', 'setup', 'codegen', 'execution']);
|
|
11
14
|
const ORCHESTRATION_STATES = new Set([
|
|
12
15
|
'initialized',
|
|
@@ -15,30 +18,43 @@ const ORCHESTRATION_STATES = new Set([
|
|
|
15
18
|
'awaiting_credentials',
|
|
16
19
|
'awaiting_files',
|
|
17
20
|
'awaiting_destination_strategy',
|
|
21
|
+
'destination_running',
|
|
18
22
|
'preflight_running',
|
|
19
23
|
'preflight_blocked',
|
|
24
|
+
'quick_mode_adapter_resolution_required',
|
|
25
|
+
'quick_mode_preflight_required',
|
|
26
|
+
'quick_mode_plan_required',
|
|
27
|
+
'quick_mode_reverification_required',
|
|
20
28
|
'discovery_running',
|
|
21
29
|
'discovery_complete',
|
|
22
30
|
'mapping_running',
|
|
23
31
|
'awaiting_mapping_approval',
|
|
24
32
|
'mapping_approved',
|
|
25
33
|
'setup_discovery_running',
|
|
34
|
+
'awaiting_website_scope',
|
|
35
|
+
'website_handoff_running',
|
|
26
36
|
'setup_complete',
|
|
27
37
|
'codegen_running',
|
|
28
38
|
'awaiting_execution_approval',
|
|
29
39
|
'execution_approved',
|
|
30
40
|
'executing_setup',
|
|
31
41
|
'executing_import',
|
|
42
|
+
'storefront_running',
|
|
43
|
+
'finalizing',
|
|
32
44
|
'completed',
|
|
33
45
|
'partial',
|
|
34
46
|
'blocked',
|
|
35
47
|
'failed',
|
|
48
|
+
'cancel_requested',
|
|
49
|
+
'canceled',
|
|
50
|
+
'interrupted',
|
|
36
51
|
]);
|
|
37
52
|
const PHASE_STATUS = new Set(['not_started', 'running', 'complete', 'partial', 'blocked', 'failed']);
|
|
38
53
|
const EXECUTION_ITEM_STATUS = new Set(['not_started', 'running', 'complete', 'partial', 'blocked', 'failed', 'skipped']);
|
|
39
54
|
const APPROVAL_STATUS = new Set(['pending', 'approved', 'rejected', 'provisional']);
|
|
40
|
-
const APPROVAL_ACTOR = new Set(['user', 'system', null]);
|
|
41
|
-
|
|
55
|
+
const APPROVAL_ACTOR = new Set(['user', 'system', 'agent', null]);
|
|
56
|
+
// `context` and `not_asked` are the business-type sources; other keys keep using the first three.
|
|
57
|
+
const DECISION_SOURCE = new Set(['user', 'deterministic_inference', 'prior_artifact', 'context', 'not_asked']);
|
|
42
58
|
|
|
43
59
|
function nowIso(date = new Date()) {
|
|
44
60
|
return date.toISOString();
|
|
@@ -200,6 +216,10 @@ function validateRun(run, errors) {
|
|
|
200
216
|
if ((isAwaitingState(run.currentState) || run.currentState === 'blocked') && run.needsUserInput !== true) {
|
|
201
217
|
pushError(errors, 'run_needs_user_input', 'needsUserInput must be true for awaiting_* and blocked states');
|
|
202
218
|
}
|
|
219
|
+
if (['cancel_requested', 'canceled', 'interrupted'].includes(run.currentState) &&
|
|
220
|
+
!['cancel_requested', 'canceled', 'interrupted'].includes(run.status)) {
|
|
221
|
+
pushError(errors, 'run_cancellation_status', `${run.currentState} requires matching cancellation status`);
|
|
222
|
+
}
|
|
203
223
|
}
|
|
204
224
|
|
|
205
225
|
function validateCheckpoints(checkpoints, errors) {
|
|
@@ -250,13 +270,25 @@ function validateApprovals(approvals, errors) {
|
|
|
250
270
|
if (!Array.isArray(item.artifactRefs)) {
|
|
251
271
|
pushError(errors, `approval_${approvalType}_artifact_refs`, `${approvalType} approval artifactRefs must be an array`);
|
|
252
272
|
}
|
|
273
|
+
if (Array.isArray(item.artifactRefs)) {
|
|
274
|
+
for (const ref of item.artifactRefs) {
|
|
275
|
+
if (typeof ref === 'string' && ref.length) continue;
|
|
276
|
+
if (!ref || typeof ref !== 'object' || Array.isArray(ref) || ref.kind !== 'census-reconciliation' || ref.path !== 'mapping/review/census-reconciliation.json' || !/^[0-9a-f]{64}$/i.test(ref.sha256 || '')) {
|
|
277
|
+
pushError(errors, `approval_${approvalType}_artifact_ref_invalid`, `${approvalType} approval contains an invalid artifact reference`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
253
281
|
if (approvalType === 'execution' && item.status === 'provisional') {
|
|
254
282
|
pushError(errors, 'approval_execution_provisional', 'execution approval must not be provisional');
|
|
255
283
|
}
|
|
256
284
|
}
|
|
257
285
|
}
|
|
258
286
|
|
|
259
|
-
|
|
287
|
+
// `quarantined` collects malformed `pluginCmsFallback:*` entries. That one family (exact,
|
|
288
|
+
// case-sensitive prefix) is never honored when malformed and never fails the run: the entry
|
|
289
|
+
// counts as "no valid answer" everywhere and the capability is asked again at the mapping
|
|
290
|
+
// review. Every other key keeps the fail-closed checks below.
|
|
291
|
+
function validateDecisions(decisions, errors, quarantined = []) {
|
|
260
292
|
if (!decisions || typeof decisions !== 'object') {
|
|
261
293
|
pushError(errors, 'decisions_missing', 'decisions.json is missing or not an object');
|
|
262
294
|
return;
|
|
@@ -268,6 +300,11 @@ function validateDecisions(decisions, errors) {
|
|
|
268
300
|
if (key === 'schemaVersion') {
|
|
269
301
|
continue;
|
|
270
302
|
}
|
|
303
|
+
if (cmsFallback.isCmsFallbackDecisionKey(key)) {
|
|
304
|
+
const shape = cmsFallback.cmsFallbackDecisionShape(key, value);
|
|
305
|
+
if (!shape.ok) quarantined.push({ key, problem: shape.problem });
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
271
308
|
if (!value || typeof value !== 'object') {
|
|
272
309
|
pushError(errors, 'decision_entry_invalid', `decision ${key} must be an object`);
|
|
273
310
|
continue;
|
|
@@ -276,44 +313,56 @@ function validateDecisions(decisions, errors) {
|
|
|
276
313
|
}
|
|
277
314
|
}
|
|
278
315
|
|
|
316
|
+
function isObjectValue(value) {
|
|
317
|
+
return Boolean(value) && typeof value === 'object';
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Each check reads only its own sub-object and is skipped when that sub-object is
|
|
321
|
+
// missing: the per-file validators already report it (`*_missing`), and reading
|
|
322
|
+
// `.status` of a missing entry would throw instead of returning the error list.
|
|
279
323
|
function validateCrossArtifactInvariants(artifacts, errors) {
|
|
280
324
|
const { run, checkpoints, approvals } = artifacts;
|
|
281
325
|
if (!run || !checkpoints || !approvals) {
|
|
282
326
|
return;
|
|
283
327
|
}
|
|
284
|
-
|
|
328
|
+
const mappingCheckpoint = isObjectValue(checkpoints.mapping) ? checkpoints.mapping : null;
|
|
329
|
+
const mappingApproval = isObjectValue(approvals.mapping) ? approvals.mapping : null;
|
|
330
|
+
const executionApproval = isObjectValue(approvals.execution) ? approvals.execution : null;
|
|
331
|
+
if (run.currentState === 'preflight_running' || run.currentState === 'preflight_blocked' || run.currentState === 'awaiting_destination_strategy' || run.currentState === 'destination_running') {
|
|
285
332
|
if (run.activePhase !== 'orchestration') {
|
|
286
333
|
pushError(errors, 'state_phase_preflight', `${run.currentState} requires activePhase=orchestration`);
|
|
287
334
|
}
|
|
288
335
|
}
|
|
289
|
-
if (run.currentState === 'mapping_running' &&
|
|
336
|
+
if (run.currentState === 'mapping_running' && mappingCheckpoint && mappingCheckpoint.status === 'not_started') {
|
|
290
337
|
pushError(errors, 'state_mapping_checkpoint', 'mapping_running requires mapping checkpoint status to be started');
|
|
291
338
|
}
|
|
292
|
-
if (run.currentState === 'awaiting_mapping_approval' &&
|
|
339
|
+
if (run.currentState === 'awaiting_mapping_approval' && mappingApproval && mappingApproval.status !== 'pending') {
|
|
293
340
|
pushError(errors, 'state_mapping_approval_pending', 'awaiting_mapping_approval requires approvals.mapping.status=pending');
|
|
294
341
|
}
|
|
295
|
-
if (run.currentState === 'mapping_approved' && !['approved', 'provisional'].includes(
|
|
342
|
+
if (run.currentState === 'mapping_approved' && mappingApproval && !['approved', 'provisional'].includes(mappingApproval.status)) {
|
|
296
343
|
pushError(errors, 'state_mapping_approved', 'mapping_approved requires approvals.mapping.status=approved|provisional');
|
|
297
344
|
}
|
|
298
|
-
if (run.currentState === 'awaiting_execution_approval' &&
|
|
345
|
+
if (run.currentState === 'awaiting_execution_approval' && executionApproval && executionApproval.status !== 'pending') {
|
|
299
346
|
pushError(errors, 'state_execution_approval_pending', 'awaiting_execution_approval requires approvals.execution.status=pending');
|
|
300
347
|
}
|
|
301
348
|
if (['execution_approved', 'executing_setup', 'executing_import', 'completed'].includes(run.currentState) &&
|
|
302
|
-
|
|
349
|
+
executionApproval && executionApproval.status !== 'approved') {
|
|
303
350
|
pushError(errors, 'state_execution_approved', `${run.currentState} requires approvals.execution.status=approved`);
|
|
304
351
|
}
|
|
305
352
|
}
|
|
306
353
|
|
|
307
354
|
function validateArtifacts(artifacts) {
|
|
308
355
|
const errors = [];
|
|
356
|
+
const quarantined = [];
|
|
309
357
|
validateRun(artifacts.run, errors);
|
|
310
358
|
validateCheckpoints(artifacts.checkpoints, errors);
|
|
311
359
|
validateApprovals(artifacts.approvals, errors);
|
|
312
|
-
validateDecisions(artifacts.decisions, errors);
|
|
360
|
+
validateDecisions(artifacts.decisions, errors, quarantined);
|
|
313
361
|
validateCrossArtifactInvariants(artifacts, errors);
|
|
314
362
|
return {
|
|
315
363
|
ok: errors.length === 0,
|
|
316
364
|
errors,
|
|
365
|
+
quarantined,
|
|
317
366
|
};
|
|
318
367
|
}
|
|
319
368
|
|
|
@@ -326,6 +375,7 @@ async function appendEvent(projectDir, event) {
|
|
|
326
375
|
}
|
|
327
376
|
|
|
328
377
|
async function initArtifacts(projectDir, { projectId = path.basename(projectDir), timestamp = nowIso() } = {}) {
|
|
378
|
+
await ensureLedger(projectDir);
|
|
329
379
|
const dirPath = orchestrationDir(projectDir);
|
|
330
380
|
await mkdirp(dirPath);
|
|
331
381
|
const run = createRun(projectId, timestamp);
|
|
@@ -363,7 +413,8 @@ async function loadArtifacts(projectDir) {
|
|
|
363
413
|
};
|
|
364
414
|
}
|
|
365
415
|
|
|
366
|
-
function updateDecisionObject(decisions, key, value, { source = 'user', rationale = null, timestamp = nowIso() } = {}) {
|
|
416
|
+
function updateDecisionObject(decisions, key, value, { source = 'user', rationale = null, timestamp = nowIso(), evidenceRef = null } = {}) {
|
|
417
|
+
assertGenericDecisionKey(key);
|
|
367
418
|
if (!DECISION_SOURCE.has(source)) {
|
|
368
419
|
throw new Error(`invalid decision source: ${source}`);
|
|
369
420
|
}
|
|
@@ -372,10 +423,97 @@ function updateDecisionObject(decisions, key, value, { source = 'user', rational
|
|
|
372
423
|
decidedAt: timestamp,
|
|
373
424
|
source,
|
|
374
425
|
rationale,
|
|
426
|
+
...(evidenceRef ? { evidenceRef } : {}),
|
|
375
427
|
};
|
|
376
428
|
return decisions;
|
|
377
429
|
}
|
|
378
430
|
|
|
431
|
+
function assertGenericDecisionKey(key) {
|
|
432
|
+
if (cmsFallback.isCmsFallbackDecisionKey(key)) {
|
|
433
|
+
throw new Error(`${key} is a CMS-fallback answer and is written only by \`orchestration-state.js decide-cms-fallback\` (it binds the answer to the exact proposal shown); the generic decide command cannot record it`);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* The only writer of `pluginCmsFallback:<capability>`. Reads the proposal from the capability's
|
|
439
|
+
* current plugin-coverage row — the exact text shown at the mapping review — and binds the
|
|
440
|
+
* answer to it. In the same save it resets the mapping approval to pending, so the router
|
|
441
|
+
* regenerates the plan; it never deletes artifacts. Mutates `artifacts` and returns the event
|
|
442
|
+
* to append.
|
|
443
|
+
*/
|
|
444
|
+
function recordPluginCmsFallbackDecision(artifacts, {
|
|
445
|
+
capability,
|
|
446
|
+
value,
|
|
447
|
+
approvedBy,
|
|
448
|
+
coverageRow,
|
|
449
|
+
registerEntry = undefined,
|
|
450
|
+
pluginsRoot = undefined,
|
|
451
|
+
rationale = null,
|
|
452
|
+
timestamp = nowIso(),
|
|
453
|
+
} = {}) {
|
|
454
|
+
if (!artifacts || !artifacts.decisions || !artifacts.approvals) {
|
|
455
|
+
throw new Error('artifacts.decisions and artifacts.approvals are required');
|
|
456
|
+
}
|
|
457
|
+
// One-click/unattended runs never record this answer, approval or decline. Any
|
|
458
|
+
// automationMode that normalizes to one_click blocks it, whatever its source, so the row
|
|
459
|
+
// stays pending with zero CMS writes.
|
|
460
|
+
if (getDecisionValue(artifacts.decisions, 'automationMode') === 'one_click') {
|
|
461
|
+
throw new Error('decide-cms-fallback is not allowed in a one-click/unattended run (automationMode=one_click): the CMS-fallback row stays pending and is reported for cutover');
|
|
462
|
+
}
|
|
463
|
+
if (!capability || typeof capability !== 'string') throw new Error('decide-cms-fallback requires --capability');
|
|
464
|
+
if (!cmsFallback.DECISION_VALUES.has(value)) {
|
|
465
|
+
throw new Error(`decide-cms-fallback --value must be approved or declined (got: ${value})`);
|
|
466
|
+
}
|
|
467
|
+
if (typeof approvedBy !== 'string' || approvedBy.trim().length === 0) {
|
|
468
|
+
throw new Error('decide-cms-fallback requires a non-empty --approved-by naming who answered');
|
|
469
|
+
}
|
|
470
|
+
const row = coverageRow;
|
|
471
|
+
if (!row || row.capability !== capability || !cmsFallback.isEligibleCmsFallbackRow(row)
|
|
472
|
+
|| !(row.status === 'pending' || cmsFallback.isApprovedCmsFallbackRow(row))) {
|
|
473
|
+
throw new Error(`no eligible CMS-fallback row for ${capability} in plugin-coverage.json; there is nothing to approve or decline`);
|
|
474
|
+
}
|
|
475
|
+
const entry = registerEntry !== undefined
|
|
476
|
+
? registerEntry
|
|
477
|
+
: cmsFallback.eligibilityByCapability(cmsFallback.loadCmsFallbackRegisters(pluginsRoot).cmsFallbackEligible).get(capability) || null;
|
|
478
|
+
if (!entry) {
|
|
479
|
+
throw new Error(`${capability} has no signed entry in cms-fallback-eligible.json; rerun reclassification first`);
|
|
480
|
+
}
|
|
481
|
+
const proposal = cmsFallback.proposalFromRow(row);
|
|
482
|
+
const proposalDigest = cmsFallback.cmsFallbackProposalDigest({ capability, ...proposal });
|
|
483
|
+
const currentDigest = cmsFallback.cmsFallbackProposalDigest(entry);
|
|
484
|
+
if (row.cmsFallback.proposalDigest !== currentDigest || proposalDigest !== currentDigest) {
|
|
485
|
+
throw new Error(`plugin-coverage.json is stale for ${capability}: its proposal differs from the current cms-fallback-eligible.json entry; rerun reclassification (wp-discovery.js --reclassify-coverage) and ask again`);
|
|
486
|
+
}
|
|
487
|
+
const key = cmsFallback.decisionKey(capability);
|
|
488
|
+
artifacts.decisions[key] = {
|
|
489
|
+
value,
|
|
490
|
+
decidedAt: timestamp,
|
|
491
|
+
source: 'user',
|
|
492
|
+
rationale: rationale || null,
|
|
493
|
+
approvedBy: approvedBy.trim(),
|
|
494
|
+
proposal,
|
|
495
|
+
proposalDigest,
|
|
496
|
+
};
|
|
497
|
+
if (artifacts.approvals.mapping && artifacts.approvals.mapping.status !== 'pending') {
|
|
498
|
+
updateApprovalObject(artifacts.approvals, 'mapping', 'pending', {
|
|
499
|
+
artifactRefs: artifacts.approvals.mapping.artifactRefs || [],
|
|
500
|
+
notes: `${key} changed`,
|
|
501
|
+
timestamp,
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
return {
|
|
505
|
+
key,
|
|
506
|
+
event: {
|
|
507
|
+
id: randomId('evt'),
|
|
508
|
+
timestamp,
|
|
509
|
+
phase: artifacts.run ? artifacts.run.activePhase : 'mapping',
|
|
510
|
+
state: artifacts.run ? artifacts.run.currentState : null,
|
|
511
|
+
type: 'decision.recorded',
|
|
512
|
+
payload: { key, value },
|
|
513
|
+
},
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
|
|
379
517
|
function updateApprovalObject(approvals, approvalType, status, { artifactRefs = [], notes = null, decidedBy = 'user', timestamp = nowIso() } = {}) {
|
|
380
518
|
if (!approvals[approvalType]) {
|
|
381
519
|
throw new Error(`unknown approval type: ${approvalType}`);
|
|
@@ -396,6 +534,40 @@ function updateApprovalObject(approvals, approvalType, status, { artifactRefs =
|
|
|
396
534
|
return approvals;
|
|
397
535
|
}
|
|
398
536
|
|
|
537
|
+
function isOneClickArtifacts(artifacts) {
|
|
538
|
+
return isExplicitUserOneClick(artifacts && artifacts.decisions ? artifacts.decisions : {});
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
function autoApproveOneClick(artifacts, approvalType, { artifactRefs = [], notes = null, timestamp = nowIso() } = {}) {
|
|
542
|
+
if (!artifacts || !artifacts.approvals) {
|
|
543
|
+
throw new Error('artifacts.approvals is required');
|
|
544
|
+
}
|
|
545
|
+
const automationMode = getDecisionValue(artifacts.decisions || {}, 'automationMode');
|
|
546
|
+
if (automationMode === 'one_click' && !isOneClickArtifacts(artifacts)) {
|
|
547
|
+
return { ok: false, changed: false, reason: 'automation_mode_not_explicit_user_one_click' };
|
|
548
|
+
}
|
|
549
|
+
if (!isOneClickArtifacts(artifacts)) {
|
|
550
|
+
return { ok: false, changed: false, reason: 'automation_mode_not_one_click' };
|
|
551
|
+
}
|
|
552
|
+
const current = artifacts.approvals[approvalType];
|
|
553
|
+
if (!current) {
|
|
554
|
+
throw new Error(`unknown approval type: ${approvalType}`);
|
|
555
|
+
}
|
|
556
|
+
if (current.status === 'rejected') {
|
|
557
|
+
return { ok: false, changed: false, reason: 'approval_rejected' };
|
|
558
|
+
}
|
|
559
|
+
if (current.status === 'approved') {
|
|
560
|
+
return { ok: true, changed: false, reason: 'already_approved' };
|
|
561
|
+
}
|
|
562
|
+
updateApprovalObject(artifacts.approvals, approvalType, 'approved', {
|
|
563
|
+
artifactRefs,
|
|
564
|
+
notes,
|
|
565
|
+
decidedBy: 'agent',
|
|
566
|
+
timestamp,
|
|
567
|
+
});
|
|
568
|
+
return { ok: true, changed: true, reason: 'auto_approved' };
|
|
569
|
+
}
|
|
570
|
+
|
|
399
571
|
function updateCheckpointObject(checkpoints, phase, patch, timestamp = nowIso()) {
|
|
400
572
|
if (!checkpoints[phase]) {
|
|
401
573
|
throw new Error(`unknown checkpoint phase: ${phase}`);
|
|
@@ -449,7 +621,11 @@ module.exports = {
|
|
|
449
621
|
validateArtifacts,
|
|
450
622
|
appendEvent,
|
|
451
623
|
updateDecisionObject,
|
|
624
|
+
assertGenericDecisionKey,
|
|
625
|
+
recordPluginCmsFallbackDecision,
|
|
452
626
|
updateApprovalObject,
|
|
627
|
+
autoApproveOneClick,
|
|
628
|
+
isOneClickArtifacts,
|
|
453
629
|
updateCheckpointObject,
|
|
454
630
|
transitionRun,
|
|
455
631
|
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// API acceptance is insufficient: every selected rule requires observed dashboard fidelity.
|
|
3
|
+
function proven(cell, aspect) { return cell?.accepted === true && cell.dashboardVerified === true && cell[aspect + 'Fidelity'] === true; }
|
|
4
|
+
function selectOrderReferenceMapping(cells = require('../resources/rp-target-wix/domains/ecom/entities/order.json').importReferenceCanary?.cells || []) {
|
|
5
|
+
const byId = new Map((cells || []).map(cell => [cell.cell, cell]));
|
|
6
|
+
const baseline = byId.get(1), blockers = [];
|
|
7
|
+
if (!proven(baseline, 'shipping')) blockers.push('order-shipping-reference-unverified');
|
|
8
|
+
if (!proven(baseline, 'tax')) blockers.push('order-tax-reference-unverified');
|
|
9
|
+
if (blockers.length) return { verified: false, blockers, setupEdgeMode: 'task-complete' };
|
|
10
|
+
let carrier = true, code = true, taxGroup = true;
|
|
11
|
+
if (proven(byId.get(2), 'shipping')) carrier = code = false;
|
|
12
|
+
else if (proven(byId.get(8), 'shipping')) carrier = false;
|
|
13
|
+
else if (proven(byId.get(9), 'shipping')) code = false;
|
|
14
|
+
if (proven(byId.get(3), 'tax')) taxGroup = false;
|
|
15
|
+
if (!carrier && !code && !taxGroup && !(proven(byId.get(4), 'shipping') && proven(byId.get(4), 'tax'))) carrier = code = taxGroup = true;
|
|
16
|
+
const signatures = { 1: [true, true, true], 2: [false, false, true], 3: [true, true, false], 4: [false, false, false], 8: [false, true, true], 9: [true, false, true] };
|
|
17
|
+
let selected = [...byId.values()].find(cell => JSON.stringify(signatures[cell.cell] || cell.selectedReferences) === JSON.stringify([carrier, code, taxGroup]));
|
|
18
|
+
if (!selected || !proven(selected, 'shipping') || !proven(selected, 'tax')) return { verified: false, blockers: ['order-shipping-reference-unverified', 'order-tax-reference-unverified'], setupEdgeMode: 'task-complete', requiredCombination: [carrier, code, taxGroup] };
|
|
19
|
+
return { verified: true, carrier, code, taxGroup, selectedCell: selected.cell, blockers: [], setupEdgeMode: 'task-complete' };
|
|
20
|
+
}
|
|
21
|
+
function orderShippingReadiness(order, mapping = selectOrderReferenceMapping(), { logistics } = {}) {
|
|
22
|
+
const lines = order.shipping_lines || [];
|
|
23
|
+
if (!Array.isArray(lines) || lines.length > 1) return { deferred: true, reason: 'order-multiple-shipping-lines', severity: 'blocker' };
|
|
24
|
+
if (!lines.length && !(order.tax_lines || []).length) return { shippingInfo: undefined };
|
|
25
|
+
if (!mapping?.verified) return { deferred: true, reason: mapping?.blockers?.[0] || 'order-shipping-reference-unverified', severity: 'blocker' };
|
|
26
|
+
if (!lines.length) return { shippingInfo: undefined };
|
|
27
|
+
const line = lines[0];
|
|
28
|
+
return { shippingInfo: { title: line.method_title, cost: { price: { amount: String(line.total) } }, ...(logistics ? { logistics } : {}) }, requiredReferences: { carrier: mapping.carrier, code: mapping.code, taxGroup: mapping.taxGroup } };
|
|
29
|
+
}
|
|
30
|
+
module.exports = { selectOrderReferenceMapping, orderShippingReadiness };
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Every outcome and finding code the payments path can produce, in one frozen place.
|
|
4
|
+
//
|
|
5
|
+
// This exists because of a specific repeated failure: a writer gained an outcome, the report never
|
|
6
|
+
// gained a line for it, and a run could lose work while the approval read clean. It happened four
|
|
7
|
+
// times. The first fix was a hand-maintained list, which drifted. The second was a test that
|
|
8
|
+
// SCRAPED the writer source for `outcome: 'literal'`, which missed `invoice-number-only` because
|
|
9
|
+
// that one is produced by a ternary — a green test and a silently unreportable outcome, which is
|
|
10
|
+
// worse than the list it replaced.
|
|
11
|
+
//
|
|
12
|
+
// So: the codes live here, both sides import them, and neither can add one the other has not seen.
|
|
13
|
+
// A registry cannot be out of date with itself.
|
|
14
|
+
|
|
15
|
+
// Mutually exclusive per-order payment outcomes. Their sum must equal the discovered population,
|
|
16
|
+
// so a new reason belongs HERE rather than folded into an existing bucket.
|
|
17
|
+
const PAYMENT_OUTCOMES = Object.freeze([
|
|
18
|
+
'payment-written',
|
|
19
|
+
'payment-reconciled-existing',
|
|
20
|
+
'payment-not-written-no-amount',
|
|
21
|
+
'payment-not-written-no-paid-date',
|
|
22
|
+
'payment-not-written-multi-payment',
|
|
23
|
+
'payment-not-written-currency-mismatch',
|
|
24
|
+
'payment-reconciliation-ambiguous',
|
|
25
|
+
'payment-target-read-failed',
|
|
26
|
+
'payment-failed',
|
|
27
|
+
]);
|
|
28
|
+
|
|
29
|
+
// Outcomes a writer returns that are NOT the per-order payment partition: refund results, invoice
|
|
30
|
+
// results, and internal bookkeeping. Everything a writer can hand back must appear in one of the
|
|
31
|
+
// three lists, or the report has nowhere to put it.
|
|
32
|
+
const WRITER_OUTCOMES = Object.freeze([
|
|
33
|
+
'refund-written',
|
|
34
|
+
'refund-reconciled-existing',
|
|
35
|
+
'refund-without-payment',
|
|
36
|
+
'refund-still-settling',
|
|
37
|
+
'invoice-preserved',
|
|
38
|
+
'invoice-already-preserved',
|
|
39
|
+
'invoice-number-only',
|
|
40
|
+
'invoice-none-found',
|
|
41
|
+
'invoice-import-failed',
|
|
42
|
+
'invoice-import-not-ready',
|
|
43
|
+
'invoice-import-read-failed',
|
|
44
|
+
// The Media file is READY but the order patch failed; the file id rides back as
|
|
45
|
+
// pendingMediaFileId so the resume does not import a second copy.
|
|
46
|
+
'invoice-fields-write-failed',
|
|
47
|
+
'invoice-fields-not-provisioned',
|
|
48
|
+
'invoice-preservation-not-approved',
|
|
49
|
+
'invoice-preservation-declined',
|
|
50
|
+
'invoice-document-url-unsafe',
|
|
51
|
+
// The order-history composite's own outcomes. The ORDER stage has four; a stage that threw after
|
|
52
|
+
// the order existed is a named partial-failure outcome rather than an exception, so a resumed
|
|
53
|
+
// run reconciles the order and retries only what failed.
|
|
54
|
+
'order-imported',
|
|
55
|
+
'order-already-imported',
|
|
56
|
+
'order-import-failed',
|
|
57
|
+
'order-target-read-failed',
|
|
58
|
+
'refund-failed',
|
|
59
|
+
'invoice-failed',
|
|
60
|
+
// The buyer stage -- which member, if any, an imported order was attributed to.
|
|
61
|
+
// These PARTITION the order population (see BUYER_OUTCOMES); `buyer-not-resolved` is the
|
|
62
|
+
// composite's answer when no buyer was supplied.
|
|
63
|
+
'buyer-member-linked',
|
|
64
|
+
'buyer-guest',
|
|
65
|
+
'buyer-contact-only',
|
|
66
|
+
'buyer-member-not-imported',
|
|
67
|
+
'buyer-member-email-mismatch',
|
|
68
|
+
'buyer-not-resolved',
|
|
69
|
+
// Product category attachment (stores-category-attach.js). The identical orthogonal-axis shape
|
|
70
|
+
// as the order sub-stages above, but for products: a product the entity row already counts as
|
|
71
|
+
// `imported` can still carry zero of its categories, invisibly, unless this stage is tracked on
|
|
72
|
+
// its own. The failure this guards against: a 3-argument call site silently dropped
|
|
73
|
+
// every category-attach write's payload to `{ productId: undefined, categoryIds: undefined }`,
|
|
74
|
+
// every request almost certainly failed, and a wrapping `catch {}` hid it completely -- a
|
|
75
|
+
// completion report showed `product: reconciled, mismatch: false` while no product actually
|
|
76
|
+
// carried its categories live.
|
|
77
|
+
'category-attach-written',
|
|
78
|
+
'category-attach-reconciled-existing',
|
|
79
|
+
'category-attach-unverified',
|
|
80
|
+
'category-attach-failed',
|
|
81
|
+
// Internal: a target read that carried no mapped payment, and the pre-create verdict.
|
|
82
|
+
'target-read',
|
|
83
|
+
'create',
|
|
84
|
+
]);
|
|
85
|
+
|
|
86
|
+
// Nested findings — attached to a result rather than returned as its outcome. They count too: an
|
|
87
|
+
// over-length link is a loss the merchant should see even though the document was preserved.
|
|
88
|
+
const FINDING_CODES = Object.freeze([
|
|
89
|
+
'payment-status-conflict',
|
|
90
|
+
'paid-date-disagreement',
|
|
91
|
+
'paid-date-timezone-assumed',
|
|
92
|
+
'paid-date-unparseable',
|
|
93
|
+
'reference-without-paid-date',
|
|
94
|
+
'no-transaction-reference',
|
|
95
|
+
'ambiguous-transaction-reference',
|
|
96
|
+
'incompatible-gateway-metadata',
|
|
97
|
+
'unverified-gateway-key',
|
|
98
|
+
'reference-over-length',
|
|
99
|
+
'method-name-over-length',
|
|
100
|
+
'card-display-over-length',
|
|
101
|
+
'unclassified-method',
|
|
102
|
+
'unmapped-gateway-family',
|
|
103
|
+
'refund-weak-signal',
|
|
104
|
+
'refund-date-not-preserved',
|
|
105
|
+
'refund-line-detail-not-preserved',
|
|
106
|
+
'invoice-link-over-length',
|
|
107
|
+
'saved-cards-not-transferred',
|
|
108
|
+
'redacted-source-values',
|
|
109
|
+
// Order-history composite: the order's id came from a crosswalk row rather than being derived from the source
|
|
110
|
+
// id -- an order imported before deterministic ids, or by another tool. Counted so a store
|
|
111
|
+
// where every row says this is visibly an import from before deterministic ids rather than a derivation bug.
|
|
112
|
+
'order-id-from-crosswalk',
|
|
113
|
+
// Order-history composite: Import Order returned an id other than the one supplied. The target's id is adopted
|
|
114
|
+
// and persisted so re-runs converge; the finding says the identity model did not hold here.
|
|
115
|
+
'order-id-not-derived',
|
|
116
|
+
// Order-history composite: a crosswalk row pointed at an order the target no longer has (a cleared migration),
|
|
117
|
+
// so the order was imported again under the derived id and the row replaced.
|
|
118
|
+
'order-reimported-after-deletion',
|
|
119
|
+
// Order-history composite: a crosswalk row pointed at a missing order while the DERIVED-id order exists; the
|
|
120
|
+
// existing order was adopted and the row replaced, nothing imported.
|
|
121
|
+
'order-crosswalk-row-stale',
|
|
122
|
+
// Order-history composite: a remembered Media file came from a different source URL and was not resumed.
|
|
123
|
+
'invoice-pending-file-superseded',
|
|
124
|
+
// Buyer stage: crosswalk values that could not be used as ids.
|
|
125
|
+
'buyer-member-id-not-guid',
|
|
126
|
+
'buyer-contact-id-not-guid',
|
|
127
|
+
// Import Order refused an order on a contact field its rejection NAMED, so that
|
|
128
|
+
// field was removed and the order sent once more. The row names
|
|
129
|
+
// the field and the reason, never the value. Registering a code is what gives it a report line
|
|
130
|
+
// (REPORTABLE feeds ADDITIONAL_COUNTS), including a zero line on a clean run. The `order-`/
|
|
131
|
+
// `buyer-` prefixes are load-bearing: payments-report-lines-test.js scans writer source for
|
|
132
|
+
// exactly those prefixes, and a code it cannot see is a code nothing can count.
|
|
133
|
+
'order-contact-email-dropped',
|
|
134
|
+
'order-contact-phone-dropped',
|
|
135
|
+
// A WARNING, not a loss: a local check dislikes a source email or phone, which is
|
|
136
|
+
// kept and sent unchanged. Reported as its own line; never summed with the drops above.
|
|
137
|
+
'order-contact-email-suspect',
|
|
138
|
+
'order-contact-phone-suspect',
|
|
139
|
+
// The order carried an email `normalizeEmail` refused, so a named customer became
|
|
140
|
+
// an anonymous guest. A finding, NOT an outcome: the buyer partition is unchanged.
|
|
141
|
+
'buyer-email-unusable',
|
|
142
|
+
]);
|
|
143
|
+
|
|
144
|
+
// Mutually exclusive per-order buyer outcomes. When a report carries any of them, they
|
|
145
|
+
// must sum to the order population, like the payment partition.
|
|
146
|
+
const BUYER_OUTCOMES = Object.freeze([
|
|
147
|
+
'buyer-member-linked',
|
|
148
|
+
'buyer-guest',
|
|
149
|
+
'buyer-contact-only',
|
|
150
|
+
'buyer-member-not-imported',
|
|
151
|
+
'buyer-member-email-mismatch',
|
|
152
|
+
'buyer-not-resolved',
|
|
153
|
+
]);
|
|
154
|
+
|
|
155
|
+
// Actions the invoice preservation plan assigns per document. They are not outcomes, but they
|
|
156
|
+
// travel the same chain -- plan action becomes the writer's approval -- so registering them keeps
|
|
157
|
+
// producer and consumer on one vocabulary rather than two that happen to agree.
|
|
158
|
+
const PLAN_ACTIONS = Object.freeze([
|
|
159
|
+
'preserve',
|
|
160
|
+
'offer-preservation',
|
|
161
|
+
'reference-only',
|
|
162
|
+
'refused',
|
|
163
|
+
]);
|
|
164
|
+
|
|
165
|
+
// Causes attached to a partial-failure outcome (`errors.<stage>.cause`) by the order-history composite.
|
|
166
|
+
// Not outcomes and not counted, but handed back to callers, so they are registered here rather than
|
|
167
|
+
// living as stray literals the scan cannot account for.
|
|
168
|
+
const CAUSE_CODES = Object.freeze([
|
|
169
|
+
'order-not-imported',
|
|
170
|
+
'add-payment-returned-no-id',
|
|
171
|
+
]);
|
|
172
|
+
|
|
173
|
+
// What the report must carry a line for: every writer outcome that is not internal bookkeeping,
|
|
174
|
+
// plus every nested finding. Zero-valued lines are emitted, so absence of a line is a defect.
|
|
175
|
+
//
|
|
176
|
+
// The four category-attach-* codes are WRITER_OUTCOMES (so stageResiduals can validate them --
|
|
177
|
+
// see completion-report.js's STAGE_RESIDUAL_OUTCOMES), but they are deliberately listed here too:
|
|
178
|
+
// `REPORTABLE` feeds `rp-execution-policy/payments-report.js`'s ADDITIONAL_COUNTS, which is the
|
|
179
|
+
// PAYMENTS plan report -- a product-category outcome has no business appearing as a merchant-facing
|
|
180
|
+
// line on a document about payment providers and invoices. Product category attachment is reported
|
|
181
|
+
// through completion-report.js's stageResiduals mechanism directly (see
|
|
182
|
+
// collectCategoryAttachStageResiduals in stores-category-attach.js), which is the correct and only
|
|
183
|
+
// channel for it.
|
|
184
|
+
const INTERNAL_ONLY = Object.freeze(['target-read', 'create',
|
|
185
|
+
'category-attach-written', 'category-attach-reconciled-existing', 'category-attach-unverified', 'category-attach-failed']);
|
|
186
|
+
const REPORTABLE = Object.freeze([
|
|
187
|
+
...WRITER_OUTCOMES.filter((code) => !INTERNAL_ONLY.includes(code)),
|
|
188
|
+
...FINDING_CODES,
|
|
189
|
+
]);
|
|
190
|
+
|
|
191
|
+
module.exports = {
|
|
192
|
+
PAYMENT_OUTCOMES,
|
|
193
|
+
BUYER_OUTCOMES,
|
|
194
|
+
PLAN_ACTIONS,
|
|
195
|
+
CAUSE_CODES,
|
|
196
|
+
WRITER_OUTCOMES,
|
|
197
|
+
FINDING_CODES,
|
|
198
|
+
INTERNAL_ONLY,
|
|
199
|
+
REPORTABLE,
|
|
200
|
+
};
|