p-dev-harness 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -5
- package/dist/github/client.d.ts +88 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +98 -7
- package/dist/github/client.js.map +1 -1
- package/dist/github/rate-limit-metadata.d.ts +16 -0
- package/dist/github/rate-limit-metadata.d.ts.map +1 -0
- package/dist/github/rate-limit-metadata.js +73 -0
- package/dist/github/rate-limit-metadata.js.map +1 -0
- package/dist/p-dev/git-object-plumbing.d.ts +19 -0
- package/dist/p-dev/git-object-plumbing.d.ts.map +1 -0
- package/dist/p-dev/git-object-plumbing.js +196 -0
- package/dist/p-dev/git-object-plumbing.js.map +1 -0
- package/dist/p-dev/package-paths.d.ts +1 -0
- package/dist/p-dev/package-paths.d.ts.map +1 -1
- package/dist/p-dev/package-paths.js +3 -0
- package/dist/p-dev/package-paths.js.map +1 -1
- package/dist/p-dev/workspace-snapshot-digest.d.ts +12 -0
- package/dist/p-dev/workspace-snapshot-digest.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-digest.js +34 -0
- package/dist/p-dev/workspace-snapshot-digest.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-generator.d.ts +15 -0
- package/dist/p-dev/workspace-snapshot-generator.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-generator.js +69 -0
- package/dist/p-dev/workspace-snapshot-generator.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-git.d.ts +26 -0
- package/dist/p-dev/workspace-snapshot-git.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-git.js +151 -0
- package/dist/p-dev/workspace-snapshot-git.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-manifest.d.ts +18 -0
- package/dist/p-dev/workspace-snapshot-manifest.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-manifest.js +292 -0
- package/dist/p-dev/workspace-snapshot-manifest.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-policy.d.ts +16 -0
- package/dist/p-dev/workspace-snapshot-policy.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-policy.js +168 -0
- package/dist/p-dev/workspace-snapshot-policy.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-types.d.ts +54 -0
- package/dist/p-dev/workspace-snapshot-types.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-types.js +7 -0
- package/dist/p-dev/workspace-snapshot-types.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-validation.d.ts +17 -0
- package/dist/p-dev/workspace-snapshot-validation.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-validation.js +115 -0
- package/dist/p-dev/workspace-snapshot-validation.js.map +1 -0
- package/dist/setup/github-remote-provider.d.ts +129 -0
- package/dist/setup/github-remote-provider.d.ts.map +1 -1
- package/dist/setup/github-remote-provider.js +214 -3
- package/dist/setup/github-remote-provider.js.map +1 -1
- package/dist/setup/github-remote-setup-live.d.ts +46 -1
- package/dist/setup/github-remote-setup-live.d.ts.map +1 -1
- package/dist/setup/github-remote-setup-live.js +121 -4
- package/dist/setup/github-remote-setup-live.js.map +1 -1
- package/dist/setup/github-secret-encryption.d.ts.map +1 -1
- package/dist/setup/github-secret-encryption.js +3 -1
- package/dist/setup/github-secret-encryption.js.map +1 -1
- package/dist/setup/github-upload-rate-limit-gate.d.ts +17 -0
- package/dist/setup/github-upload-rate-limit-gate.d.ts.map +1 -0
- package/dist/setup/github-upload-rate-limit-gate.js +42 -0
- package/dist/setup/github-upload-rate-limit-gate.js.map +1 -0
- package/dist/setup/harness-managed-repo-marker.d.ts +28 -1
- package/dist/setup/harness-managed-repo-marker.d.ts.map +1 -1
- package/dist/setup/harness-managed-repo-marker.js +165 -2
- package/dist/setup/harness-managed-repo-marker.js.map +1 -1
- package/dist/setup/harness-provisioning-context.d.ts +14 -12
- package/dist/setup/harness-provisioning-context.d.ts.map +1 -1
- package/dist/setup/harness-provisioning-context.js +54 -42
- package/dist/setup/harness-provisioning-context.js.map +1 -1
- package/dist/setup/harness-provisioning-pending-state.d.ts +33 -22
- package/dist/setup/harness-provisioning-pending-state.d.ts.map +1 -1
- package/dist/setup/harness-provisioning-pending-state.js +49 -30
- package/dist/setup/harness-provisioning-pending-state.js.map +1 -1
- package/dist/setup/harness-repo-provisioning.d.ts +10 -5
- package/dist/setup/harness-repo-provisioning.d.ts.map +1 -1
- package/dist/setup/harness-repo-provisioning.js +403 -335
- package/dist/setup/harness-repo-provisioning.js.map +1 -1
- package/dist/setup/harness-snapshot-provisioning-helpers.d.ts +21 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.d.ts.map +1 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.js +55 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.js.map +1 -0
- package/dist/setup/harness-snapshot-provisioning.d.ts +111 -0
- package/dist/setup/harness-snapshot-provisioning.d.ts.map +1 -0
- package/dist/setup/harness-snapshot-provisioning.js +684 -0
- package/dist/setup/harness-snapshot-provisioning.js.map +1 -0
- package/dist/setup/harness-workspace-snapshot-loader.d.ts +15 -0
- package/dist/setup/harness-workspace-snapshot-loader.d.ts.map +1 -0
- package/dist/setup/harness-workspace-snapshot-loader.js +80 -0
- package/dist/setup/harness-workspace-snapshot-loader.js.map +1 -0
- package/dist/setup/mock-git-repository-store.d.ts +43 -0
- package/dist/setup/mock-git-repository-store.d.ts.map +1 -0
- package/dist/setup/mock-git-repository-store.js +232 -0
- package/dist/setup/mock-git-repository-store.js.map +1 -0
- package/gui/.next/BUILD_ID +1 -1
- package/gui/.next/app-build-manifest.json +49 -49
- package/gui/.next/app-path-routes-manifest.json +15 -15
- package/gui/.next/build-manifest.json +2 -2
- package/gui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/_not-found.html +1 -1
- package/gui/.next/server/app/_not-found.rsc +2 -2
- package/gui/.next/server/app/api/setup/apply-connect-services/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-connect-services/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-connect-services/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route.js +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/local-readiness/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route.js +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route.js +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-service/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-target-repo/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/index.html +1 -1
- package/gui/.next/server/app/index.rsc +2 -2
- package/gui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/settings/configure/page.js +2 -2
- package/gui/.next/server/app/settings/configure/page.js.nft.json +1 -1
- package/gui/.next/server/app/settings/configure/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app-paths-manifest.json +15 -15
- package/gui/.next/server/chunks/477.js +2 -2
- package/gui/.next/server/chunks/647.js +82 -0
- package/gui/.next/server/chunks/900.js +1 -1
- package/gui/.next/server/pages/404.html +1 -1
- package/gui/.next/server/pages/500.html +1 -1
- package/gui/.next/static/css/781f3c93b6d7425a.css +3 -0
- package/gui/.next/trace +4 -4
- package/package.json +2 -1
- package/workspace-snapshot/files/.agents/skills/architecture-evolution-audit/SKILL.md +282 -0
- package/workspace-snapshot/files/.agents/skills/code-health-audit/SKILL.md +188 -0
- package/workspace-snapshot/files/.agents/skills/implementation/SKILL.md +279 -0
- package/workspace-snapshot/files/.agents/skills/issue-intake/SKILL.md +163 -0
- package/workspace-snapshot/files/.agents/skills/issue-intake/examples.md +112 -0
- package/workspace-snapshot/files/.agents/skills/planner/SKILL.md +253 -0
- package/workspace-snapshot/files/.agents/skills/security-audit/SKILL.md +270 -0
- package/workspace-snapshot/files/.env.example +37 -0
- package/workspace-snapshot/files/.github/CODEOWNERS +4 -0
- package/workspace-snapshot/files/.github/dependabot.yml +12 -0
- package/workspace-snapshot/files/.github/workflows/ci.yml +32 -0
- package/workspace-snapshot/files/.github/workflows/codeql.yml +35 -0
- package/workspace-snapshot/files/.github/workflows/harness-auto-runner.yml +561 -0
- package/workspace-snapshot/files/.harness/config.example.json +83 -0
- package/workspace-snapshot/files/AGENTS.md +130 -0
- package/workspace-snapshot/files/ARCHITECTURE.md +385 -0
- package/workspace-snapshot/files/CHANGELOG.md +166 -0
- package/workspace-snapshot/files/LICENSE +21 -0
- package/workspace-snapshot/files/README.md +110 -0
- package/workspace-snapshot/files/ROADMAP.md +50 -0
- package/workspace-snapshot/files/api/linear-webhook.ts +41 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-connect-services/route.ts +21 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-harness-repo-provisioning/route.ts +35 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-harness-secrets/route.ts +42 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-linear-setup/route.ts +23 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-local-files/route.ts +42 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-target-workflow/route.ts +49 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-vercel-bridge/route.ts +26 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/finalize-target-workflow/route.ts +32 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/harness-provisioning-summary/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/linear-options/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/linear-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/local-readiness/route.ts +18 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/manual-harness-secret-values/route.ts +33 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-connect-services/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-harness-repo-provisioning/route.ts +22 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-harness-secrets/route.ts +19 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-linear-setup/route.ts +20 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-local-files/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-target-workflow/route.ts +25 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-vercel-bridge/route.ts +23 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/remote-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/summary/route.ts +10 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-bridge-options/route.ts +29 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-bridge-redeploy-status/route.ts +22 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-harness-repo/route.ts +31 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-service/route.ts +41 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-target-repo/route.ts +33 -0
- package/workspace-snapshot/files/apps/gui/app/layout.tsx +28 -0
- package/workspace-snapshot/files/apps/gui/app/page.tsx +5 -0
- package/workspace-snapshot/files/apps/gui/app/settings/configure/page.tsx +34 -0
- package/workspace-snapshot/files/apps/gui/components/custom/app-shell.tsx +39 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-experience.tsx +671 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-page-content.tsx +45 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-workflow.tsx +1284 -0
- package/workspace-snapshot/files/apps/gui/components/custom/connected-status.tsx +30 -0
- package/workspace-snapshot/files/apps/gui/components/custom/environment-config-form.tsx +400 -0
- package/workspace-snapshot/files/apps/gui/components/custom/first-run-stepper.tsx +199 -0
- package/workspace-snapshot/files/apps/gui/components/custom/github-token-help-disclosure.tsx +142 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-cloud-secrets-card.tsx +993 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-linear-workspace-card.tsx +526 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-local-readiness-card.tsx +132 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-step-transition.tsx +60 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-target-workflow-card.tsx +396 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-vercel-bridge-card.tsx +861 -0
- package/workspace-snapshot/files/apps/gui/components/custom/local-write-confirmation.tsx +91 -0
- package/workspace-snapshot/files/apps/gui/components/custom/local-write-preview.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/custom/preview-panel.tsx +19 -0
- package/workspace-snapshot/files/apps/gui/components/custom/primary-setup-task-card.tsx +65 -0
- package/workspace-snapshot/files/apps/gui/components/custom/readiness-banner.tsx +91 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-action-confirmation.tsx +155 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-action-preview.tsx +84 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-secret-form.tsx +123 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-setup-section.tsx +354 -0
- package/workspace-snapshot/files/apps/gui/components/custom/review-cloud-secrets-disclosure.tsx +59 -0
- package/workspace-snapshot/files/apps/gui/components/custom/review-generated-files-disclosure.tsx +67 -0
- package/workspace-snapshot/files/apps/gui/components/custom/section-card.tsx +33 -0
- package/workspace-snapshot/files/apps/gui/components/custom/service-icons.tsx +30 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-apply-result.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-checklist.tsx +206 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-dashboard.tsx +124 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-readonly-sections.tsx +210 -0
- package/workspace-snapshot/files/apps/gui/components/custom/status-badge.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components/custom/target-repo-config-form.tsx +647 -0
- package/workspace-snapshot/files/apps/gui/components/custom/target-workflow-pr-card.tsx +283 -0
- package/workspace-snapshot/files/apps/gui/components/custom/theme-provider.tsx +11 -0
- package/workspace-snapshot/files/apps/gui/components/custom/theme-toggle.tsx +44 -0
- package/workspace-snapshot/files/apps/gui/components/custom/workflow-install-pending-panel.tsx +116 -0
- package/workspace-snapshot/files/apps/gui/components/ui/badge.tsx +40 -0
- package/workspace-snapshot/files/apps/gui/components/ui/button.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/ui/card.tsx +64 -0
- package/workspace-snapshot/files/apps/gui/components/ui/checkbox.tsx +21 -0
- package/workspace-snapshot/files/apps/gui/components/ui/input.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components/ui/label.tsx +20 -0
- package/workspace-snapshot/files/apps/gui/components/ui/separator.tsx +23 -0
- package/workspace-snapshot/files/apps/gui/components/ui/skeleton.tsx +13 -0
- package/workspace-snapshot/files/apps/gui/components/ui/textarea.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components.json +21 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/breakpoints.ts +13 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/form.ts +8 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/index.ts +4 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/layout.ts +9 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/spacing.ts +8 -0
- package/workspace-snapshot/files/apps/gui/lib/guided-setup.ts +216 -0
- package/workspace-snapshot/files/apps/gui/lib/setup-json-response.ts +19 -0
- package/workspace-snapshot/files/apps/gui/lib/setup-server.ts +836 -0
- package/workspace-snapshot/files/apps/gui/lib/step6-remote-state.ts +43 -0
- package/workspace-snapshot/files/apps/gui/lib/utils.ts +6 -0
- package/workspace-snapshot/files/apps/gui/lib/vercel-bridge-polling-ui.ts +16 -0
- package/workspace-snapshot/files/apps/gui/lib/verification-state.ts +170 -0
- package/workspace-snapshot/files/apps/gui/next-env.d.ts +6 -0
- package/workspace-snapshot/files/apps/gui/next.config.ts +34 -0
- package/workspace-snapshot/files/apps/gui/postcss.config.mjs +8 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-generate-classic.png +0 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-generate-new-token.png +0 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-verify-email.png +0 -0
- package/workspace-snapshot/files/apps/gui/styles/globals.css +86 -0
- package/workspace-snapshot/files/apps/gui/tsconfig.json +24 -0
- package/workspace-snapshot/files/apps/gui/tweetsodium.d.ts +14 -0
- package/workspace-snapshot/files/docs/architecture/linear-automation-state-machine.md +267 -0
- package/workspace-snapshot/files/docs/decisions/0001-cursor-first-v0.1.md +59 -0
- package/workspace-snapshot/files/docs/decisions/0003-automation-state-machine-and-auto-model-policy.md +65 -0
- package/workspace-snapshot/files/docs/decisions/0004-agent-provider-boundary.md +109 -0
- package/workspace-snapshot/files/docs/design/product-development-harness-gui.md +1024 -0
- package/workspace-snapshot/files/docs/getting-started.md +123 -0
- package/workspace-snapshot/files/docs/gui-local.md +151 -0
- package/workspace-snapshot/files/docs/gui-remote-setup.md +106 -0
- package/workspace-snapshot/files/docs/integration-repair.md +82 -0
- package/workspace-snapshot/files/docs/issue-intake.md +124 -0
- package/workspace-snapshot/files/docs/linear-watcher-setup.md +184 -0
- package/workspace-snapshot/files/docs/milestones/m1-runner-foundation.md +51 -0
- package/workspace-snapshot/files/docs/milestones/m2-planning-phase.md +129 -0
- package/workspace-snapshot/files/docs/milestones/m3-implementation-phase.md +158 -0
- package/workspace-snapshot/files/docs/milestones/m4-handoff-phase.md +122 -0
- package/workspace-snapshot/files/docs/milestones/m5-revision-phase.md +101 -0
- package/workspace-snapshot/files/docs/milestones/m6-merge-phase.md +143 -0
- package/workspace-snapshot/files/docs/milestones/m7-issue-intake.md +72 -0
- package/workspace-snapshot/files/docs/milestones/m8-linear-watcher.md +80 -0
- package/workspace-snapshot/files/docs/npm-packaging-spike.md +52 -0
- package/workspace-snapshot/files/docs/operator-config.md +187 -0
- package/workspace-snapshot/files/docs/p-dev.md +213 -0
- package/workspace-snapshot/files/docs/production-sync-automation.md +176 -0
- package/workspace-snapshot/files/docs/provider-portability.md +131 -0
- package/workspace-snapshot/files/docs/releases/release-process.md +272 -0
- package/workspace-snapshot/files/docs/releases/v0.2.0.md +193 -0
- package/workspace-snapshot/files/docs/releases/v0.3.0.md +188 -0
- package/workspace-snapshot/files/docs/releases/v0.3.1.md +102 -0
- package/workspace-snapshot/files/docs/research/001-manual-run-retrospective.md +64 -0
- package/workspace-snapshot/files/docs/research/002-linear-cursor-integration-smoke-test.md +64 -0
- package/workspace-snapshot/files/docs/research/003-cursor-automation-planning-router-spike.md +104 -0
- package/workspace-snapshot/files/docs/research/README.md +26 -0
- package/workspace-snapshot/files/docs/security.md +190 -0
- package/workspace-snapshot/files/docs/skills/README.md +7 -0
- package/workspace-snapshot/files/docs/skills/skill-architecture.md +197 -0
- package/workspace-snapshot/files/docs/target-repo-branch-setup.md +80 -0
- package/workspace-snapshot/files/evals/README.md +31 -0
- package/workspace-snapshot/files/examples/README.md +32 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/README.md +49 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/eval-scorecard.md +63 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/implementation-plan.md +79 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/linear-issue.md +74 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/pr-readiness-report.md +92 -0
- package/workspace-snapshot/files/examples/runs/m5.5-live-sandbox-smoke/README.md +73 -0
- package/workspace-snapshot/files/gpt/issue-intake/custom-gpt-instructions.md +112 -0
- package/workspace-snapshot/files/gpt/issue-intake/knowledge.md +278 -0
- package/workspace-snapshot/files/gpt/issue-intake/setup-guide.md +115 -0
- package/workspace-snapshot/files/gpt/issue-intake/smoke-test.md +119 -0
- package/workspace-snapshot/files/harness.config.json +92 -0
- package/workspace-snapshot/files/harness.config.schema.json +352 -0
- package/workspace-snapshot/files/package-lock.json +3716 -0
- package/workspace-snapshot/files/package.json +60 -0
- package/workspace-snapshot/files/packages/p-dev/LICENSE +21 -0
- package/workspace-snapshot/files/packages/p-dev/README.md +64 -0
- package/workspace-snapshot/files/packages/p-dev/gui.next.config.mjs +13 -0
- package/workspace-snapshot/files/packages/p-dev/package.json +63 -0
- package/workspace-snapshot/files/prompts/issue-intake-chatgpt.md +264 -0
- package/workspace-snapshot/files/scripts/generate-config-schema.ts +16 -0
- package/workspace-snapshot/files/scripts/prepare-p-dev-package.ts +155 -0
- package/workspace-snapshot/files/skills/README.md +7 -0
- package/workspace-snapshot/files/skills/issue-intake/README.md +5 -0
- package/workspace-snapshot/files/src/agents/cursor-provider.ts +109 -0
- package/workspace-snapshot/files/src/agents/index.ts +68 -0
- package/workspace-snapshot/files/src/agents/provider.ts +7 -0
- package/workspace-snapshot/files/src/agents/types.ts +85 -0
- package/workspace-snapshot/files/src/artifacts/events.ts +31 -0
- package/workspace-snapshot/files/src/artifacts/manifest-fields.ts +9 -0
- package/workspace-snapshot/files/src/artifacts/manifest.ts +20 -0
- package/workspace-snapshot/files/src/artifacts/paths.ts +145 -0
- package/workspace-snapshot/files/src/artifacts/redact.ts +50 -0
- package/workspace-snapshot/files/src/artifacts/run-id.ts +4 -0
- package/workspace-snapshot/files/src/artifacts/snapshot.ts +13 -0
- package/workspace-snapshot/files/src/artifacts/summary.ts +116 -0
- package/workspace-snapshot/files/src/cli/commands/diagnose-vercel-bridge.ts +25 -0
- package/workspace-snapshot/files/src/cli/commands/doctor.ts +205 -0
- package/workspace-snapshot/files/src/cli/commands/inspect.ts +46 -0
- package/workspace-snapshot/files/src/cli/commands/operator-init.ts +39 -0
- package/workspace-snapshot/files/src/cli/commands/redact-output.ts +19 -0
- package/workspace-snapshot/files/src/cli/commands/resolve-route.ts +81 -0
- package/workspace-snapshot/files/src/cli/commands/run.ts +53 -0
- package/workspace-snapshot/files/src/cli/commands/sync-production.ts +207 -0
- package/workspace-snapshot/files/src/cli/commands/validate-issue.ts +72 -0
- package/workspace-snapshot/files/src/cli/exit-codes.ts +4 -0
- package/workspace-snapshot/files/src/cli/finalize-exit.ts +9 -0
- package/workspace-snapshot/files/src/cli/program.ts +200 -0
- package/workspace-snapshot/files/src/config/defaults.ts +33 -0
- package/workspace-snapshot/files/src/config/load-config.ts +80 -0
- package/workspace-snapshot/files/src/config/load-dotenv.ts +11 -0
- package/workspace-snapshot/files/src/config/resolve-config.ts +127 -0
- package/workspace-snapshot/files/src/config/schema.ts +129 -0
- package/workspace-snapshot/files/src/config/status-names.ts +63 -0
- package/workspace-snapshot/files/src/config/types.ts +1 -0
- package/workspace-snapshot/files/src/cursor/agent-factory.ts +126 -0
- package/workspace-snapshot/files/src/cursor/errors.ts +18 -0
- package/workspace-snapshot/files/src/cursor/git-result.ts +87 -0
- package/workspace-snapshot/files/src/cursor/model.ts +47 -0
- package/workspace-snapshot/files/src/cursor/revision-git-result.ts +80 -0
- package/workspace-snapshot/files/src/cursor/run-cleanup.ts +30 -0
- package/workspace-snapshot/files/src/cursor/run-observer.ts +367 -0
- package/workspace-snapshot/files/src/cursor/urls.ts +19 -0
- package/workspace-snapshot/files/src/fixture/frontmatter.ts +56 -0
- package/workspace-snapshot/files/src/github/actions-url.ts +13 -0
- package/workspace-snapshot/files/src/github/base-branch.ts +120 -0
- package/workspace-snapshot/files/src/github/check-policy.ts +108 -0
- package/workspace-snapshot/files/src/github/client.ts +796 -0
- package/workspace-snapshot/files/src/github/commit-reachability.ts +184 -0
- package/workspace-snapshot/files/src/github/links.ts +23 -0
- package/workspace-snapshot/files/src/github/merge-result.ts +31 -0
- package/workspace-snapshot/files/src/github/pr-discovery.ts +55 -0
- package/workspace-snapshot/files/src/github/pr-inspector.ts +297 -0
- package/workspace-snapshot/files/src/github/pr-url.ts +23 -0
- package/workspace-snapshot/files/src/github/rate-limit-metadata.ts +105 -0
- package/workspace-snapshot/files/src/gui/configure-health.ts +160 -0
- package/workspace-snapshot/files/src/gui/dev-server-process.ts +213 -0
- package/workspace-snapshot/files/src/gui/port.ts +78 -0
- package/workspace-snapshot/files/src/gui/repo-root.ts +61 -0
- package/workspace-snapshot/files/src/gui/start-configure-stable.ts +139 -0
- package/workspace-snapshot/files/src/gui/start-gui.ts +126 -0
- package/workspace-snapshot/files/src/index.ts +10 -0
- package/workspace-snapshot/files/src/linear/client.ts +49 -0
- package/workspace-snapshot/files/src/linear/comment-card.ts +74 -0
- package/workspace-snapshot/files/src/linear/comments.ts +891 -0
- package/workspace-snapshot/files/src/linear/handoff-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/issue-query.ts +70 -0
- package/workspace-snapshot/files/src/linear/markers.ts +238 -0
- package/workspace-snapshot/files/src/linear/merge-source-comment.ts +46 -0
- package/workspace-snapshot/files/src/linear/parser.ts +101 -0
- package/workspace-snapshot/files/src/linear/phase-labels.ts +58 -0
- package/workspace-snapshot/files/src/linear/planning-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/pm-feedback-comment.ts +41 -0
- package/workspace-snapshot/files/src/linear/revision-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/states.ts +20 -0
- package/workspace-snapshot/files/src/linear/writer.ts +216 -0
- package/workspace-snapshot/files/src/p-dev/browser.ts +26 -0
- package/workspace-snapshot/files/src/p-dev/cli.ts +93 -0
- package/workspace-snapshot/files/src/p-dev/git-object-plumbing.ts +271 -0
- package/workspace-snapshot/files/src/p-dev/launch.ts +173 -0
- package/workspace-snapshot/files/src/p-dev/main.ts +10 -0
- package/workspace-snapshot/files/src/p-dev/next-bin.ts +8 -0
- package/workspace-snapshot/files/src/p-dev/node-version.ts +46 -0
- package/workspace-snapshot/files/src/p-dev/package-paths.ts +47 -0
- package/workspace-snapshot/files/src/p-dev/package-version.ts +63 -0
- package/workspace-snapshot/files/src/p-dev/runtime-mode.ts +28 -0
- package/workspace-snapshot/files/src/p-dev/shutdown.ts +66 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-digest.ts +50 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-generator.ts +112 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-git.ts +221 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-manifest.ts +336 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-policy.ts +198 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-types.ts +59 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-validation.ts +137 -0
- package/workspace-snapshot/files/src/p-dev/workspace.ts +114 -0
- package/workspace-snapshot/files/src/preview/production-from-merge.ts +143 -0
- package/workspace-snapshot/files/src/preview/urls.ts +28 -0
- package/workspace-snapshot/files/src/preview/vercel-from-pr.ts +123 -0
- package/workspace-snapshot/files/src/prompts/branch-name.ts +22 -0
- package/workspace-snapshot/files/src/prompts/builder.ts +88 -0
- package/workspace-snapshot/files/src/prompts/implementation.md +77 -0
- package/workspace-snapshot/files/src/prompts/integration-repair-builder.ts +65 -0
- package/workspace-snapshot/files/src/prompts/integration-repair.md +111 -0
- package/workspace-snapshot/files/src/prompts/planning.md +64 -0
- package/workspace-snapshot/files/src/prompts/revision-builder.ts +61 -0
- package/workspace-snapshot/files/src/prompts/revision.md +71 -0
- package/workspace-snapshot/files/src/resolver/allowed-repos.ts +18 -0
- package/workspace-snapshot/files/src/resolver/errors.ts +14 -0
- package/workspace-snapshot/files/src/resolver/normalize-repo.ts +32 -0
- package/workspace-snapshot/files/src/resolver/target-repo.ts +118 -0
- package/workspace-snapshot/files/src/runner/building-recovery.ts +26 -0
- package/workspace-snapshot/files/src/runner/dry-run.ts +137 -0
- package/workspace-snapshot/files/src/runner/errors.ts +70 -0
- package/workspace-snapshot/files/src/runner/execution-environment.ts +179 -0
- package/workspace-snapshot/files/src/runner/fixture.ts +25 -0
- package/workspace-snapshot/files/src/runner/idempotency.ts +507 -0
- package/workspace-snapshot/files/src/runner/orchestrator.ts +182 -0
- package/workspace-snapshot/files/src/runner/phase-args.ts +49 -0
- package/workspace-snapshot/files/src/runner/phase-infer.ts +67 -0
- package/workspace-snapshot/files/src/runner/phases/handoff.ts +615 -0
- package/workspace-snapshot/files/src/runner/phases/implementation.ts +617 -0
- package/workspace-snapshot/files/src/runner/phases/integration-repair.ts +613 -0
- package/workspace-snapshot/files/src/runner/phases/merge.ts +1202 -0
- package/workspace-snapshot/files/src/runner/phases/planning.ts +456 -0
- package/workspace-snapshot/files/src/runner/phases/production-sync.ts +308 -0
- package/workspace-snapshot/files/src/runner/phases/revision.ts +795 -0
- package/workspace-snapshot/files/src/runner/preflight.ts +218 -0
- package/workspace-snapshot/files/src/runner/resolve-route.ts +154 -0
- package/workspace-snapshot/files/src/setup/config-builder.ts +117 -0
- package/workspace-snapshot/files/src/setup/config-local-editor.ts +260 -0
- package/workspace-snapshot/files/src/setup/config-writer.ts +173 -0
- package/workspace-snapshot/files/src/setup/control-plane-readiness-server.ts +16 -0
- package/workspace-snapshot/files/src/setup/control-plane-readiness.ts +291 -0
- package/workspace-snapshot/files/src/setup/control-plane-setup-state.ts +60 -0
- package/workspace-snapshot/files/src/setup/control-plane-types.ts +121 -0
- package/workspace-snapshot/files/src/setup/doctor-summary.ts +96 -0
- package/workspace-snapshot/files/src/setup/env-merge.ts +266 -0
- package/workspace-snapshot/files/src/setup/env-writer.ts +179 -0
- package/workspace-snapshot/files/src/setup/first-run-readiness.ts +1431 -0
- package/workspace-snapshot/files/src/setup/generated-instructions.ts +96 -0
- package/workspace-snapshot/files/src/setup/github-dispatch-token.ts +88 -0
- package/workspace-snapshot/files/src/setup/github-remote-provider.ts +983 -0
- package/workspace-snapshot/files/src/setup/github-remote-setup-live.ts +775 -0
- package/workspace-snapshot/files/src/setup/github-repo-slug.ts +31 -0
- package/workspace-snapshot/files/src/setup/github-secret-encryption.ts +16 -0
- package/workspace-snapshot/files/src/setup/github-upload-rate-limit-gate.ts +58 -0
- package/workspace-snapshot/files/src/setup/github-workflow-permissions.ts +174 -0
- package/workspace-snapshot/files/src/setup/gui-view-model.ts +566 -0
- package/workspace-snapshot/files/src/setup/guided-config-form.ts +52 -0
- package/workspace-snapshot/files/src/setup/harness-dispatch-repo.ts +158 -0
- package/workspace-snapshot/files/src/setup/harness-managed-repo-marker.ts +653 -0
- package/workspace-snapshot/files/src/setup/harness-provisioning-context.ts +331 -0
- package/workspace-snapshot/files/src/setup/harness-provisioning-pending-state.ts +282 -0
- package/workspace-snapshot/files/src/setup/harness-repo-provisioning.ts +1656 -0
- package/workspace-snapshot/files/src/setup/harness-secret-fingerprint.ts +51 -0
- package/workspace-snapshot/files/src/setup/harness-secret-setup.ts +439 -0
- package/workspace-snapshot/files/src/setup/harness-snapshot-provisioning-helpers.ts +92 -0
- package/workspace-snapshot/files/src/setup/harness-snapshot-provisioning.ts +1007 -0
- package/workspace-snapshot/files/src/setup/harness-template-identity.ts +151 -0
- package/workspace-snapshot/files/src/setup/harness-workspace-snapshot-loader.ts +105 -0
- package/workspace-snapshot/files/src/setup/linear-setup-apply.ts +270 -0
- package/workspace-snapshot/files/src/setup/linear-setup-client.ts +276 -0
- package/workspace-snapshot/files/src/setup/linear-setup-plan.ts +353 -0
- package/workspace-snapshot/files/src/setup/linear-setup-summary.ts +33 -0
- package/workspace-snapshot/files/src/setup/linear-status-contract.ts +110 -0
- package/workspace-snapshot/files/src/setup/linear-webhook-env-local.ts +104 -0
- package/workspace-snapshot/files/src/setup/linear-webhook-secret.ts +441 -0
- package/workspace-snapshot/files/src/setup/local-apply-actions.ts +524 -0
- package/workspace-snapshot/files/src/setup/local-readiness-checks.ts +334 -0
- package/workspace-snapshot/files/src/setup/mock-git-repository-store.ts +291 -0
- package/workspace-snapshot/files/src/setup/mock-target-workflow-finalization.ts +445 -0
- package/workspace-snapshot/files/src/setup/model-settings.ts +73 -0
- package/workspace-snapshot/files/src/setup/permission-model.ts +79 -0
- package/workspace-snapshot/files/src/setup/redact-secrets.ts +85 -0
- package/workspace-snapshot/files/src/setup/remote-actions.ts +214 -0
- package/workspace-snapshot/files/src/setup/remote-apply-actions.ts +390 -0
- package/workspace-snapshot/files/src/setup/remote-preview-fingerprint.ts +37 -0
- package/workspace-snapshot/files/src/setup/remote-setup-summary.ts +143 -0
- package/workspace-snapshot/files/src/setup/secret-change-token.ts +14 -0
- package/workspace-snapshot/files/src/setup/service-verification.ts +549 -0
- package/workspace-snapshot/files/src/setup/setup-actions.ts +183 -0
- package/workspace-snapshot/files/src/setup/setup-github-auth.ts +15 -0
- package/workspace-snapshot/files/src/setup/setup-state.ts +74 -0
- package/workspace-snapshot/files/src/setup/stale-smoke-repo.ts +141 -0
- package/workspace-snapshot/files/src/setup/sync-downstream-summaries.ts +105 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization-lock.ts +95 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization-types.ts +55 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization.ts +897 -0
- package/workspace-snapshot/files/src/setup/target-workflow-setup.ts +247 -0
- package/workspace-snapshot/files/src/setup/test-only-provisioning-provider.ts +51 -0
- package/workspace-snapshot/files/src/setup/test-only-remote-setup-provider.ts +51 -0
- package/workspace-snapshot/files/src/setup/tweetsodium.d.ts +14 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-diagnostics.ts +510 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-options.ts +160 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-readiness.ts +150 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-redeploy-poll.ts +744 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-redeploy-state.ts +46 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-structured-log.ts +86 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-verification.ts +63 -0
- package/workspace-snapshot/files/src/setup/vercel-production-redeploy.ts +298 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-apply.ts +1058 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-client.ts +695 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-plan.ts +672 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-summary.ts +42 -0
- package/workspace-snapshot/files/src/setup/vercel-webhook-probe.ts +161 -0
- package/workspace-snapshot/files/src/setup/workflow-install-merge-errors.ts +166 -0
- package/workspace-snapshot/files/src/types/parsed-issue.ts +8 -0
- package/workspace-snapshot/files/src/types/run.ts +157 -0
- package/workspace-snapshot/files/src/validate/constants.ts +2 -0
- package/workspace-snapshot/files/src/validate/issue.ts +286 -0
- package/workspace-snapshot/files/src/validate/report.ts +68 -0
- package/workspace-snapshot/files/src/validate/types.ts +29 -0
- package/workspace-snapshot/files/src/webhook/dispatch-github.ts +44 -0
- package/workspace-snapshot/files/src/webhook/dispatch-statuses.ts +26 -0
- package/workspace-snapshot/files/src/webhook/extract-issue-key.ts +49 -0
- package/workspace-snapshot/files/src/webhook/filter.ts +41 -0
- package/workspace-snapshot/files/src/webhook/handle-linear-webhook.ts +201 -0
- package/workspace-snapshot/files/src/webhook/parse-linear-issue-event.ts +105 -0
- package/workspace-snapshot/files/src/webhook/redact-log.ts +26 -0
- package/workspace-snapshot/files/src/webhook/types.ts +75 -0
- package/workspace-snapshot/files/src/webhook/verify.ts +68 -0
- package/workspace-snapshot/files/src/webhook/workflow-command.ts +10 -0
- package/workspace-snapshot/files/src/workflow/dispatch-metadata.ts +59 -0
- package/workspace-snapshot/files/src/workflow/manifest-summary.ts +57 -0
- package/workspace-snapshot/files/src/workflow/production-sync-dispatch.ts +65 -0
- package/workspace-snapshot/files/src/workflow/summarize-manifest.ts +20 -0
- package/workspace-snapshot/files/src/workflow/validate.ts +43 -0
- package/workspace-snapshot/files/src/workflow/write-dispatch-metadata.ts +8 -0
- package/workspace-snapshot/files/templates/eval-scorecard.md +54 -0
- package/workspace-snapshot/files/templates/implementation-plan.md +59 -0
- package/workspace-snapshot/files/templates/linear-issue.md +53 -0
- package/workspace-snapshot/files/templates/pr-readiness-report.md +57 -0
- package/workspace-snapshot/files/tests/agents/cursor-provider.test.ts +238 -0
- package/workspace-snapshot/files/tests/artifacts/manifest.test.ts +54 -0
- package/workspace-snapshot/files/tests/artifacts/redact.test.ts +47 -0
- package/workspace-snapshot/files/tests/cli/doctor.test.ts +120 -0
- package/workspace-snapshot/files/tests/cli/finalize-exit.test.ts +28 -0
- package/workspace-snapshot/files/tests/cli/operator-init.test.ts +146 -0
- package/workspace-snapshot/files/tests/cli/sync-production-dispatch.test.ts +103 -0
- package/workspace-snapshot/files/tests/cli/validate-issue.test.ts +99 -0
- package/workspace-snapshot/files/tests/config/load-dotenv.test.ts +64 -0
- package/workspace-snapshot/files/tests/config/resolve-config.test.ts +273 -0
- package/workspace-snapshot/files/tests/config/schema.test.ts +107 -0
- package/workspace-snapshot/files/tests/cursor/agent-factory.test.ts +217 -0
- package/workspace-snapshot/files/tests/cursor/git-result.test.ts +77 -0
- package/workspace-snapshot/files/tests/cursor/model.test.ts +108 -0
- package/workspace-snapshot/files/tests/cursor/revision-git-result.test.ts +68 -0
- package/workspace-snapshot/files/tests/cursor/run-cleanup.test.ts +52 -0
- package/workspace-snapshot/files/tests/cursor/run-observer.test.ts +280 -0
- package/workspace-snapshot/files/tests/cursor/urls.test.ts +27 -0
- package/workspace-snapshot/files/tests/fixtures/config/minimal.json +16 -0
- package/workspace-snapshot/files/tests/fixtures/github/pr-4-vercel-comment.json +10 -0
- package/workspace-snapshot/files/tests/fixtures/issues/broad-for-direct-impl.md +28 -0
- package/workspace-snapshot/files/tests/fixtures/issues/context-target-repo.md +21 -0
- package/workspace-snapshot/files/tests/fixtures/issues/explicit-target-repo.md +21 -0
- package/workspace-snapshot/files/tests/fixtures/issues/gpt-broad-example.md +35 -0
- package/workspace-snapshot/files/tests/fixtures/issues/gpt-narrow-example.md +30 -0
- package/workspace-snapshot/files/tests/fixtures/issues/invalid-missing-task.md +16 -0
- package/workspace-snapshot/files/tests/fixtures/issues/invalid-no-ac-bullets.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/missing-acceptance-criteria.md +17 -0
- package/workspace-snapshot/files/tests/fixtures/issues/unknown-repo.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-minimal.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-project-only.md +17 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-target-app.md +31 -0
- package/workspace-snapshot/files/tests/fixtures/linear/implementation-comment-wes-13.md +16 -0
- package/workspace-snapshot/files/tests/fixtures/linear/pm-feedback-wes-13.md +3 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-building-to-pr-open.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-pm-review.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-ready-for-planning.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-title-only-update.json +25 -0
- package/workspace-snapshot/files/tests/fixtures/workflows/harness-auto-runner-with-production-sync.yml +561 -0
- package/workspace-snapshot/files/tests/fixtures/workflows/trigger-harness-production-sync.yml +31 -0
- package/workspace-snapshot/files/tests/github/actions-url.test.ts +45 -0
- package/workspace-snapshot/files/tests/github/base-branch.test.ts +156 -0
- package/workspace-snapshot/files/tests/github/check-policy.test.ts +59 -0
- package/workspace-snapshot/files/tests/github/client.test.ts +226 -0
- package/workspace-snapshot/files/tests/github/commit-reachability.test.ts +148 -0
- package/workspace-snapshot/files/tests/github/merge-result.test.ts +26 -0
- package/workspace-snapshot/files/tests/github/pr-discovery.test.ts +55 -0
- package/workspace-snapshot/files/tests/github/pr-inspector.test.ts +393 -0
- package/workspace-snapshot/files/tests/github/pr-url.test.ts +30 -0
- package/workspace-snapshot/files/tests/github/rate-limit-metadata.test.ts +92 -0
- package/workspace-snapshot/files/tests/gui/configure-fix-loop.test.ts +460 -0
- package/workspace-snapshot/files/tests/gui/configure-health.test.ts +67 -0
- package/workspace-snapshot/files/tests/gui/design-system.test.ts +86 -0
- package/workspace-snapshot/files/tests/gui/dev-server-process.test.ts +22 -0
- package/workspace-snapshot/files/tests/gui/guided-setup.test.ts +186 -0
- package/workspace-snapshot/files/tests/gui/m6-configure-boundaries.test.ts +884 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-cloud-secrets-routes.test.ts +287 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-provisioning-routes.test.ts +212 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-target-workflow-routes.test.ts +227 -0
- package/workspace-snapshot/files/tests/gui/port.test.ts +74 -0
- package/workspace-snapshot/files/tests/gui/repo-root.test.ts +60 -0
- package/workspace-snapshot/files/tests/gui/setup-api.test.ts +181 -0
- package/workspace-snapshot/files/tests/gui/setup-json-response.test.ts +34 -0
- package/workspace-snapshot/files/tests/gui/step6-remote-state.test.ts +75 -0
- package/workspace-snapshot/files/tests/gui/sync-downstream-summaries.test.ts +198 -0
- package/workspace-snapshot/files/tests/gui/vercel-bridge-polling-ui.test.ts +25 -0
- package/workspace-snapshot/files/tests/gui/verification-state.test.ts +172 -0
- package/workspace-snapshot/files/tests/linear/comment-assertions.ts +24 -0
- package/workspace-snapshot/files/tests/linear/comment-card.test.ts +73 -0
- package/workspace-snapshot/files/tests/linear/comments.test.ts +185 -0
- package/workspace-snapshot/files/tests/linear/handoff-comment.test.ts +34 -0
- package/workspace-snapshot/files/tests/linear/markers.test.ts +97 -0
- package/workspace-snapshot/files/tests/linear/merge-comment.test.ts +61 -0
- package/workspace-snapshot/files/tests/linear/merge-source-comment.test.ts +49 -0
- package/workspace-snapshot/files/tests/linear/parser.test.ts +83 -0
- package/workspace-snapshot/files/tests/linear/planning-comment.test.ts +29 -0
- package/workspace-snapshot/files/tests/linear/pm-feedback-comment.test.ts +63 -0
- package/workspace-snapshot/files/tests/p-dev/browser.test.ts +38 -0
- package/workspace-snapshot/files/tests/p-dev/cli.test.ts +39 -0
- package/workspace-snapshot/files/tests/p-dev/git-object-plumbing.test.ts +139 -0
- package/workspace-snapshot/files/tests/p-dev/launch.test.ts +110 -0
- package/workspace-snapshot/files/tests/p-dev/next-bin.test.ts +16 -0
- package/workspace-snapshot/files/tests/p-dev/node-version.test.ts +20 -0
- package/workspace-snapshot/files/tests/p-dev/package-manifest.test.ts +47 -0
- package/workspace-snapshot/files/tests/p-dev/package-packed-artifact.test.ts +130 -0
- package/workspace-snapshot/files/tests/p-dev/package-paths.test.ts +43 -0
- package/workspace-snapshot/files/tests/p-dev/package-version.test.ts +55 -0
- package/workspace-snapshot/files/tests/p-dev/packaged-workspace-setup.test.ts +87 -0
- package/workspace-snapshot/files/tests/p-dev/runtime-mode.test.ts +18 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-digest.test.ts +61 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-generator.test.ts +76 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-policy.test.ts +35 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-validation.test.ts +158 -0
- package/workspace-snapshot/files/tests/p-dev/workspace.test.ts +80 -0
- package/workspace-snapshot/files/tests/preview/production-from-merge.test.ts +39 -0
- package/workspace-snapshot/files/tests/preview/vercel-from-pr.test.ts +120 -0
- package/workspace-snapshot/files/tests/prompts/builder.test.ts +58 -0
- package/workspace-snapshot/files/tests/prompts/implementation-builder.test.ts +76 -0
- package/workspace-snapshot/files/tests/prompts/issue-intake-chatgpt.test.ts +105 -0
- package/workspace-snapshot/files/tests/resolver/allowed-repos.test.ts +44 -0
- package/workspace-snapshot/files/tests/resolver/normalize-repo.test.ts +44 -0
- package/workspace-snapshot/files/tests/resolver/target-repo.test.ts +91 -0
- package/workspace-snapshot/files/tests/runner/building-recovery.test.ts +30 -0
- package/workspace-snapshot/files/tests/runner/dry-run.test.ts +128 -0
- package/workspace-snapshot/files/tests/runner/execution-environment.test.ts +114 -0
- package/workspace-snapshot/files/tests/runner/handoff.test.ts +312 -0
- package/workspace-snapshot/files/tests/runner/idempotency-handoff.test.ts +170 -0
- package/workspace-snapshot/files/tests/runner/idempotency-implementation.test.ts +143 -0
- package/workspace-snapshot/files/tests/runner/idempotency-merge.test.ts +118 -0
- package/workspace-snapshot/files/tests/runner/idempotency-revision.test.ts +111 -0
- package/workspace-snapshot/files/tests/runner/idempotency.test.ts +83 -0
- package/workspace-snapshot/files/tests/runner/implementation.test.ts +196 -0
- package/workspace-snapshot/files/tests/runner/integration-repair.test.ts +263 -0
- package/workspace-snapshot/files/tests/runner/merge.test.ts +760 -0
- package/workspace-snapshot/files/tests/runner/orchestrator.test.ts +301 -0
- package/workspace-snapshot/files/tests/runner/phase-args.test.ts +38 -0
- package/workspace-snapshot/files/tests/runner/planning.test.ts +160 -0
- package/workspace-snapshot/files/tests/runner/resolve-route.test.ts +249 -0
- package/workspace-snapshot/files/tests/runner/revision.test.ts +326 -0
- package/workspace-snapshot/files/tests/setup/config-builder.test.ts +136 -0
- package/workspace-snapshot/files/tests/setup/config-local-editor.test.ts +164 -0
- package/workspace-snapshot/files/tests/setup/connect-services-credential-availability.test.ts +151 -0
- package/workspace-snapshot/files/tests/setup/connect-services-env.test.ts +84 -0
- package/workspace-snapshot/files/tests/setup/control-plane-readiness.test.ts +59 -0
- package/workspace-snapshot/files/tests/setup/doctor-summary.test.ts +48 -0
- package/workspace-snapshot/files/tests/setup/env-merge.test.ts +177 -0
- package/workspace-snapshot/files/tests/setup/env-writer.test.ts +97 -0
- package/workspace-snapshot/files/tests/setup/first-run-readiness.test.ts +1099 -0
- package/workspace-snapshot/files/tests/setup/generated-instructions.test.ts +48 -0
- package/workspace-snapshot/files/tests/setup/github-dispatch-token.test.ts +111 -0
- package/workspace-snapshot/files/tests/setup/github-remote-provider.test.ts +66 -0
- package/workspace-snapshot/files/tests/setup/github-remote-setup-live.test.ts +59 -0
- package/workspace-snapshot/files/tests/setup/github-workflow-permissions.test.ts +71 -0
- package/workspace-snapshot/files/tests/setup/gui-remote-storage.test.ts +43 -0
- package/workspace-snapshot/files/tests/setup/gui-view-model.test.ts +251 -0
- package/workspace-snapshot/files/tests/setup/guided-config-form.test.ts +54 -0
- package/workspace-snapshot/files/tests/setup/harness-dispatch-repo.test.ts +105 -0
- package/workspace-snapshot/files/tests/setup/harness-managed-repo-marker.test.ts +141 -0
- package/workspace-snapshot/files/tests/setup/harness-provisioning-context.test.ts +89 -0
- package/workspace-snapshot/files/tests/setup/harness-provisioning-pending-state.test.ts +88 -0
- package/workspace-snapshot/files/tests/setup/harness-repo-provisioning.test.ts +897 -0
- package/workspace-snapshot/files/tests/setup/harness-secret-setup.test.ts +255 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-default-branch.test.ts +73 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-description-finalization.test.ts +136 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-marker-tree.test.ts +61 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-reconciliation.test.ts +132 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-structured-errors.test.ts +137 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-upload-rate-limit.test.ts +105 -0
- package/workspace-snapshot/files/tests/setup/linear-setup-apply.test.ts +131 -0
- package/workspace-snapshot/files/tests/setup/linear-setup-plan.test.ts +106 -0
- package/workspace-snapshot/files/tests/setup/linear-webhook-env-local.test.ts +95 -0
- package/workspace-snapshot/files/tests/setup/linear-webhook-secret.test.ts +256 -0
- package/workspace-snapshot/files/tests/setup/live-provisioning-error-preservation.test.ts +98 -0
- package/workspace-snapshot/files/tests/setup/local-apply-actions.test.ts +352 -0
- package/workspace-snapshot/files/tests/setup/local-readiness-checks.test.ts +175 -0
- package/workspace-snapshot/files/tests/setup/model-settings.test.ts +52 -0
- package/workspace-snapshot/files/tests/setup/packaged-provisioning-permissions.test.ts +41 -0
- package/workspace-snapshot/files/tests/setup/permission-model.test.ts +38 -0
- package/workspace-snapshot/files/tests/setup/redact-secrets.test.ts +78 -0
- package/workspace-snapshot/files/tests/setup/remote-actions.test.ts +45 -0
- package/workspace-snapshot/files/tests/setup/remote-apply-actions.test.ts +302 -0
- package/workspace-snapshot/files/tests/setup/remote-preview-fingerprint.test.ts +121 -0
- package/workspace-snapshot/files/tests/setup/service-verification.test.ts +312 -0
- package/workspace-snapshot/files/tests/setup/setup-actions.test.ts +96 -0
- package/workspace-snapshot/files/tests/setup/setup-form-defaults.test.ts +35 -0
- package/workspace-snapshot/files/tests/setup/setup-server-remote.test.ts +90 -0
- package/workspace-snapshot/files/tests/setup/stale-smoke-repo.test.ts +84 -0
- package/workspace-snapshot/files/tests/setup/step6-automatic-apply-outcome.test.ts +303 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization-lock.test.ts +51 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization-step-github.test.ts +435 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization.test.ts +222 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-setup.test.ts +62 -0
- package/workspace-snapshot/files/tests/setup/test-workspace-snapshot-fixture.ts +100 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-diagnostics.test.ts +429 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-options.test.ts +135 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-preview-fingerprint.test.ts +52 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-redeploy-poll.test.ts +582 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-structured-log.test.ts +45 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-verification.test.ts +39 -0
- package/workspace-snapshot/files/tests/setup/vercel-endpoint-reachability.test.ts +60 -0
- package/workspace-snapshot/files/tests/setup/vercel-production-redeploy.test.ts +184 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-apply.test.ts +1282 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-client.test.ts +395 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-plan.test.ts +261 -0
- package/workspace-snapshot/files/tests/setup/vercel-webhook-probe.test.ts +78 -0
- package/workspace-snapshot/files/tests/setup/workflow-install-merge-errors.test.ts +38 -0
- package/workspace-snapshot/files/tests/validate-issue/report.test.ts +56 -0
- package/workspace-snapshot/files/tests/validate-issue/validate-issue.test.ts +202 -0
- package/workspace-snapshot/files/tests/webhook/dispatch-github.test.ts +193 -0
- package/workspace-snapshot/files/tests/webhook/extract-issue-key.test.ts +65 -0
- package/workspace-snapshot/files/tests/webhook/filter.test.ts +132 -0
- package/workspace-snapshot/files/tests/webhook/harness-auto-runner-workflow.test.ts +169 -0
- package/workspace-snapshot/files/tests/webhook/parse-linear-issue-event.test.ts +89 -0
- package/workspace-snapshot/files/tests/webhook/verify.test.ts +125 -0
- package/workspace-snapshot/files/tests/workflow/dispatch-metadata.test.ts +38 -0
- package/workspace-snapshot/files/tests/workflow/manifest-summary.test.ts +58 -0
- package/workspace-snapshot/files/tests/workflow/production-sync-dispatch.test.ts +101 -0
- package/workspace-snapshot/files/tests/workflow/validate.test.ts +70 -0
- package/workspace-snapshot/files/tests/workflow/workflow-shell-safety.test.ts +92 -0
- package/workspace-snapshot/files/tsconfig.json +22 -0
- package/workspace-snapshot/files/vercel.json +10 -0
- package/workspace-snapshot/files/vitest.config.ts +15 -0
- package/workspace-snapshot/manifest.json +4911 -0
- package/gui/.next/server/chunks/120.js +0 -81
- package/gui/.next/static/css/cc2acc71c03f3b4b.css +0 -3
- /package/gui/.next/static/{7x8X_k4tESvkyqRnNCC9E → ZGJuemeaiW4yT7CTlmjdG}/_buildManifest.js +0 -0
- /package/gui/.next/static/{7x8X_k4tESvkyqRnNCC9E → ZGJuemeaiW4yT7CTlmjdG}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this harness repo are documented here.
|
|
4
|
+
|
|
5
|
+
V0.3.0 is a **GitHub source release** plus a **public npm CLI package** (`p-dev-harness@0.3.0`). The root repository remains `private: true`; the published package is `packages/p-dev`.
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
## [0.3.1] — Unreleased (release preparation only)
|
|
10
|
+
|
|
11
|
+
Planned patch release: immutable package-owned workspace snapshots for `p-dev-harness` provisioning plus narrowly scoped release-impact agent-contract improvements.
|
|
12
|
+
|
|
13
|
+
**Release type (planned):** GitHub source release plus public npm package `p-dev-harness@0.3.1`.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Deterministic embedded `workspace-snapshot/` generation from immutable Git commits during `package:p-dev:prepare`
|
|
18
|
+
- Package-owned GitHub provisioning (`auto_init`, snapshot commit, marker commit v3) without runtime dependency on `weston-uribe/p-dev-harness-template`
|
|
19
|
+
- Conditional release-impact analysis in canonical planner skill and runtime planning prompt
|
|
20
|
+
- Release contract draft [`docs/releases/v0.3.1.md`](docs/releases/v0.3.1.md)
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Release process docs: snapshot/manifest/tarball validation replaces future template synchronization for 0.3.1+
|
|
25
|
+
- Architecture docs: embedded snapshot is provisioning source for 0.3.1+; public template frozen for 0.3.0 legacy compatibility
|
|
26
|
+
- Implementation skill/prompt preserve planner release boundaries and report outstanding release preparation
|
|
27
|
+
|
|
28
|
+
### Compatibility
|
|
29
|
+
|
|
30
|
+
- Existing valid `p-dev-harness@0.3.0` managed workspaces reconnect without content rewrite
|
|
31
|
+
- `weston-uribe/p-dev-harness-template` remains frozen legacy artifact for 0.3.0; not used by 0.3.1+ provisioning
|
|
32
|
+
|
|
33
|
+
## [0.3.0] — 2026-07-13
|
|
34
|
+
|
|
35
|
+
V0.3.0 is the guided-onboarding and distribution release: seven-step Configure GUI, six canonical skills, and public `p-dev-harness` npm package.
|
|
36
|
+
|
|
37
|
+
**Release type:** GitHub source release (annotated tag + curated release notes) plus public npm package `p-dev-harness@0.3.0`.
|
|
38
|
+
|
|
39
|
+
### Highlights
|
|
40
|
+
|
|
41
|
+
- Guided seven-step Configure GUI repaired and automated end to end
|
|
42
|
+
- Public `p-dev-harness` package — launch without cloning the source repository
|
|
43
|
+
- Six canonical harness skills under `.agents/skills/`
|
|
44
|
+
- Public template provisioning for private `OWNER/p-dev-harness` workspaces
|
|
45
|
+
- Automated Vercel bridge setup with redeploy polling and signed webhook verification
|
|
46
|
+
- Guarded Step 7 workflow install PR finalization for system-owned setup PRs
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- Canonical end-user guide [`docs/p-dev.md`](docs/p-dev.md)
|
|
51
|
+
- Public npm package `p-dev-harness@0.3.0` with durable operator workspace (`~/.p-dev`, `P_DEV_HOME`, `--workspace`)
|
|
52
|
+
- Packaged harness workspace provisioning/reconnection from `weston-uribe/p-dev-harness-template`
|
|
53
|
+
- Seven-step guided Configure GUI with confirmation-gated local and remote writes
|
|
54
|
+
- Remote setup: Linear workspace/status configuration, Vercel bridge, cloud secrets, target workflow install
|
|
55
|
+
- Automatic Vercel production redeploy polling and signed webhook verification
|
|
56
|
+
- Step 7 workflow install PR validation, guarded merge, and production verification
|
|
57
|
+
- Six canonical skills: `issue-intake`, `code-health-audit`, `architecture-evolution-audit`, `security-audit`, `planner`, `implementation`
|
|
58
|
+
- Skill architecture documentation at [`docs/skills/skill-architecture.md`](docs/skills/skill-architecture.md)
|
|
59
|
+
- Release contract [`docs/releases/v0.3.0.md`](docs/releases/v0.3.0.md)
|
|
60
|
+
- Package publication process in [`docs/releases/release-process.md`](docs/releases/release-process.md)
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- README leads product managers to `npx --yes p-dev-harness@0.3.0`; source clone remains contributor path
|
|
65
|
+
- `docs/getting-started.md` — p-dev primary, source clone for maintainers
|
|
66
|
+
- `docs/npm-packaging-spike.md` — historical spike document linking to `docs/p-dev.md`
|
|
67
|
+
- `packages/p-dev/README.md` — public npm package README
|
|
68
|
+
- Root `package.json` version `0.2.0` → `0.3.0` (source marker; `private: true` unchanged)
|
|
69
|
+
- `RELEASE_PHASE` `v0.2-prep` → `v0.3-prep`
|
|
70
|
+
- ROADMAP reflects post-v0.3 priorities; shipped v0.3 items moved to history
|
|
71
|
+
|
|
72
|
+
### Fixed
|
|
73
|
+
|
|
74
|
+
- Guided setup step order and navigation (seven stages before completion)
|
|
75
|
+
- npm package published as `p-dev-harness` after registry rejected `p-dev` as too similar to `pdev`
|
|
76
|
+
- Packaged workspace seeding without overwriting existing operator files
|
|
77
|
+
- Durable repo ID / managed-marker recovery for provisioned harness workspaces
|
|
78
|
+
- Server-authored evidence for cloud secret setup
|
|
79
|
+
- Target workflow PR reuse, exact-content validation, and production verification
|
|
80
|
+
|
|
81
|
+
### Security and safety
|
|
82
|
+
|
|
83
|
+
- Confirmation-gated remote mutations with fingerprint validation
|
|
84
|
+
- Error redaction and permission handling in setup flows
|
|
85
|
+
- Published package excludes credentials, local state, and generated private workspace artifacts
|
|
86
|
+
- MIT license included in npm package artifact
|
|
87
|
+
|
|
88
|
+
### Documentation
|
|
89
|
+
|
|
90
|
+
- Truth audit across README, AGENTS, ARCHITECTURE, ROADMAP, operator and GUI docs
|
|
91
|
+
- Token permission documentation derived from implementation (classic `repo` + `workflow`; fine-grained Contents + Workflows write)
|
|
92
|
+
- Explicit distinction: system-owned setup PR automation does not alter ordinary product PR policy
|
|
93
|
+
|
|
94
|
+
### Validation
|
|
95
|
+
|
|
96
|
+
- Codespaces source-based GUI validation
|
|
97
|
+
- Controlled separate-account packaged onboarding through Setup complete
|
|
98
|
+
- Package pack/inspect tests, tarball smoke, Configure route HTTP 200
|
|
99
|
+
- Expanded setup, GUI, and provisioning test coverage
|
|
100
|
+
|
|
101
|
+
### Known limitations
|
|
102
|
+
|
|
103
|
+
- **Cursor-only** agent provider
|
|
104
|
+
- **Linear / GitHub / GitHub Actions / Vercel** stack only
|
|
105
|
+
- **macOS validated** for packaged browser auto-launch; use `--no-open` elsewhere
|
|
106
|
+
- **No full real issue lifecycle** from an isolated npm-installed workspace
|
|
107
|
+
- **No automatic upgrade/sync** of already-created private harness workspaces
|
|
108
|
+
- **Public template compatibility** dependency on `weston-uribe/p-dev-harness-template`
|
|
109
|
+
- **Not production-grade SaaS** or provider-agnostic
|
|
110
|
+
- Manual eval rubrics remain where automation is not implemented
|
|
111
|
+
- Deferred: `performance-cost-audit`, skill registry/package manager, manifests, provider adapters, runner-skill prompt integration
|
|
112
|
+
|
|
113
|
+
[0.3.0]: https://github.com/weston-uribe/agentic-product-development-harness/releases/tag/v0.3.0
|
|
114
|
+
[0.2.0]: https://github.com/weston-uribe/agentic-product-development-harness/releases/tag/v0.2.0
|
|
115
|
+
|
|
116
|
+
## [0.2.0] — 2026-07-08
|
|
117
|
+
|
|
118
|
+
V0.2.0 moves the harness from early validated spikes to a documented source release: lifecycle runners, Linear-triggered GitHub Actions automation, production sync, provider posture, security hardening, and operator docs now tell one consistent story.
|
|
119
|
+
|
|
120
|
+
**Release type:** GitHub source release (annotated tag + GitHub release).
|
|
121
|
+
|
|
122
|
+
### Added
|
|
123
|
+
|
|
124
|
+
- SDK lifecycle runners: planning, implementation, handoff, revision, merge, and production sync
|
|
125
|
+
- Event-driven auto-runner: Linear webhook → Vercel bridge → `repository_dispatch` → GitHub Actions → `harness run --phase auto`
|
|
126
|
+
- Trigger statuses: Ready for Planning, Ready for Build, PR Open, Needs Revision, Ready to Merge
|
|
127
|
+
- Explicit `agentProvider.id: "cursor"` config shape and internal provider seam (`src/agents/`)
|
|
128
|
+
- Issue intake: ChatGPT copy-paste prompt, Cursor issue-intake skill, parser-aligned template, `harness validate-issue` CLI
|
|
129
|
+
- Production sync automation (`harness:sync-production`) with optional `production_promoted` dispatch
|
|
130
|
+
- Target-repo integration-branch posture: PRs target `dev`; manual `dev` → `main` promotion; sync updates Linear
|
|
131
|
+
- GitHub Actions hardening: pinned actions, env-var shell safety, output redaction
|
|
132
|
+
- CI / CodeQL / Dependabot
|
|
133
|
+
- Public-repo security baseline and operator guides
|
|
134
|
+
- Release contract (`docs/releases/v0.2.0.md`), release process, operator getting-started guide
|
|
135
|
+
|
|
136
|
+
### Changed
|
|
137
|
+
|
|
138
|
+
- Harness positioned as Cursor-first for Linear + GitHub + GitHub Actions (not provider-agnostic)
|
|
139
|
+
- Solo repo automation policy: PR required + required checks + no direct push to `main`; **0 required GitHub approvals** while solo-maintainer
|
|
140
|
+
- `package.json` version marker `0.1.0` → `0.2.0` (source release only; `private: true` unchanged)
|
|
141
|
+
|
|
142
|
+
### Security
|
|
143
|
+
|
|
144
|
+
- Branch protection ruleset active on `main` (PR required, required status checks, no force push)
|
|
145
|
+
- GitHub Actions allowed-actions allowlist (pinned first-party actions)
|
|
146
|
+
- Secrets confined to GitHub Actions secrets, Vercel env vars, or local untracked `.env` files
|
|
147
|
+
- Harness output redaction before logs, summaries, and artifacts
|
|
148
|
+
- `.github/CODEOWNERS` documents ownership of workflow files (not enforced as required review in solo mode)
|
|
149
|
+
|
|
150
|
+
### Documentation
|
|
151
|
+
|
|
152
|
+
- Truth audit across README, ROADMAP, ARCHITECTURE, AGENTS, security, and operator guides
|
|
153
|
+
- Provider portability posture (`docs/provider-portability.md`)
|
|
154
|
+
- Linear watcher setup, target-repo branch setup, production sync automation guides
|
|
155
|
+
|
|
156
|
+
### Known limitations
|
|
157
|
+
|
|
158
|
+
- Cursor Cloud Agents are the **only** implemented agent provider
|
|
159
|
+
- Linear is the only implemented product/control system; GitHub is the only SCM/PR system
|
|
160
|
+
- Vercel is the only implemented preview provider when preview capture is enabled
|
|
161
|
+
- Not provider-agnostic; no Claude Code, Codex, local VS Code agents, GitLab, or Bitbucket support
|
|
162
|
+
- Evals remain manual rubrics — automated eval contract is deferred
|
|
163
|
+
- Not production-grade portable; not a plug-and-play product
|
|
164
|
+
- OpenSSF Scorecard deferred
|
|
165
|
+
- No generic auto-merge for arbitrary green public PRs
|
|
166
|
+
- Linear/status gates required — automation does not ship without human-controlled status transitions
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Weston Uribe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Agentic Product Development Harness
|
|
2
|
+
|
|
3
|
+
**Current release: v0.3.1** — immutable embedded workspace provisioning
|
|
4
|
+
|
|
5
|
+
## Use the product
|
|
6
|
+
|
|
7
|
+
**Easiest start for product managers:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx --yes p-dev-harness@0.3.1
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- Requires **Node.js 22+**
|
|
14
|
+
- Starts a local guided **Configure GUI**
|
|
15
|
+
- Provisions or reconnects a private operator harness workspace from the **embedded package snapshot** (0.3.1+)
|
|
16
|
+
- **macOS validated** for packaged launch; use `--no-open` on other platforms
|
|
17
|
+
- First-time provisioning can take several minutes; progress is shown in Configure
|
|
18
|
+
- Early-stage — not production SaaS
|
|
19
|
+
|
|
20
|
+
Full guide: [`docs/p-dev.md`](docs/p-dev.md)
|
|
21
|
+
|
|
22
|
+
## Develop the harness
|
|
23
|
+
|
|
24
|
+
Contributors and maintainers clone the source repository:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
git clone https://github.com/weston-uribe/agentic-product-development-harness.git
|
|
28
|
+
cd agentic-product-development-harness
|
|
29
|
+
npm ci && npm run build
|
|
30
|
+
npm run harness:configure
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
See [`docs/getting-started.md`](docs/getting-started.md).
|
|
34
|
+
|
|
35
|
+
## TL;DR
|
|
36
|
+
|
|
37
|
+
Cursor-first orchestration harness for turning structured Linear issues into GitHub PRs through a controlled AI-assisted workflow.
|
|
38
|
+
|
|
39
|
+
| Layer | Status |
|
|
40
|
+
|-------|--------|
|
|
41
|
+
| Product install | `p-dev-harness@0.3.1` on npm (public) |
|
|
42
|
+
| Agent provider | Cursor Cloud Agents only |
|
|
43
|
+
| Product system | Linear |
|
|
44
|
+
| SCM / PR | GitHub |
|
|
45
|
+
| Cloud runner | GitHub Actions |
|
|
46
|
+
| Preview / bridge | Vercel (when configured) |
|
|
47
|
+
| Canonical skills | Six implemented under `.agents/skills/` |
|
|
48
|
+
|
|
49
|
+
It is **not** provider-agnostic and **not** a production SaaS.
|
|
50
|
+
|
|
51
|
+
## Quick links
|
|
52
|
+
|
|
53
|
+
| Topic | Doc |
|
|
54
|
+
|-------|-----|
|
|
55
|
+
| **p-dev install guide** | [`docs/p-dev.md`](docs/p-dev.md) |
|
|
56
|
+
| Getting started (source) | [`docs/getting-started.md`](docs/getting-started.md) |
|
|
57
|
+
| Release contract (v0.3.1) | [`docs/releases/v0.3.1.md`](docs/releases/v0.3.1.md) |
|
|
58
|
+
| Release contract (v0.3.0) | [`docs/releases/v0.3.0.md`](docs/releases/v0.3.0.md) |
|
|
59
|
+
| Release contract (v0.2.0) | [`docs/releases/v0.2.0.md`](docs/releases/v0.2.0.md) |
|
|
60
|
+
| Security baseline | [`docs/security.md`](docs/security.md) |
|
|
61
|
+
| Provider portability | [`docs/provider-portability.md`](docs/provider-portability.md) |
|
|
62
|
+
| Skill architecture | [`docs/skills/skill-architecture.md`](docs/skills/skill-architecture.md) |
|
|
63
|
+
| Linear watcher setup | [`docs/linear-watcher-setup.md`](docs/linear-watcher-setup.md) |
|
|
64
|
+
|
|
65
|
+
## Why it exists
|
|
66
|
+
|
|
67
|
+
AI-assisted development makes it easy to generate code quickly. It does not, by itself, make product judgment, scope control, or review readiness visible. This harness structures the work so that:
|
|
68
|
+
|
|
69
|
+
- Product intent is captured before implementation
|
|
70
|
+
- AI execution happens in a bounded, reviewable context
|
|
71
|
+
- Outputs are evaluated against explicit criteria before humans sign off
|
|
72
|
+
|
|
73
|
+
## What this is
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Linear issue → planning/build/review phases → GitHub PR → Linear/status gate → merge or revision
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
SDK runners handle planning through merge and production sync. Linear status changes can trigger cloud runs automatically. `p-dev` provides guided onboarding without cloning this repository.
|
|
80
|
+
|
|
81
|
+
## Current capability
|
|
82
|
+
|
|
83
|
+
| Layer | Status |
|
|
84
|
+
|-------|--------|
|
|
85
|
+
| Product onboarding | `p-dev` guided Configure GUI (implemented) |
|
|
86
|
+
| Issue intake | ChatGPT prompt + Cursor skill + validate-issue CLI |
|
|
87
|
+
| Planning / implementation / handoff / revision / merge | SDK runners (implemented) |
|
|
88
|
+
| Production sync | SDK runner + optional dispatch (implemented) |
|
|
89
|
+
| Auto-run from Linear status | Webhook bridge + GitHub Actions (implemented) |
|
|
90
|
+
| Canonical harness skills | `issue-intake`, `code-health-audit`, `architecture-evolution-audit`, `security-audit`, `planner`, `implementation` |
|
|
91
|
+
|
|
92
|
+
## Configuration and portability posture
|
|
93
|
+
|
|
94
|
+
V0.3 is **Cursor-first** and **not provider-agnostic**. See [`docs/provider-portability.md`](docs/provider-portability.md).
|
|
95
|
+
|
|
96
|
+
## What is planned
|
|
97
|
+
|
|
98
|
+
See [`ROADMAP.md`](ROADMAP.md) for deferred work: `performance-cost-audit`, skill registry/package manager, runner-skill integration, automated eval contract, and future portability.
|
|
99
|
+
|
|
100
|
+
## What this repo does not claim
|
|
101
|
+
|
|
102
|
+
- Autonomous shipping without Linear/status gates
|
|
103
|
+
- Production-grade robustness or SaaS maturity
|
|
104
|
+
- Provider agnosticism
|
|
105
|
+
- Full isolated npm-installed issue lifecycle (setup validated; issue run not yet)
|
|
106
|
+
- Generic auto-merge for arbitrary product PRs
|
|
107
|
+
|
|
108
|
+
## License
|
|
109
|
+
|
|
110
|
+
MIT — see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
This roadmap is intentionally high-level. It describes likely future product directions, not committed delivery dates.
|
|
4
|
+
|
|
5
|
+
For shipped history, see [CHANGELOG.md](CHANGELOG.md).
|
|
6
|
+
|
|
7
|
+
## Now
|
|
8
|
+
|
|
9
|
+
- Harden post-v0.3.0 operator experience from real `p-dev` installs
|
|
10
|
+
- Validate a full issue lifecycle from an isolated npm-installed workspace
|
|
11
|
+
- Improve cross-platform packaged launch policy beyond macOS browser auto-open
|
|
12
|
+
- Continue validating the Linear → GitHub → Cursor workflow on real but private target repos
|
|
13
|
+
|
|
14
|
+
## Next
|
|
15
|
+
|
|
16
|
+
- Skill registry/package manager and manifests
|
|
17
|
+
- Runner-skill prompt integration (`src/prompts/*.md` remain runner implementation details today)
|
|
18
|
+
- `performance-cost-audit` skill
|
|
19
|
+
- Automated eval/check runners where manual rubrics are currently used
|
|
20
|
+
- Stronger CI/security defaults for target repos
|
|
21
|
+
|
|
22
|
+
## Later
|
|
23
|
+
|
|
24
|
+
- Add additional agent providers after proving a second adapter end to end
|
|
25
|
+
- Support more preview/deployment providers
|
|
26
|
+
- Improve multi-repo and team workflows
|
|
27
|
+
- Automatic upgrade/synchronization of already-created private harness workspaces
|
|
28
|
+
|
|
29
|
+
## Shipped in v0.3.1
|
|
30
|
+
|
|
31
|
+
- Immutable embedded workspace snapshot provisioning in `p-dev-harness@0.3.1`
|
|
32
|
+
- Package-owned GitHub git object provisioning without runtime template dependency
|
|
33
|
+
- Shared upload rate-limit coordination with default concurrency 2
|
|
34
|
+
|
|
35
|
+
## Shipped in v0.3.0
|
|
36
|
+
|
|
37
|
+
- Seven-step guided Configure GUI with confirmation-gated local and remote setup
|
|
38
|
+
- Codespaces-compatible source development path
|
|
39
|
+
- Six canonical harness skills under `.agents/skills/`
|
|
40
|
+
- Public `p-dev-harness@0.3.0` npm package with durable operator workspace
|
|
41
|
+
- Public template provisioning via `weston-uribe/p-dev-harness-template`
|
|
42
|
+
- Automated Vercel bridge configuration and signed webhook verification
|
|
43
|
+
- Guarded Step 7 workflow install PR finalization for system-owned setup PRs
|
|
44
|
+
|
|
45
|
+
## Not planned for v0.x
|
|
46
|
+
|
|
47
|
+
- Autonomous shipping without human-controlled status gates
|
|
48
|
+
- Generic auto-merge for arbitrary public PRs
|
|
49
|
+
- Provider-agnostic claims before multiple providers work end to end
|
|
50
|
+
- Production-grade SaaS/control-plane claims
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { handleLinearWebhook } from "../src/webhook/handle-linear-webhook.js";
|
|
3
|
+
|
|
4
|
+
type VercelRequest = IncomingMessage & {
|
|
5
|
+
method?: string;
|
|
6
|
+
headers: Record<string, string | string[] | undefined>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
async function readRawBody(req: IncomingMessage): Promise<string> {
|
|
10
|
+
const chunks: Buffer[] = [];
|
|
11
|
+
for await (const chunk of req) {
|
|
12
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
13
|
+
}
|
|
14
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function getHeader(req: VercelRequest, name: string): string | null {
|
|
18
|
+
const value = req.headers[name.toLowerCase()] ?? req.headers[name];
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
return value[0] ?? null;
|
|
21
|
+
}
|
|
22
|
+
return value ?? null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default async function handler(
|
|
26
|
+
req: VercelRequest,
|
|
27
|
+
res: ServerResponse,
|
|
28
|
+
): Promise<void> {
|
|
29
|
+
const method = req.method ?? "GET";
|
|
30
|
+
const rawBody = method === "POST" ? await readRawBody(req) : "";
|
|
31
|
+
|
|
32
|
+
const result = await handleLinearWebhook({
|
|
33
|
+
method,
|
|
34
|
+
rawBody,
|
|
35
|
+
headerGetter: (name) => getHeader(req, name),
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
res.statusCode = result.status;
|
|
39
|
+
res.setHeader("Content-Type", "application/json");
|
|
40
|
+
res.end(JSON.stringify(result.body));
|
|
41
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { applyConnectServicesRemote } from "@/lib/setup-server";
|
|
3
|
+
import type { LocalEnvFormInput } from "@harness/setup/local-apply-actions";
|
|
4
|
+
|
|
5
|
+
export const dynamic = "force-dynamic";
|
|
6
|
+
|
|
7
|
+
export async function POST(request: Request) {
|
|
8
|
+
try {
|
|
9
|
+
const body = (await request.json()) as {
|
|
10
|
+
env: LocalEnvFormInput;
|
|
11
|
+
confirmed: boolean;
|
|
12
|
+
fingerprint: string;
|
|
13
|
+
};
|
|
14
|
+
const result = await applyConnectServicesRemote(body);
|
|
15
|
+
return NextResponse.json(result);
|
|
16
|
+
} catch (error) {
|
|
17
|
+
const message =
|
|
18
|
+
error instanceof Error ? error.message : "Connect services apply failed";
|
|
19
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
20
|
+
}
|
|
21
|
+
}
|
package/workspace-snapshot/files/apps/gui/app/api/setup/apply-harness-repo-provisioning/route.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { applyHarnessRepoProvisioningRemote } from "@/lib/setup-server";
|
|
3
|
+
|
|
4
|
+
export const dynamic = "force-dynamic";
|
|
5
|
+
|
|
6
|
+
export async function POST(request: Request) {
|
|
7
|
+
try {
|
|
8
|
+
const body = (await request.json()) as {
|
|
9
|
+
confirmed?: boolean;
|
|
10
|
+
fingerprint?: string;
|
|
11
|
+
operationId?: string;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
if (!body.fingerprint?.trim() || !body.operationId?.trim()) {
|
|
15
|
+
return NextResponse.json(
|
|
16
|
+
{ error: "Provisioning fingerprint and operation ID are required." },
|
|
17
|
+
{ status: 400 },
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const result = await applyHarnessRepoProvisioningRemote({
|
|
22
|
+
confirmed: body.confirmed === true,
|
|
23
|
+
fingerprint: body.fingerprint,
|
|
24
|
+
operationId: body.operationId,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return NextResponse.json(result);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
const message =
|
|
30
|
+
error instanceof Error
|
|
31
|
+
? error.message
|
|
32
|
+
: "Harness repo provisioning apply failed";
|
|
33
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import {
|
|
3
|
+
applyHarnessSecretsRemote,
|
|
4
|
+
type RemoteSecretFormPayload,
|
|
5
|
+
} from "@/lib/setup-server";
|
|
6
|
+
|
|
7
|
+
export const dynamic = "force-dynamic";
|
|
8
|
+
|
|
9
|
+
export async function POST(request: Request) {
|
|
10
|
+
try {
|
|
11
|
+
const body = (await request.json()) as RemoteSecretFormPayload & {
|
|
12
|
+
confirmed?: boolean;
|
|
13
|
+
fingerprint?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (!body.confirmed) {
|
|
17
|
+
return NextResponse.json(
|
|
18
|
+
{ error: "Remote setup writes require explicit confirmation" },
|
|
19
|
+
{ status: 400 },
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (!body.fingerprint) {
|
|
24
|
+
return NextResponse.json(
|
|
25
|
+
{ error: "Preview fingerprint is required" },
|
|
26
|
+
{ status: 400 },
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const { confirmed, fingerprint, ...payload } = body;
|
|
31
|
+
const result = await applyHarnessSecretsRemote({
|
|
32
|
+
payload,
|
|
33
|
+
confirmed: confirmed === true,
|
|
34
|
+
fingerprint,
|
|
35
|
+
});
|
|
36
|
+
return NextResponse.json(result);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
const message =
|
|
39
|
+
error instanceof Error ? error.message : "Harness secret apply failed";
|
|
40
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { applyLinearSetupRemote } from "@/lib/setup-server";
|
|
3
|
+
import type { LinearSetupPlanInput } from "@harness/setup/linear-setup-apply";
|
|
4
|
+
|
|
5
|
+
export const dynamic = "force-dynamic";
|
|
6
|
+
|
|
7
|
+
export async function POST(request: Request) {
|
|
8
|
+
try {
|
|
9
|
+
const body = (await request.json()) as {
|
|
10
|
+
plan: Omit<LinearSetupPlanInput, "linearApiKey"> & {
|
|
11
|
+
linearApiKey?: string;
|
|
12
|
+
};
|
|
13
|
+
confirmed: boolean;
|
|
14
|
+
fingerprint: string;
|
|
15
|
+
};
|
|
16
|
+
const result = await applyLinearSetupRemote(body);
|
|
17
|
+
return NextResponse.json(result);
|
|
18
|
+
} catch (error) {
|
|
19
|
+
const message =
|
|
20
|
+
error instanceof Error ? error.message : "Linear setup apply failed";
|
|
21
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { applyLocalFiles } from "@/lib/setup-server";
|
|
3
|
+
import type { LocalSetupFormPayload } from "@/lib/setup-server";
|
|
4
|
+
|
|
5
|
+
export const dynamic = "force-dynamic";
|
|
6
|
+
|
|
7
|
+
interface ApplyRequestBody extends LocalSetupFormPayload {
|
|
8
|
+
confirmed: boolean;
|
|
9
|
+
fingerprint: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export async function POST(request: Request) {
|
|
13
|
+
try {
|
|
14
|
+
const body = (await request.json()) as ApplyRequestBody;
|
|
15
|
+
const { confirmed, fingerprint, env, config } = body;
|
|
16
|
+
|
|
17
|
+
if (!confirmed) {
|
|
18
|
+
return NextResponse.json(
|
|
19
|
+
{ error: "Local file writes require explicit confirmation" },
|
|
20
|
+
{ status: 400 },
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (!fingerprint) {
|
|
25
|
+
return NextResponse.json(
|
|
26
|
+
{ error: "Preview fingerprint is required" },
|
|
27
|
+
{ status: 400 },
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const result = await applyLocalFiles({
|
|
32
|
+
payload: { env, config },
|
|
33
|
+
confirmed,
|
|
34
|
+
fingerprint,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return NextResponse.json(result);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
const message = error instanceof Error ? error.message : "Apply failed";
|
|
40
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import {
|
|
3
|
+
applyTargetWorkflowRemote,
|
|
4
|
+
type RemoteTargetWorkflowFormPayload,
|
|
5
|
+
} from "@/lib/setup-server";
|
|
6
|
+
|
|
7
|
+
export const dynamic = "force-dynamic";
|
|
8
|
+
|
|
9
|
+
export async function POST(request: Request) {
|
|
10
|
+
try {
|
|
11
|
+
const body = (await request.json()) as RemoteTargetWorkflowFormPayload & {
|
|
12
|
+
confirmed?: boolean;
|
|
13
|
+
fingerprint?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (!body.repoConfigId || !body.targetRepo || !body.productionBranch) {
|
|
17
|
+
return NextResponse.json(
|
|
18
|
+
{ error: "repoConfigId, targetRepo, and productionBranch are required" },
|
|
19
|
+
{ status: 400 },
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (!body.confirmed) {
|
|
24
|
+
return NextResponse.json(
|
|
25
|
+
{ error: "Remote setup writes require explicit confirmation" },
|
|
26
|
+
{ status: 400 },
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!body.fingerprint) {
|
|
31
|
+
return NextResponse.json(
|
|
32
|
+
{ error: "Preview fingerprint is required" },
|
|
33
|
+
{ status: 400 },
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const { confirmed, fingerprint, ...payload } = body;
|
|
38
|
+
const result = await applyTargetWorkflowRemote({
|
|
39
|
+
payload,
|
|
40
|
+
confirmed: confirmed === true,
|
|
41
|
+
fingerprint,
|
|
42
|
+
});
|
|
43
|
+
return NextResponse.json(result);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
const message =
|
|
46
|
+
error instanceof Error ? error.message : "Target workflow apply failed";
|
|
47
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { applyVercelBridgeRemote } from "@/lib/setup-server";
|
|
3
|
+
import type { VercelBridgePlanInput } from "@harness/setup/vercel-setup-apply";
|
|
4
|
+
|
|
5
|
+
export const dynamic = "force-dynamic";
|
|
6
|
+
|
|
7
|
+
export async function POST(request: Request) {
|
|
8
|
+
try {
|
|
9
|
+
const body = (await request.json()) as {
|
|
10
|
+
plan: Omit<VercelBridgePlanInput, "vercelToken" | "linearApiKey"> & {
|
|
11
|
+
vercelToken?: string;
|
|
12
|
+
linearApiKey?: string;
|
|
13
|
+
};
|
|
14
|
+
confirmed: boolean;
|
|
15
|
+
fingerprint: string;
|
|
16
|
+
manualComplete?: boolean;
|
|
17
|
+
verifyOnly?: boolean;
|
|
18
|
+
};
|
|
19
|
+
const result = await applyVercelBridgeRemote(body);
|
|
20
|
+
return NextResponse.json(result);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
const message =
|
|
23
|
+
error instanceof Error ? error.message : "Vercel bridge apply failed";
|
|
24
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import {
|
|
3
|
+
finalizeTargetWorkflowRemoteAction,
|
|
4
|
+
type RemoteTargetWorkflowFormPayload,
|
|
5
|
+
} from "@/lib/setup-server";
|
|
6
|
+
|
|
7
|
+
export const dynamic = "force-dynamic";
|
|
8
|
+
|
|
9
|
+
export async function POST(request: Request) {
|
|
10
|
+
try {
|
|
11
|
+
const body = (await request.json()) as RemoteTargetWorkflowFormPayload & {
|
|
12
|
+
prUrl?: string;
|
|
13
|
+
branchName?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (!body.repoConfigId || !body.targetRepo || !body.productionBranch) {
|
|
17
|
+
return NextResponse.json(
|
|
18
|
+
{ error: "repoConfigId, targetRepo, and productionBranch are required" },
|
|
19
|
+
{ status: 400 },
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const result = await finalizeTargetWorkflowRemoteAction(body);
|
|
24
|
+
return NextResponse.json(result);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
const message =
|
|
27
|
+
error instanceof Error
|
|
28
|
+
? error.message
|
|
29
|
+
: "Target workflow finalization failed";
|
|
30
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
31
|
+
}
|
|
32
|
+
}
|