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,213 @@
|
|
|
1
|
+
# p-dev — Product Development Harness CLI
|
|
2
|
+
|
|
3
|
+
**Canonical end-user guide** for the public `p-dev-harness` npm package.
|
|
4
|
+
|
|
5
|
+
The operator product is still called **p-dev**. The npm package is published as **`p-dev-harness`** because the registry rejected `p-dev` as too similar to the existing [`pdev`](https://www.npmjs.com/package/pdev) package.
|
|
6
|
+
|
|
7
|
+
`p-dev` launches the guided **Configure GUI** without cloning the harness source repository. It is the primary product-manager path for **v0.3.1**.
|
|
8
|
+
|
|
9
|
+
## What p-dev is
|
|
10
|
+
|
|
11
|
+
`p-dev` is a packaged operator shell for the Product Development Harness. It:
|
|
12
|
+
|
|
13
|
+
- starts the seven-step Configure GUI locally
|
|
14
|
+
- stores durable operator state under a workspace directory
|
|
15
|
+
- can provision or reconnect a private `OWNER/p-dev-harness` workspace from the **embedded package snapshot** (0.3.1+) or reconnect legacy 0.3.0 managed workspaces
|
|
16
|
+
- guides service credentials, Linear workspace/status setup, Vercel webhook bridge, target repos, local files, cloud secrets, and target workflow finalization
|
|
17
|
+
|
|
18
|
+
It does **not** replace the source repository for harness development or contribution.
|
|
19
|
+
|
|
20
|
+
## Supported environment
|
|
21
|
+
|
|
22
|
+
| Requirement | Detail |
|
|
23
|
+
|-------------|--------|
|
|
24
|
+
| Node.js | **22+** required |
|
|
25
|
+
| Packaged platform | **macOS validated** for browser auto-launch |
|
|
26
|
+
| Agent provider | **Cursor only** (implemented) |
|
|
27
|
+
| Control plane | **Linear + GitHub + GitHub Actions + Vercel** (supported stack) |
|
|
28
|
+
| Maturity | Early-stage operator tool — **not** production SaaS |
|
|
29
|
+
|
|
30
|
+
On non-macOS platforms, use `--no-open` and open the printed Configure URL manually. Browser auto-launch is not validated outside macOS.
|
|
31
|
+
|
|
32
|
+
## Install and launch
|
|
33
|
+
|
|
34
|
+
Pinned release:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx --yes p-dev-harness@0.3.1
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Latest channel:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx --yes p-dev-harness
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Do not open a browser automatically:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx --yes p-dev-harness@0.3.1 --no-open
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Use a custom workspace directory:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx --yes p-dev-harness@0.3.1 --workspace /path/to/workspace
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or set `P_DEV_HOME`:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
export P_DEV_HOME=/path/to/workspace
|
|
62
|
+
npx --yes p-dev-harness@0.3.1
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Default workspace when neither flag nor env is set: `~/.p-dev`.
|
|
66
|
+
|
|
67
|
+
## Workspace and local state
|
|
68
|
+
|
|
69
|
+
Workspace resolution priority: `--workspace` → `P_DEV_HOME` → `~/.p-dev`.
|
|
70
|
+
|
|
71
|
+
The workspace is durable operator state. Typical files:
|
|
72
|
+
|
|
73
|
+
| Path | Purpose |
|
|
74
|
+
|------|---------|
|
|
75
|
+
| `.env.local` | Local secrets and config pointer (gitignored pattern) |
|
|
76
|
+
| `.harness/config.local.json` | Operator harness config |
|
|
77
|
+
| `.harness/p-dev-managed-repo.json` | Managed private harness workspace marker (when provisioned) |
|
|
78
|
+
|
|
79
|
+
`p-dev` seeds safe templates (`.env.example`, `.harness/config.example.json`) **without overwriting** existing operator files. Package preparation and npm install do **not** overwrite an existing workspace.
|
|
80
|
+
|
|
81
|
+
## Required credentials
|
|
82
|
+
|
|
83
|
+
You need accounts and API keys for:
|
|
84
|
+
|
|
85
|
+
- **Linear** — workspace/team/project and workflow statuses
|
|
86
|
+
- **Cursor** — cloud agent API key
|
|
87
|
+
- **GitHub** — classic personal access token for packaged provisioning and remote setup
|
|
88
|
+
- **Vercel** — team/project for the webhook bridge (when using cloud automation)
|
|
89
|
+
|
|
90
|
+
### GitHub token permissions (derived from implementation)
|
|
91
|
+
|
|
92
|
+
**Packaged workspace provisioning (Step 1, packaged mode only):**
|
|
93
|
+
|
|
94
|
+
- Classic PAT required — fine-grained tokens are **not** supported for automatic provisioning
|
|
95
|
+
- Scopes: **`repo`** and **`workflow`**
|
|
96
|
+
- `public_repo` alone is insufficient for private workspace creation
|
|
97
|
+
|
|
98
|
+
**Guided setup generally:**
|
|
99
|
+
|
|
100
|
+
- Classic PAT: **`repo`** (or `public_repo` for public repos) and **`workflow`**
|
|
101
|
+
- Fine-grained PAT: **Contents write** plus **Workflows write** on each target repo (workflow write is confirmed per repo in later steps; GitHub does not expose a dedicated read-only workflow-write API)
|
|
102
|
+
|
|
103
|
+
Step 1 helper text: *"Use a classic GitHub personal access token with repo and workflow access. This lets the harness check your repos, save encrypted setup secrets, and open workflow install PRs later."*
|
|
104
|
+
|
|
105
|
+
Do not commit tokens. Secret values never belong in docs, git, or PR comments.
|
|
106
|
+
|
|
107
|
+
## Embedded workspace snapshot (0.3.1+)
|
|
108
|
+
|
|
109
|
+
Fresh private harness workspaces are provisioned from the **immutable embedded workspace snapshot** inside the exact `p-dev-harness@X.Y.Z` npm package you install:
|
|
110
|
+
|
|
111
|
+
- Snapshot manifest: `workspace-snapshot/manifest.json` in the published tarball
|
|
112
|
+
- Provisioning uses GitHub git object APIs (`createUserRepository` + blob/tree/commit)
|
|
113
|
+
- Marker v3 records `createdFromPackageSnapshot` provenance tied to the embedded manifest
|
|
114
|
+
- Package version and snapshot identity are bound — reinstalling a different package version does not silently rewrite an existing workspace
|
|
115
|
+
|
|
116
|
+
**First-time provisioning can take several minutes** while hundreds of snapshot blobs upload. Configure shows upload progress. If GitHub rate-limits the upload, the harness coordinates a shared pause and retries automatically.
|
|
117
|
+
|
|
118
|
+
Optional advanced override: `HARNESS_SNAPSHOT_UPLOAD_CONCURRENCY` (integer `1`–`4`; default `2`). Ordinary users do not need to set this.
|
|
119
|
+
|
|
120
|
+
### Legacy 0.3.0 reconnect
|
|
121
|
+
|
|
122
|
+
Valid existing managed workspaces created by `p-dev-harness@0.3.0` from `weston-uribe/p-dev-harness-template` reconnect without content rewrite. The public template is a **frozen legacy compatibility artifact** for 0.3.0 only — it is not used for 0.3.1+ fresh provisioning and does not need to remain available for new 0.3.1 installs.
|
|
123
|
+
|
|
124
|
+
## Seven guided setup stages
|
|
125
|
+
|
|
126
|
+
| Step | Title | What it does |
|
|
127
|
+
|------|-------|--------------|
|
|
128
|
+
| 1 | Connect services | Verify and save Linear, Cursor, GitHub, Vercel credentials; packaged mode may provision private harness workspace |
|
|
129
|
+
| 2 | Set up Linear workspace | Create/map team, project, and required workflow statuses (confirmation-gated) |
|
|
130
|
+
| 3 | Set up Vercel webhook bridge | Create/map Vercel resources, upsert env vars, configure Linear webhook, trigger production redeploy, verify signed webhook |
|
|
131
|
+
| 4 | Choose target repo(s) | Select targets and create local setup files (confirmation-gated local writes) |
|
|
132
|
+
| 5 | Check local readiness | Validate local config and permissions before cloud writes |
|
|
133
|
+
| 6 | Connect cloud secrets | Write harness repo GitHub Actions secrets (confirmation-gated) |
|
|
134
|
+
| 7 | Install target repo workflow | Create/reuse workflow install PR, validate checks, guarded merge, verify on production branch |
|
|
135
|
+
|
|
136
|
+
Remote mutations require explicit confirmation and fingerprint checks. Step 1 does **not** auto-advance when keys become complete — click **Continue**.
|
|
137
|
+
|
|
138
|
+
### Step 7 workflow finalization
|
|
139
|
+
|
|
140
|
+
For harness-owned setup PRs, Step 7:
|
|
141
|
+
|
|
142
|
+
- creates or updates `.github/workflows/trigger-harness-production-sync.yml` on an install branch
|
|
143
|
+
- opens or reuses a PR (never writes directly to production)
|
|
144
|
+
- polls required checks
|
|
145
|
+
- merges automatically when checks pass and content is valid
|
|
146
|
+
- verifies the workflow exists on the production branch after merge
|
|
147
|
+
|
|
148
|
+
This automation applies to **system-owned setup PRs only**. Ordinary product implementation PRs remain governed by Linear status gates and are not made generically auto-mergeable.
|
|
149
|
+
|
|
150
|
+
## Stop, restart, and resume
|
|
151
|
+
|
|
152
|
+
- Stop: `Ctrl+C` in the terminal running `p-dev`
|
|
153
|
+
- Restart: run the same `npx` command again
|
|
154
|
+
- Resume: use the same workspace (`P_DEV_HOME` or `--workspace`); seeded and applied files are preserved
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
| Symptom | Action |
|
|
159
|
+
|---------|--------|
|
|
160
|
+
| `ENOSPC` from npm `_npx` cache | Free disk space or clear npm cache — **do not delete `~/.p-dev`** unless you intend to reset operator state |
|
|
161
|
+
| Browser does not open | Use `--no-open` and open the printed URL manually |
|
|
162
|
+
| Step 6 blocked | Ensure harness dispatch repo is resolved (packaged provisioning or explicit config) |
|
|
163
|
+
| Fine-grained PAT at Step 1 | Use classic `repo` + `workflow` for packaged provisioning; fine-grained may work for later steps with per-repo permissions |
|
|
164
|
+
| Slow first provisioning | Normal for 0.3.1+ snapshot upload; wait for progress to complete; rate-limit pauses retry automatically |
|
|
165
|
+
| Port in use | `p-dev` scans from port 3000; use the URL printed in the terminal |
|
|
166
|
+
|
|
167
|
+
### Uninstall npm execution artifacts without deleting operator state
|
|
168
|
+
|
|
169
|
+
To clear cached npx execution without removing `~/.p-dev`:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm cache clean --force
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Operator workspace files under `P_DEV_HOME` or `~/.p-dev` are separate from npm cache.
|
|
176
|
+
|
|
177
|
+
## Security boundaries
|
|
178
|
+
|
|
179
|
+
- Secrets live in local workspace files, GitHub Actions secrets, and Vercel env vars — never in the published package
|
|
180
|
+
- Remote writes are confirmation-gated with fingerprint validation
|
|
181
|
+
- Harness output is redacted before logs and artifacts
|
|
182
|
+
- The published tarball excludes `.env.local`, local config, control-plane state, credentials, and generated private workspace content
|
|
183
|
+
|
|
184
|
+
## Known limitations
|
|
185
|
+
|
|
186
|
+
- **Cursor-only** agent provider
|
|
187
|
+
- **Linear / GitHub / GitHub Actions / Vercel** stack only
|
|
188
|
+
- **macOS validated** for packaged browser auto-launch; other platforms use `--no-open`
|
|
189
|
+
- **No full real issue lifecycle** has been run from an isolated npm-installed workspace — setup completion is validated; end-to-end issue runs from a fresh npm install are not
|
|
190
|
+
- **No automatic upgrade/sync** of an already-created private harness workspace to a newer package snapshot
|
|
191
|
+
- **Not production-grade SaaS** or provider-agnostic
|
|
192
|
+
- Manual eval rubrics remain where automation is not implemented
|
|
193
|
+
|
|
194
|
+
## Source development path
|
|
195
|
+
|
|
196
|
+
Contributors and harness maintainers should clone the source repository:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
git clone https://github.com/weston-uribe/agentic-product-development-harness.git
|
|
200
|
+
cd agentic-product-development-harness
|
|
201
|
+
npm ci && npm run build
|
|
202
|
+
npm run harness:configure
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
See [`docs/getting-started.md`](getting-started.md) and [`README.md`](../README.md).
|
|
206
|
+
|
|
207
|
+
## Related docs
|
|
208
|
+
|
|
209
|
+
- Release contract: [`docs/releases/v0.3.1.md`](releases/v0.3.1.md)
|
|
210
|
+
- Local GUI (source): [`docs/gui-local.md`](gui-local.md)
|
|
211
|
+
- Remote setup: [`docs/gui-remote-setup.md`](gui-remote-setup.md)
|
|
212
|
+
- Security: [`docs/security.md`](security.md)
|
|
213
|
+
- Historical packaging spike notes: [`docs/npm-packaging-spike.md`](npm-packaging-spike.md)
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Production sync automation
|
|
2
|
+
|
|
3
|
+
Operator guide for automatic production sync after a target repo integration branch is promoted to production.
|
|
4
|
+
|
|
5
|
+
**Related:** [`docs/target-repo-branch-setup.md`](target-repo-branch-setup.md), [`docs/linear-watcher-setup.md`](linear-watcher-setup.md), [`docs/operator-config.md`](operator-config.md), [`docs/releases/v0.3.0.md`](releases/v0.3.0.md)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
When `owner/example-target-app` **`main`** receives a push (after manual integration branch → production branch promotion), the harness should run production sync automatically:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
target repo push to main → repository_dispatch production_promoted → harness GHA → harness:sync-production --repo target-app
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Powerful tokens stay in the **harness repo** GitHub Actions secrets only. The target repo receives at most **`HARNESS_DISPATCH_TOKEN`** (dispatch-only PAT scoped to the harness repo).
|
|
18
|
+
|
|
19
|
+
Manual CLI remains supported:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm run harness:sync-production -- --repo target-app
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Workflow scope preflight
|
|
28
|
+
|
|
29
|
+
Any add or update under `.github/workflows/**` may require a git credential with GitHub **`workflow` scope**. Before pushing workflow files:
|
|
30
|
+
|
|
31
|
+
1. Run `gh auth status` and confirm scopes include `workflow`, **or**
|
|
32
|
+
2. Apply workflow YAML via GitHub web UI (Settings → Actions → workflow editor / “Add file”), **or**
|
|
33
|
+
3. Push with a PAT that includes `workflow` + `repo`.
|
|
34
|
+
|
|
35
|
+
If workflow files cannot be pushed, use the exact YAML below via GitHub UI. Do **not** leave untracked workflow files in a local clone.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Harness repo: `harness-auto-runner.yml`
|
|
40
|
+
|
|
41
|
+
**Operator config:** set GitHub Actions secret **`HARNESS_CONFIG_JSON_B64`** with your private harness config so sync accepts your target repo ids. See [`docs/operator-config.md`](operator-config.md).
|
|
42
|
+
|
|
43
|
+
**Track A:** merge the updated workflow to [`.github/workflows/harness-auto-runner.yml`](../.github/workflows/harness-auto-runner.yml) using a credential with **`workflow` scope**.
|
|
44
|
+
|
|
45
|
+
**Track B (OAuth lacks `workflow` scope):** copy the full intended workflow from [`tests/fixtures/workflows/harness-auto-runner-with-production-sync.yml`](../tests/fixtures/workflows/harness-auto-runner-with-production-sync.yml) into GitHub web UI → edit `harness-auto-runner.yml` on `main`. Automation is **not live** until this lands on origin.
|
|
46
|
+
|
|
47
|
+
The harness workflow must include:
|
|
48
|
+
|
|
49
|
+
- `repository_dispatch` type **`production_promoted`**
|
|
50
|
+
- Job **`sync-production`** running `npm run harness:sync-production -- --repo … --json`
|
|
51
|
+
- Optional **`workflow_dispatch`** input **`sync_repo`** (e.g. `target-app`) for manual cloud sync
|
|
52
|
+
- Optional **`workflow_dispatch`** input **`sync_dry_run`** (default **`true`**) — passes `--dry-run` to `harness:sync-production` so manual cloud validation inspects Linear without writes
|
|
53
|
+
|
|
54
|
+
### Manual cloud sync (harness Actions)
|
|
55
|
+
|
|
56
|
+
Actions → **Harness Auto Runner** → Run workflow → set **`sync_repo`** = `target-app` (leave **`issue`** empty).
|
|
57
|
+
|
|
58
|
+
**Safe cloud validation sequence** (after `HARNESS_CONFIG_JSON_B64` is set):
|
|
59
|
+
|
|
60
|
+
1. **`sync_repo=harness`** (or any repo where `baseBranch === productionBranch`) — confirms config loading and repo resolution with a no-op exit when branches match.
|
|
61
|
+
2. **`sync_repo=real-target`** with **`sync_dry_run=true`** (default) — inspects production-sync routing and Linear issue candidates **without writes**.
|
|
62
|
+
3. **`sync_dry_run=false`** only when ready for actual Linear status updates after a real `dev` → `main` promotion.
|
|
63
|
+
|
|
64
|
+
Example dry-run dispatch:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
gh workflow run "Harness Auto Runner" \
|
|
68
|
+
--repo weston-uribe/agentic-product-development-harness \
|
|
69
|
+
-f sync_repo=real-target \
|
|
70
|
+
-f sync_dry_run=true
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`production_promoted` **repository_dispatch** runs always use live sync (no dry-run).
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Event payload
|
|
78
|
+
|
|
79
|
+
**Event type:** `production_promoted`
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"repo": "target-app",
|
|
84
|
+
"productionBranch": "main",
|
|
85
|
+
"sourceRepo": "owner/example-target-app",
|
|
86
|
+
"after": "<commit-sha-on-main>",
|
|
87
|
+
"ref": "refs/heads/main",
|
|
88
|
+
"receivedAt": "2026-07-07T23:46:00.000Z"
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Optional: `githubRunId`, `githubDeliveryId` (audit only). Harness ignores `after` for promotion proof; per-issue strong proof is unchanged.
|
|
93
|
+
|
|
94
|
+
### Test dispatch (no target repo push)
|
|
95
|
+
|
|
96
|
+
Requires harness workflow on origin with `production_promoted` handler (see Track B fixture). Use JSON body:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
gh api repos/weston-uribe/agentic-product-development-harness/dispatches --method POST --input - <<'EOF'
|
|
100
|
+
{
|
|
101
|
+
"event_type": "production_promoted",
|
|
102
|
+
"client_payload": {
|
|
103
|
+
"repo": "target-app",
|
|
104
|
+
"productionBranch": "main",
|
|
105
|
+
"sourceRepo": "owner/example-target-app",
|
|
106
|
+
"after": "<main-sha>",
|
|
107
|
+
"ref": "refs/heads/main",
|
|
108
|
+
"receivedAt": "2026-07-07T23:46:00.000Z"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
EOF
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Requires a PAT with **Contents: write** on the harness repo (same class as Vercel `GITHUB_DISPATCH_TOKEN`).
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Target repo: trigger workflow
|
|
119
|
+
|
|
120
|
+
**GUI path (Milestone 5):** after local config is ready, use Settings / Configure → **Remote setup** → target repo card to preview and open an install PR on branch `harness/setup-production-sync-<repoConfigId>`. The GUI never writes directly to the production branch. See [`docs/gui-remote-setup.md`](gui-remote-setup.md).
|
|
121
|
+
|
|
122
|
+
**Track A:** add the file below to **`owner/example-target-app`** using a **`workflow`-scoped** credential.
|
|
123
|
+
|
|
124
|
+
**Track B:** copy from [`tests/fixtures/workflows/trigger-harness-production-sync.yml`](../tests/fixtures/workflows/trigger-harness-production-sync.yml) via GitHub web UI → **Add file** on production branch.
|
|
125
|
+
|
|
126
|
+
Path: `.github/workflows/trigger-harness-production-sync.yml`
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
# See tests/fixtures/workflows/trigger-harness-production-sync.yml for canonical content.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Guards:** runs only on **`main`** pushes — not the integration branch, not issue branches.
|
|
133
|
+
|
|
134
|
+
### Target repo secret
|
|
135
|
+
|
|
136
|
+
In the **target repo** → Settings → Secrets and variables → Actions:
|
|
137
|
+
|
|
138
|
+
| Secret | Permission |
|
|
139
|
+
|--------|------------|
|
|
140
|
+
| `HARNESS_DISPATCH_TOKEN` | Fine-grained **Contents: Read and write** on `weston-uribe/agentic-product-development-harness` only; or classic `repo` scoped to harness repo |
|
|
141
|
+
|
|
142
|
+
Can reuse the same PAT as Vercel `GITHUB_DISPATCH_TOKEN` for the Linear bridge.
|
|
143
|
+
|
|
144
|
+
**Do not** add `LINEAR_API_KEY` or merge-capable target-repo `GITHUB_TOKEN` to the target repo.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Track B: webhook trigger (optional)
|
|
149
|
+
|
|
150
|
+
If adding a target repo workflow file is blocked, configure a **GitHub repo webhook** on the target repo (Settings → Webhooks):
|
|
151
|
+
|
|
152
|
+
- URL: future harness Vercel endpoint (not implemented in v1; prefer target repo workflow above)
|
|
153
|
+
- Events: **Push**
|
|
154
|
+
- Filter in handler: `ref == refs/heads/main` only
|
|
155
|
+
|
|
156
|
+
The harness workflow change on `production_promoted` is **still required**; webhook only replaces the target repo workflow file.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Validation gates
|
|
161
|
+
|
|
162
|
+
1. `npm test`, `npm run test:webhook`, `npm run build`, `npm run harness:doctor`
|
|
163
|
+
2. Set `HARNESS_CONFIG_JSON_B64` with private config including target repo id (see [`docs/operator-config.md`](operator-config.md))
|
|
164
|
+
3. Dispatch test (`gh api … production_promoted`) → harness **sync-production** job runs (not `run-harness`)
|
|
165
|
+
3. Target repo push to **`main`** → dispatch → sync job
|
|
166
|
+
4. Target repo push to integration branch → no dispatch workflow run
|
|
167
|
+
5. Repeat **`main`** push → idempotent (no duplicate Linear comments)
|
|
168
|
+
6. Issues update to **Merged / Deployed** only when merge commit is reachable on `main` (strong proof)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Rollback
|
|
173
|
+
|
|
174
|
+
1. Disable or delete target repo `trigger-harness-production-sync.yml`
|
|
175
|
+
2. Remove `production_promoted` handler from harness workflow (or disable workflow)
|
|
176
|
+
3. Continue manual sync: `npm run harness:sync-production -- --repo target-app`
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Provider portability and configuration posture
|
|
2
|
+
|
|
3
|
+
This document describes what is configurable, what is fixed, and what is
|
|
4
|
+
intentionally **not** claimed for the harness. Read this as a promise boundary: what v0.3.0 supports today, and what it deliberately does not claim. It complements
|
|
5
|
+
[`docs/decisions/0004-agent-provider-boundary.md`](decisions/0004-agent-provider-boundary.md).
|
|
6
|
+
|
|
7
|
+
**Release contract:** [`docs/releases/v0.3.0.md`](releases/v0.3.0.md)
|
|
8
|
+
|
|
9
|
+
## Current v0.3.0 posture
|
|
10
|
+
|
|
11
|
+
v0.3.0 is a **Cursor-first** harness for **Linear + GitHub + GitHub Actions**. The
|
|
12
|
+
architecture is modular by subsystem (product system, SCM/PR system, runner,
|
|
13
|
+
agent provider, preview provider), but it is **not provider-agnostic yet**.
|
|
14
|
+
Cursor is the only implemented agent execution provider. Runner phases import
|
|
15
|
+
[`src/agents/`](../src/agents/) (provider-facing facade); the Cursor adapter
|
|
16
|
+
delegates to [`src/cursor/`](../src/cursor/) for SDK-specific behavior.
|
|
17
|
+
|
|
18
|
+
### Support matrix
|
|
19
|
+
|
|
20
|
+
| Subsystem | Implemented / supported in v0.3.0 |
|
|
21
|
+
|-----------|----------------------------------|
|
|
22
|
+
| Product system | Linear |
|
|
23
|
+
| Source control / PR system | GitHub |
|
|
24
|
+
| Runner | GitHub Actions |
|
|
25
|
+
| Agent provider | Cursor Cloud Agents only |
|
|
26
|
+
| Model policy | standard / basic Composer 2.5 unless deliberately changed |
|
|
27
|
+
| Preview provider | Vercel or none |
|
|
28
|
+
| Target repos | GitHub repos configured in `harness.config.json` |
|
|
29
|
+
|
|
30
|
+
## What is configurable today
|
|
31
|
+
|
|
32
|
+
The following are configurable through `harness.config.json` (see
|
|
33
|
+
[`harness.config.schema.json`](../harness.config.schema.json)):
|
|
34
|
+
|
|
35
|
+
- `repos[].id`
|
|
36
|
+
- `repos[].linearProjects`
|
|
37
|
+
- `repos[].linearTeams`
|
|
38
|
+
- `repos[].targetRepo`
|
|
39
|
+
- `repos[].baseBranch`
|
|
40
|
+
- `repos[].productionBranch`
|
|
41
|
+
- `repos[].previewProvider`
|
|
42
|
+
- `repos[].integrationPreviewUrl`
|
|
43
|
+
- `repos[].productionUrl`
|
|
44
|
+
- `repos[].integrationSuccessStatus`
|
|
45
|
+
- `repos[].productionSuccessStatus`
|
|
46
|
+
- `repos[].validation.commands`
|
|
47
|
+
- `allowedTargetRepos`
|
|
48
|
+
- `linear.eligibleStatuses`
|
|
49
|
+
- `linear.transitionalStatuses`
|
|
50
|
+
- timeouts and check/preview polling behavior
|
|
51
|
+
- `agentProvider.id` — currently only `"cursor"` is accepted
|
|
52
|
+
- `agentProvider.model.id` — preferred source for model resolution
|
|
53
|
+
- `defaultModel.id` — backward-compatible fallback when `agentProvider.model` is absent
|
|
54
|
+
|
|
55
|
+
## What is fixed in v0.3.0
|
|
56
|
+
|
|
57
|
+
The following are structural assumptions in v0.3.0 and are **not** configurable as
|
|
58
|
+
provider swaps:
|
|
59
|
+
|
|
60
|
+
- Linear as the product system
|
|
61
|
+
- GitHub as the SCM / PR provider
|
|
62
|
+
- GitHub Actions as the cloud runner
|
|
63
|
+
- Cursor Cloud Agents as the agent provider
|
|
64
|
+
- Cursor-specific run observation
|
|
65
|
+
- Cursor-specific marker fields
|
|
66
|
+
- Vercel-specific preview capture where preview is enabled
|
|
67
|
+
|
|
68
|
+
## What is intentionally not claimed
|
|
69
|
+
|
|
70
|
+
To avoid overstating maturity, the harness does **not** claim any of the
|
|
71
|
+
following in v0.3.0:
|
|
72
|
+
|
|
73
|
+
- Claude Code support
|
|
74
|
+
- Codex support
|
|
75
|
+
- local VS Code agent support
|
|
76
|
+
- GitLab / Bitbucket support
|
|
77
|
+
- generic PM-system support
|
|
78
|
+
- production-grade portability
|
|
79
|
+
- production SaaS maturity
|
|
80
|
+
- provider-agnostic operation
|
|
81
|
+
|
|
82
|
+
## Future provider adapter requirements
|
|
83
|
+
|
|
84
|
+
A future agent provider adapter should support the full run lifecycle used by
|
|
85
|
+
the runner phases today:
|
|
86
|
+
|
|
87
|
+
- planning run creation
|
|
88
|
+
- implementation run creation
|
|
89
|
+
- revision run against an existing PR branch
|
|
90
|
+
- integration repair run against an existing PR branch
|
|
91
|
+
- lifecycle observation
|
|
92
|
+
- terminal status capture
|
|
93
|
+
- assistant output capture
|
|
94
|
+
- branch/PR capture
|
|
95
|
+
- provider diagnostics
|
|
96
|
+
- timeout/cancellation
|
|
97
|
+
- generic error mapping
|
|
98
|
+
- validation evidence reporting
|
|
99
|
+
- raw provider artifact retention
|
|
100
|
+
|
|
101
|
+
## Skill portability
|
|
102
|
+
|
|
103
|
+
Harness skills are portable workflow contracts stored canonically at
|
|
104
|
+
[`.agents/skills/<skill-name>/SKILL.md`](../.agents/skills/). Client-specific
|
|
105
|
+
locations (`.cursor/skills`, `.claude/skills`, ChatGPT project files, future
|
|
106
|
+
Codex adapters) are export or adaptation targets — not canonical sources.
|
|
107
|
+
|
|
108
|
+
Implemented canonical skills: `issue-intake`, `code-health-audit`,
|
|
109
|
+
`architecture-evolution-audit`, `security-audit`, `planner`, and `implementation`
|
|
110
|
+
at [`.agents/skills/<skill-name>/SKILL.md`](../.agents/skills/). `performance-cost-audit`,
|
|
111
|
+
skill registry, package manager, skill manifests, runner-skill prompt integration,
|
|
112
|
+
and provider/client adapters are **not implemented** — see
|
|
113
|
+
[`docs/skills/skill-architecture.md`](skills/skill-architecture.md).
|
|
114
|
+
SDK runner prompts in [`src/prompts/`](../src/prompts/) remain runner
|
|
115
|
+
implementation details, not canonical skills.
|
|
116
|
+
|
|
117
|
+
## Recommended next implementation steps
|
|
118
|
+
|
|
119
|
+
1. **Make Cursor explicit** in docs and config posture rather than implying
|
|
120
|
+
provider agnosticism. *(Done: `agentProvider.id: "cursor"` config shape and
|
|
121
|
+
`src/agents/` provider seam; only Cursor is implemented.)*
|
|
122
|
+
2. **Introduce an internal provider seam** that isolates Cursor SDK calls out of
|
|
123
|
+
the runner phases behind a single interface. *(Done: runner phases import
|
|
124
|
+
`src/agents/`; Cursor implementation remains in `src/cursor/`.)*
|
|
125
|
+
3. **Extend provider config only when a second adapter exists** — the
|
|
126
|
+
`agentProvider` shape is Cursor-only today; do not add speculative provider
|
|
127
|
+
ids or a plugin system.
|
|
128
|
+
4. **Preserve legacy markers** (`cursorAgentId`, `cursorRunId`) and Linear
|
|
129
|
+
metadata until they can be safely migrated behind the provider seam.
|
|
130
|
+
5. **Validate a second adapter** end-to-end against the full lifecycle before
|
|
131
|
+
claiming any additional provider support.
|