@openplanr/protocol 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +82 -0
- package/lib/dashboard/closed-json-contract.mjs +141 -0
- package/lib/dashboard/generated/operate-experience-surface-schema-data.mjs +67 -0
- package/lib/dashboard/generated/operate-review-schema-data.mjs +35 -0
- package/lib/dashboard/generated/operate-schema-token-codec.mjs +127 -0
- package/lib/dashboard/operate-experience-audit-display-contract.d.mts +196 -0
- package/lib/dashboard/operate-experience-audit-display-contract.mjs +700 -0
- package/lib/dashboard/operate-experience-display-contract.d.mts +572 -0
- package/lib/dashboard/operate-experience-display-contract.mjs +1007 -0
- package/lib/dashboard/operate-experience-surface-contract.d.mts +157 -0
- package/lib/dashboard/operate-experience-surface-contract.mjs +91 -0
- package/lib/dashboard/operate-review-contract.d.mts +34 -0
- package/lib/dashboard/operate-review-contract.mjs +175 -0
- package/lib/dashboard/operate-review-display-workspace-contract.d.mts +54 -0
- package/lib/dashboard/operate-review-display-workspace-contract.mjs +258 -0
- package/lib/dashboard/operate-review-payload-safety.d.mts +7 -0
- package/lib/dashboard/operate-review-payload-safety.mjs +42 -0
- package/lib/dashboard/operate-review-workspace-projection-v2.d.mts +218 -0
- package/lib/protocol/index.d.ts +2638 -0
- package/package.json +115 -0
- package/registries/commands.json +1952 -0
- package/registries/diagram-grammars.json +2407 -0
- package/registries/diagram-semantic-patterns.json +111 -0
- package/registries/output-paths.json +40 -0
- package/registries/outputs.json +864 -0
- package/registries/roles.json +661 -0
- package/registries/rules.json +261 -0
- package/registries/skill-host-profiles.json +247 -0
- package/registries/skill-modules.json +1112 -0
- package/registries/skill-routing.json +389 -0
- package/registries/skills.json +1545 -0
- package/registries/task-kinds.json +220 -0
- package/registry/adapters.json +110 -0
- package/registry/artifact-theme.json +60 -0
- package/registry/evaluation-graders.json +303 -0
- package/registry/evaluation-host-profiles.json +131 -0
- package/registry/frozen-commands.json +15 -0
- package/registry/landing-operations.json +20 -0
- package/registry/landing-workflows.json +70 -0
- package/registry/live-evidence-providers.json +1 -0
- package/registry/operate-v2-contracts.json +5965 -0
- package/registry/professional-skills.json +115 -0
- package/registry/roles.json +14 -0
- package/registry/ship-review-specialists.json +42 -0
- package/schemas/v1.0.0/design-approved.schema.json +35 -0
- package/schemas/v1.0.0/design-feedback.schema.json +169 -0
- package/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/schemas/v1.0.0/design-session.schema.json +73 -0
- package/schemas/v1.0.0/graph.schema.json +100 -0
- package/schemas/v1.0.0/pipeline-shipped.schema.json +154 -0
- package/schemas/v1.0.0/run-manifest.schema.json +81 -0
- package/schemas/v1.0.0/spec.schema.json +120 -0
- package/schemas/v1.0.0/stack.schema.json +184 -0
- package/schemas/v1.0.0/story.schema.json +95 -0
- package/schemas/v1.0.0/task.schema.json +171 -0
- package/schemas/v1.0.0/taste-profile.schema.json +96 -0
- package/schemas/v1.1.0/adapter-registry.schema.json +72 -0
- package/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/schemas/v1.1.0/artifact-room-descriptor.schema.json +39 -0
- package/schemas/v1.1.0/artifact-room-event.schema.json +184 -0
- package/schemas/v1.1.0/artifact-room-signed-event.schema.json +58 -0
- package/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/schemas/v1.1.0/browser-qa-gate.schema.json +21 -0
- package/schemas/v1.1.0/browser-qa-result.schema.json +24 -0
- package/schemas/v1.1.0/browser-qa-session.schema.json +12 -0
- package/schemas/v1.1.0/ecosystem-manifest.schema.json +46 -0
- package/schemas/v1.1.0/investigation-diagnosis.schema.json +12 -0
- package/schemas/v1.1.0/investigation-event.schema.json +15 -0
- package/schemas/v1.1.0/investigation-experiment.schema.json +17 -0
- package/schemas/v1.1.0/investigation-fix.schema.json +11 -0
- package/schemas/v1.1.0/investigation-hypothesis.schema.json +6 -0
- package/schemas/v1.1.0/investigation-observation.schema.json +10 -0
- package/schemas/v1.1.0/investigation-receipt.schema.json +7 -0
- package/schemas/v1.1.0/investigation-record.schema.json +7 -0
- package/schemas/v1.1.0/investigation-request.schema.json +34 -0
- package/schemas/v1.1.0/planning-review-event.schema.json +64 -0
- package/schemas/v1.1.0/planning-review-receipt.schema.json +19 -0
- package/schemas/v1.1.0/planning-review-record.schema.json +176 -0
- package/schemas/v1.1.0/planning-review-state.schema.json +19 -0
- package/schemas/v1.1.0/professional-skills.schema.json +105 -0
- package/schemas/v1.1.0/professional-specification.schema.json +111 -0
- package/schemas/v1.1.0/provenance-event.schema.json +82 -0
- package/schemas/v1.1.0/role-registry.schema.json +28 -0
- package/schemas/v1.1.0/runtime-lock.schema.json +39 -0
- package/schemas/v1.1.0/ship-closure.schema.json +353 -0
- package/schemas/v1.1.0/ship-review-specialist-registry.schema.json +29 -0
- package/schemas/v1.1.0/ship-risk-classification.schema.json +48 -0
- package/schemas/v1.1.0/specialist-review-result.schema.json +19 -0
- package/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/schemas/v1.12.0/enterprise-access-context.schema.json +217 -0
- package/schemas/v1.12.0/enterprise-agent-handoff.schema.json +508 -0
- package/schemas/v1.12.0/enterprise-artifact-revision.schema.json +87 -0
- package/schemas/v1.12.0/enterprise-change-proposal.schema.json +359 -0
- package/schemas/v1.12.0/enterprise-evidence-reference.schema.json +147 -0
- package/schemas/v1.12.0/enterprise-review-thread.schema.json +278 -0
- package/schemas/v1.12.0/enterprise-sync-state.schema.json +169 -0
- package/schemas/v1.2.0/adapter-registry.schema.json +83 -0
- package/schemas/v1.2.0/dashboard-bootstrap.schema.json +219 -0
- package/schemas/v1.2.0/ecosystem-release-operation.schema.json +90 -0
- package/schemas/v1.2.0/ecosystem-saga.schema.json +54 -0
- package/schemas/v1.2.0/evidence-diagnostic.schema.json +77 -0
- package/schemas/v1.2.0/guided-answer-envelope.schema.json +73 -0
- package/schemas/v1.2.0/guided-confirmation.schema.json +128 -0
- package/schemas/v1.2.0/guided-question.schema.json +242 -0
- package/schemas/v1.2.0/guided-questionnaire.schema.json +278 -0
- package/schemas/v1.2.0/guided-session.schema.json +141 -0
- package/schemas/v1.2.0/landing-confirmation.schema.json +17 -0
- package/schemas/v1.2.0/landing-event.schema.json +12 -0
- package/schemas/v1.2.0/landing-operation-registry.schema.json +16 -0
- package/schemas/v1.2.0/landing-phase-receipt.schema.json +19 -0
- package/schemas/v1.2.0/landing-plan.schema.json +36 -0
- package/schemas/v1.2.0/landing-receipt.schema.json +12 -0
- package/schemas/v1.2.0/landing-workflow-catalog.schema.json +143 -0
- package/schemas/v1.2.0/operate-action-display-workspace.schema.json +119 -0
- package/schemas/v1.2.0/operate-cycle-display-workspace.schema.json +109 -0
- package/schemas/v1.2.0/operate-executive-board-display-surface.schema.json +72 -0
- package/schemas/v1.2.0/operate-experience-audit-display-surface.schema.json +328 -0
- package/schemas/v1.2.0/operate-experience-display-surface.schema.json +46 -0
- package/schemas/v1.2.0/operate-experience-surface.schema.json +590 -0
- package/schemas/v1.2.0/operate-recovery-display-surface.schema.json +85 -0
- package/schemas/v1.2.0/structured-action.schema.json +91 -0
- package/schemas/v1.3.0/adapter-registry.schema.json +84 -0
- package/schemas/v1.3.0/ecosystem-manifest.schema.json +120 -0
- package/schemas/v1.3.0/release-compatibility-claim.schema.json +46 -0
- package/schemas/v1.3.0/release-ledger-receipt.schema.json +45 -0
- package/schemas/v1.3.0/release-ledger.schema.json +60 -0
- package/schemas/v1.4.0/adapter-registry.schema.json +62 -0
- package/schemas/v1.4.0/evaluation-aggregate-report.schema.json +166 -0
- package/schemas/v1.4.0/evaluation-budget.schema.json +49 -0
- package/schemas/v1.4.0/evaluation-corpus.schema.json +93 -0
- package/schemas/v1.4.0/evaluation-fixture.schema.json +64 -0
- package/schemas/v1.4.0/evaluation-gate-policy.schema.json +33 -0
- package/schemas/v1.4.0/evaluation-grader-registration.schema.json +141 -0
- package/schemas/v1.4.0/evaluation-grader-registry.schema.json +20 -0
- package/schemas/v1.4.0/evaluation-host-profile-registry.schema.json +20 -0
- package/schemas/v1.4.0/evaluation-host-profile.schema.json +73 -0
- package/schemas/v1.4.0/evaluation-observation.schema.json +76 -0
- package/schemas/v1.4.0/evaluation-run-result.schema.json +84 -0
- package/schemas/v1.4.0/evaluation-scenario.schema.json +231 -0
- package/schemas/v1.4.0/evaluation-waiver.schema.json +65 -0
- package/schemas/v1.4.0/skill-certification-receipt.schema.json +103 -0
- package/schemas/v1.5.0/command-catalog.schema.json +296 -0
- package/schemas/v1.5.0/common.schema.json +261 -0
- package/schemas/v1.5.0/generated-asset-manifest.schema.json +313 -0
- package/schemas/v1.5.0/implementation-result.schema.json +152 -0
- package/schemas/v1.5.0/migration-preservation-manifest.schema.json +749 -0
- package/schemas/v1.5.0/output-catalog.schema.json +210 -0
- package/schemas/v1.5.0/output-path-catalog.schema.json +81 -0
- package/schemas/v1.5.0/role-registry.schema.json +261 -0
- package/schemas/v1.5.0/rule-catalog.schema.json +130 -0
- package/schemas/v1.5.0/skill-catalog.schema.json +303 -0
- package/schemas/v1.5.0/task-kind-registry.schema.json +167 -0
- package/schemas/v1.5.0/task-manifest.schema.json +373 -0
- package/schemas/v1.5.0/task-output-manifest.schema.json +462 -0
- package/schemas/v1.6.0/common.schema.json +462 -0
- package/schemas/v1.6.0/diagram-consumer-reference.schema.json +167 -0
- package/schemas/v1.6.0/diagram-document.schema.json +699 -0
- package/schemas/v1.6.0/diagram-fidelity-report.schema.json +137 -0
- package/schemas/v1.6.0/diagram-manifest.schema.json +162 -0
- package/schemas/v1.6.0/diagram-quality-report.schema.json +148 -0
- package/schemas/v1.6.0/diagram-review-binding.schema.json +132 -0
- package/schemas/v1.6.0/diagram-semantic-pattern-registry.schema.json +90 -0
- package/schemas/v1.6.0/diagram-type-registry.schema.json +373 -0
- package/schemas/v1.6.0/generated-asset-manifest.schema.json +103 -0
- package/schemas/v1.6.0/skill-catalog.schema.json +84 -0
- package/schemas/v1.6.0/skill-completion-receipt.schema.json +72 -0
- package/schemas/v1.6.0/skill-consent-record.schema.json +74 -0
- package/schemas/v1.6.0/skill-host-profile-registry.schema.json +526 -0
- package/schemas/v1.6.0/skill-learning-record.schema.json +116 -0
- package/schemas/v1.6.0/skill-module-registry.schema.json +108 -0
- package/schemas/v1.6.0/skill-routing-registry.schema.json +93 -0
- package/schemas/v1.6.0/skill-session.schema.json +73 -0
- package/schemas/v1.6.0/skill-source.schema.json +169 -0
- package/schemas/v1.7.0/common.schema.json +464 -0
- package/schemas/v1.7.0/generated-asset-manifest.schema.json +103 -0
- package/schemas/v1.7.0/planning-id-sequence.schema.json +50 -0
- package/schemas/v1.7.0/request-authority.schema.json +71 -0
- package/schemas/v1.7.0/skill-catalog.schema.json +84 -0
- package/schemas/v1.7.0/skill-completion-receipt.schema.json +72 -0
- package/schemas/v1.7.0/skill-consent-record.schema.json +74 -0
- package/schemas/v1.7.0/skill-host-profile-registry.schema.json +526 -0
- package/schemas/v1.7.0/skill-learning-record.schema.json +116 -0
- package/schemas/v1.7.0/skill-module-registry.schema.json +108 -0
- package/schemas/v1.7.0/skill-routing-registry.schema.json +93 -0
- package/schemas/v1.7.0/skill-session.schema.json +73 -0
- package/schemas/v1.7.0/skill-source.schema.json +169 -0
- package/schemas/v1.7.0/spec.schema.json +117 -0
- package/schemas/v1.7.0/story.schema.json +107 -0
- package/schemas/v1.7.0/task.schema.json +217 -0
- package/schemas/v1.8.0/common.schema.json +96 -0
- package/schemas/v1.8.0/skill-package.schema.json +63 -0
- package/schemas/v1.8.0/utility-command-catalog.schema.json +82 -0
- package/schemas/v1.9.0/design-document.schema.json +306 -0
- package/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/schemas/v2.0.0/agent-runtime-manifest.schema.json +59 -0
- package/schemas/v2.0.0/business-operating-snapshot-projection.schema.json +14 -0
- package/schemas/v2.0.0/operate-allowed-action.schema.json +181 -0
- package/schemas/v2.0.0/operate-api-envelope.schema.json +225 -0
- package/schemas/v2.0.0/operate-capability-provider-registration.schema.json +30 -0
- package/schemas/v2.0.0/operate-domain-registration.schema.json +284 -0
- package/schemas/v2.0.0/operate-evidence-provider-registration.schema.json +55 -0
- package/schemas/v2.0.0/operate-evidence-resolver-registration.schema.json +46 -0
- package/schemas/v2.0.0/operate-executor-registration.schema.json +27 -0
- package/schemas/v2.0.0/operate-experience-live-patch.schema.json +47 -0
- package/schemas/v2.0.0/operate-experience-preview.schema.json +51 -0
- package/schemas/v2.0.0/operate-experience-view.schema.json +281 -0
- package/schemas/v2.0.0/operate-live-evidence-provider-registration.schema.json +48 -0
- package/schemas/v2.0.0/operate-live-evidence-provider-registry.schema.json +17 -0
- package/schemas/v2.0.0/operate-metric-provider-registration.schema.json +12 -0
- package/schemas/v2.0.0/operate-policy-provider-registration.schema.json +33 -0
- package/schemas/v2.0.0/operate-review-bound-submission.schema.json +29 -0
- package/schemas/v2.0.0/operate-review-display-workspace.schema.json +390 -0
- package/schemas/v2.0.0/operate-snapshot-provider-registration.schema.json +16 -0
- package/schemas/v2.0.0/operate-tool-call.schema.json +172 -0
- package/schemas/v2.0.0/operate-verification-provider-registration.schema.json +12 -0
- package/schemas/v2.0.0/operating-action-policy.schema.json +31 -0
- package/schemas/v2.0.0/operating-action-verification-plan.schema.json +13 -0
- package/schemas/v2.0.0/operating-action.schema.json +86 -0
- package/schemas/v2.0.0/operating-advisor-result.schema.json +394 -0
- package/schemas/v2.0.0/operating-approval-record.schema.json +23 -0
- package/schemas/v2.0.0/operating-approval-requirement.schema.json +31 -0
- package/schemas/v2.0.0/operating-artifact.schema.json +52 -0
- package/schemas/v2.0.0/operating-assignment.schema.json +437 -0
- package/schemas/v2.0.0/operating-assumption.schema.json +16 -0
- package/schemas/v2.0.0/operating-capability-availability.schema.json +15 -0
- package/schemas/v2.0.0/operating-capability-grant.schema.json +14 -0
- package/schemas/v2.0.0/operating-challenger-review.schema.json +204 -0
- package/schemas/v2.0.0/operating-checkpoint.schema.json +43 -0
- package/schemas/v2.0.0/operating-claim.schema.json +17 -0
- package/schemas/v2.0.0/operating-connector-checkpoint.schema.json +28 -0
- package/schemas/v2.0.0/operating-context-capture.schema.json +74 -0
- package/schemas/v2.0.0/operating-cycle-input-binding.schema.json +30 -0
- package/schemas/v2.0.0/operating-cycle.schema.json +42 -0
- package/schemas/v2.0.0/operating-decision-ledger.schema.json +237 -0
- package/schemas/v2.0.0/operating-decision.schema.json +137 -0
- package/schemas/v2.0.0/operating-delivery-evidence.schema.json +46 -0
- package/schemas/v2.0.0/operating-delivery-route.schema.json +43 -0
- package/schemas/v2.0.0/operating-delta.schema.json +13 -0
- package/schemas/v2.0.0/operating-domain-projection.schema.json +15 -0
- package/schemas/v2.0.0/operating-event-trigger.schema.json +11 -0
- package/schemas/v2.0.0/operating-event.schema.json +505 -0
- package/schemas/v2.0.0/operating-evidence-candidate.schema.json +88 -0
- package/schemas/v2.0.0/operating-evidence-edge.schema.json +39 -0
- package/schemas/v2.0.0/operating-evidence-graph.schema.json +25 -0
- package/schemas/v2.0.0/operating-evidence-observation.schema.json +48 -0
- package/schemas/v2.0.0/operating-evidence-ref.schema.json +51 -0
- package/schemas/v2.0.0/operating-evidence-resolution.schema.json +54 -0
- package/schemas/v2.0.0/operating-execution-result.schema.json +23 -0
- package/schemas/v2.0.0/operating-executive-board.schema.json +78 -0
- package/schemas/v2.0.0/operating-finding.schema.json +116 -0
- package/schemas/v2.0.0/operating-governed-operation.schema.json +54 -0
- package/schemas/v2.0.0/operating-intelligence-input-bundle.schema.json +128 -0
- package/schemas/v2.0.0/operating-intelligence-plan.schema.json +302 -0
- package/schemas/v2.0.0/operating-learning-receipt.schema.json +31 -0
- package/schemas/v2.0.0/operating-learning.schema.json +13 -0
- package/schemas/v2.0.0/operating-live-evidence-consent-record.schema.json +42 -0
- package/schemas/v2.0.0/operating-live-evidence-ingestion.schema.json +31 -0
- package/schemas/v2.0.0/operating-measurement-plan.schema.json +18 -0
- package/schemas/v2.0.0/operating-measurement-schedule-receipt.schema.json +7 -0
- package/schemas/v2.0.0/operating-measurement-schedule.schema.json +16 -0
- package/schemas/v2.0.0/operating-metric-observation.schema.json +15 -0
- package/schemas/v2.0.0/operating-metric.schema.json +18 -0
- package/schemas/v2.0.0/operating-model-state.schema.json +36 -0
- package/schemas/v2.0.0/operating-objective.schema.json +21 -0
- package/schemas/v2.0.0/operating-origin.schema.json +31 -0
- package/schemas/v2.0.0/operating-outcome-evaluation.schema.json +46 -0
- package/schemas/v2.0.0/operating-outcome.schema.json +13 -0
- package/schemas/v2.0.0/operating-planning-proposal.schema.json +45 -0
- package/schemas/v2.0.0/operating-policy-evaluation.schema.json +28 -0
- package/schemas/v2.0.0/operating-review-read.schema.json +217 -0
- package/schemas/v2.0.0/operating-review-receipt.schema.json +64 -0
- package/schemas/v2.0.0/operating-review.schema.json +47 -0
- package/schemas/v2.0.0/operating-risk.schema.json +96 -0
- package/schemas/v2.0.0/operating-rollback-plan.schema.json +10 -0
- package/schemas/v2.0.0/operating-rollback-result.schema.json +20 -0
- package/schemas/v2.0.0/operating-runtime-state.schema.json +289 -0
- package/schemas/v2.0.0/operating-scenario.schema.json +13 -0
- package/schemas/v2.0.0/operating-snapshot.schema.json +38 -0
- package/schemas/v2.0.0/operating-submission.schema.json +34 -0
- package/schemas/v2.0.0/operating-trace-matrix.schema.json +176 -0
- package/schemas/v2.0.0/operating-work-change-set.schema.json +89 -0
- package/schemas/v2.0.0/operating-work-ledger.schema.json +40 -0
- package/schemas/v2.0.0/software-operating-snapshot-projection.schema.json +14 -0
- package/src/browser-contracts.d.mts +5 -0
- package/src/browser-contracts.mjs +40 -0
- package/src/canonical-json.d.mts +5 -0
- package/src/canonical-json.mjs +142 -0
- package/src/compat/live-evidence-v2.mjs +1019 -0
- package/src/compat/operate-experience-live-patch.mjs +66 -0
- package/src/compat/operating-planning-contracts.mjs +114 -0
- package/src/contracts.d.mts +42 -0
- package/src/contracts.mjs +990 -0
- package/src/design-contracts.d.mts +62 -0
- package/src/design-contracts.mjs +186 -0
- package/src/design-publication-contracts.d.mts +4 -0
- package/src/design-publication-contracts.mjs +85 -0
- package/src/diagram-contracts.d.mts +19 -0
- package/src/diagram-contracts.mjs +28 -0
- package/src/enterprise-contracts.d.mts +107 -0
- package/src/enterprise-contracts.mjs +463 -0
- package/src/errors.d.mts +11 -0
- package/src/errors.mjs +109 -0
- package/src/generated/canonical-registries.mjs +5554 -0
- package/src/generated/contract-catalog-v2.mjs +7076 -0
- package/src/generated/diagram-registries.mjs +2529 -0
- package/src/index.d.mts +10 -0
- package/src/index.mjs +40 -0
- package/src/json-schema.d.mts +7 -0
- package/src/json-schema.mjs +283 -0
- package/src/planning-contracts.d.mts +10 -0
- package/src/planning-contracts.mjs +53 -0
- package/src/registries.d.mts +40 -0
- package/src/registries.mjs +261 -0
- package/src/review-experience-contracts.d.mts +11 -0
- package/src/review-experience-contracts.mjs +103 -0
- package/src/semver.d.mts +2 -0
- package/src/semver.mjs +7 -0
- package/src/skill-source-contracts.d.mts +25 -0
- package/src/skill-source-contracts.mjs +105 -0
- package/src/task-contracts.d.mts +7 -0
- package/src/task-contracts.mjs +130 -0
- package/src/workspace-contracts.d.mts +26 -0
- package/src/workspace-contracts.mjs +83 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "professional-skills",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"protocolVersion": "1.1.0",
|
|
5
|
+
"catalogVersion": "1.0.0",
|
|
6
|
+
"digestAlgorithm": "sha256",
|
|
7
|
+
"skills": [
|
|
8
|
+
{
|
|
9
|
+
"skillId": "planr-browser-qa",
|
|
10
|
+
"sourceOwner": "skills",
|
|
11
|
+
"sourceVersion": "1.0.0",
|
|
12
|
+
"sourceSnapshot": "---\nname: planr-browser-qa\ndescription: Run structured browser-backed QA for real routes, forms, viewports, accessibility, console, and network behavior. Use for UI, authentication, session, navigation, or browser-network changes, and whenever SHIP declares the browser gate mandatory.\n---\n\n# Planr Browser QA\n\n1. Use only an active SHIP run whose frozen gate set requires browser QA.\n2. Require a registered trusted browser runtime adapter before execution. The portable `prepare-browser-qa` and `record-browser-qa` CLI paths intentionally return `E_BROWSER_QA_TRUSTED_HOST_REQUIRED`; stop and hand off instead of fabricating a host, attestation, result, or digest.\n3. Through that adapter, establish the ephemeral session and engine-owned runtime capability before the result, then exercise only the declared routes, forms, viewports, accessibility, console, and network checks. Never persist credentials or session secrets.\n4. Let the same adapter verify raw screenshot, trace, accessibility, console, and network bytes and submit the runtime-attested result through the engine-owned recording path. Caller-authored JSON or rehashed evidence cannot certify PASS.\n5. If a mandatory browser, trusted adapter, or session is unavailable, retain a blocking result; never skip, infer PASS, open review, add reviewers, register a correction, or write lifecycle truth.\n",
|
|
13
|
+
"sourceDigest": "sha256:7ec450ada7f5bfca3e094ef1ab2bd6cedf8706299dae9d6426da5cb98428c776",
|
|
14
|
+
"contracts": {
|
|
15
|
+
"inputs": [{ "id": "browser-qa-gate", "version": "1.0.0" }, { "id": "browser-qa-session", "version": "1.0.0" }],
|
|
16
|
+
"outputs": [{ "id": "browser-qa-result", "version": "1.0.0" }]
|
|
17
|
+
},
|
|
18
|
+
"authorityClass": "quality-evidence",
|
|
19
|
+
"triggerPolicy": {
|
|
20
|
+
"include": ["test this UI in a real browser", "verify routes, forms, accessibility, console, and network behavior"],
|
|
21
|
+
"exclude": ["unit-test-only backend work", "requests to approve, land, publish, or release"],
|
|
22
|
+
"deferTo": ["planr-ship", "planr-land"]
|
|
23
|
+
},
|
|
24
|
+
"cliRequirements": [
|
|
25
|
+
{ "id": "pipeline-prepare-browser-qa", "argv": ["pipeline", "prepare-browser-qa", "<feature>"], "requiredOptions": ["--run-id", "--json"] },
|
|
26
|
+
{ "id": "pipeline-record-browser-qa", "argv": ["pipeline", "record-browser-qa", "<feature>"], "requiredOptions": ["--run-id", "--generation", "--result-file", "--json"], "inputOptions": ["--session-file"] }
|
|
27
|
+
],
|
|
28
|
+
"hosts": [
|
|
29
|
+
{ "host": "claude-code", "entrypoint": "/planr-pipeline:planr-browser-qa", "path": "skills/planr-browser-qa/SKILL.md" },
|
|
30
|
+
{ "host": "codex", "entrypoint": "$planr-browser-qa", "path": "adapters/codex/skills/planr-browser-qa/SKILL.md" },
|
|
31
|
+
{ "host": "cursor", "entrypoint": "planr-browser-qa", "path": "adapters/cursor/rules/openplanr-browser-qa.mdc" }
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"skillId": "planr-investigate",
|
|
36
|
+
"sourceOwner": "skills",
|
|
37
|
+
"sourceVersion": "1.0.0",
|
|
38
|
+
"sourceSnapshot": "---\nname: planr-investigate\ndescription: Reproduce and prove a root cause, or apply one authorized bounded fix with regression evidence. Use when asked to diagnose a bug, investigate an error, establish causality, or fix a defect from an immutable diagnosis receipt.\n---\n\n# Planr Investigate\n\n1. Create one closed `diagnose` or `fix` request. Diagnose start, command-backed experiments, and verification require a registered runtime adapter with the engine-issued read-only command host; on `E_INVESTIGATION_COMMAND_HOST_REQUIRED`, stop and hand off rather than executing commands independently.\n2. Start a fix only from the exact proven diagnosis receipt and unchanged baseline. Run `planr pipeline investigate start <feature> --request-file <path|-> --json` in an interactive owner terminal and confirm the exact request digest; caller-authored authority JSON cannot replace the one-shot capability.\n3. Advance non-command observations, hypotheses, diagnosis, and bounded change records with `planr pipeline investigate advance <feature> --run-id <runId> --event-file <path|-> --json`. Command-backed experiments and `investigate verify` must remain with the trusted adapter.\n4. Finalize with `planr pipeline investigate finalize <feature> --run-id <runId> --json` and stop at its immutable receipt.\n5. Diagnose mode is read-only. Never invent evidence, edit outside the declared scope, approve, start SHIP, land, publish, release, or author lifecycle markers.\n",
|
|
39
|
+
"sourceDigest": "sha256:4fc6fdfb7b088ba185eea26ce1e7feb28a6cb469669d53d218a322bc9fea5b55",
|
|
40
|
+
"contracts": {
|
|
41
|
+
"inputs": [{ "id": "investigation-request", "version": "1.0.0" }],
|
|
42
|
+
"outputs": [{ "id": "investigation-receipt", "version": "1.0.0" }]
|
|
43
|
+
},
|
|
44
|
+
"authorityClass": "diagnose-or-authorized-fix",
|
|
45
|
+
"triggerPolicy": {
|
|
46
|
+
"include": ["diagnose this bug and prove the root cause", "apply a bounded fix from the accepted diagnosis"],
|
|
47
|
+
"exclude": ["unscoped feature implementation", "requests to approve, land, publish, or release"],
|
|
48
|
+
"deferTo": ["planr-spec", "planr-ship", "planr-land"]
|
|
49
|
+
},
|
|
50
|
+
"cliRequirements": [
|
|
51
|
+
{ "id": "pipeline-investigate-start", "argv": ["pipeline", "investigate", "start", "<feature>"], "requiredOptions": ["--request-file", "--json"] },
|
|
52
|
+
{ "id": "pipeline-investigate-advance", "argv": ["pipeline", "investigate", "advance", "<feature>"], "requiredOptions": ["--run-id", "--event-file", "--json"] },
|
|
53
|
+
{ "id": "pipeline-investigate-verify", "argv": ["pipeline", "investigate", "verify", "<feature>"], "requiredOptions": ["--run-id", "--json"] },
|
|
54
|
+
{ "id": "pipeline-investigate-finalize", "argv": ["pipeline", "investigate", "finalize", "<feature>"], "requiredOptions": ["--run-id", "--json"] }
|
|
55
|
+
],
|
|
56
|
+
"hosts": [
|
|
57
|
+
{ "host": "claude-code", "entrypoint": "/planr-pipeline:planr-investigate", "path": "skills/planr-investigate/SKILL.md" },
|
|
58
|
+
{ "host": "codex", "entrypoint": "$planr-investigate", "path": "adapters/codex/skills/planr-investigate/SKILL.md" },
|
|
59
|
+
{ "host": "cursor", "entrypoint": "planr-investigate", "path": "adapters/cursor/rules/openplanr-investigate.mdc" }
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"skillId": "planr-plan-review",
|
|
64
|
+
"sourceOwner": "skills",
|
|
65
|
+
"sourceVersion": "1.0.0",
|
|
66
|
+
"sourceSnapshot": "---\nname: planr-plan-review\ndescription: Run one finite digest-bound professional review of a prepared Planr plan with CEO, engineering, design, and DevEx perspectives. Use after a professional specification is planned and before the owner decides whether PLAN may proceed to SHIP.\n---\n\n# Planr Plan Review\n\n1. Run `planr pipeline prepare-plan-review <feature> --json` and present the exact plan digest, scope, roster, and unresolved prerequisites.\n2. Start once with `planr pipeline start-plan-review <feature> --runtime <runtimeId> --json`. Use the frozen CEO, engineering, design, and DevEx roster as one consolidated batch.\n3. Submit only declared review events through `planr pipeline advance-plan-review <feature> --run-id <runId> --event-file <path|-> --json`. Do not create parallel or late review loops.\n4. Preserve findings, dissent, and uncertainty in the immutable receipt. Never claim owner approval, approve PLAN to SHIP, start SHIP, edit planning truth directly, land, publish, or release.\n5. Return the receipt and exact owner-facing decision boundary. The owner remains the only R1 authority.\n",
|
|
67
|
+
"sourceDigest": "sha256:a196877214e5b787d19e5f5805159e25f72da1a9ccacf8b89916bfc22bfba37a",
|
|
68
|
+
"contracts": {
|
|
69
|
+
"inputs": [{ "id": "professional-specification", "version": "1.0.0" }],
|
|
70
|
+
"outputs": [{ "id": "planning-review-receipt", "version": "1.0.0" }]
|
|
71
|
+
},
|
|
72
|
+
"authorityClass": "review-evidence",
|
|
73
|
+
"triggerPolicy": {
|
|
74
|
+
"include": ["professionally review this prepared plan", "challenge this plan with CEO, engineering, design, and DevEx perspectives"],
|
|
75
|
+
"exclude": ["approve the plan for the owner", "implement, ship, land, publish, or release the plan"],
|
|
76
|
+
"deferTo": ["planr-plan", "planr-ship", "planr-land"]
|
|
77
|
+
},
|
|
78
|
+
"cliRequirements": [
|
|
79
|
+
{ "id": "pipeline-prepare-plan-review", "argv": ["pipeline", "prepare-plan-review", "<feature>"], "requiredOptions": ["--json"] },
|
|
80
|
+
{ "id": "pipeline-start-plan-review", "argv": ["pipeline", "start-plan-review", "<feature>"], "requiredOptions": ["--runtime", "--json"] },
|
|
81
|
+
{ "id": "pipeline-advance-plan-review", "argv": ["pipeline", "advance-plan-review", "<feature>"], "requiredOptions": ["--run-id", "--event-file", "--json"] }
|
|
82
|
+
],
|
|
83
|
+
"hosts": [
|
|
84
|
+
{ "host": "claude-code", "entrypoint": "/planr-pipeline:planr-plan-review", "path": "skills/planr-plan-review/SKILL.md" },
|
|
85
|
+
{ "host": "codex", "entrypoint": "$planr-plan-review", "path": "adapters/codex/skills/planr-plan-review/SKILL.md" },
|
|
86
|
+
{ "host": "cursor", "entrypoint": "planr-plan-review", "path": "adapters/cursor/rules/openplanr-plan-review.mdc" }
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"skillId": "planr-spec",
|
|
91
|
+
"sourceOwner": "skills",
|
|
92
|
+
"sourceVersion": "1.0.0",
|
|
93
|
+
"sourceSnapshot": "---\nname: planr-spec\ndescription: Turn vague product or engineering intent into a measurable professional Planr specification with constraints, evidence expectations, failure modes, and rollback. Use when requirements are unclear or a new feature needs bounded scope before PLAN.\n---\n\n# Planr Spec\n\n1. Invoke the installed public `planr spec` flow with the user's intent or file. Let OpenPlanr own questioning, IDs, persistence, and validation.\n2. Resolve measurable outcomes, constraints, evidence expectations, failure modes, rollback, and explicit exclusions through the returned guided interaction. Do not invent approval or implementation authority.\n3. Require the resulting artifact to declare `professional-specification@1.0.0`; surface typed missing inputs instead of silently filling them.\n4. Stop with the professional specification ready for human review. Never auto-chain PLAN, plan review, SHIP, implementation, landing, publication, deployment, or release.\n",
|
|
94
|
+
"sourceDigest": "sha256:aaf628d67ed69e5078e4c6321cc2510649a001f255a8716a414f03d8106114c9",
|
|
95
|
+
"contracts": {
|
|
96
|
+
"inputs": [{ "id": "intent", "version": "1.0.0" }],
|
|
97
|
+
"outputs": [{ "id": "professional-specification", "version": "1.0.0" }]
|
|
98
|
+
},
|
|
99
|
+
"authorityClass": "planning-write",
|
|
100
|
+
"triggerPolicy": {
|
|
101
|
+
"include": ["turn this vague idea into a measurable specification", "define scope, evidence, failure modes, and rollback before planning"],
|
|
102
|
+
"exclude": ["review an existing plan", "implement, ship, land, publish, or release a feature"],
|
|
103
|
+
"deferTo": ["planr-plan", "planr-plan-review", "planr-ship", "planr-land"]
|
|
104
|
+
},
|
|
105
|
+
"cliRequirements": [
|
|
106
|
+
{ "id": "spec-create", "argv": ["spec", "<intent-or-file>"], "requiredOptions": [] }
|
|
107
|
+
],
|
|
108
|
+
"hosts": [
|
|
109
|
+
{ "host": "claude-code", "entrypoint": "/planr-pipeline:planr-spec", "path": "skills/planr-spec/SKILL.md" },
|
|
110
|
+
{ "host": "codex", "entrypoint": "$planr-spec", "path": "adapters/codex/skills/planr-spec/SKILL.md" },
|
|
111
|
+
{ "host": "cursor", "entrypoint": "planr-spec", "path": "adapters/cursor/rules/openplanr-spec.mdc" }
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"roles": [
|
|
4
|
+
{ "id": "db-agent", "phase": "po-preflight", "activation": "conditional", "capability": "analysis-high", "writeBoundary": "output/db/schema.json only; database is read-only", "source": "agents/db-agent.md" },
|
|
5
|
+
{ "id": "designer-agent", "phase": "po", "activation": "conditional", "capability": "analysis-high", "writeBoundary": "design-spec.md only", "source": "agents/designer-agent.md" },
|
|
6
|
+
{ "id": "specification-agent", "phase": "po", "activation": "always", "capability": "analysis-high", "writeBoundary": "stories and task specifications only", "source": "agents/specification-agent.md" },
|
|
7
|
+
{ "id": "entity-scaffold-agent", "phase": "po-preflight", "activation": "manual", "capability": "analysis-high", "writeBoundary": "output/src persistence scaffolding only", "source": "agents/entity-scaffold-agent.md" },
|
|
8
|
+
{ "id": "frontend-agent", "phase": "dev", "activation": "conditional", "capability": "implementation-high", "writeBoundary": "task Create/Modify UI paths only", "source": "agents/frontend-agent.md" },
|
|
9
|
+
{ "id": "backend-agent", "phase": "dev", "activation": "conditional", "capability": "implementation-high", "writeBoundary": "task Create/Modify tech paths only", "source": "agents/backend-agent.md" },
|
|
10
|
+
{ "id": "qa-agent", "phase": "qa", "activation": "always", "capability": "read-only-qa", "writeBoundary": "none; returns one structured review result", "source": "agents/qa-agent.md" },
|
|
11
|
+
{ "id": "devops-agent", "phase": "post-build", "activation": "conditional", "capability": "analysis-high", "writeBoundary": "declared infrastructure configuration only; never deploy", "source": "agents/devops-agent.md" },
|
|
12
|
+
{ "id": "doc-gen-agent", "phase": "post-build", "activation": "conditional", "capability": "analysis-high", "writeBoundary": "Docs feature output only", "source": "agents/doc-gen-agent.md" }
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "ship-review-specialist-registry",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"protocolVersion": "1.1.0",
|
|
5
|
+
"specialists": [
|
|
6
|
+
{
|
|
7
|
+
"id": "security",
|
|
8
|
+
"triggers": ["authentication", "authorization", "credentials", "permissions", "security"],
|
|
9
|
+
"capabilities": ["candidate.read", "evidence.read", "finding.contribute"],
|
|
10
|
+
"resultKind": "specialist-review-result",
|
|
11
|
+
"authority": "read-only-consolidated-review"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "performance",
|
|
15
|
+
"triggers": ["benchmark", "budget", "latency", "performance"],
|
|
16
|
+
"capabilities": ["candidate.read", "evidence.read", "finding.contribute"],
|
|
17
|
+
"resultKind": "specialist-review-result",
|
|
18
|
+
"authority": "read-only-consolidated-review"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "migration",
|
|
22
|
+
"triggers": ["migration", "rollback", "schema-transition"],
|
|
23
|
+
"capabilities": ["candidate.read", "evidence.read", "finding.contribute"],
|
|
24
|
+
"resultKind": "specialist-review-result",
|
|
25
|
+
"authority": "read-only-consolidated-review"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "api-contract",
|
|
29
|
+
"triggers": ["api", "contract", "network", "route", "schema"],
|
|
30
|
+
"capabilities": ["candidate.read", "evidence.read", "finding.contribute"],
|
|
31
|
+
"resultKind": "specialist-review-result",
|
|
32
|
+
"authority": "read-only-consolidated-review"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "data-integrity",
|
|
36
|
+
"triggers": ["data-write", "database", "persistence", "receipt", "storage"],
|
|
37
|
+
"capabilities": ["candidate.read", "evidence.read", "finding.contribute"],
|
|
38
|
+
"resultKind": "specialist-review-result",
|
|
39
|
+
"authority": "read-only-consolidated-review"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openplanr.dev/schemas/v1.0.0/design-approved.schema.json",
|
|
4
|
+
"title": "OpenPlanr design-loop approval record (v1.0.0)",
|
|
5
|
+
"description": "Written as approved.json in the session dir when the user approves a variant on the board (\"We'll run with Option X\"). Records WHAT was approved and WHERE the approved output was copied INTO the repo (exploration artifacts themselves stay in user space). The design loop STOPs after writing this (R1) — a human invokes the next phase.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"boardId",
|
|
11
|
+
"sessionId",
|
|
12
|
+
"approvedVariant",
|
|
13
|
+
"approvedPath",
|
|
14
|
+
"provider",
|
|
15
|
+
"target",
|
|
16
|
+
"approvedAt",
|
|
17
|
+
"copiedTo"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema_version": { "const": "1.0.0", "description": "Schema version pin." },
|
|
21
|
+
"boardId": { "type": "string", "minLength": 1, "description": "Board the approval came from." },
|
|
22
|
+
"sessionId": { "type": "string", "minLength": 1, "description": "The approved variant's session id." },
|
|
23
|
+
"approvedVariant": { "type": "string", "minLength": 1, "description": "Variant id, e.g. \"B\"." },
|
|
24
|
+
"approvedPath": { "type": "string", "minLength": 1, "description": "Absolute path of the approved artifact in the session dir." },
|
|
25
|
+
"provider": { "type": "string", "enum": ["openai", "claude-svg"], "description": "Provider that produced the approved artifact." },
|
|
26
|
+
"target": { "type": "string", "minLength": 1, "description": "What was designed (logo, brand-sheet, screen, og-image, …)." },
|
|
27
|
+
"approvedAt": { "type": "string", "minLength": 1, "description": "ISO timestamp." },
|
|
28
|
+
"copiedTo": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": { "type": "string" },
|
|
31
|
+
"description": "Repo destinations the approved output (+ derivatives like favicon set / production SVG) was copied to."
|
|
32
|
+
},
|
|
33
|
+
"notes": { "type": "string", "description": "Optional approval notes from the overall textarea." }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openplanr.dev/schemas/v1.0.0/design-feedback.schema.json",
|
|
4
|
+
"title": "OpenPlanr design-loop feedback (v1.0.0)",
|
|
5
|
+
"description": "The board↔agent file handshake. The board writes feedback.json (Submit / Approve) or feedback-pending.json (Regenerate / Remix / More-like-this) NEXT TO the board HTML; the agent reads it only after the user says they're done in the blocking AskUserQuestion. feedback-pending.json is consumed (deleted) on read. `ratings` and `comments` are keyed by variant id (A, B, …) — dynamic keys, so they are open objects here; value shapes are enforced by lib/design-engine/feedback.mjs. Pins carry normalized 0..1 region coords; the ≤1 upper bound is clamped at write time (the schema subset has no `maximum`).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"boardId",
|
|
11
|
+
"publishedAt",
|
|
12
|
+
"regenerated",
|
|
13
|
+
"ratings",
|
|
14
|
+
"comments",
|
|
15
|
+
"pins"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"schema_version": {
|
|
19
|
+
"const": "1.0.0",
|
|
20
|
+
"description": "Schema version pin."
|
|
21
|
+
},
|
|
22
|
+
"boardId": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"description": "The board this feedback belongs to (daemon registry id)."
|
|
26
|
+
},
|
|
27
|
+
"publishedAt": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 1,
|
|
30
|
+
"description": "ISO timestamp the feedback was written by the board."
|
|
31
|
+
},
|
|
32
|
+
"preferred": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "Variant id the user picked in the approve bar (e.g. \"A\"). Absent until chosen."
|
|
35
|
+
},
|
|
36
|
+
"ratings": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"description": "Per-variant star rating 1..5, keyed by variant id."
|
|
39
|
+
},
|
|
40
|
+
"comments": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"description": "Per-variant free-text comment, keyed by variant id."
|
|
43
|
+
},
|
|
44
|
+
"overall": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"description": "Overall-direction textarea content."
|
|
47
|
+
},
|
|
48
|
+
"regenerated": {
|
|
49
|
+
"type": "boolean",
|
|
50
|
+
"description": "true when this is a feedback-pending.json round (the user asked for another generation pass) rather than a final submit."
|
|
51
|
+
},
|
|
52
|
+
"regenerateAction": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"enum": ["iterate", "remix", "more-like"],
|
|
55
|
+
"description": "Which regeneration the user asked for. Required by code when regenerated=true."
|
|
56
|
+
},
|
|
57
|
+
"remixSpec": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"description": "Remix instructions, e.g. { layoutFrom: \"A\", colorsFrom: \"B\", note }. Open shape; interpreted by the loop procedure."
|
|
60
|
+
},
|
|
61
|
+
"authors": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"description": "the roster of reviewers who contributed to this board. Each appears once, keyed by display name. Identity is a LOCAL display name + deterministic avatar only — no account, no auth, no PII.",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"additionalProperties": false,
|
|
67
|
+
"required": ["name"],
|
|
68
|
+
"properties": {
|
|
69
|
+
"name": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"minLength": 1,
|
|
72
|
+
"description": "Reviewer display name (the merge + avatar key)."
|
|
73
|
+
},
|
|
74
|
+
"color": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"description": "Avatar background token/value derived deterministically from the name (e.g. \"--avatar-3\")."
|
|
77
|
+
},
|
|
78
|
+
"initials": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "1–2 letter initials shown in the avatar."
|
|
81
|
+
},
|
|
82
|
+
"lastSeen": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "ISO timestamp the author last contributed."
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"pins": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"description": "Region annotations — the core of \"fix exactly this part\".",
|
|
92
|
+
"items": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"required": ["id", "author", "variant", "x", "y", "w", "h", "comment", "intent"],
|
|
96
|
+
"properties": {
|
|
97
|
+
"id": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"minLength": 1,
|
|
100
|
+
"description": "stable item id (12-char sha256 hex prefix of author+createdAt+comment). The merge key together with `author`; assigned by normalizeLegacy for legacy items."
|
|
101
|
+
},
|
|
102
|
+
"author": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"minLength": 1,
|
|
105
|
+
"description": "the reviewer who created this pin (display name). Legacy/unattributed items normalize to \"Anonymous\"."
|
|
106
|
+
},
|
|
107
|
+
"variant": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"minLength": 1,
|
|
110
|
+
"description": "Variant id (design-loop) or screen id (design-review) the pin sits on."
|
|
111
|
+
},
|
|
112
|
+
"x": { "type": "number", "minimum": 0, "description": "Left edge, normalized 0..1 of the variant's rendered box." },
|
|
113
|
+
"y": { "type": "number", "minimum": 0, "description": "Top edge, normalized 0..1." },
|
|
114
|
+
"w": { "type": "number", "minimum": 0, "description": "Width, normalized 0..1 (0 for a point pin)." },
|
|
115
|
+
"h": { "type": "number", "minimum": 0, "description": "Height, normalized 0..1 (0 for a point pin)." },
|
|
116
|
+
"comment": { "type": "string", "minLength": 1, "description": "What the user wants done here." },
|
|
117
|
+
"intent": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": ["fix", "improve", "question"],
|
|
120
|
+
"description": "How the agent should treat the pin."
|
|
121
|
+
},
|
|
122
|
+
"status": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": ["open", "addressed", "resolved"],
|
|
125
|
+
"description": "lifecycle of the pin as tracked feedback. Defaults to \"open\" when absent."
|
|
126
|
+
},
|
|
127
|
+
"createdAt": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"description": "ISO timestamp the pin was created (also feeds the stable id)."
|
|
130
|
+
},
|
|
131
|
+
"screen": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"description": "design-review only: the artifact screen/section id the pin maps to (e.g. \"s-dashboard\")."
|
|
134
|
+
},
|
|
135
|
+
"replies": {
|
|
136
|
+
"type": "array",
|
|
137
|
+
"description": "short threaded replies on this pin so feedback is a tracked conversation, not a write-once note.",
|
|
138
|
+
"items": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false,
|
|
141
|
+
"required": ["author", "comment"],
|
|
142
|
+
"properties": {
|
|
143
|
+
"id": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"minLength": 1,
|
|
146
|
+
"description": "optional stable reply id (the reply-level merge key). Absent on legacy/optimistic replies; mergeFeedback() falls back to a content signature (author+comment+createdAt) so the append/dedup stays idempotent without it."
|
|
147
|
+
},
|
|
148
|
+
"author": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"minLength": 1,
|
|
151
|
+
"description": "Reviewer who wrote the reply (display name)."
|
|
152
|
+
},
|
|
153
|
+
"comment": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"minLength": 1,
|
|
156
|
+
"description": "Reply text."
|
|
157
|
+
},
|
|
158
|
+
"createdAt": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"description": "ISO timestamp the reply was written."
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openplanr.dev/schemas/v1.0.0/design-manifest.schema.json",
|
|
4
|
+
"title": "OpenPlanr design manifest — finalized.json (v1.0.0)",
|
|
5
|
+
"description": "Metadata written alongside a generated design artifact by /planr-pipeline:design, at <design-dir>/finalized.json. The discriminator field is `design_format`, NOT `format` (the latter is a reserved JSON-Schema keyword). Cross-field rules (framework 'react' only for canvas) are enforced by lib/design/manifest.mjs validateManifest, not expressible in this schema subset.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"design_format",
|
|
11
|
+
"source",
|
|
12
|
+
"content_provenance",
|
|
13
|
+
"framework",
|
|
14
|
+
"screens",
|
|
15
|
+
"screen_count",
|
|
16
|
+
"iterations",
|
|
17
|
+
"generated_at"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema_version": {
|
|
21
|
+
"const": "1.0.0",
|
|
22
|
+
"description": "Schema version pin."
|
|
23
|
+
},
|
|
24
|
+
"design_format": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"enum": ["prototype", "walkthrough", "canvas"],
|
|
27
|
+
"description": "Which renderer produced the artifact."
|
|
28
|
+
},
|
|
29
|
+
"source": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"enum": ["spec", "png", "describe"],
|
|
32
|
+
"description": "How the design was sourced (mirrors the --from flag)."
|
|
33
|
+
},
|
|
34
|
+
"content_provenance": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"enum": ["spec", "inferred"],
|
|
37
|
+
"description": "Whether screen content came from the spec or was inferred to fill a thin spec."
|
|
38
|
+
},
|
|
39
|
+
"framework": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"enum": ["vanilla", "react"],
|
|
42
|
+
"description": "Render substrate. prototype/walkthrough = vanilla + Pretext; canvas = react."
|
|
43
|
+
},
|
|
44
|
+
"screens": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": { "type": "string", "minLength": 1 },
|
|
47
|
+
"description": "Ordered screen names rendered in the artifact."
|
|
48
|
+
},
|
|
49
|
+
"screen_count": {
|
|
50
|
+
"type": "integer",
|
|
51
|
+
"minimum": 0,
|
|
52
|
+
"description": "Length of screens (denormalized for quick status reads)."
|
|
53
|
+
},
|
|
54
|
+
"iterations": {
|
|
55
|
+
"type": "integer",
|
|
56
|
+
"minimum": 0,
|
|
57
|
+
"description": "Number of evolve passes applied to this artifact."
|
|
58
|
+
},
|
|
59
|
+
"generated_at": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"format": "date-time",
|
|
62
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
|
|
63
|
+
},
|
|
64
|
+
"nav_mode": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"enum": ["anchor", "lazy"],
|
|
67
|
+
"description": "Walkthrough navigation mode; omitted for non-walkthrough formats."
|
|
68
|
+
},
|
|
69
|
+
"screen_name": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"description": "Primary screen / output-directory basename."
|
|
72
|
+
},
|
|
73
|
+
"branch": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"description": "Git branch at generation time."
|
|
76
|
+
},
|
|
77
|
+
"spec_id": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"description": "Owning SPEC/FEAT id (e.g. SPEC-015)."
|
|
80
|
+
},
|
|
81
|
+
"html_file": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Primary artifact filename (e.g. finalized.html, canvas.html)."
|
|
84
|
+
},
|
|
85
|
+
"pretext_tier": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"description": "Pretext API tier chosen for vanilla formats."
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openplanr.dev/schemas/v1.0.0/design-session.schema.json",
|
|
4
|
+
"title": "OpenPlanr design-loop session (v1.0.0)",
|
|
5
|
+
"description": "One variant's generation lineage, persisted as session-<variant>.json in the session dir (user space, ~/.planr/designs/<project>/<target>-<date>/) — NOT /tmp, so a session can be revisited. For provider=openai, lastResponseId chains the Responses API so `iterate` refines instead of regenerating. For provider=claude-svg the chain is the file itself (the agent edits the artifact); lastResponseId stays null.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"id",
|
|
11
|
+
"provider",
|
|
12
|
+
"target",
|
|
13
|
+
"originalBrief",
|
|
14
|
+
"briefVersions",
|
|
15
|
+
"feedbackHistory",
|
|
16
|
+
"outputPaths",
|
|
17
|
+
"regionEdits",
|
|
18
|
+
"createdAt",
|
|
19
|
+
"updatedAt"
|
|
20
|
+
],
|
|
21
|
+
"properties": {
|
|
22
|
+
"schema_version": { "const": "1.0.0", "description": "Schema version pin." },
|
|
23
|
+
"id": { "type": "string", "minLength": 1, "description": "Session id (e.g. \"logo-2026-06-10-A\")." },
|
|
24
|
+
"provider": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"enum": ["openai", "claude-svg"],
|
|
27
|
+
"description": "Which provider owns this session's generation chain."
|
|
28
|
+
},
|
|
29
|
+
"target": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"minLength": 1,
|
|
32
|
+
"description": "What is being designed: logo, brand-sheet, screen, og-image, …"
|
|
33
|
+
},
|
|
34
|
+
"project": { "type": "string", "description": "Project slug the exploration belongs to." },
|
|
35
|
+
"originalBrief": { "type": "string", "minLength": 1, "description": "The first brief, verbatim." },
|
|
36
|
+
"briefVersions": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "type": "string" },
|
|
39
|
+
"description": "Every brief revision, oldest→newest (the original is index 0)."
|
|
40
|
+
},
|
|
41
|
+
"feedbackHistory": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": { "type": "string" },
|
|
44
|
+
"description": "The feedback text applied at each iterate round, oldest→newest."
|
|
45
|
+
},
|
|
46
|
+
"outputPaths": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": { "type": "string" },
|
|
49
|
+
"description": "Absolute artifact path per round, oldest→newest (last = current)."
|
|
50
|
+
},
|
|
51
|
+
"regionEdits": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"description": "Pin-driven edits applied to this session (design-review rounds).",
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"additionalProperties": false,
|
|
57
|
+
"required": ["at", "pins", "summary"],
|
|
58
|
+
"properties": {
|
|
59
|
+
"at": { "type": "string", "minLength": 1, "description": "ISO timestamp of the edit round." },
|
|
60
|
+
"screen": { "type": "string", "description": "Screen/section id the round targeted, when scoped." },
|
|
61
|
+
"pins": { "type": "array", "items": { "type": "object" }, "description": "The pins (design-feedback shape) that drove the edit." },
|
|
62
|
+
"summary": { "type": "string", "minLength": 1, "description": "One line: what was changed." }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"lastResponseId": {
|
|
67
|
+
"type": ["string", "null"],
|
|
68
|
+
"description": "openai provider: the Responses API id to chain via previous_response_id. null for claude-svg."
|
|
69
|
+
},
|
|
70
|
+
"createdAt": { "type": "string", "minLength": 1, "description": "ISO timestamp." },
|
|
71
|
+
"updatedAt": { "type": "string", "minLength": 1, "description": "ISO timestamp of the last round." }
|
|
72
|
+
}
|
|
73
|
+
}
|