@wix/agent-skills 1.33.1 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/package.json +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 +13 -3
- 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/events-dashboard-navigation.md +81 -0
- 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-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-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Deterministic digest of a Claude Code session transcript.
|
|
4
|
+
//
|
|
5
|
+
// Pure function over JSONL already on disk: no model call, no network, no
|
|
6
|
+
// judgment. Given the same transcript files it must return byte-identical
|
|
7
|
+
// output, so every derived number here comes straight from fields Claude Code
|
|
8
|
+
// itself writes to the transcript — never from a guess or a heuristic that
|
|
9
|
+
// could drift between runs.
|
|
10
|
+
//
|
|
11
|
+
// Two loci write the identical JSONL shape: a local run
|
|
12
|
+
// under `~/.claude/projects/<escaped-cwd>/<sessionId>.jsonl`, and a sandbox
|
|
13
|
+
// run under `.persist/claude/projects/` inside the checkpoint (the sandbox
|
|
14
|
+
// symlinks `~/.claude` into the checkpointed tree). This module only ever
|
|
15
|
+
// reads a list of file paths, so it does not care which locus produced them.
|
|
16
|
+
|
|
17
|
+
const fs = require('node:fs');
|
|
18
|
+
const path = require('node:path');
|
|
19
|
+
|
|
20
|
+
// A repeated identical tool call is the signature of the unbounded-retry hang
|
|
21
|
+
// class — this is the threshold at which a streak counts as a
|
|
22
|
+
// loop rather than ordinary retry-with-backoff.
|
|
23
|
+
const RETRY_LOOP_MIN_REPEATS = 3;
|
|
24
|
+
// A gap this long between two timestamped transcript records is time the
|
|
25
|
+
// human or an external system held the run, not active agent work — mirrors
|
|
26
|
+
// the recorder's own IMPLICIT_WAIT_MIN_MS (telemetry-recorder.js) so the two
|
|
27
|
+
// idle notions agree on the same threshold.
|
|
28
|
+
const IDLE_GAP_MIN_MS = 60 * 1000;
|
|
29
|
+
const TOP_FAILING_MAX = 10;
|
|
30
|
+
const RETRY_LOOPS_MAX = 10;
|
|
31
|
+
|
|
32
|
+
function stableStringify(value) {
|
|
33
|
+
if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`;
|
|
34
|
+
if (value && typeof value === 'object') {
|
|
35
|
+
const keys = Object.keys(value).sort();
|
|
36
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(value[k])}`).join(',')}}`;
|
|
37
|
+
}
|
|
38
|
+
return JSON.stringify(value);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Claude Code's own project-directory escaping: every character outside
|
|
42
|
+
// [A-Za-z0-9] becomes `-` (verified against this repo's own
|
|
43
|
+
// ~/.claude/projects/<escaped-cwd> directory names).
|
|
44
|
+
function escapeCwd(cwd) {
|
|
45
|
+
return String(cwd).replace(/[^A-Za-z0-9]/g, '-');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function readSessionRecords(file) {
|
|
49
|
+
const raw = fs.readFileSync(file, 'utf8');
|
|
50
|
+
const records = [];
|
|
51
|
+
let malformed = 0;
|
|
52
|
+
for (const line of raw.split('\n')) {
|
|
53
|
+
if (line.trim() === '') continue;
|
|
54
|
+
try {
|
|
55
|
+
records.push(JSON.parse(line));
|
|
56
|
+
} catch {
|
|
57
|
+
malformed += 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { records, malformed };
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// First/last top-level `timestamp` and the `cwd` of a session file, without
|
|
64
|
+
// holding the whole parse result — used to decide which sibling sessions
|
|
65
|
+
// belong to this run before paying for the full digest pass.
|
|
66
|
+
function peekSession(file) {
|
|
67
|
+
const { records } = readSessionRecords(file);
|
|
68
|
+
let firstTs = null;
|
|
69
|
+
let lastTs = null;
|
|
70
|
+
let cwd = null;
|
|
71
|
+
for (const record of records) {
|
|
72
|
+
if (typeof record.timestamp !== 'string') continue;
|
|
73
|
+
const ms = Date.parse(record.timestamp);
|
|
74
|
+
if (!Number.isFinite(ms)) continue;
|
|
75
|
+
if (firstTs === null) firstTs = ms;
|
|
76
|
+
lastTs = ms;
|
|
77
|
+
if (cwd === null && typeof record.cwd === 'string') cwd = record.cwd;
|
|
78
|
+
}
|
|
79
|
+
return { firstTs, lastTs, cwd };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Every sibling `.jsonl` in the same project directory as `anchorTranscript`
|
|
83
|
+
// whose recorded `cwd` matches and whose time range overlaps
|
|
84
|
+
// [windowStartMs, windowEndMs]. A resumed run spans several sessionIds —
|
|
85
|
+
// this is the correlation the manifest then writes
|
|
86
|
+
// down once so a later reader never has to re-derive it.
|
|
87
|
+
function discoverRunSessions(anchorTranscript, { windowStartMs, windowEndMs }) {
|
|
88
|
+
const dir = path.dirname(anchorTranscript);
|
|
89
|
+
const anchor = peekSession(anchorTranscript);
|
|
90
|
+
const cwd = anchor.cwd;
|
|
91
|
+
const entries = fs.readdirSync(dir).filter((name) => name.endsWith('.jsonl'));
|
|
92
|
+
const included = [];
|
|
93
|
+
for (const name of entries) {
|
|
94
|
+
const file = path.join(dir, name);
|
|
95
|
+
const info = peekSession(file);
|
|
96
|
+
if (info.firstTs === null) continue;
|
|
97
|
+
if (cwd !== null && info.cwd !== null && info.cwd !== cwd) continue;
|
|
98
|
+
if (info.lastTs < windowStartMs || info.firstTs > windowEndMs) continue;
|
|
99
|
+
included.push({
|
|
100
|
+
sessionId: path.basename(name, '.jsonl'),
|
|
101
|
+
path: file,
|
|
102
|
+
firstTs: info.firstTs,
|
|
103
|
+
lastTs: info.lastTs,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
included.sort((a, b) => a.firstTs - b.firstTs);
|
|
107
|
+
if (included.length === 0) {
|
|
108
|
+
// The anchor transcript itself always counts, even if its own window
|
|
109
|
+
// check above (identical file) somehow fails a boundary comparison.
|
|
110
|
+
included.push({ sessionId: path.basename(anchorTranscript, '.jsonl'), path: anchorTranscript, ...anchor });
|
|
111
|
+
}
|
|
112
|
+
return included;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function toolUseBlocks(message) {
|
|
116
|
+
const content = message && message.content;
|
|
117
|
+
if (!Array.isArray(content)) return [];
|
|
118
|
+
return content.filter((c) => c && c.type === 'tool_use');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function toolResultBlocks(message) {
|
|
122
|
+
const content = message && message.content;
|
|
123
|
+
if (!Array.isArray(content)) return [];
|
|
124
|
+
return content.filter((c) => c && c.type === 'tool_result');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// A genuine human turn, as distinct from a tool result: both travel as
|
|
128
|
+
// `type: "user"` records in Claude Code's transcript (matching the
|
|
129
|
+
// Anthropic Messages API, where a tool_result is also role:"user"). A tool
|
|
130
|
+
// result carries `toolUseResult` and/or tool_result content blocks; a
|
|
131
|
+
// sidechain user record is the orchestrator's prompt *to* a subagent, not a
|
|
132
|
+
// person. Excluding both is what makes this the friction half of
|
|
133
|
+
// adoption-vs-friction rather than an inflated turn count.
|
|
134
|
+
function isHumanTurn(record) {
|
|
135
|
+
if (record.type !== 'user' || record.isSidechain || record.isMeta) return false;
|
|
136
|
+
if (record.toolUseResult !== undefined) return false;
|
|
137
|
+
if (toolResultBlocks(record.message).length > 0) return false;
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function topN(counts, n) {
|
|
142
|
+
return [...counts.entries()]
|
|
143
|
+
.map(([tool, count]) => ({ tool, n: count }))
|
|
144
|
+
.sort((a, b) => b.n - a.n || a.tool.localeCompare(b.tool))
|
|
145
|
+
.slice(0, n);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// The deterministic digest itself: counts, durations, tool
|
|
149
|
+
// names — never client data, never free text. `stageForTs(ms)` is an
|
|
150
|
+
// optional pure lookup (typically built from the telemetry journal's
|
|
151
|
+
// stage_start/stage_end intervals) used only to label which stage a retry
|
|
152
|
+
// loop or edit fell in; omitting it leaves `stage: null` rather than guessing.
|
|
153
|
+
function computeDigest(sessionFiles, { tailComplete = true, stageForTs = () => null } = {}) {
|
|
154
|
+
if (!Array.isArray(sessionFiles) || sessionFiles.length === 0) {
|
|
155
|
+
throw new Error('computeDigest requires at least one session file');
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
let ccVersion = null;
|
|
159
|
+
let transcriptTurns = 0;
|
|
160
|
+
let humanTurns = 0;
|
|
161
|
+
let agentTurns = 0;
|
|
162
|
+
let sidechainTurns = 0;
|
|
163
|
+
let inputTokens = 0;
|
|
164
|
+
let outputTokens = 0;
|
|
165
|
+
let cacheReadTokens = 0;
|
|
166
|
+
let cacheCreationTokens = 0;
|
|
167
|
+
let toolCalls = 0;
|
|
168
|
+
let toolFailures = 0;
|
|
169
|
+
const toolFailureCounts = new Map();
|
|
170
|
+
const toolNameById = new Map();
|
|
171
|
+
const editedFiles = new Set();
|
|
172
|
+
let hookBlocks = 0;
|
|
173
|
+
let hookErrors = 0;
|
|
174
|
+
const retryLoops = [];
|
|
175
|
+
const timestampsMs = [];
|
|
176
|
+
|
|
177
|
+
let streakKey = null;
|
|
178
|
+
let streakTool = null;
|
|
179
|
+
let streakLen = 0;
|
|
180
|
+
let streakStartTs = null;
|
|
181
|
+
const flushStreak = () => {
|
|
182
|
+
if (streakLen >= RETRY_LOOP_MIN_REPEATS) {
|
|
183
|
+
retryLoops.push({ tool: streakTool, repeats: streakLen, stage: stageForTs(streakStartTs) });
|
|
184
|
+
}
|
|
185
|
+
streakKey = null;
|
|
186
|
+
streakTool = null;
|
|
187
|
+
streakLen = 0;
|
|
188
|
+
streakStartTs = null;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
for (const session of [...sessionFiles].sort((a, b) => (a.firstTs || 0) - (b.firstTs || 0))) {
|
|
192
|
+
const { records } = readSessionRecords(session.path);
|
|
193
|
+
for (const record of records) {
|
|
194
|
+
if (typeof record.version === 'string') ccVersion = record.version;
|
|
195
|
+
const tsMs = typeof record.timestamp === 'string' ? Date.parse(record.timestamp) : NaN;
|
|
196
|
+
if (Number.isFinite(tsMs)) timestampsMs.push(tsMs);
|
|
197
|
+
|
|
198
|
+
if (record.type === 'assistant') {
|
|
199
|
+
transcriptTurns += 1;
|
|
200
|
+
if (record.isSidechain) sidechainTurns += 1;
|
|
201
|
+
else agentTurns += 1;
|
|
202
|
+
const usage = record.message && record.message.usage;
|
|
203
|
+
if (usage) {
|
|
204
|
+
inputTokens += usage.input_tokens || 0;
|
|
205
|
+
outputTokens += usage.output_tokens || 0;
|
|
206
|
+
cacheReadTokens += usage.cache_read_input_tokens || 0;
|
|
207
|
+
cacheCreationTokens += usage.cache_creation_input_tokens || 0;
|
|
208
|
+
}
|
|
209
|
+
for (const block of toolUseBlocks(record.message)) {
|
|
210
|
+
toolNameById.set(block.id, block.name);
|
|
211
|
+
toolCalls += 1;
|
|
212
|
+
const key = `${block.name}:${stableStringify(block.input)}`;
|
|
213
|
+
if (key === streakKey) {
|
|
214
|
+
streakLen += 1;
|
|
215
|
+
} else {
|
|
216
|
+
flushStreak();
|
|
217
|
+
streakKey = key;
|
|
218
|
+
streakTool = block.name;
|
|
219
|
+
streakLen = 1;
|
|
220
|
+
streakStartTs = Number.isFinite(tsMs) ? tsMs : streakStartTs;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (record.type === 'user') {
|
|
227
|
+
if (isHumanTurn(record)) {
|
|
228
|
+
transcriptTurns += 1;
|
|
229
|
+
humanTurns += 1;
|
|
230
|
+
}
|
|
231
|
+
for (const result of toolResultBlocks(record.message)) {
|
|
232
|
+
const name = toolNameById.get(result.tool_use_id) || 'unknown';
|
|
233
|
+
if (result.is_error) {
|
|
234
|
+
toolFailures += 1;
|
|
235
|
+
toolFailureCounts.set(name, (toolFailureCounts.get(name) || 0) + 1);
|
|
236
|
+
// A tool call whose result is an error breaks any retry streak it
|
|
237
|
+
// was part of only if the NEXT call changes shape; a genuine retry
|
|
238
|
+
// loop is agent-driven (repeated tool_use), so failures are
|
|
239
|
+
// counted but do not themselves reset the streak tracker above.
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (record.type === 'system') {
|
|
246
|
+
if (Array.isArray(record.hookErrors)) hookErrors += record.hookErrors.length;
|
|
247
|
+
if (record.preventedContinuation === true) hookBlocks += 1;
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (record.type === 'file-history-snapshot' && record.isSnapshotUpdate === true) {
|
|
252
|
+
const backups = record.snapshot && record.snapshot.trackedFileBackups;
|
|
253
|
+
if (backups && typeof backups === 'object') {
|
|
254
|
+
for (const filePath of Object.keys(backups)) editedFiles.add(filePath);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
flushStreak();
|
|
260
|
+
|
|
261
|
+
timestampsMs.sort((a, b) => a - b);
|
|
262
|
+
const wallMs = timestampsMs.length > 1 ? timestampsMs[timestampsMs.length - 1] - timestampsMs[0] : 0;
|
|
263
|
+
let idleMs = 0;
|
|
264
|
+
let longestGapMs = 0;
|
|
265
|
+
for (let i = 1; i < timestampsMs.length; i += 1) {
|
|
266
|
+
const gap = timestampsMs[i] - timestampsMs[i - 1];
|
|
267
|
+
if (gap > longestGapMs) longestGapMs = gap;
|
|
268
|
+
if (gap >= IDLE_GAP_MIN_MS) idleMs += gap;
|
|
269
|
+
}
|
|
270
|
+
const activeMs = Math.max(0, wallMs - idleMs);
|
|
271
|
+
|
|
272
|
+
retryLoops.sort((a, b) => b.repeats - a.repeats);
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
source: {
|
|
276
|
+
sessions: sessionFiles.length,
|
|
277
|
+
transcript_turns: transcriptTurns,
|
|
278
|
+
cc_version: ccVersion,
|
|
279
|
+
tail_complete: tailComplete,
|
|
280
|
+
},
|
|
281
|
+
cost: {
|
|
282
|
+
input_tokens: inputTokens,
|
|
283
|
+
output_tokens: outputTokens,
|
|
284
|
+
cache_read_input_tokens: cacheReadTokens,
|
|
285
|
+
cache_creation_input_tokens: cacheCreationTokens,
|
|
286
|
+
},
|
|
287
|
+
interaction: {
|
|
288
|
+
human_turns: humanTurns,
|
|
289
|
+
agent_turns: agentTurns,
|
|
290
|
+
sidechain_turns: sidechainTurns,
|
|
291
|
+
},
|
|
292
|
+
time: {
|
|
293
|
+
wall_ms: wallMs,
|
|
294
|
+
active_ms: activeMs,
|
|
295
|
+
idle_ms: idleMs,
|
|
296
|
+
longest_gap_ms: longestGapMs,
|
|
297
|
+
},
|
|
298
|
+
tools: {
|
|
299
|
+
calls: toolCalls,
|
|
300
|
+
failures: toolFailures,
|
|
301
|
+
top_failing: topN(toolFailureCounts, TOP_FAILING_MAX),
|
|
302
|
+
},
|
|
303
|
+
signals: {
|
|
304
|
+
retry_loops: retryLoops.slice(0, RETRY_LOOPS_MAX),
|
|
305
|
+
hook_blocks: hookBlocks,
|
|
306
|
+
hook_errors: hookErrors,
|
|
307
|
+
files_edited_mid_run: editedFiles.size,
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
module.exports = {
|
|
313
|
+
RETRY_LOOP_MIN_REPEATS,
|
|
314
|
+
IDLE_GAP_MIN_MS,
|
|
315
|
+
escapeCwd,
|
|
316
|
+
discoverRunSessions,
|
|
317
|
+
computeDigest,
|
|
318
|
+
};
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
//
|
|
10
10
|
// TRAP this deliberately handles: a bulk write logs ONE audit row PER ITEM, each carrying the
|
|
11
11
|
// BATCH's total latency. Summing `latencyMs` across rows therefore multiplies one call's latency by
|
|
12
|
-
// its item count —
|
|
13
|
-
//
|
|
12
|
+
// its item count — the "API time" total can come out many times longer than the stage itself
|
|
13
|
+
// lasted. Rows are collapsed per distinct
|
|
14
14
|
// (runId, endpoint, batch, latencyMs) so a batch counts once, while genuinely separate calls
|
|
15
15
|
// (category creates, link calls) each count individually.
|
|
16
16
|
|
|
@@ -14,17 +14,30 @@
|
|
|
14
14
|
// node scripts/rp-telemetry.js meter '{"model_ms":42000,"output_tokens":18000}'
|
|
15
15
|
// node scripts/rp-telemetry.js wait start [--halt <subtype> --skill <s> [--what '<text>']]
|
|
16
16
|
// node scripts/rp-telemetry.js wait end
|
|
17
|
+
// node scripts/rp-telemetry.js digest --transcript <path to CC session jsonl> [--offline]
|
|
17
18
|
// node scripts/rp-telemetry.js finalize '<rollup-json>'
|
|
18
19
|
// node scripts/rp-telemetry.js rebuild [--attempt <n>] [--push]
|
|
19
20
|
// node scripts/rp-telemetry.js status
|
|
20
21
|
//
|
|
22
|
+
// `digest`: call it just before `finalize`. It parses the Claude
|
|
23
|
+
// Code session transcript that produced this run — no model, no network, so a
|
|
24
|
+
// failure here must never abort the migration (`|| true` it). Pass `--offline`
|
|
25
|
+
// when re-running it later against a checkpointed or local transcript to
|
|
26
|
+
// produce the digest for a run that died before ever calling it; omitted, the
|
|
27
|
+
// digest is the in-run call and necessarily misses the final few turns it is
|
|
28
|
+
// itself part of (`source.tail_complete: false`). Also copies this run's
|
|
29
|
+
// sessions into telemetry/transcripts/<sessionId>.jsonl.gz + manifest.json.
|
|
30
|
+
//
|
|
21
31
|
// Output: one JSON object on stdout. {"ok":true,...} on success; on rejection
|
|
22
32
|
// {"ok":false,"errors":[...],"hint":...} with exit code 1 — fix and retry.
|
|
23
33
|
|
|
24
34
|
const fs = require('node:fs');
|
|
35
|
+
const path = require('node:path');
|
|
36
|
+
const zlib = require('node:zlib');
|
|
25
37
|
const recorder = require('../lib/telemetry-recorder.js');
|
|
38
|
+
const transcriptDigestLib = require('../lib/transcript-digest.js');
|
|
26
39
|
|
|
27
|
-
const VALUE_FLAGS = new Set(['--project', '--outcome', '--halt', '--skill', '--what', '--attempt', '--stage']);
|
|
40
|
+
const VALUE_FLAGS = new Set(['--project', '--outcome', '--halt', '--skill', '--what', '--attempt', '--stage', '--transcript']);
|
|
28
41
|
// Meter measurements are accepted as kebab-case flags so a shell script can report its own timing
|
|
29
42
|
// without composing JSON: --api-ms 1234 --api-calls 73.
|
|
30
43
|
const METER_FLAGS = new Map(
|
|
@@ -32,12 +45,36 @@ const METER_FLAGS = new Map(
|
|
|
32
45
|
.map((key) => [`--${key.replace(/_/g, '-')}`, key]),
|
|
33
46
|
);
|
|
34
47
|
|
|
48
|
+
const SOURCE_READ_FLAGS = new Map(
|
|
49
|
+
['discovery_queries', 'scoped_queries', 'tier_refusals', 'redacted_values']
|
|
50
|
+
.map((key) => [`--${key.replace(/_/g, '-')}`, key]),
|
|
51
|
+
);
|
|
52
|
+
// Repeatable, because a run touches several tables: --discovery-table postmeta --discovery-table wc_orders_meta
|
|
53
|
+
const SOURCE_READ_LIST_FLAGS = new Map([['--discovery-table', 'discovery_tables'], ['--scoped-table', 'scoped_tables']]);
|
|
54
|
+
|
|
35
55
|
function parseArgs(argv) {
|
|
36
56
|
const positional = [];
|
|
37
57
|
const flags = {};
|
|
38
58
|
const meter = {};
|
|
59
|
+
const sourceRead = {};
|
|
39
60
|
for (let i = 0; i < argv.length; i += 1) {
|
|
40
61
|
const arg = argv[i];
|
|
62
|
+
if (SOURCE_READ_FLAGS.has(arg)) {
|
|
63
|
+
const raw = argv[i + 1];
|
|
64
|
+
const value = Number(raw);
|
|
65
|
+
if (!Number.isFinite(value)) fail([`${arg} expects a number (got: ${raw === undefined ? '(none)' : raw})`]);
|
|
66
|
+
sourceRead[SOURCE_READ_FLAGS.get(arg)] = value;
|
|
67
|
+
i += 1;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (SOURCE_READ_LIST_FLAGS.has(arg)) {
|
|
71
|
+
const key = SOURCE_READ_LIST_FLAGS.get(arg);
|
|
72
|
+
const raw = argv[i + 1];
|
|
73
|
+
if (raw === undefined) fail([`${arg} expects a bare table name`]);
|
|
74
|
+
sourceRead[key] = [...(sourceRead[key] || []), raw];
|
|
75
|
+
i += 1;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
41
78
|
if (VALUE_FLAGS.has(arg)) {
|
|
42
79
|
flags[arg.slice(2)] = argv[i + 1];
|
|
43
80
|
i += 1;
|
|
@@ -49,13 +86,15 @@ function parseArgs(argv) {
|
|
|
49
86
|
i += 1;
|
|
50
87
|
} else if (arg === '--push') {
|
|
51
88
|
flags.push = true;
|
|
89
|
+
} else if (arg === '--offline') {
|
|
90
|
+
flags.offline = true;
|
|
52
91
|
} else if (arg.startsWith('--')) {
|
|
53
92
|
fail([`unknown flag: ${arg}`]);
|
|
54
93
|
} else {
|
|
55
94
|
positional.push(arg);
|
|
56
95
|
}
|
|
57
96
|
}
|
|
58
|
-
return { positional, flags, meter };
|
|
97
|
+
return { positional, flags, meter, sourceRead };
|
|
59
98
|
}
|
|
60
99
|
|
|
61
100
|
function fail(errors, hint) {
|
|
@@ -73,8 +112,58 @@ function parseJsonArg(raw, label) {
|
|
|
73
112
|
return undefined;
|
|
74
113
|
}
|
|
75
114
|
|
|
115
|
+
// Locates a `stage` for a timestamp from this run's own journal, so a retry
|
|
116
|
+
// loop or hook block in the digest can be attributed to the stage it fell in
|
|
117
|
+
// without the pure parser having to know anything about telemetry stages.
|
|
118
|
+
function stageIntervalsFor(state, nowMs) {
|
|
119
|
+
const intervals = state.entries.map((e) => ({ stage: e.stage, start: Date.parse(e.start), end: Date.parse(e.end) }));
|
|
120
|
+
if (state.openStage) {
|
|
121
|
+
intervals.push({ stage: state.openStage, start: Date.parse(state.openStageStart), end: nowMs });
|
|
122
|
+
}
|
|
123
|
+
return (ms) => {
|
|
124
|
+
if (!Number.isFinite(ms)) return null;
|
|
125
|
+
const hit = intervals.find((iv) => ms >= iv.start && ms <= iv.end);
|
|
126
|
+
return hit ? hit.stage : null;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
async function runDigest(projectDir, transcriptPath, { offline }) {
|
|
131
|
+
const journal = recorder.readJournal(projectDir);
|
|
132
|
+
if (!journal) fail(['no active telemetry run in this project'], "call `rp-telemetry.js start` first");
|
|
133
|
+
const state = recorder.replay(journal.records);
|
|
134
|
+
if (!state.runStart) fail(['telemetry journal is corrupt: missing run-start record']);
|
|
135
|
+
|
|
136
|
+
const windowStartMs = Date.parse(state.runStart.ts);
|
|
137
|
+
const nowMs = Date.now();
|
|
138
|
+
const sessions = transcriptDigestLib.discoverRunSessions(transcriptPath, { windowStartMs, windowEndMs: nowMs });
|
|
139
|
+
const digest = transcriptDigestLib.computeDigest(sessions, {
|
|
140
|
+
tailComplete: offline === true,
|
|
141
|
+
stageForTs: stageIntervalsFor(state, nowMs),
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Copy, never move — Claude Code owns the original.
|
|
145
|
+
const transcriptsDir = path.join(projectDir, 'telemetry', 'transcripts');
|
|
146
|
+
fs.mkdirSync(transcriptsDir, { recursive: true });
|
|
147
|
+
const manifestPath = path.join(transcriptsDir, 'manifest.json');
|
|
148
|
+
const manifest = fs.existsSync(manifestPath) ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) : {};
|
|
149
|
+
const runId = state.runStart.run_id;
|
|
150
|
+
const sessionIds = new Set(manifest[runId] || []);
|
|
151
|
+
for (const session of sessions) {
|
|
152
|
+
const dest = path.join(transcriptsDir, `${session.sessionId}.jsonl.gz`);
|
|
153
|
+
if (!fs.existsSync(dest)) fs.writeFileSync(dest, zlib.gzipSync(fs.readFileSync(session.path)));
|
|
154
|
+
sessionIds.add(session.sessionId);
|
|
155
|
+
}
|
|
156
|
+
manifest[runId] = [...sessionIds];
|
|
157
|
+
const manifestTemp = `${manifestPath}.${process.pid}.tmp`;
|
|
158
|
+
fs.writeFileSync(manifestTemp, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
|
|
159
|
+
fs.renameSync(manifestTemp, manifestPath);
|
|
160
|
+
|
|
161
|
+
const recorded = await recorder.transcriptDigest(projectDir, digest);
|
|
162
|
+
return { ...recorded, sessions_included: sessions.length, tail_complete: digest.source.tail_complete };
|
|
163
|
+
}
|
|
164
|
+
|
|
76
165
|
async function main() {
|
|
77
|
-
const { positional, flags, meter } = parseArgs(process.argv.slice(2));
|
|
166
|
+
const { positional, flags, meter, sourceRead } = parseArgs(process.argv.slice(2));
|
|
78
167
|
const [command, ...rest] = positional;
|
|
79
168
|
const projectDir = flags.project || process.cwd();
|
|
80
169
|
if (!fs.existsSync(projectDir) || !fs.statSync(projectDir).isDirectory()) {
|
|
@@ -104,6 +193,14 @@ async function main() {
|
|
|
104
193
|
result = recorder.meter(projectDir, payload);
|
|
105
194
|
break;
|
|
106
195
|
}
|
|
196
|
+
case 'source-read': {
|
|
197
|
+
// Counts key/value source reads; accumulates across calls, so a reader can
|
|
198
|
+
// report per batch. Table lists come as repeated --discovery-table/--scoped-table flags.
|
|
199
|
+
const fromJson = rest[0] === undefined ? {} : parseJsonArg(rest[0], 'source-read');
|
|
200
|
+
const payload = { ...fromJson, ...sourceRead };
|
|
201
|
+
result = recorder.sourceRead(projectDir, payload);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
107
204
|
case 'wait':
|
|
108
205
|
result = await recorder.wait(projectDir, rest[0], {
|
|
109
206
|
haltSubtype: flags.halt,
|
|
@@ -111,6 +208,11 @@ async function main() {
|
|
|
111
208
|
what: flags.what,
|
|
112
209
|
});
|
|
113
210
|
break;
|
|
211
|
+
case 'digest':
|
|
212
|
+
if (!flags.transcript) fail(['--transcript <path to Claude Code session jsonl> is required']);
|
|
213
|
+
if (!fs.existsSync(flags.transcript)) fail([`transcript not found: ${flags.transcript}`]);
|
|
214
|
+
result = await runDigest(projectDir, flags.transcript, { offline: flags.offline === true });
|
|
215
|
+
break;
|
|
114
216
|
case 'finalize':
|
|
115
217
|
result = await recorder.finalize(projectDir, parseJsonArg(rest[0], 'rollup'));
|
|
116
218
|
break;
|
|
@@ -126,7 +228,7 @@ async function main() {
|
|
|
126
228
|
default:
|
|
127
229
|
fail(
|
|
128
230
|
[`unknown command: ${command || '(none)'}`],
|
|
129
|
-
'commands: start, dims, record, stage start|end, meter, wait start|end, finalize, rebuild, status',
|
|
231
|
+
'commands: start, dims, record, stage start|end, meter, wait start|end, digest, finalize, rebuild, status',
|
|
130
232
|
);
|
|
131
233
|
return;
|
|
132
234
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rp-website-continuation
|
|
3
|
+
description: >-
|
|
4
|
+
Continues a website-mode migration from the validated backend handoff through frontend
|
|
5
|
+
build, post-build gap analysis/fixing, release, and a durable frontend completion receipt.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# rp-website-continuation
|
|
9
|
+
|
|
10
|
+
Use this resource only when the orchestration router returns
|
|
11
|
+
`nextResource: resources/rp-website-continuation/`.
|
|
12
|
+
|
|
13
|
+
## Contract
|
|
14
|
+
|
|
15
|
+
**Editor destinations.** When `targetSiteType` is `studio` or `harmony`, there is no
|
|
16
|
+
supported automatic website migration: never invoke `wix-headless-replatform`, never scaffold
|
|
17
|
+
`frontend/`, and never publish the site. The router reports
|
|
18
|
+
`editor_website_handoff_outstanding`; keep the website obligation outstanding as the
|
|
19
|
+
completion report's `editor_website_unfinished` / `editor_publication_outstanding` operator
|
|
20
|
+
actions (site owner/designer, then Cutover Operator) and do not claim combined completion until
|
|
21
|
+
a valid released `website/completion.json` exists for the bound site.
|
|
22
|
+
|
|
23
|
+
For `deliveryMode=website`, this is a frontend-only run — but it still needs a destination,
|
|
24
|
+
and that destination is still `rp-destination`'s job, not this skill's or
|
|
25
|
+
`wix-headless-replatform`'s. Do not let `wix-headless-replatform` scaffold its own site here:
|
|
26
|
+
its only safeguard against a duplicate is "does a local folder already have a
|
|
27
|
+
`package.json`," which is not the same account-confirmation gate, `WIX_SITE_ID`
|
|
28
|
+
persistence, and dashboard-URL report that every other delivery mode gets.
|
|
29
|
+
|
|
30
|
+
1. Resolve the destination via `rp-destination` first, scaffolding into
|
|
31
|
+
`<projectDir>/frontend` with `--site-template blank` (there is no backend catalog to
|
|
32
|
+
provision for, and this matches `wix-headless-replatform`'s own default template choice
|
|
33
|
+
for the home-scope clone this invocation performs). Persist `WIX_SITE_ID` in
|
|
34
|
+
`config/wix.env` and report the dashboard URL, same as any other mode.
|
|
35
|
+
2. Then invoke `wix-headless-replatform` with the source URL and
|
|
36
|
+
`--out <projectDir>/frontend`; do not run backend discovery, mapping, setup, or import.
|
|
37
|
+
Because `<projectDir>/frontend` already contains a valid scaffold from step 1,
|
|
38
|
+
`wix-headless-replatform`'s own standalone reuse check finds it and continues from
|
|
39
|
+
there instead of scaffolding a second site.
|
|
40
|
+
|
|
41
|
+
Finish its build and gap loop. Only when the user explicitly requested facelift at intake,
|
|
42
|
+
run the separate post-clone UI/UX Pro Max facelift and acceptance review; otherwise do not
|
|
43
|
+
load that stage. Then release and write `website/completion.json` with
|
|
44
|
+
`finalize-migration-website.mjs --project-dir <projectDir> --out <projectDir>/frontend
|
|
45
|
+
--release-url <public-url>`.
|
|
46
|
+
|
|
47
|
+
`execution/completion-report.json` means backend import accounting. It is not the terminal
|
|
48
|
+
result of a `deliveryMode=management_and_website` migration.
|
|
49
|
+
|
|
50
|
+
**Two different documents, two different jobs.** `website/handoff.json` is the
|
|
51
|
+
backend-to-frontend package: a website build needs its bindings contract *before* it starts, so
|
|
52
|
+
it keeps being produced when it is, from the plan. It is **not** the run's account of the
|
|
53
|
+
migration. That is `execution/review/migration-handoff.md`, generated after the last write from
|
|
54
|
+
`execution/completion-report.json` — never hand `handoff-summary.md` to anyone as the account of
|
|
55
|
+
what the migration did.
|
|
56
|
+
|
|
57
|
+
The freshness check composes with this: once the backend import writes its completion report,
|
|
58
|
+
`liveImportSummary` or `recoveryLog`, the recorded fingerprint moves and the router returns
|
|
59
|
+
`stale_website_handoff`, forcing the package to be regenerated from the finished run before the
|
|
60
|
+
frontend build consumes it.
|
|
61
|
+
|
|
62
|
+
When the route reason is `missing_website_handoff` or `stale_website_handoff`, first run
|
|
63
|
+
`node skills/wix-replatform/scripts/website-handoff-generate.js <projectDir>` and route
|
|
64
|
+
again. Otherwise load the current `website/handoff.json`, then invoke
|
|
65
|
+
`wix-headless-replatform` in migration mode via its `--handoff` flag:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node scripts/site-clone.mjs <source-url> --handoff <projectDir>/website/handoff.json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**`--handoff` is required here, not optional.** It is the only thing that puts
|
|
72
|
+
`wix-headless-replatform` into migration-phase mode; without it the skill falls back to
|
|
73
|
+
standalone mode and unconditionally scaffolds and executes a new `@wix/new headless` call —
|
|
74
|
+
a second, orphaned site, which is exactly the failure "never create a second destination
|
|
75
|
+
site" (see `rp-destination`) exists to prevent. Continue its actual build, post-build gap
|
|
76
|
+
analysis, bounded fix loop, and release sequence. Do not stop after implementation or a
|
|
77
|
+
successful build.
|
|
78
|
+
|
|
79
|
+
The frontend skill must atomically write `website/completion.json` before this resource can
|
|
80
|
+
finish. A successful receipt has the current `handoffFingerprint`, completed screenshot
|
|
81
|
+
review, zero unresolved critical/high gaps, and a released (or explicitly not-applicable)
|
|
82
|
+
release state.
|
|
83
|
+
|
|
84
|
+
If a genuine blocker remains after required 1-click recovery/escalation retries, persist a
|
|
85
|
+
`status: "blocked"` receipt with the blocker code, evidence, attempted recovery, owner,
|
|
86
|
+
and exact unblock action. Then route again. Do not describe a pending storefront as a
|
|
87
|
+
completed migration.
|
|
88
|
+
|
|
89
|
+
After the gap loop has passed and the storefront is released, write the receipt with:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
node skills/wix-headless-replatform/scripts/finalize-migration-website.mjs \
|
|
93
|
+
--handoff <projectDir>/website/handoff.json --release-url <public-url>
|
|
94
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
const {
|
|
6
|
+
buildReconciliation
|
|
7
|
+
} = require('../lib/census-reconciliation.js');
|
|
8
|
+
async function main(args = process.argv.slice(2)) {
|
|
9
|
+
if (args.length !== 2 || args[0] !== 'build') throw new Error('Usage: census-reconciliation.js build <projectDir>');
|
|
10
|
+
const result = await buildReconciliation(path.resolve(args[1]));
|
|
11
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
12
|
+
if (result.errors.length) process.exitCode = 1;
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
if (require.main === module) main().catch(error => {
|
|
16
|
+
process.stderr.write(`${JSON.stringify({
|
|
17
|
+
ok: false,
|
|
18
|
+
code: error.code || 'census_reconciliation_failed',
|
|
19
|
+
message: error.message
|
|
20
|
+
})}\n`);
|
|
21
|
+
process.exitCode = 1;
|
|
22
|
+
});
|
|
23
|
+
module.exports = {
|
|
24
|
+
main
|
|
25
|
+
};
|