openplanr 1.25.2 → 2.0.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/CHANGELOG.md +78 -0
- package/CONTRIBUTING.md +33 -0
- package/README.md +154 -131
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +214 -30
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/backlog.d.ts +1 -21
- package/dist/cli/commands/backlog.d.ts.map +1 -1
- package/dist/cli/commands/backlog.js +1 -428
- package/dist/cli/commands/backlog.js.map +1 -1
- package/dist/cli/commands/company.d.ts +3 -0
- package/dist/cli/commands/company.d.ts.map +1 -0
- package/dist/cli/commands/company.js +173 -0
- package/dist/cli/commands/company.js.map +1 -0
- package/dist/cli/commands/config-deterministic.d.ts +3 -0
- package/dist/cli/commands/config-deterministic.d.ts.map +1 -0
- package/dist/cli/commands/config-deterministic.js +88 -0
- package/dist/cli/commands/config-deterministic.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +36 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/diagram/index.d.ts +3 -0
- package/dist/cli/commands/diagram/index.d.ts.map +1 -0
- package/dist/cli/commands/diagram/index.js +73 -0
- package/dist/cli/commands/diagram/index.js.map +1 -0
- package/dist/cli/commands/diagram/presentation.d.ts +4 -0
- package/dist/cli/commands/diagram/presentation.d.ts.map +1 -0
- package/dist/cli/commands/diagram/presentation.js +38 -0
- package/dist/cli/commands/diagram/presentation.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +1 -11
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/epic.d.ts +1 -9
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +1 -259
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/feature.d.ts +1 -8
- package/dist/cli/commands/feature.d.ts.map +1 -1
- package/dist/cli/commands/feature.js +1 -220
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/groups/delivery.d.ts +3 -0
- package/dist/cli/commands/groups/delivery.d.ts.map +1 -0
- package/dist/cli/commands/groups/delivery.js +13 -0
- package/dist/cli/commands/groups/delivery.js.map +1 -0
- package/dist/cli/commands/groups/foundation.d.ts +3 -0
- package/dist/cli/commands/groups/foundation.d.ts.map +1 -0
- package/dist/cli/commands/groups/foundation.js +11 -0
- package/dist/cli/commands/groups/foundation.js.map +1 -0
- package/dist/cli/commands/groups/intelligence.d.ts +3 -0
- package/dist/cli/commands/groups/intelligence.d.ts.map +1 -0
- package/dist/cli/commands/groups/intelligence.js +19 -0
- package/dist/cli/commands/groups/intelligence.js.map +1 -0
- package/dist/cli/commands/groups/operations.d.ts +3 -0
- package/dist/cli/commands/groups/operations.d.ts.map +1 -0
- package/dist/cli/commands/groups/operations.js +17 -0
- package/dist/cli/commands/groups/operations.js.map +1 -0
- package/dist/cli/commands/groups/planning.d.ts +3 -0
- package/dist/cli/commands/groups/planning.d.ts.map +1 -0
- package/dist/cli/commands/groups/planning.js +25 -0
- package/dist/cli/commands/groups/planning.js.map +1 -0
- package/dist/cli/commands/index.d.ts +4 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +14 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init-deterministic.d.ts +3 -0
- package/dist/cli/commands/init-deterministic.d.ts.map +1 -0
- package/dist/cli/commands/init-deterministic.js +40 -0
- package/dist/cli/commands/init-deterministic.js.map +1 -0
- package/dist/cli/commands/land.d.ts +15 -0
- package/dist/cli/commands/land.d.ts.map +1 -0
- package/dist/cli/commands/land.js +176 -0
- package/dist/cli/commands/land.js.map +1 -0
- package/dist/cli/commands/operate/input.d.ts +54 -0
- package/dist/cli/commands/operate/input.d.ts.map +1 -0
- package/dist/cli/commands/operate/input.js +98 -0
- package/dist/cli/commands/operate/input.js.map +1 -0
- package/dist/cli/commands/operate/registrars/assignments.d.ts +5 -0
- package/dist/cli/commands/operate/registrars/assignments.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/assignments.js +167 -0
- package/dist/cli/commands/operate/registrars/assignments.js.map +1 -0
- package/dist/cli/commands/operate/registrars/catalog.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/catalog.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/catalog.js +12 -0
- package/dist/cli/commands/operate/registrars/catalog.js.map +1 -0
- package/dist/cli/commands/operate/registrars/contracts.d.ts +41 -0
- package/dist/cli/commands/operate/registrars/contracts.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/contracts.js +2 -0
- package/dist/cli/commands/operate/registrars/contracts.js.map +1 -0
- package/dist/cli/commands/operate/registrars/dashboard.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/dashboard.js +26 -0
- package/dist/cli/commands/operate/registrars/dashboard.js.map +1 -0
- package/dist/cli/commands/operate/registrars/dispatch.d.ts +7 -0
- package/dist/cli/commands/operate/registrars/dispatch.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/dispatch.js +55 -0
- package/dist/cli/commands/operate/registrars/dispatch.js.map +1 -0
- package/dist/cli/commands/operate/registrars/experience.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/experience.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/experience.js +93 -0
- package/dist/cli/commands/operate/registrars/experience.js.map +1 -0
- package/dist/cli/commands/operate/registrars/index.d.ts +5 -0
- package/dist/cli/commands/operate/registrars/index.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/index.js +28 -0
- package/dist/cli/commands/operate/registrars/index.js.map +1 -0
- package/dist/cli/commands/operate/registrars/lifecycle.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/lifecycle.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/lifecycle.js +46 -0
- package/dist/cli/commands/operate/registrars/lifecycle.js.map +1 -0
- package/dist/cli/commands/operate/registrars/measurement.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/measurement.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/measurement.js +122 -0
- package/dist/cli/commands/operate/registrars/measurement.js.map +1 -0
- package/dist/cli/commands/operate/registrars/note-validation.d.ts +6 -0
- package/dist/cli/commands/operate/registrars/note-validation.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/note-validation.js +103 -0
- package/dist/cli/commands/operate/registrars/note-validation.js.map +1 -0
- package/dist/cli/commands/operate/registrars/planning.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/planning.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/planning.js +41 -0
- package/dist/cli/commands/operate/registrars/planning.js.map +1 -0
- package/dist/cli/commands/operate/registrars/recovery.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/recovery.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/recovery.js +65 -0
- package/dist/cli/commands/operate/registrars/recovery.js.map +1 -0
- package/dist/cli/commands/operate/registrars/reviews.d.ts +4 -0
- package/dist/cli/commands/operate/registrars/reviews.d.ts.map +1 -0
- package/dist/cli/commands/operate/registrars/reviews.js +83 -0
- package/dist/cli/commands/operate/registrars/reviews.js.map +1 -0
- package/dist/cli/commands/operate/registration.d.ts +4 -0
- package/dist/cli/commands/operate/registration.d.ts.map +1 -0
- package/dist/cli/commands/operate/registration.js +3 -0
- package/dist/cli/commands/operate/registration.js.map +1 -0
- package/dist/cli/commands/operate/render.d.ts +19 -0
- package/dist/cli/commands/operate/render.d.ts.map +1 -0
- package/dist/cli/commands/operate/render.js +201 -0
- package/dist/cli/commands/operate/render.js.map +1 -0
- package/dist/cli/commands/operate.d.ts +58 -13
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +169 -984
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/cli/commands/planning-artifacts.d.ts +10 -0
- package/dist/cli/commands/planning-artifacts.d.ts.map +1 -0
- package/dist/cli/commands/planning-artifacts.js +350 -0
- package/dist/cli/commands/planning-artifacts.js.map +1 -0
- package/dist/cli/commands/quick/interaction.d.ts +8 -0
- package/dist/cli/commands/quick/interaction.d.ts.map +1 -0
- package/dist/cli/commands/quick/interaction.js +8 -0
- package/dist/cli/commands/quick/interaction.js.map +1 -0
- package/dist/cli/commands/quick/project.d.ts +8 -0
- package/dist/cli/commands/quick/project.d.ts.map +1 -0
- package/dist/cli/commands/quick/project.js +8 -0
- package/dist/cli/commands/quick/project.js.map +1 -0
- package/dist/cli/commands/quick.d.ts +1 -29
- package/dist/cli/commands/quick.d.ts.map +1 -1
- package/dist/cli/commands/quick.js +1 -337
- package/dist/cli/commands/quick.js.map +1 -1
- package/dist/cli/commands/rules.js +1 -1
- package/dist/cli/commands/rules.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +40 -18
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +6 -4
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +166 -174
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts +1 -8
- package/dist/cli/commands/sprint.d.ts.map +1 -1
- package/dist/cli/commands/sprint.js +1 -522
- package/dist/cli/commands/sprint.js.map +1 -1
- package/dist/cli/commands/story/interaction.d.ts +7 -0
- package/dist/cli/commands/story/interaction.d.ts.map +1 -0
- package/dist/cli/commands/story/interaction.js +7 -0
- package/dist/cli/commands/story/interaction.js.map +1 -0
- package/dist/cli/commands/story/project.d.ts +10 -0
- package/dist/cli/commands/story/project.d.ts.map +1 -0
- package/dist/cli/commands/story/project.js +10 -0
- package/dist/cli/commands/story/project.js.map +1 -0
- package/dist/cli/commands/story.d.ts +1 -8
- package/dist/cli/commands/story.d.ts.map +1 -1
- package/dist/cli/commands/story.js +1 -358
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/task.d.ts +1 -9
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +1 -351
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/error-boundary.d.ts +29 -0
- package/dist/cli/error-boundary.d.ts.map +1 -0
- package/dist/cli/error-boundary.js +103 -0
- package/dist/cli/error-boundary.js.map +1 -0
- package/dist/cli/helpers/bulk-checkbox-update.d.ts +1 -1
- package/dist/cli/helpers/bulk-checkbox-update.js +1 -1
- package/dist/cli/index.js +38 -113
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +68 -0
- package/dist/dashboard/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/dashboard/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/dashboard/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/dashboard/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
- package/dist/dashboard/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
- package/dist/dashboard/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/dashboard/assets/index-Bk8DyO_2.css +1 -0
- package/dist/dashboard/assets/index-zeygL5iu.js +557 -0
- package/dist/dashboard/assets/index-zeygL5iu.js.map +1 -0
- package/dist/dashboard/dashboard-manifest.json +84 -0
- package/dist/dashboard/index.html +13 -0
- package/dist/generators/base-generator.d.ts +2 -0
- package/dist/generators/base-generator.d.ts.map +1 -1
- package/dist/generators/base-generator.js +8 -0
- package/dist/generators/base-generator.js.map +1 -1
- package/dist/generators/claude-generator.d.ts.map +1 -1
- package/dist/generators/claude-generator.js +12 -14
- package/dist/generators/claude-generator.js.map +1 -1
- package/dist/generators/codex-generator.d.ts.map +1 -1
- package/dist/generators/codex-generator.js +7 -7
- package/dist/generators/codex-generator.js.map +1 -1
- package/dist/generators/cursor-generator.d.ts.map +1 -1
- package/dist/generators/cursor-generator.js +11 -30
- package/dist/generators/cursor-generator.js.map +1 -1
- package/dist/models/schema.d.ts +0 -23
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +0 -7
- package/dist/models/schema.js.map +1 -1
- package/dist/models/types.d.ts +3 -14
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/artifact-pipeline-service.d.ts +99 -1
- package/dist/services/artifact-pipeline-service.d.ts.map +1 -1
- package/dist/services/artifact-pipeline-service.js +681 -4
- package/dist/services/artifact-pipeline-service.js.map +1 -1
- package/dist/services/canonical-json.d.ts +3 -0
- package/dist/services/canonical-json.d.ts.map +1 -0
- package/dist/services/canonical-json.js +71 -0
- package/dist/services/canonical-json.js.map +1 -0
- package/dist/services/claude-plugin-service.d.ts +6 -1
- package/dist/services/claude-plugin-service.d.ts.map +1 -1
- package/dist/services/claude-plugin-service.js +184 -12
- package/dist/services/claude-plugin-service.js.map +1 -1
- package/dist/services/codex-plugin-service.d.ts +30 -0
- package/dist/services/codex-plugin-service.d.ts.map +1 -0
- package/dist/services/codex-plugin-service.js +195 -0
- package/dist/services/codex-plugin-service.js.map +1 -0
- package/dist/services/company-auth-service.d.ts +70 -0
- package/dist/services/company-auth-service.d.ts.map +1 -0
- package/dist/services/company-auth-service.js +720 -0
- package/dist/services/company-auth-service.js.map +1 -0
- package/dist/services/company-auth-store.d.ts +22 -0
- package/dist/services/company-auth-store.d.ts.map +1 -0
- package/dist/services/company-auth-store.js +158 -0
- package/dist/services/company-auth-store.js.map +1 -0
- package/dist/services/company-common.d.ts +9 -0
- package/dist/services/company-common.d.ts.map +1 -0
- package/dist/services/company-common.js +35 -0
- package/dist/services/company-common.js.map +1 -0
- package/dist/services/company-sync-service.d.ts +214 -0
- package/dist/services/company-sync-service.d.ts.map +1 -0
- package/dist/services/company-sync-service.js +1299 -0
- package/dist/services/company-sync-service.js.map +1 -0
- package/dist/services/connectors/adapters/business-metrics.d.ts +5 -0
- package/dist/services/connectors/adapters/business-metrics.d.ts.map +1 -0
- package/dist/services/connectors/adapters/business-metrics.js +41 -0
- package/dist/services/connectors/adapters/business-metrics.js.map +1 -0
- package/dist/services/connectors/adapters/deployment-health.d.ts +18 -0
- package/dist/services/connectors/adapters/deployment-health.d.ts.map +1 -0
- package/dist/services/connectors/adapters/deployment-health.js +67 -0
- package/dist/services/connectors/adapters/deployment-health.js.map +1 -0
- package/dist/services/connectors/adapters/github.d.ts +5 -0
- package/dist/services/connectors/adapters/github.d.ts.map +1 -0
- package/dist/services/connectors/adapters/github.js +31 -0
- package/dist/services/connectors/adapters/github.js.map +1 -0
- package/dist/services/connectors/adapters/linear-jira.d.ts +5 -0
- package/dist/services/connectors/adapters/linear-jira.d.ts.map +1 -0
- package/dist/services/connectors/adapters/linear-jira.js +26 -0
- package/dist/services/connectors/adapters/linear-jira.js.map +1 -0
- package/dist/services/connectors/adapters/posthog.d.ts +5 -0
- package/dist/services/connectors/adapters/posthog.d.ts.map +1 -0
- package/dist/services/connectors/adapters/posthog.js +31 -0
- package/dist/services/connectors/adapters/posthog.js.map +1 -0
- package/dist/services/connectors/adapters/sentry.d.ts +5 -0
- package/dist/services/connectors/adapters/sentry.d.ts.map +1 -0
- package/dist/services/connectors/adapters/sentry.js +31 -0
- package/dist/services/connectors/adapters/sentry.js.map +1 -0
- package/dist/services/connectors/checkpoint-custody.d.ts +45 -0
- package/dist/services/connectors/checkpoint-custody.d.ts.map +1 -0
- package/dist/services/connectors/checkpoint-custody.js +496 -0
- package/dist/services/connectors/checkpoint-custody.js.map +1 -0
- package/dist/services/connectors/connector-registry.d.ts +144 -0
- package/dist/services/connectors/connector-registry.d.ts.map +1 -0
- package/dist/services/connectors/connector-registry.js +423 -0
- package/dist/services/connectors/connector-registry.js.map +1 -0
- package/dist/services/connectors/connector-runtime.d.ts +200 -0
- package/dist/services/connectors/connector-runtime.d.ts.map +1 -0
- package/dist/services/connectors/connector-runtime.js +1297 -0
- package/dist/services/connectors/connector-runtime.js.map +1 -0
- package/dist/services/connectors/credential-custody.d.ts +96 -0
- package/dist/services/connectors/credential-custody.d.ts.map +1 -0
- package/dist/services/connectors/credential-custody.js +390 -0
- package/dist/services/connectors/credential-custody.js.map +1 -0
- package/dist/services/credential-backends.d.ts +11 -1
- package/dist/services/credential-backends.d.ts.map +1 -1
- package/dist/services/credential-backends.js +104 -21
- package/dist/services/credential-backends.js.map +1 -1
- package/dist/services/credential-write-lock.d.ts +8 -0
- package/dist/services/credential-write-lock.d.ts.map +1 -0
- package/dist/services/credential-write-lock.js +104 -0
- package/dist/services/credential-write-lock.js.map +1 -0
- package/dist/services/credentials-service.d.ts +8 -2
- package/dist/services/credentials-service.d.ts.map +1 -1
- package/dist/services/credentials-service.js +66 -21
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/deprecation-notices.d.ts +2 -2
- package/dist/services/deprecation-notices.d.ts.map +1 -1
- package/dist/services/deprecation-notices.js +2 -2
- package/dist/services/deprecation-notices.js.map +1 -1
- package/dist/services/design-artifact-service.d.ts +37 -0
- package/dist/services/design-artifact-service.d.ts.map +1 -0
- package/dist/services/design-artifact-service.js +94 -0
- package/dist/services/design-artifact-service.js.map +1 -0
- package/dist/services/diagram-artifact-service.d.ts +12 -0
- package/dist/services/diagram-artifact-service.d.ts.map +1 -0
- package/dist/services/diagram-artifact-service.js +41 -0
- package/dist/services/diagram-artifact-service.js.map +1 -0
- package/dist/services/diagram-pipeline-service.d.ts +125 -0
- package/dist/services/diagram-pipeline-service.d.ts.map +1 -0
- package/dist/services/diagram-pipeline-service.js +329 -0
- package/dist/services/diagram-pipeline-service.js.map +1 -0
- package/dist/services/gherkin-service.d.ts +3 -0
- package/dist/services/gherkin-service.d.ts.map +1 -0
- package/dist/services/gherkin-service.js +9 -0
- package/dist/services/gherkin-service.js.map +1 -0
- package/dist/services/graph-service.d.ts.map +1 -1
- package/dist/services/graph-service.js +6 -4
- package/dist/services/graph-service.js.map +1 -1
- package/dist/services/landing/landing-service.d.ts +42 -0
- package/dist/services/landing/landing-service.d.ts.map +1 -0
- package/dist/services/landing/landing-service.js +197 -0
- package/dist/services/landing/landing-service.js.map +1 -0
- package/dist/services/landing/operation-registry.d.ts +56 -0
- package/dist/services/landing/operation-registry.d.ts.map +1 -0
- package/dist/services/landing/operation-registry.js +165 -0
- package/dist/services/landing/operation-registry.js.map +1 -0
- package/dist/services/landing/receipt-custody.d.ts +48 -0
- package/dist/services/landing/receipt-custody.d.ts.map +1 -0
- package/dist/services/landing/receipt-custody.js +375 -0
- package/dist/services/landing/receipt-custody.js.map +1 -0
- package/dist/services/linear/constants.d.ts.map +1 -1
- package/dist/services/linear/constants.js +2 -6
- package/dist/services/linear/constants.js.map +1 -1
- package/dist/services/linear/task-status-aggregation.d.ts +1 -1
- package/dist/services/linear/task-status-aggregation.js +1 -1
- package/dist/services/linear-pull-service.d.ts.map +1 -1
- package/dist/services/linear-pull-service.js +7 -30
- package/dist/services/linear-pull-service.js.map +1 -1
- package/dist/services/linear-push-service.d.ts.map +1 -1
- package/dist/services/linear-push-service.js +4 -5
- package/dist/services/linear-push-service.js.map +1 -1
- package/dist/services/migration-registry.d.ts +0 -19
- package/dist/services/migration-registry.d.ts.map +1 -1
- package/dist/services/migration-registry.js +18 -32
- package/dist/services/migration-registry.js.map +1 -1
- package/dist/services/operate/assignment-lifecycle-service.d.ts +135 -0
- package/dist/services/operate/assignment-lifecycle-service.d.ts.map +1 -0
- package/dist/services/operate/assignment-lifecycle-service.js +113 -0
- package/dist/services/operate/assignment-lifecycle-service.js.map +1 -0
- package/dist/services/operate/assignment-packet-service.d.ts +79 -0
- package/dist/services/operate/assignment-packet-service.d.ts.map +1 -0
- package/dist/services/operate/assignment-packet-service.js +1030 -0
- package/dist/services/operate/assignment-packet-service.js.map +1 -0
- package/dist/services/operate/client/governance.d.ts +4 -0
- package/dist/services/operate/client/governance.d.ts.map +1 -0
- package/dist/services/operate/client/governance.js +3 -0
- package/dist/services/operate/client/governance.js.map +1 -0
- package/dist/services/operate/client/lifecycle.d.ts +18 -0
- package/dist/services/operate/client/lifecycle.d.ts.map +1 -0
- package/dist/services/operate/client/lifecycle.js +15 -0
- package/dist/services/operate/client/lifecycle.js.map +1 -0
- package/dist/services/operate/client/runtime.d.ts +13 -0
- package/dist/services/operate/client/runtime.d.ts.map +1 -0
- package/dist/services/operate/client/runtime.js +11 -0
- package/dist/services/operate/client/runtime.js.map +1 -0
- package/dist/services/operate/client-error.d.ts +9 -0
- package/dist/services/operate/client-error.d.ts.map +1 -0
- package/dist/services/operate/client-error.js +14 -0
- package/dist/services/operate/client-error.js.map +1 -0
- package/dist/services/operate/client.d.ts +415 -0
- package/dist/services/operate/client.d.ts.map +1 -0
- package/dist/services/operate/client.js +2432 -0
- package/dist/services/operate/client.js.map +1 -0
- package/dist/services/operate/command-gateway.d.ts +152 -0
- package/dist/services/operate/command-gateway.d.ts.map +1 -0
- package/dist/services/operate/command-gateway.js +883 -0
- package/dist/services/operate/command-gateway.js.map +1 -0
- package/dist/services/operate/composition.d.ts +421 -0
- package/dist/services/operate/composition.d.ts.map +1 -0
- package/dist/services/operate/composition.js +394 -0
- package/dist/services/operate/composition.js.map +1 -0
- package/dist/services/operate/cycle-lifecycle-service.d.ts +35 -0
- package/dist/services/operate/cycle-lifecycle-service.d.ts.map +1 -0
- package/dist/services/operate/cycle-lifecycle-service.js +427 -0
- package/dist/services/operate/cycle-lifecycle-service.js.map +1 -0
- package/dist/services/operate/delivery-evidence.d.ts +34 -0
- package/dist/services/operate/delivery-evidence.d.ts.map +1 -0
- package/dist/services/operate/delivery-evidence.js +666 -0
- package/dist/services/operate/delivery-evidence.js.map +1 -0
- package/dist/services/operate/domain-catalog-service.d.ts +24 -0
- package/dist/services/operate/domain-catalog-service.d.ts.map +1 -0
- package/dist/services/operate/domain-catalog-service.js +99 -0
- package/dist/services/operate/domain-catalog-service.js.map +1 -0
- package/dist/services/operate/experience-read-service.d.ts +64 -0
- package/dist/services/operate/experience-read-service.d.ts.map +1 -0
- package/dist/services/operate/experience-read-service.js +109 -0
- package/dist/services/operate/experience-read-service.js.map +1 -0
- package/dist/services/operate/governed-action-service.d.ts +80 -0
- package/dist/services/operate/governed-action-service.d.ts.map +1 -0
- package/dist/services/operate/governed-action-service.js +497 -0
- package/dist/services/operate/governed-action-service.js.map +1 -0
- package/dist/services/operate/identity-contract.d.ts +3 -0
- package/dist/services/operate/identity-contract.d.ts.map +1 -0
- package/dist/services/operate/identity-contract.js +6 -0
- package/dist/services/operate/identity-contract.js.map +1 -0
- package/dist/services/operate/measurement-schedule-service.d.ts +81 -0
- package/dist/services/operate/measurement-schedule-service.d.ts.map +1 -0
- package/dist/services/operate/measurement-schedule-service.js +461 -0
- package/dist/services/operate/measurement-schedule-service.js.map +1 -0
- package/dist/services/operate/path-custody.d.ts +16 -0
- package/dist/services/operate/path-custody.d.ts.map +1 -0
- package/dist/services/operate/path-custody.js +120 -0
- package/dist/services/operate/path-custody.js.map +1 -0
- package/dist/services/operate/pinned-legacy-replay-runner.d.ts +9 -0
- package/dist/services/operate/pinned-legacy-replay-runner.d.ts.map +1 -0
- package/dist/services/operate/pinned-legacy-replay-runner.js +441 -0
- package/dist/services/operate/pinned-legacy-replay-runner.js.map +1 -0
- package/dist/services/operate/planning-bridge.d.ts +28 -0
- package/dist/services/operate/planning-bridge.d.ts.map +1 -0
- package/dist/services/operate/planning-bridge.js +341 -0
- package/dist/services/operate/planning-bridge.js.map +1 -0
- package/dist/services/operate/planning-handoff-gateway.d.ts +47 -0
- package/dist/services/operate/planning-handoff-gateway.d.ts.map +1 -0
- package/dist/services/operate/planning-handoff-gateway.js +169 -0
- package/dist/services/operate/planning-handoff-gateway.js.map +1 -0
- package/dist/services/operate/planning-handoff-service.d.ts +38 -0
- package/dist/services/operate/planning-handoff-service.d.ts.map +1 -0
- package/dist/services/operate/planning-handoff-service.js +304 -0
- package/dist/services/operate/planning-handoff-service.js.map +1 -0
- package/dist/services/operate/project-transaction-lock.d.ts +6 -0
- package/dist/services/operate/project-transaction-lock.d.ts.map +1 -0
- package/dist/services/operate/project-transaction-lock.js +146 -0
- package/dist/services/operate/project-transaction-lock.js.map +1 -0
- package/dist/services/operate/recovery-service.d.ts +16 -0
- package/dist/services/operate/recovery-service.d.ts.map +1 -0
- package/dist/services/operate/recovery-service.js +59 -0
- package/dist/services/operate/recovery-service.js.map +1 -0
- package/dist/services/operate/replay-safe-retry-service.d.ts +21 -0
- package/dist/services/operate/replay-safe-retry-service.d.ts.map +1 -0
- package/dist/services/operate/replay-safe-retry-service.js +66 -0
- package/dist/services/operate/replay-safe-retry-service.js.map +1 -0
- package/dist/services/operate/repository-read-service.d.ts +13 -0
- package/dist/services/operate/repository-read-service.d.ts.map +1 -0
- package/dist/services/operate/repository-read-service.js +153 -0
- package/dist/services/operate/repository-read-service.js.map +1 -0
- package/dist/services/operate/review-lifecycle-service.d.ts +50 -0
- package/dist/services/operate/review-lifecycle-service.d.ts.map +1 -0
- package/dist/services/operate/review-lifecycle-service.js +63 -0
- package/dist/services/operate/review-lifecycle-service.js.map +1 -0
- package/dist/services/operate/review-read-gateway.d.ts +21 -0
- package/dist/services/operate/review-read-gateway.d.ts.map +1 -0
- package/dist/services/operate/review-read-gateway.js +119 -0
- package/dist/services/operate/review-read-gateway.js.map +1 -0
- package/dist/services/operate/screened-evidence-service.d.ts +24 -0
- package/dist/services/operate/screened-evidence-service.d.ts.map +1 -0
- package/dist/services/operate/screened-evidence-service.js +186 -0
- package/dist/services/operate/screened-evidence-service.js.map +1 -0
- package/dist/services/operate/search-hit-contract.d.ts +11 -0
- package/dist/services/operate/search-hit-contract.d.ts.map +1 -0
- package/dist/services/operate/search-hit-contract.js +29 -0
- package/dist/services/operate/search-hit-contract.js.map +1 -0
- package/dist/services/operate/session-capability.d.ts +61 -0
- package/dist/services/operate/session-capability.d.ts.map +1 -0
- package/dist/services/operate/session-capability.js +124 -0
- package/dist/services/operate/session-capability.js.map +1 -0
- package/dist/services/operate/spec-operating-origin-service.d.ts +60 -0
- package/dist/services/operate/spec-operating-origin-service.d.ts.map +1 -0
- package/dist/services/operate/spec-operating-origin-service.js +401 -0
- package/dist/services/operate/spec-operating-origin-service.js.map +1 -0
- package/dist/services/operate/storage-layout.d.ts +82 -0
- package/dist/services/operate/storage-layout.d.ts.map +1 -0
- package/dist/services/operate/storage-layout.js +1244 -0
- package/dist/services/operate/storage-layout.js.map +1 -0
- package/dist/services/operate/storage-migration-service.d.ts +15 -0
- package/dist/services/operate/storage-migration-service.d.ts.map +1 -0
- package/dist/services/operate/storage-migration-service.js +27 -0
- package/dist/services/operate/storage-migration-service.js.map +1 -0
- package/dist/services/operate/store.d.ts +132 -0
- package/dist/services/operate/store.d.ts.map +1 -0
- package/dist/services/operate/store.js +1344 -0
- package/dist/services/operate/store.js.map +1 -0
- package/dist/services/pipeline-package-service.d.ts +93 -2
- package/dist/services/pipeline-package-service.d.ts.map +1 -1
- package/dist/services/pipeline-package-service.js +867 -7
- package/dist/services/pipeline-package-service.js.map +1 -1
- package/dist/services/planning-id-service.d.ts +8 -0
- package/dist/services/planning-id-service.d.ts.map +1 -0
- package/dist/services/planning-id-service.js +114 -0
- package/dist/services/planning-id-service.js.map +1 -0
- package/dist/services/provenance-service.d.ts +33 -1
- package/dist/services/provenance-service.d.ts.map +1 -1
- package/dist/services/provenance-service.js +104 -8
- package/dist/services/provenance-service.js.map +1 -1
- package/dist/services/runtime-manager/doctor.d.ts +22 -0
- package/dist/services/runtime-manager/doctor.d.ts.map +1 -0
- package/dist/services/runtime-manager/doctor.js +74 -0
- package/dist/services/runtime-manager/doctor.js.map +1 -0
- package/dist/services/runtime-manager/global-state.d.ts +47 -0
- package/dist/services/runtime-manager/global-state.d.ts.map +1 -0
- package/dist/services/runtime-manager/global-state.js +59 -0
- package/dist/services/runtime-manager/global-state.js.map +1 -0
- package/dist/services/runtime-manager/install-plan.d.ts +37 -0
- package/dist/services/runtime-manager/install-plan.d.ts.map +1 -0
- package/dist/services/runtime-manager/install-plan.js +91 -0
- package/dist/services/runtime-manager/install-plan.js.map +1 -0
- package/dist/services/runtime-manager/inventory.d.ts +29 -0
- package/dist/services/runtime-manager/inventory.d.ts.map +1 -0
- package/dist/services/runtime-manager/inventory.js +46 -0
- package/dist/services/runtime-manager/inventory.js.map +1 -0
- package/dist/services/runtime-manager-service.d.ts +16 -71
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +1288 -505
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/spec-service.d.ts +213 -39
- package/dist/services/spec-service.d.ts.map +1 -1
- package/dist/services/spec-service.js +938 -171
- package/dist/services/spec-service.js.map +1 -1
- package/dist/services/template-service.d.ts.map +1 -1
- package/dist/services/template-service.js +1 -0
- package/dist/services/template-service.js.map +1 -1
- package/dist/templates/quick/quick-task.md.hbs +6 -0
- package/dist/templates/rules/claude/CLAUDE.md.hbs +3 -111
- package/dist/templates/rules/codex/AGENTS.md.hbs +2 -92
- package/dist/templates/rules/cursor/create-task-list.mdc.hbs +1 -1
- package/dist/templates/rules/cursor/implement-task-list.mdc.hbs +5 -83
- package/dist/templates/rules/cursor/openplanr.mdc.hbs +12 -0
- package/dist/templates/rules/shared/host-native-guidance.md.hbs +12 -0
- package/dist/templates/rules/shared/implementation-guidance.md.hbs +44 -0
- package/dist/templates/spec/spec-shaped.md.hbs +66 -22
- package/dist/templates/spec/spec.md.hbs +46 -23
- package/dist/templates/spec/story.md.hbs +15 -4
- package/dist/templates/spec/task.md.hbs +53 -5
- package/dist/utils/constants.d.ts +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/logger.d.ts +0 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -6
- package/dist/utils/logger.js.map +1 -1
- package/docs/ARTIFACT_REVIEW.md +110 -0
- package/docs/CLI.md +1216 -0
- package/docs/CROSS_RUNTIME_SETUP.md +168 -0
- package/docs/TROUBLESHOOTING.md +227 -0
- package/lib/dashboard-verifier.d.mts +29 -0
- package/lib/dashboard-verifier.mjs +307 -0
- package/lib/host-packages/adapter-registry.json +44 -0
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +20 -0
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +9 -0
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +1179 -0
- package/lib/host-packages/claude/openplanr/agents/planr-backend.md +66 -0
- package/lib/host-packages/claude/openplanr/agents/planr-database.md +165 -0
- package/lib/host-packages/claude/openplanr/agents/planr-designer.md +57 -0
- package/lib/host-packages/claude/openplanr/agents/planr-devops.md +57 -0
- package/lib/host-packages/claude/openplanr/agents/planr-documentation.md +63 -0
- package/lib/host-packages/claude/openplanr/agents/planr-entity-scaffold.md +29 -0
- package/lib/host-packages/claude/openplanr/agents/planr-frontend.md +69 -0
- package/lib/host-packages/claude/openplanr/agents/planr-qa.md +162 -0
- package/lib/host-packages/claude/openplanr/agents/planr-specification.md +124 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/backend.md +93 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/designer.md +90 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/devops.md +55 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/doc-gen.md +67 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/frontend.md +94 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/qa.md +17 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/specification.md +111 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/contract-create-modify-preserve.md +17 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-craft-rubric.md +51 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-principles.md +43 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-spec-template.md +88 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/task-context-resolution.md +60 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/verification-and-recovery-backend.md +26 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/verification-and-recovery-frontend.md +27 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/backend.md +96 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +83 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/devops.md +55 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/doc-gen.md +67 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/frontend.md +96 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/qa.md +17 -0
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/specification.md +112 -0
- package/lib/host-packages/claude/openplanr/references/pipeline/stacks/backend/nestjs.md +130 -0
- package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/mongodb.md +122 -0
- package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/prisma.md +155 -0
- package/lib/host-packages/claude/openplanr/references/pipeline/stacks/devops/docker-compose.md +140 -0
- package/lib/host-packages/claude/openplanr/references/pipeline/stacks/frontend/nextjs.md +123 -0
- package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +54 -0
- package/lib/host-packages/claude/openplanr/skills/artifact/openplanr.skill.json +48 -0
- package/lib/host-packages/claude/openplanr/skills/artifact/references/company-review.md +18 -0
- package/lib/host-packages/claude/openplanr/skills/artifact/references/design-sharing.md +51 -0
- package/lib/host-packages/claude/openplanr/skills/browser-qa/SKILL.md +34 -0
- package/lib/host-packages/claude/openplanr/skills/browser-qa/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +47 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +101 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/openplanr.skill.json +70 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +86 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/openplanr.skill.json +70 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +46 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +45 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +48 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +47 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/openplanr.skill.json +81 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/dashboard/SKILL.md +20 -0
- package/lib/host-packages/claude/openplanr/skills/dashboard/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +73 -0
- package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +466 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/craft.md +68 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/design-spec-template.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +33 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/discovery.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +105 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/handoff.md +47 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/review.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/team-review.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +93 -0
- package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +17323 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/SKILL.md +58 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +466 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/craft.md +68 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-spec-template.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +33 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/discovery.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +105 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/handoff.md +47 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/review.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/team-review.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +93 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +17323 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +54 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +466 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/craft.md +68 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/design-spec-template.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +33 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/discovery.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +105 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/handoff.md +47 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/review.md +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/team-review.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +93 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +17323 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +65 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/openplanr.skill.json +59 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-document.md +86 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-fidelity.md +19 -0
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-intent-to-ir.md +22 -0
- package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +40 -0
- package/lib/host-packages/claude/openplanr/skills/doctor/openplanr.skill.json +37 -0
- package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +106 -0
- package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +31 -0
- package/lib/host-packages/claude/openplanr/skills/investigate/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/land/SKILL.md +33 -0
- package/lib/host-packages/claude/openplanr/skills/land/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +181 -0
- package/lib/host-packages/claude/openplanr/skills/operate/openplanr.skill.json +70 -0
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/errors.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +106 -0
- package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +389 -0
- package/lib/host-packages/claude/openplanr/skills/plan/references/artifact-contract.md +39 -0
- package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +17323 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +120 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/claude/openplanr/skills/plan-review/SKILL.md +39 -0
- package/lib/host-packages/claude/openplanr/skills/plan-review/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/release/SKILL.md +180 -0
- package/lib/host-packages/claude/openplanr/skills/release/assets/changelog-template.md +18 -0
- package/lib/host-packages/claude/openplanr/skills/release/assets/profile-template.md +45 -0
- package/lib/host-packages/claude/openplanr/skills/release/openplanr.skill.json +92 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/cadence.md +92 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/release-notes.md +127 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/schemes.md +103 -0
- package/lib/host-packages/claude/openplanr/skills/release/scripts/collect_changes.sh +85 -0
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +80 -0
- package/lib/host-packages/claude/openplanr/skills/ship/openplanr.skill.json +48 -0
- package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +14 -0
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +107 -0
- package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/spec/openplanr.skill.json +37 -0
- package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +32 -0
- package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +21 -0
- package/lib/host-packages/claude/openplanr/skills/status/openplanr.skill.json +26 -0
- package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +30 -0
- package/lib/host-packages/claude/openplanr/skills/sync/openplanr.skill.json +37 -0
- package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +230 -0
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +939 -0
- package/lib/host-packages/cursor/openplanr/manifest.json +32 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/company-review.md +18 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/design-sharing.md +51 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-browser-qa.mdc +34 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review.mdc +45 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +99 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +84 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review.mdc +44 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review.mdc +43 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review.mdc +46 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review.mdc +45 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-dashboard.mdc +19 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/craft.md +68 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-spec-template.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +33 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/discovery.md +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +105 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/handoff.md +47 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/review.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/team-review.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +93 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +17323 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/craft.md +68 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-spec-template.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +33 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/discovery.md +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +105 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/handoff.md +47 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/review.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/team-review.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +93 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +17323 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop.mdc +57 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/craft.md +68 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-spec-template.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +33 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/discovery.md +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +105 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/handoff.md +47 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/review.md +88 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/team-review.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +93 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +17323 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +72 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-document.md +86 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-fidelity.md +19 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-intent-to-ir.md +22 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +64 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +106 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +39 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-land.mdc +32 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/errors.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +180 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/artifact-contract.md +39 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +17323 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +120 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan-review.mdc +38 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +105 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/assets/changelog-template.md +18 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/assets/profile-template.md +45 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/cadence.md +92 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/release-notes.md +127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/schemes.md +103 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/scripts/collect_changes.sh +85 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release.mdc +179 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +14 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +107 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +79 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +32 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +52 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +20 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +230 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +29 -0
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +19 -0
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +10 -0
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +1139 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +54 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/openplanr.skill.json +48 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/references/company-review.md +18 -0
- package/lib/host-packages/openai/openplanr/skills/artifact/references/design-sharing.md +51 -0
- package/lib/host-packages/openai/openplanr/skills/browser-qa/SKILL.md +34 -0
- package/lib/host-packages/openai/openplanr/skills/browser-qa/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/browser-qa/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +47 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +101 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/openplanr.skill.json +70 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +86 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/openplanr.skill.json +70 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +46 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +45 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +48 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/openplanr.skill.json +81 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +47 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/openplanr.skill.json +81 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +111 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/dashboard/SKILL.md +20 -0
- package/lib/host-packages/openai/openplanr/skills/dashboard/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/dashboard/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +73 -0
- package/lib/host-packages/openai/openplanr/skills/design/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +466 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/craft.md +68 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/design-spec-template.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +33 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/discovery.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +105 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/handoff.md +47 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/review.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/team-review.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +93 -0
- package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +17323 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/SKILL.md +58 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +466 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/craft.md +68 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-spec-template.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +33 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/discovery.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +105 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/handoff.md +47 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/review.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/team-review.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +93 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +17323 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +54 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +466 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/craft.md +68 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/design-spec-template.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +33 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/discovery.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +105 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/handoff.md +47 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/review.md +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/team-review.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +93 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +17323 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +65 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/openplanr.skill.json +59 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-document.md +86 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-fidelity.md +19 -0
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-intent-to-ir.md +22 -0
- package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +40 -0
- package/lib/host-packages/openai/openplanr/skills/doctor/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/doctor/openplanr.skill.json +37 -0
- package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +106 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +31 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/land/SKILL.md +33 -0
- package/lib/host-packages/openai/openplanr/skills/land/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/land/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +181 -0
- package/lib/host-packages/openai/openplanr/skills/operate/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/operate/openplanr.skill.json +70 -0
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/errors.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/operate-review-contract.mjs +438 -0
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/operate-review-note.mjs +595 -0
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/validate-note.mjs +31 -0
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +106 -0
- package/lib/host-packages/openai/openplanr/skills/plan/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +389 -0
- package/lib/host-packages/openai/openplanr/skills/plan/references/artifact-contract.md +39 -0
- package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +17323 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +120 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/notices/entities.txt +13 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/notices/parse5.txt +21 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +115 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
- package/lib/host-packages/openai/openplanr/skills/plan-review/SKILL.md +39 -0
- package/lib/host-packages/openai/openplanr/skills/plan-review/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/plan-review/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/release/SKILL.md +180 -0
- package/lib/host-packages/openai/openplanr/skills/release/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/release/assets/changelog-template.md +18 -0
- package/lib/host-packages/openai/openplanr/skills/release/assets/profile-template.md +45 -0
- package/lib/host-packages/openai/openplanr/skills/release/openplanr.skill.json +92 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/cadence.md +92 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/release-notes.md +127 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/schemes.md +103 -0
- package/lib/host-packages/openai/openplanr/skills/release/scripts/collect_changes.sh +85 -0
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +80 -0
- package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +48 -0
- package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +14 -0
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +107 -0
- package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/spec/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +37 -0
- package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +32 -0
- package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +21 -0
- package/lib/host-packages/openai/openplanr/skills/status/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +26 -0
- package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +30 -0
- package/lib/host-packages/openai/openplanr/skills/sync/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +37 -0
- package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +230 -0
- package/lib/integrations.d.mts +43 -0
- package/lib/integrations.mjs +230 -0
- package/lib/skill-runtime/errors.mjs +8 -0
- package/lib/skill-runtime/operate-review-contract.mjs +438 -0
- package/lib/skill-runtime/operate-review-note.mjs +595 -0
- package/package.json +56 -18
- package/dist/ai/codebase/context-builder.d.ts +0 -50
- package/dist/ai/codebase/context-builder.d.ts.map +0 -1
- package/dist/ai/codebase/context-builder.js +0 -281
- package/dist/ai/codebase/context-builder.js.map +0 -1
- package/dist/ai/codebase/file-reader.d.ts +0 -22
- package/dist/ai/codebase/file-reader.d.ts.map +0 -1
- package/dist/ai/codebase/file-reader.js +0 -144
- package/dist/ai/codebase/file-reader.js.map +0 -1
- package/dist/ai/codebase/index.d.ts +0 -7
- package/dist/ai/codebase/index.d.ts.map +0 -1
- package/dist/ai/codebase/index.js +0 -7
- package/dist/ai/codebase/index.js.map +0 -1
- package/dist/ai/codebase/pattern-rules.d.ts +0 -28
- package/dist/ai/codebase/pattern-rules.d.ts.map +0 -1
- package/dist/ai/codebase/pattern-rules.js +0 -186
- package/dist/ai/codebase/pattern-rules.js.map +0 -1
- package/dist/ai/codebase/rules-reader.d.ts +0 -14
- package/dist/ai/codebase/rules-reader.d.ts.map +0 -1
- package/dist/ai/codebase/rules-reader.js +0 -25
- package/dist/ai/codebase/rules-reader.js.map +0 -1
- package/dist/ai/codebase/stack-detector.d.ts +0 -18
- package/dist/ai/codebase/stack-detector.d.ts.map +0 -1
- package/dist/ai/codebase/stack-detector.js +0 -173
- package/dist/ai/codebase/stack-detector.js.map +0 -1
- package/dist/ai/codebase/tree-generator.d.ts +0 -8
- package/dist/ai/codebase/tree-generator.d.ts.map +0 -1
- package/dist/ai/codebase/tree-generator.js +0 -84
- package/dist/ai/codebase/tree-generator.js.map +0 -1
- package/dist/ai/errors.d.ts +0 -22
- package/dist/ai/errors.d.ts.map +0 -1
- package/dist/ai/errors.js +0 -72
- package/dist/ai/errors.js.map +0 -1
- package/dist/ai/index.d.ts +0 -11
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js +0 -10
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/prompts/prompt-builder.d.ts +0 -134
- package/dist/ai/prompts/prompt-builder.d.ts.map +0 -1
- package/dist/ai/prompts/prompt-builder.js +0 -295
- package/dist/ai/prompts/prompt-builder.js.map +0 -1
- package/dist/ai/prompts/system-prompts.d.ts +0 -41
- package/dist/ai/prompts/system-prompts.d.ts.map +0 -1
- package/dist/ai/prompts/system-prompts.js +0 -512
- package/dist/ai/prompts/system-prompts.js.map +0 -1
- package/dist/ai/provider-factory.d.ts +0 -10
- package/dist/ai/provider-factory.d.ts.map +0 -1
- package/dist/ai/provider-factory.js +0 -49
- package/dist/ai/provider-factory.js.map +0 -1
- package/dist/ai/providers/anthropic-provider.d.ts +0 -24
- package/dist/ai/providers/anthropic-provider.d.ts.map +0 -1
- package/dist/ai/providers/anthropic-provider.js +0 -97
- package/dist/ai/providers/anthropic-provider.js.map +0 -1
- package/dist/ai/providers/ollama-provider.d.ts +0 -13
- package/dist/ai/providers/ollama-provider.d.ts.map +0 -1
- package/dist/ai/providers/ollama-provider.js +0 -16
- package/dist/ai/providers/ollama-provider.js.map +0 -1
- package/dist/ai/providers/openai-provider.d.ts +0 -19
- package/dist/ai/providers/openai-provider.d.ts.map +0 -1
- package/dist/ai/providers/openai-provider.js +0 -84
- package/dist/ai/providers/openai-provider.js.map +0 -1
- package/dist/ai/schemas/ai-response-schemas.d.ts +0 -340
- package/dist/ai/schemas/ai-response-schemas.d.ts.map +0 -1
- package/dist/ai/schemas/ai-response-schemas.js +0 -278
- package/dist/ai/schemas/ai-response-schemas.js.map +0 -1
- package/dist/ai/types.d.ts +0 -76
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/ai/types.js +0 -49
- package/dist/ai/types.js.map +0 -1
- package/dist/ai/validation/index.d.ts +0 -2
- package/dist/ai/validation/index.d.ts.map +0 -1
- package/dist/ai/validation/index.js +0 -2
- package/dist/ai/validation/index.js.map +0 -1
- package/dist/ai/validation/task-validator.d.ts +0 -37
- package/dist/ai/validation/task-validator.d.ts.map +0 -1
- package/dist/ai/validation/task-validator.js +0 -81
- package/dist/ai/validation/task-validator.js.map +0 -1
- package/dist/cli/commands/config.d.ts +0 -8
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -224
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/estimate.d.ts +0 -3
- package/dist/cli/commands/estimate.d.ts.map +0 -1
- package/dist/cli/commands/estimate.js +0 -368
- package/dist/cli/commands/estimate.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -9
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -166
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/pipeline.d.ts +0 -3
- package/dist/cli/commands/pipeline.d.ts.map +0 -1
- package/dist/cli/commands/pipeline.js +0 -59
- package/dist/cli/commands/pipeline.js.map +0 -1
- package/dist/cli/commands/plan.d.ts +0 -15
- package/dist/cli/commands/plan.d.ts.map +0 -1
- package/dist/cli/commands/plan.js +0 -444
- package/dist/cli/commands/plan.js.map +0 -1
- package/dist/cli/commands/refine.d.ts +0 -10
- package/dist/cli/commands/refine.d.ts.map +0 -1
- package/dist/cli/commands/refine.js +0 -226
- package/dist/cli/commands/refine.js.map +0 -1
- package/dist/cli/commands/revise.d.ts +0 -24
- package/dist/cli/commands/revise.d.ts.map +0 -1
- package/dist/cli/commands/revise.js +0 -572
- package/dist/cli/commands/revise.js.map +0 -1
- package/dist/cli/helpers/task-creation.d.ts +0 -89
- package/dist/cli/helpers/task-creation.d.ts.map +0 -1
- package/dist/cli/helpers/task-creation.js +0 -139
- package/dist/cli/helpers/task-creation.js.map +0 -1
- package/dist/services/ai-service.d.ts +0 -77
- package/dist/services/ai-service.d.ts.map +0 -1
- package/dist/services/ai-service.js +0 -241
- package/dist/services/ai-service.js.map +0 -1
- package/dist/services/artifact-gathering.d.ts +0 -55
- package/dist/services/artifact-gathering.d.ts.map +0 -1
- package/dist/services/artifact-gathering.js +0 -147
- package/dist/services/artifact-gathering.js.map +0 -1
- package/dist/services/operate/advisors.d.ts +0 -625
- package/dist/services/operate/advisors.d.ts.map +0 -1
- package/dist/services/operate/advisors.js +0 -1545
- package/dist/services/operate/advisors.js.map +0 -1
- package/dist/services/operate/artifact-route-generation.d.ts +0 -111
- package/dist/services/operate/artifact-route-generation.d.ts.map +0 -1
- package/dist/services/operate/artifact-route-generation.js +0 -460
- package/dist/services/operate/artifact-route-generation.js.map +0 -1
- package/dist/services/operate/artifacts.d.ts +0 -66
- package/dist/services/operate/artifacts.d.ts.map +0 -1
- package/dist/services/operate/artifacts.js +0 -336
- package/dist/services/operate/artifacts.js.map +0 -1
- package/dist/services/operate/cadence.d.ts +0 -50
- package/dist/services/operate/cadence.d.ts.map +0 -1
- package/dist/services/operate/cadence.js +0 -56
- package/dist/services/operate/cadence.js.map +0 -1
- package/dist/services/operate/canonical.d.ts +0 -18
- package/dist/services/operate/canonical.d.ts.map +0 -1
- package/dist/services/operate/canonical.js +0 -157
- package/dist/services/operate/canonical.js.map +0 -1
- package/dist/services/operate/citation-resolution.d.ts +0 -161
- package/dist/services/operate/citation-resolution.d.ts.map +0 -1
- package/dist/services/operate/citation-resolution.js +0 -593
- package/dist/services/operate/citation-resolution.js.map +0 -1
- package/dist/services/operate/completion.d.ts +0 -80
- package/dist/services/operate/completion.d.ts.map +0 -1
- package/dist/services/operate/completion.js +0 -279
- package/dist/services/operate/completion.js.map +0 -1
- package/dist/services/operate/config.d.ts +0 -154
- package/dist/services/operate/config.d.ts.map +0 -1
- package/dist/services/operate/config.js +0 -791
- package/dist/services/operate/config.js.map +0 -1
- package/dist/services/operate/consolidation.d.ts +0 -18
- package/dist/services/operate/consolidation.d.ts.map +0 -1
- package/dist/services/operate/consolidation.js +0 -539
- package/dist/services/operate/consolidation.js.map +0 -1
- package/dist/services/operate/context-research.d.ts +0 -84
- package/dist/services/operate/context-research.d.ts.map +0 -1
- package/dist/services/operate/context-research.js +0 -448
- package/dist/services/operate/context-research.js.map +0 -1
- package/dist/services/operate/decision-brief.d.ts +0 -237
- package/dist/services/operate/decision-brief.d.ts.map +0 -1
- package/dist/services/operate/decision-brief.js +0 -368
- package/dist/services/operate/decision-brief.js.map +0 -1
- package/dist/services/operate/doctor.d.ts +0 -85
- package/dist/services/operate/doctor.d.ts.map +0 -1
- package/dist/services/operate/doctor.js +0 -1070
- package/dist/services/operate/doctor.js.map +0 -1
- package/dist/services/operate/drafts.d.ts +0 -48
- package/dist/services/operate/drafts.d.ts.map +0 -1
- package/dist/services/operate/drafts.js +0 -398
- package/dist/services/operate/drafts.js.map +0 -1
- package/dist/services/operate/engine.d.ts +0 -151
- package/dist/services/operate/engine.d.ts.map +0 -1
- package/dist/services/operate/engine.js +0 -1896
- package/dist/services/operate/engine.js.map +0 -1
- package/dist/services/operate/event-store.d.ts +0 -113
- package/dist/services/operate/event-store.d.ts.map +0 -1
- package/dist/services/operate/event-store.js +0 -384
- package/dist/services/operate/event-store.js.map +0 -1
- package/dist/services/operate/evidence-cache.d.ts +0 -41
- package/dist/services/operate/evidence-cache.d.ts.map +0 -1
- package/dist/services/operate/evidence-cache.js +0 -193
- package/dist/services/operate/evidence-cache.js.map +0 -1
- package/dist/services/operate/evidence-import.d.ts +0 -40
- package/dist/services/operate/evidence-import.d.ts.map +0 -1
- package/dist/services/operate/evidence-import.js +0 -340
- package/dist/services/operate/evidence-import.js.map +0 -1
- package/dist/services/operate/evidence.d.ts +0 -21
- package/dist/services/operate/evidence.d.ts.map +0 -1
- package/dist/services/operate/evidence.js +0 -20
- package/dist/services/operate/evidence.js.map +0 -1
- package/dist/services/operate/ids.d.ts +0 -7
- package/dist/services/operate/ids.d.ts.map +0 -1
- package/dist/services/operate/ids.js +0 -23
- package/dist/services/operate/ids.js.map +0 -1
- package/dist/services/operate/index.d.ts +0 -16
- package/dist/services/operate/index.d.ts.map +0 -1
- package/dist/services/operate/index.js +0 -1864
- package/dist/services/operate/index.js.map +0 -1
- package/dist/services/operate/integrity.d.ts +0 -81
- package/dist/services/operate/integrity.d.ts.map +0 -1
- package/dist/services/operate/integrity.js +0 -152
- package/dist/services/operate/integrity.js.map +0 -1
- package/dist/services/operate/interaction/action-service.d.ts +0 -34
- package/dist/services/operate/interaction/action-service.d.ts.map +0 -1
- package/dist/services/operate/interaction/action-service.js +0 -103
- package/dist/services/operate/interaction/action-service.js.map +0 -1
- package/dist/services/operate/interaction/answer-service.d.ts +0 -40
- package/dist/services/operate/interaction/answer-service.d.ts.map +0 -1
- package/dist/services/operate/interaction/answer-service.js +0 -317
- package/dist/services/operate/interaction/answer-service.js.map +0 -1
- package/dist/services/operate/interaction/charter-suggestions.d.ts +0 -29
- package/dist/services/operate/interaction/charter-suggestions.d.ts.map +0 -1
- package/dist/services/operate/interaction/charter-suggestions.js +0 -104
- package/dist/services/operate/interaction/charter-suggestions.js.map +0 -1
- package/dist/services/operate/interaction/confirmation-service.d.ts +0 -30
- package/dist/services/operate/interaction/confirmation-service.d.ts.map +0 -1
- package/dist/services/operate/interaction/confirmation-service.js +0 -78
- package/dist/services/operate/interaction/confirmation-service.js.map +0 -1
- package/dist/services/operate/interaction/initialization-replay.d.ts +0 -9
- package/dist/services/operate/interaction/initialization-replay.d.ts.map +0 -1
- package/dist/services/operate/interaction/initialization-replay.js +0 -64
- package/dist/services/operate/interaction/initialization-replay.js.map +0 -1
- package/dist/services/operate/interaction/question-engine.d.ts +0 -41
- package/dist/services/operate/interaction/question-engine.d.ts.map +0 -1
- package/dist/services/operate/interaction/question-engine.js +0 -434
- package/dist/services/operate/interaction/question-engine.js.map +0 -1
- package/dist/services/operate/interaction/question-registry.d.ts +0 -52
- package/dist/services/operate/interaction/question-registry.d.ts.map +0 -1
- package/dist/services/operate/interaction/question-registry.js +0 -305
- package/dist/services/operate/interaction/question-registry.js.map +0 -1
- package/dist/services/operate/interaction/session-service.d.ts +0 -55
- package/dist/services/operate/interaction/session-service.d.ts.map +0 -1
- package/dist/services/operate/interaction/session-service.js +0 -304
- package/dist/services/operate/interaction/session-service.js.map +0 -1
- package/dist/services/operate/interaction/terminal-renderer.d.ts +0 -19
- package/dist/services/operate/interaction/terminal-renderer.d.ts.map +0 -1
- package/dist/services/operate/interaction/terminal-renderer.js +0 -124
- package/dist/services/operate/interaction/terminal-renderer.js.map +0 -1
- package/dist/services/operate/journal.d.ts +0 -34
- package/dist/services/operate/journal.d.ts.map +0 -1
- package/dist/services/operate/journal.js +0 -235
- package/dist/services/operate/journal.js.map +0 -1
- package/dist/services/operate/legacy-import-service.d.ts +0 -58
- package/dist/services/operate/legacy-import-service.d.ts.map +0 -1
- package/dist/services/operate/legacy-import-service.js +0 -922
- package/dist/services/operate/legacy-import-service.js.map +0 -1
- package/dist/services/operate/lifecycle-driver.d.ts +0 -309
- package/dist/services/operate/lifecycle-driver.d.ts.map +0 -1
- package/dist/services/operate/lifecycle-driver.js +0 -434
- package/dist/services/operate/lifecycle-driver.js.map +0 -1
- package/dist/services/operate/lifecycle.d.ts +0 -96
- package/dist/services/operate/lifecycle.d.ts.map +0 -1
- package/dist/services/operate/lifecycle.js +0 -596
- package/dist/services/operate/lifecycle.js.map +0 -1
- package/dist/services/operate/lock-service.d.ts +0 -37
- package/dist/services/operate/lock-service.d.ts.map +0 -1
- package/dist/services/operate/lock-service.js +0 -215
- package/dist/services/operate/lock-service.js.map +0 -1
- package/dist/services/operate/maintenance.d.ts +0 -139
- package/dist/services/operate/maintenance.d.ts.map +0 -1
- package/dist/services/operate/maintenance.js +0 -2200
- package/dist/services/operate/maintenance.js.map +0 -1
- package/dist/services/operate/migration.d.ts +0 -68
- package/dist/services/operate/migration.d.ts.map +0 -1
- package/dist/services/operate/migration.js +0 -243
- package/dist/services/operate/migration.js.map +0 -1
- package/dist/services/operate/mission-dispatch.d.ts +0 -271
- package/dist/services/operate/mission-dispatch.d.ts.map +0 -1
- package/dist/services/operate/mission-dispatch.js +0 -590
- package/dist/services/operate/mission-dispatch.js.map +0 -1
- package/dist/services/operate/outcomes.d.ts +0 -48
- package/dist/services/operate/outcomes.d.ts.map +0 -1
- package/dist/services/operate/outcomes.js +0 -312
- package/dist/services/operate/outcomes.js.map +0 -1
- package/dist/services/operate/pipeline-handoff.d.ts +0 -138
- package/dist/services/operate/pipeline-handoff.d.ts.map +0 -1
- package/dist/services/operate/pipeline-handoff.js +0 -175
- package/dist/services/operate/pipeline-handoff.js.map +0 -1
- package/dist/services/operate/profile-migration.d.ts +0 -69
- package/dist/services/operate/profile-migration.d.ts.map +0 -1
- package/dist/services/operate/profile-migration.js +0 -462
- package/dist/services/operate/profile-migration.js.map +0 -1
- package/dist/services/operate/projection-persistence.d.ts +0 -126
- package/dist/services/operate/projection-persistence.d.ts.map +0 -1
- package/dist/services/operate/projection-persistence.js +0 -752
- package/dist/services/operate/projection-persistence.js.map +0 -1
- package/dist/services/operate/projection.d.ts +0 -37
- package/dist/services/operate/projection.d.ts.map +0 -1
- package/dist/services/operate/projection.js +0 -209
- package/dist/services/operate/projection.js.map +0 -1
- package/dist/services/operate/protocol.d.ts +0 -86
- package/dist/services/operate/protocol.d.ts.map +0 -1
- package/dist/services/operate/protocol.js +0 -76
- package/dist/services/operate/protocol.js.map +0 -1
- package/dist/services/operate/read-only-providers.d.ts +0 -76
- package/dist/services/operate/read-only-providers.d.ts.map +0 -1
- package/dist/services/operate/read-only-providers.js +0 -421
- package/dist/services/operate/read-only-providers.js.map +0 -1
- package/dist/services/operate/redaction.d.ts +0 -74
- package/dist/services/operate/redaction.d.ts.map +0 -1
- package/dist/services/operate/redaction.js +0 -406
- package/dist/services/operate/redaction.js.map +0 -1
- package/dist/services/operate/reducer.d.ts +0 -10
- package/dist/services/operate/reducer.d.ts.map +0 -1
- package/dist/services/operate/reducer.js +0 -11
- package/dist/services/operate/reducer.js.map +0 -1
- package/dist/services/operate/report-html.d.ts +0 -32
- package/dist/services/operate/report-html.d.ts.map +0 -1
- package/dist/services/operate/report-html.js +0 -289
- package/dist/services/operate/report-html.js.map +0 -1
- package/dist/services/operate/reports.d.ts +0 -72
- package/dist/services/operate/reports.d.ts.map +0 -1
- package/dist/services/operate/reports.js +0 -481
- package/dist/services/operate/reports.js.map +0 -1
- package/dist/services/operate/routes.d.ts +0 -133
- package/dist/services/operate/routes.d.ts.map +0 -1
- package/dist/services/operate/routes.js +0 -1577
- package/dist/services/operate/routes.js.map +0 -1
- package/dist/services/operate/scratch.d.ts +0 -81
- package/dist/services/operate/scratch.d.ts.map +0 -1
- package/dist/services/operate/scratch.js +0 -190
- package/dist/services/operate/scratch.js.map +0 -1
- package/dist/services/operate/shipment-observer.d.ts +0 -14
- package/dist/services/operate/shipment-observer.d.ts.map +0 -1
- package/dist/services/operate/shipment-observer.js +0 -320
- package/dist/services/operate/shipment-observer.js.map +0 -1
- package/dist/services/operate/stalled-item-service.d.ts +0 -18
- package/dist/services/operate/stalled-item-service.d.ts.map +0 -1
- package/dist/services/operate/stalled-item-service.js +0 -121
- package/dist/services/operate/stalled-item-service.js.map +0 -1
- package/dist/services/operate/subprocess-env.d.ts +0 -4
- package/dist/services/operate/subprocess-env.d.ts.map +0 -1
- package/dist/services/operate/subprocess-env.js +0 -45
- package/dist/services/operate/subprocess-env.js.map +0 -1
- package/dist/services/operate/types.d.ts +0 -1064
- package/dist/services/operate/types.d.ts.map +0 -1
- package/dist/services/operate/types.js +0 -27
- package/dist/services/operate/types.js.map +0 -1
- package/dist/services/operate/workspace.d.ts +0 -76
- package/dist/services/operate/workspace.d.ts.map +0 -1
- package/dist/services/operate/workspace.js +0 -350
- package/dist/services/operate/workspace.js.map +0 -1
- package/dist/services/revise-service.d.ts +0 -115
- package/dist/services/revise-service.d.ts.map +0 -1
- package/dist/services/revise-service.js +0 -294
- package/dist/services/revise-service.js.map +0 -1
- package/dist/templates/rules/claude/planr-pipeline.md.hbs +0 -69
- package/dist/templates/rules/codex/_pipeline-section.md.hbs +0 -154
- package/dist/templates/rules/cursor/agents/backend-agent.md +0 -299
- package/dist/templates/rules/cursor/agents/db-agent.md +0 -163
- package/dist/templates/rules/cursor/agents/designer-agent.md +0 -219
- package/dist/templates/rules/cursor/agents/devops-agent.md +0 -197
- package/dist/templates/rules/cursor/agents/doc-gen-agent.md +0 -203
- package/dist/templates/rules/cursor/agents/frontend-agent.md +0 -220
- package/dist/templates/rules/cursor/agents/qa-agent.md +0 -170
- package/dist/templates/rules/cursor/agents/specification-agent.md +0 -282
- package/dist/templates/rules/cursor/planr-pipeline-plan.mdc.hbs +0 -196
- package/dist/templates/rules/cursor/planr-pipeline-ship.mdc.hbs +0 -246
- package/dist/templates/rules/cursor/planr-pipeline.mdc.hbs +0 -134
|
@@ -1,1545 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { readFileSync } from 'node:fs';
|
|
3
|
-
import { mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { pathToFileURL } from 'node:url';
|
|
6
|
-
import { z } from 'zod';
|
|
7
|
-
import { AIError } from '../../ai/errors.js';
|
|
8
|
-
import { DEFAULT_MODELS } from '../../ai/types.js';
|
|
9
|
-
import { OPENPLANR_VERSION } from '../../utils/package-version.js';
|
|
10
|
-
import { getAIProvider, isAIConfigured } from '../ai-service.js';
|
|
11
|
-
import { loadConfig } from '../config-service.js';
|
|
12
|
-
import { isPlanrArtifactId } from './artifacts.js';
|
|
13
|
-
import { canonicalDigest, canonicalize } from './canonical.js';
|
|
14
|
-
import { buildOperatingBootstrapMap } from './context-research.js';
|
|
15
|
-
import { createMissionToolset, MISSION_READ_ONLY_TOOLS, narrowMissionRootsToCeiling, operatingRuntimeEnforcesBoundedReadOnly, resolveOperatingDispatchIsolation, runMissionDispatchFanOut, } from './mission-dispatch.js';
|
|
16
|
-
import { assertOperatingArtifact, loadOperatingProtocol, resolveOperatingPipelineRoot, } from './protocol.js';
|
|
17
|
-
import { sanitizeGeneratedPlainText } from './redaction.js';
|
|
18
|
-
import { OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, OperateError, } from './types.js';
|
|
19
|
-
const proposalSchema = z
|
|
20
|
-
.object({
|
|
21
|
-
proposalKey: z.string().regex(/^[A-Za-z0-9._-]+$/),
|
|
22
|
-
type: z.enum(['finding', 'decision', 'data-gap', 'merge', 'sequence']),
|
|
23
|
-
title: z.string().min(1),
|
|
24
|
-
problem: z.string().min(1),
|
|
25
|
-
proposal: z.string().min(1),
|
|
26
|
-
impact: z.number().int().min(1).max(5),
|
|
27
|
-
confidence: z.number().int().min(1).max(5),
|
|
28
|
-
ease: z.number().int().min(1).max(5),
|
|
29
|
-
severity: z.enum(['low', 'medium', 'high', 'critical']),
|
|
30
|
-
evidenceRefs: z.array(z.string().regex(/^EVD-[A-Za-z0-9._-]+$/)).min(1),
|
|
31
|
-
dependsOnProposalKeys: z.array(z.string().regex(/^[A-Za-z0-9._-]+$/)).optional(),
|
|
32
|
-
conflictsWithProposalKeys: z.array(z.string().regex(/^[A-Za-z0-9._-]+$/)).optional(),
|
|
33
|
-
sequenceProposalKeys: z
|
|
34
|
-
.array(z.string().regex(/^[A-Za-z0-9._-]+$/))
|
|
35
|
-
.min(2)
|
|
36
|
-
.optional(),
|
|
37
|
-
})
|
|
38
|
-
.strict();
|
|
39
|
-
const advisorOutputSchema = z
|
|
40
|
-
.object({
|
|
41
|
-
outcome: z.enum(['proposals', 'quiet']),
|
|
42
|
-
proposals: z.array(proposalSchema).max(20),
|
|
43
|
-
gaps: z.array(z.string()),
|
|
44
|
-
conflicts: z.array(z.string()),
|
|
45
|
-
})
|
|
46
|
-
.strict();
|
|
47
|
-
// The mission proposal's citation shape, kept in lockstep with the anchor the
|
|
48
|
-
// record-time resolver validates (`operating-citation@1.4.0`): a repository path
|
|
49
|
-
// (relative, dot-prefixed roots allowed, no `..` traversal) / git revision /
|
|
50
|
-
// planr artifact (any real artifact class), optionally scoped to a workspace
|
|
51
|
-
// `componentId`, and bound to the cycle's frozen `pinnedRevision`. Each proposal
|
|
52
|
-
// carries `citations` INSTEAD of the v1.2 `evidenceRefs`; the resolver snapshots
|
|
53
|
-
// each citation after the lens returns and OpenPlanr never widens the set.
|
|
54
|
-
const missionCitationSchema = z
|
|
55
|
-
.object({
|
|
56
|
-
citationKey: z
|
|
57
|
-
.string()
|
|
58
|
-
.regex(/^[A-Za-z0-9._-]+$/)
|
|
59
|
-
.max(128)
|
|
60
|
-
.optional(),
|
|
61
|
-
componentId: z
|
|
62
|
-
.string()
|
|
63
|
-
.regex(/^[a-z][a-z0-9-]{0,63}$/)
|
|
64
|
-
.optional(),
|
|
65
|
-
repositoryPath: z
|
|
66
|
-
.string()
|
|
67
|
-
.min(1)
|
|
68
|
-
.max(1024)
|
|
69
|
-
.regex(/^(?!\/)(?!.*(?:^|\/)\.\.(?:\/|$)).+$/)
|
|
70
|
-
.optional(),
|
|
71
|
-
lineRange: z
|
|
72
|
-
.object({ start: z.number().int().min(1), end: z.number().int().min(1) })
|
|
73
|
-
.strict()
|
|
74
|
-
.optional(),
|
|
75
|
-
gitRevision: z
|
|
76
|
-
.string()
|
|
77
|
-
.regex(/^[A-Fa-f0-9]{7,64}$/)
|
|
78
|
-
.optional(),
|
|
79
|
-
planrArtifactId: z
|
|
80
|
-
.string()
|
|
81
|
-
.refine(isPlanrArtifactId, 'must name a known planr artifact class')
|
|
82
|
-
.optional(),
|
|
83
|
-
pinnedRevision: z.string().regex(/^[A-Fa-f0-9]{7,64}$/),
|
|
84
|
-
})
|
|
85
|
-
.strict();
|
|
86
|
-
const missionProposalSchema = z
|
|
87
|
-
.object({
|
|
88
|
-
proposalKey: z.string().regex(/^[A-Za-z0-9._-]+$/),
|
|
89
|
-
type: z.enum(['finding', 'decision', 'data-gap', 'merge', 'sequence']),
|
|
90
|
-
title: z.string().min(1),
|
|
91
|
-
problem: z.string().min(1),
|
|
92
|
-
proposal: z.string().min(1),
|
|
93
|
-
impact: z.number().int().min(1).max(5),
|
|
94
|
-
confidence: z.number().int().min(1).max(5),
|
|
95
|
-
ease: z.number().int().min(1).max(5),
|
|
96
|
-
severity: z.enum(['low', 'medium', 'high', 'critical']),
|
|
97
|
-
citations: z.array(missionCitationSchema).min(1).max(50),
|
|
98
|
-
dependsOnProposalKeys: z.array(z.string().regex(/^[A-Za-z0-9._-]+$/)).optional(),
|
|
99
|
-
conflictsWithProposalKeys: z.array(z.string().regex(/^[A-Za-z0-9._-]+$/)).optional(),
|
|
100
|
-
sequenceProposalKeys: z
|
|
101
|
-
.array(z.string().regex(/^[A-Za-z0-9._-]+$/))
|
|
102
|
-
.min(2)
|
|
103
|
-
.optional(),
|
|
104
|
-
})
|
|
105
|
-
.strict();
|
|
106
|
-
const missionAdvisorOutputSchema = z
|
|
107
|
-
.object({
|
|
108
|
-
outcome: z.enum(['proposals', 'quiet']),
|
|
109
|
-
proposals: z.array(missionProposalSchema).max(20),
|
|
110
|
-
gaps: z.array(z.string()),
|
|
111
|
-
conflicts: z.array(z.string()),
|
|
112
|
-
})
|
|
113
|
-
.strict();
|
|
114
|
-
function v14CitationToMission(value, pinnedRevision) {
|
|
115
|
-
// A `componentId` scopes a repository/git locator to a sibling workspace
|
|
116
|
-
// component so it is resolved against that component's checkout, not the
|
|
117
|
-
// control repository. Preserve it through the conversion.
|
|
118
|
-
const componentId = typeof value.componentId === 'string' ? { componentId: value.componentId } : {};
|
|
119
|
-
if (value.kind === 'repository') {
|
|
120
|
-
return {
|
|
121
|
-
...componentId,
|
|
122
|
-
repositoryPath: String(value.path),
|
|
123
|
-
lineRange: { start: Number(value.startLine), end: Number(value.endLine) },
|
|
124
|
-
pinnedRevision: String(value.revision),
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
if (value.kind === 'git') {
|
|
128
|
-
return {
|
|
129
|
-
...componentId,
|
|
130
|
-
gitRevision: String(value.revision),
|
|
131
|
-
pinnedRevision: String(value.revision),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
if (value.kind === 'planr') {
|
|
135
|
-
return {
|
|
136
|
-
planrArtifactId: String(value.artifactId),
|
|
137
|
-
pinnedRevision,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
// External citations require a consented connected-research snapshot. They
|
|
141
|
-
// cannot be silently converted into a local repository citation.
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* SINGLE source of truth for the action `routeKind` → committed proposal `type`
|
|
146
|
-
* mapping. A Protocol v1.4 native ACTION carries a `routeKind`; the committed
|
|
147
|
-
* proposal it becomes carries a `type` from the frozen proposal-type vocabulary.
|
|
148
|
-
* Only a `decision` routeKind becomes a `decision` proposal; every other route
|
|
149
|
-
* kind (`quick-task`, `spec`, `epic`, `agent-artifact`, `experiment`, `metric`)
|
|
150
|
-
* becomes a `finding`. The registry-derived brief bounds
|
|
151
|
-
* (`deriveRegistryProposalImage`), the native-response normalizer, and the
|
|
152
|
-
* raw-response type projection all route through here so the three can never
|
|
153
|
-
* disagree on what an action becomes — the exact divergence that let the Chair's
|
|
154
|
-
* brief exclude `finding`/`decision` while every one of its actions mapped to
|
|
155
|
-
* them, so the Chair could record ZERO actions and failed on any action at all.
|
|
156
|
-
*/
|
|
157
|
-
export function routeKindToProposalType(routeKind) {
|
|
158
|
-
return routeKind === 'decision' ? 'decision' : 'finding';
|
|
159
|
-
}
|
|
160
|
-
/** The two registry facets that drive a role's proposal bounds. */
|
|
161
|
-
const registryProposalBoundsSchema = z
|
|
162
|
-
.object({
|
|
163
|
-
allowedRouteKinds: z.array(z.string().min(1)).min(1),
|
|
164
|
-
budgets: z.object({ maxActions: z.number().int().positive() }),
|
|
165
|
-
})
|
|
166
|
-
.passthrough();
|
|
167
|
-
/**
|
|
168
|
-
* The legacy protocol version OpenPlanr explicitly requests when it needs a role's
|
|
169
|
-
* pack-style brief. The brief supplies ONLY the per-role bounds the record path
|
|
170
|
-
* enforces (the proposal cap, the allowed proposal types, the output-byte ceiling)
|
|
171
|
-
* and the capability tier — never the response contract, which a mandate discloses
|
|
172
|
-
* from its own `responseSchema`. The version is stated rather than defaulted: the
|
|
173
|
-
* pipeline refuses a Protocol v1.4 brief outright and no longer guesses a version,
|
|
174
|
-
* because a silently defaulted one is exactly how a legacy contract reaches a
|
|
175
|
-
* session that never asked for it.
|
|
176
|
-
*/
|
|
177
|
-
const LEGACY_ADVISOR_BRIEF_PROTOCOL_VERSION = '1.2.0';
|
|
178
|
-
/**
|
|
179
|
-
* The IMAGE of a role's registry `allowedRouteKinds` under `routeKindToProposalType`
|
|
180
|
-
* — exactly the proposal types an action of one of those route kinds becomes, i.e.
|
|
181
|
-
* the set an advisor's actions can ACTUALLY produce — plus the registry's action
|
|
182
|
-
* cap (`budgets.maxActions`). `merge`/`sequence`/`data-gap` have no routeKind
|
|
183
|
-
* pre-image and are intentionally absent here (no action can reach them; making
|
|
184
|
-
* them action-expressible is a protocol question, not this derivation's job).
|
|
185
|
-
*/
|
|
186
|
-
function deriveRegistryProposalImage(role) {
|
|
187
|
-
const parsed = registryProposalBoundsSchema.safeParse(role);
|
|
188
|
-
if (!parsed.success) {
|
|
189
|
-
throw new OperateError('E_OPERATE_STATE_INVALID', `Operating role registry entry ${role.id} is missing the allowedRouteKinds / budgets.maxActions needed to derive its proposal bounds.`);
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
allowedProposalTypes: [
|
|
193
|
-
...new Set(parsed.data.allowedRouteKinds.map(routeKindToProposalType)),
|
|
194
|
-
].sort(),
|
|
195
|
-
maximumProposals: parsed.data.budgets.maxActions,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Build a role's advisor brief with its proposal BOUNDS reconciled against the
|
|
200
|
-
* live role registry — the single source of truth — so the registry and the
|
|
201
|
-
* enforced runtime contract can never disagree again. The pipeline's pack-style
|
|
202
|
-
* brief is a frozen Protocol v1.2 compatibility projection whose
|
|
203
|
-
* `output.allowedProposalTypes` predate the v1.4 action model: for the Chair it is
|
|
204
|
-
* `['merge','sequence']`, DISJOINT from the set every one of the Chair's actions
|
|
205
|
-
* maps to (`finding`/`decision`). So the Chair could commit a quiet result but was
|
|
206
|
-
* rejected the instant it proposed a single bounded route — the exact defect this
|
|
207
|
-
* closes.
|
|
208
|
-
*
|
|
209
|
-
* Reconciliation:
|
|
210
|
-
* - `maximumProposals` is taken from the registry's `budgets.maxActions` (today
|
|
211
|
-
* already identical to the pipeline value for every role, but now set
|
|
212
|
-
* explicitly so a future registry cap edit cannot silently disagree with the
|
|
213
|
-
* runtime).
|
|
214
|
-
* - `allowedProposalTypes` is the UNION of the registry image and the frozen
|
|
215
|
-
* brief's existing types. The union ADDS the registry-reachable action types
|
|
216
|
-
* (`finding`/`decision`) — which is what unblocks the Chair — while LEAVING the
|
|
217
|
-
* frozen structural consolidation vocabulary (`merge`/`sequence` for the Chair;
|
|
218
|
-
* `data-gap` for the lenses) untouched: those have no action pre-image, so they
|
|
219
|
-
* are neither invented as action-reachable nor removed as capabilities. For
|
|
220
|
-
* every non-Chair role the image is already a subset of the frozen set, so the
|
|
221
|
-
* reconciliation is a byte-identical no-op there.
|
|
222
|
-
*
|
|
223
|
-
* The brief digest is recomputed over the reconciled content so the artifact stays
|
|
224
|
-
* internally consistent; `canonicalize` here is the same RFC 8785 JCS the pipeline
|
|
225
|
-
* signs briefs with, so a no-op reconciliation reproduces the pipeline digest
|
|
226
|
-
* exactly.
|
|
227
|
-
*/
|
|
228
|
-
export function createRegistryReconciledAdvisorBrief(protocol, roleId) {
|
|
229
|
-
const brief = protocol.createOperatingAdvisorBrief(roleId, {
|
|
230
|
-
protocolVersion: LEGACY_ADVISOR_BRIEF_PROTOCOL_VERSION,
|
|
231
|
-
});
|
|
232
|
-
const role = protocol.listOperatingRoles().find((entry) => entry.id === roleId);
|
|
233
|
-
if (!role) {
|
|
234
|
-
throw new OperateError('E_OPERATE_STATE_INVALID', `Operating role ${roleId} is absent from the registry; its proposal bounds cannot be reconciled.`);
|
|
235
|
-
}
|
|
236
|
-
const image = deriveRegistryProposalImage(role);
|
|
237
|
-
const allowedProposalTypes = [
|
|
238
|
-
...new Set([
|
|
239
|
-
...brief.output.allowedProposalTypes,
|
|
240
|
-
...image.allowedProposalTypes,
|
|
241
|
-
]),
|
|
242
|
-
].sort();
|
|
243
|
-
const { briefDigest: _priorDigest, ...unsigned } = {
|
|
244
|
-
...brief,
|
|
245
|
-
output: {
|
|
246
|
-
...brief.output,
|
|
247
|
-
allowedProposalTypes,
|
|
248
|
-
maximumProposals: image.maximumProposals,
|
|
249
|
-
},
|
|
250
|
-
};
|
|
251
|
-
return { ...unsigned, briefDigest: canonicalDigest(unsigned) };
|
|
252
|
-
}
|
|
253
|
-
export function normalizeAgentNativeResponse(response, pinnedRevision) {
|
|
254
|
-
return {
|
|
255
|
-
outcome: response.actions.length > 0 ? 'proposals' : 'quiet',
|
|
256
|
-
proposals: response.actions.map((action) => ({
|
|
257
|
-
proposalKey: action.actionKey,
|
|
258
|
-
type: routeKindToProposalType(action.routeKind),
|
|
259
|
-
title: action.title,
|
|
260
|
-
problem: action.summary,
|
|
261
|
-
proposal: action.summary,
|
|
262
|
-
impact: action.impact ?? 3,
|
|
263
|
-
confidence: action.confidence,
|
|
264
|
-
ease: action.ease ?? 3,
|
|
265
|
-
severity: action.critical
|
|
266
|
-
? 'critical'
|
|
267
|
-
: (action.impact ?? 3) >= 4
|
|
268
|
-
? 'high'
|
|
269
|
-
: (action.impact ?? 3) >= 3
|
|
270
|
-
? 'medium'
|
|
271
|
-
: 'low',
|
|
272
|
-
citations: action.citations
|
|
273
|
-
.map((citation) => v14CitationToMission(citation, pinnedRevision))
|
|
274
|
-
.filter((citation) => citation !== null),
|
|
275
|
-
})),
|
|
276
|
-
gaps: response.gaps.map((gap) => `${gap.question} Impact: ${gap.impact}`),
|
|
277
|
-
conflicts: response.conflicts.map((conflict) => conflict.commitmentRef
|
|
278
|
-
? `${conflict.summary} — conflicts with the published commitment "${conflict.commitmentRef.statement}" (${conflict.commitmentRef.path})`
|
|
279
|
-
: conflict.summary),
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
export function advisorResponseContractDetails(brief) {
|
|
283
|
-
const examples = brief.output.jsonSchema?.examples;
|
|
284
|
-
return {
|
|
285
|
-
expectedSchema: 'operating-advisor-response@1.2.0',
|
|
286
|
-
example: Array.isArray(examples)
|
|
287
|
-
? examples
|
|
288
|
-
: [{ outcome: 'quiet', proposals: [], gaps: [], conflicts: [] }],
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* SINGLE source of truth for the per-role proposal bounds — the proposal cap and
|
|
293
|
-
* the allowed proposal types — over an already-projected `{type}` list. Both the
|
|
294
|
-
* committed-output guard (`collectBriefContractViolations`) and the raw-response
|
|
295
|
-
* batch validator (`collectAdvisorResponseContractIssues`) route through here so
|
|
296
|
-
* the record path and the `harness validate` dry-run can never disagree on them.
|
|
297
|
-
*/
|
|
298
|
-
function collectProposalBoundViolations(brief, proposals) {
|
|
299
|
-
const issues = [];
|
|
300
|
-
if (proposals.length > brief.output.maximumProposals) {
|
|
301
|
-
issues.push({
|
|
302
|
-
path: 'proposals',
|
|
303
|
-
rule: 'maximumProposals',
|
|
304
|
-
detail: `Advisor ${brief.role.id} returned ${proposals.length} proposals; its canonical limit is ${brief.output.maximumProposals}.`,
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
const allowed = new Set(brief.output.allowedProposalTypes);
|
|
308
|
-
const disallowed = [
|
|
309
|
-
...new Set(proposals
|
|
310
|
-
.map((proposal) => proposal.type)
|
|
311
|
-
.filter((type) => typeof type === 'string' && !allowed.has(type))),
|
|
312
|
-
].sort();
|
|
313
|
-
if (disallowed.length > 0) {
|
|
314
|
-
issues.push({
|
|
315
|
-
path: 'proposals',
|
|
316
|
-
rule: 'allowedProposalTypes',
|
|
317
|
-
detail: `Advisor ${brief.role.id} returned proposal types outside its canonical brief: ${disallowed.join(', ')}.`,
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
return issues;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Collect EVERY brief-level violation of a NORMALIZED advisor output — the
|
|
324
|
-
* proposal cap, disallowed proposal types, outcome/proposal consistency, and the
|
|
325
|
-
* output-byte ceiling — as `{path, rule, detail}` issues instead of throwing on
|
|
326
|
-
* the first. `assertAdvisorOutputMatchesBrief` wraps this to keep its throwing
|
|
327
|
-
* contract at the committed-output guards.
|
|
328
|
-
*/
|
|
329
|
-
export function collectBriefContractViolations(brief, output) {
|
|
330
|
-
const issues = collectProposalBoundViolations(brief, output.proposals);
|
|
331
|
-
if (output.outcome === 'quiet' && output.proposals.length > 0) {
|
|
332
|
-
issues.push({
|
|
333
|
-
path: 'outcome',
|
|
334
|
-
rule: 'outcome-consistency',
|
|
335
|
-
detail: `Advisor ${brief.role.id} declared a quiet result with proposals.`,
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
if (output.outcome === 'proposals' && output.proposals.length === 0) {
|
|
339
|
-
issues.push({
|
|
340
|
-
path: 'outcome',
|
|
341
|
-
rule: 'outcome-consistency',
|
|
342
|
-
detail: `Advisor ${brief.role.id} declared proposals without a proposal.`,
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
const outputBytes = Buffer.byteLength(canonicalize(output), 'utf8');
|
|
346
|
-
if (outputBytes > brief.output.maximumOutputBytes) {
|
|
347
|
-
issues.push({
|
|
348
|
-
path: 'output',
|
|
349
|
-
rule: 'maximumOutputBytes',
|
|
350
|
-
detail: `Advisor ${brief.role.id} exceeded its canonical output budget.`,
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
return issues;
|
|
354
|
-
}
|
|
355
|
-
export function assertAdvisorOutputMatchesBrief(brief, output) {
|
|
356
|
-
const violations = collectBriefContractViolations(brief, output);
|
|
357
|
-
if (violations.length > 0) {
|
|
358
|
-
throw new OperateError('E_OPERATE_ADVISOR_FAILED', violations.length === 1
|
|
359
|
-
? violations[0].detail
|
|
360
|
-
: `Advisor ${brief.role.id} output violates its canonical brief in ${violations.length} ways: ${violations
|
|
361
|
-
.map((violation) => violation.detail)
|
|
362
|
-
.join(' ')}`, { issues: violations });
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
/**
|
|
366
|
-
* Project the proposal `{type}` list from a RAW submitted advisor response so the
|
|
367
|
-
* per-role cap and allowed-type checks can run even on a schema-invalid payload —
|
|
368
|
-
* a schema failure must never short-circuit the cap/type categories. v1.4 native
|
|
369
|
-
* responses carry `actions` whose `routeKind` maps to a proposal type exactly as
|
|
370
|
-
* `normalizeAgentNativeResponse` does (only `decision` is a decision proposal);
|
|
371
|
-
* v1.3 responses carry `proposals` with an explicit `type`.
|
|
372
|
-
*/
|
|
373
|
-
function projectSubmittedProposalTypes(response, responseProtocol) {
|
|
374
|
-
const record = response && typeof response === 'object' && !Array.isArray(response)
|
|
375
|
-
? response
|
|
376
|
-
: {};
|
|
377
|
-
if (responseProtocol === '1.4.0') {
|
|
378
|
-
const actions = Array.isArray(record.actions) ? record.actions : [];
|
|
379
|
-
return actions.map((action) => {
|
|
380
|
-
const routeKind = action && typeof action === 'object' && !Array.isArray(action)
|
|
381
|
-
? action.routeKind
|
|
382
|
-
: undefined;
|
|
383
|
-
return { type: routeKindToProposalType(typeof routeKind === 'string' ? routeKind : '') };
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
const proposals = Array.isArray(record.proposals) ? record.proposals : [];
|
|
387
|
-
return proposals.map((proposal) => {
|
|
388
|
-
const type = proposal && typeof proposal === 'object' && !Array.isArray(proposal)
|
|
389
|
-
? proposal.type
|
|
390
|
-
: undefined;
|
|
391
|
-
return { type: typeof type === 'string' ? type : undefined };
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
/**
|
|
395
|
-
* US-T1 batch validation: collect ALL advisor-response contract violations in one
|
|
396
|
-
* pass — the response-schema issues (a bad enum, a wrong-typed `gaps[].impact`, a
|
|
397
|
-
* malformed citation shape, …), the per-role proposal cap, and disallowed proposal
|
|
398
|
-
* types — as a single `{path, rule, detail}` list. Shared verbatim by the `record`
|
|
399
|
-
* path and the `harness validate` dry-run so the two can never diverge; the caller
|
|
400
|
-
* decides whether a non-empty list is a rejection (record) or a dry-run report
|
|
401
|
-
* (validate). Reads the RAW submitted response so a schema-invalid payload still
|
|
402
|
-
* discloses its cap/type violations in the same response instead of forcing a
|
|
403
|
-
* category-at-a-time resubmission cycle.
|
|
404
|
-
*/
|
|
405
|
-
export async function collectAdvisorResponseContractIssues(input) {
|
|
406
|
-
const protocol = await loadOperatingProtocol();
|
|
407
|
-
const responseProtocol = input.protocolVersion === '1.4.0' ? '1.4.0' : '1.3.0';
|
|
408
|
-
const issues = [];
|
|
409
|
-
// Category 1 — response schema (bad enum, wrong-typed gap impact, malformed
|
|
410
|
-
// citation shape, missing required fields). The protocol validator already
|
|
411
|
-
// returns EVERY schema issue at once; we only stop it from being the sole
|
|
412
|
-
// category by continuing to the brief-level bounds below.
|
|
413
|
-
for (const issue of protocol.validateProtocolArtifact('operating-advisor-response', input.response, { protocolVersion: responseProtocol })) {
|
|
414
|
-
// Preserve the pipeline's specific failing rule (`enum`, `oneOf`, `type`, …)
|
|
415
|
-
// rather than flattening every schema failure to one label, so a runtime sees
|
|
416
|
-
// exactly which constraint each path violated.
|
|
417
|
-
issues.push({ path: issue.path, rule: issue.rule, detail: issue.detail });
|
|
418
|
-
}
|
|
419
|
-
// Categories 2 & 3 — per-role proposal cap + disallowed proposal types, read
|
|
420
|
-
// from the raw response so they surface alongside any schema issues.
|
|
421
|
-
issues.push(...collectProposalBoundViolations(input.brief, projectSubmittedProposalTypes(input.response, responseProtocol)));
|
|
422
|
-
return issues;
|
|
423
|
-
}
|
|
424
|
-
const CHARTER_FIELDS_BY_ROLE = {
|
|
425
|
-
'strategy-finance': [
|
|
426
|
-
'purpose',
|
|
427
|
-
'stage',
|
|
428
|
-
'businessModel',
|
|
429
|
-
'goals',
|
|
430
|
-
'constraints',
|
|
431
|
-
'successMetrics',
|
|
432
|
-
],
|
|
433
|
-
'technology-risk': ['purpose', 'stage', 'goals', 'constraints', 'guardrails', 'knownUnknowns'],
|
|
434
|
-
'product-activation': [
|
|
435
|
-
'purpose',
|
|
436
|
-
'stage',
|
|
437
|
-
'idealCustomer',
|
|
438
|
-
'goals',
|
|
439
|
-
'successMetrics',
|
|
440
|
-
'knownUnknowns',
|
|
441
|
-
],
|
|
442
|
-
'growth-market': [
|
|
443
|
-
'purpose',
|
|
444
|
-
'stage',
|
|
445
|
-
'businessModel',
|
|
446
|
-
'idealCustomer',
|
|
447
|
-
'goals',
|
|
448
|
-
'successMetrics',
|
|
449
|
-
],
|
|
450
|
-
'operations-customer': [
|
|
451
|
-
'purpose',
|
|
452
|
-
'stage',
|
|
453
|
-
'idealCustomer',
|
|
454
|
-
'goals',
|
|
455
|
-
'constraints',
|
|
456
|
-
'guardrails',
|
|
457
|
-
'knownUnknowns',
|
|
458
|
-
],
|
|
459
|
-
chair: [
|
|
460
|
-
'purpose',
|
|
461
|
-
'stage',
|
|
462
|
-
'businessModel',
|
|
463
|
-
'idealCustomer',
|
|
464
|
-
'goals',
|
|
465
|
-
'constraints',
|
|
466
|
-
'successMetrics',
|
|
467
|
-
'guardrails',
|
|
468
|
-
'knownUnknowns',
|
|
469
|
-
],
|
|
470
|
-
};
|
|
471
|
-
function boundedContextText(value, maximum = 1_024) {
|
|
472
|
-
const text = typeof value === 'string' ? value : '';
|
|
473
|
-
return sanitizeGeneratedPlainText(text).replace(/\s+/g, ' ').trim().slice(0, maximum);
|
|
474
|
-
}
|
|
475
|
-
function charterSection(markdown, heading) {
|
|
476
|
-
const normalized = markdown.replace(/\r\n?/g, '\n');
|
|
477
|
-
const marker = `## ${heading}`;
|
|
478
|
-
const start = normalized.indexOf(marker);
|
|
479
|
-
if (start < 0)
|
|
480
|
-
return [];
|
|
481
|
-
const body = normalized.slice(start + marker.length);
|
|
482
|
-
const end = body.search(/\n##\s+/);
|
|
483
|
-
return (end >= 0 ? body.slice(0, end) : body)
|
|
484
|
-
.split('\n')
|
|
485
|
-
.map((line) => line.match(/^\s*-\s+(.+?)\s*$/)?.[1] ?? '')
|
|
486
|
-
.map((line) => boundedContextText(line))
|
|
487
|
-
.filter((line) => line && !line.startsWith('[unknown') && !line.startsWith('[none recorded'));
|
|
488
|
-
}
|
|
489
|
-
function parseOperatingCharter(markdown) {
|
|
490
|
-
const product = charterSection(markdown, 'Product context');
|
|
491
|
-
const productValues = new Map(product.flatMap((line) => {
|
|
492
|
-
const match = line.match(/^([^:]+):\s*(.*)$/);
|
|
493
|
-
return match ? [[match[1].trim().toLowerCase(), match[2].trim()]] : [];
|
|
494
|
-
}));
|
|
495
|
-
return {
|
|
496
|
-
purpose: productValues.get('purpose') ?? '',
|
|
497
|
-
stage: productValues.get('stage') ?? '',
|
|
498
|
-
businessModel: productValues.get('business model') ?? '',
|
|
499
|
-
idealCustomer: productValues.get('ideal customer') ?? '',
|
|
500
|
-
goals: charterSection(markdown, 'Current goals').sort(),
|
|
501
|
-
constraints: charterSection(markdown, 'Constraints').sort(),
|
|
502
|
-
successMetrics: charterSection(markdown, 'Success metrics').sort(),
|
|
503
|
-
guardrails: charterSection(markdown, 'Guardrails').sort(),
|
|
504
|
-
knownUnknowns: charterSection(markdown, 'Known unknowns').sort(),
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
function recordEvidenceRefs(record) {
|
|
508
|
-
return Array.isArray(record.evidenceRefs)
|
|
509
|
-
? [
|
|
510
|
-
...new Set(record.evidenceRefs.filter((reference) => typeof reference === 'string')),
|
|
511
|
-
].sort()
|
|
512
|
-
: [];
|
|
513
|
-
}
|
|
514
|
-
function openItem(record, summaryKeys) {
|
|
515
|
-
const summary = summaryKeys.map((key) => boundedContextText(record[key])).find(Boolean) ?? 'Review required.';
|
|
516
|
-
return {
|
|
517
|
-
id: record.id,
|
|
518
|
-
status: record.status,
|
|
519
|
-
summary,
|
|
520
|
-
owner: boundedContextText(record.owner) || null,
|
|
521
|
-
evidenceRefs: recordEvidenceRefs(record),
|
|
522
|
-
...(Array.isArray(record.affectedRoles)
|
|
523
|
-
? {
|
|
524
|
-
affectedRoles: [
|
|
525
|
-
...new Set(record.affectedRoles.filter((role) => typeof role === 'string')),
|
|
526
|
-
].sort(),
|
|
527
|
-
}
|
|
528
|
-
: {}),
|
|
529
|
-
};
|
|
530
|
-
}
|
|
531
|
-
/** Build the immutable non-advisor context shared by all independent lenses. */
|
|
532
|
-
export async function buildAdvisorOperatingContext(input) {
|
|
533
|
-
const charter = parseOperatingCharter(await readFile(input.charterPath, 'utf8'));
|
|
534
|
-
const prior = [...input.state.cycles]
|
|
535
|
-
.filter((cycle) => cycle.id !== input.cycleId)
|
|
536
|
-
.sort((left, right) => String(left.id).localeCompare(String(right.id)))
|
|
537
|
-
.at(-1);
|
|
538
|
-
const priorCycle = prior
|
|
539
|
-
? {
|
|
540
|
-
id: prior.id,
|
|
541
|
-
state: prior.state,
|
|
542
|
-
health: typeof prior.health === 'string' ? prior.health : null,
|
|
543
|
-
findings: input.state.findings.filter((finding) => finding.cycleId === prior.id).length,
|
|
544
|
-
decisions: input.state.decisions.filter((decision) => decision.cycleId === prior.id).length,
|
|
545
|
-
gaps: input.state.dataGaps.filter((gap) => gap.cycleId === prior.id).length,
|
|
546
|
-
pendingOutcomes: input.state.outcomes.filter((outcome) => outcome.sourceCycle === prior.id && outcome.status === 'pending').length,
|
|
547
|
-
}
|
|
548
|
-
: null;
|
|
549
|
-
const openDecisions = input.state.decisions
|
|
550
|
-
.filter((decision) => ['open', 'default-due'].includes(decision.status))
|
|
551
|
-
.map((decision) => openItem(decision, ['question', 'recommendation']))
|
|
552
|
-
.sort((left, right) => left.id.localeCompare(right.id));
|
|
553
|
-
const openGaps = input.state.dataGaps
|
|
554
|
-
.filter((gap) => ['open', 'answered'].includes(gap.status))
|
|
555
|
-
.map((gap) => openItem(gap, ['question', 'reason']))
|
|
556
|
-
.sort((left, right) => left.id.localeCompare(right.id));
|
|
557
|
-
const pendingOutcomes = input.state.outcomes
|
|
558
|
-
.filter((outcome) => ['pending', 'observing', 'inconclusive'].includes(outcome.status))
|
|
559
|
-
.map((outcome) => openItem(outcome, ['metric', 'queryIdentity']))
|
|
560
|
-
.sort((left, right) => left.id.localeCompare(right.id));
|
|
561
|
-
const unsigned = {
|
|
562
|
-
charter,
|
|
563
|
-
priorCycle,
|
|
564
|
-
openDecisions,
|
|
565
|
-
openGaps,
|
|
566
|
-
pendingOutcomes,
|
|
567
|
-
};
|
|
568
|
-
return { ...unsigned, snapshotDigest: canonicalDigest(unsigned) };
|
|
569
|
-
}
|
|
570
|
-
function roleContext(context, roleId, permittedEvidenceRefs) {
|
|
571
|
-
const charter = Object.fromEntries(CHARTER_FIELDS_BY_ROLE[roleId].map((field) => [field, structuredClone(context.charter[field])]));
|
|
572
|
-
const visible = (item) => {
|
|
573
|
-
if (roleId === 'chair')
|
|
574
|
-
return true;
|
|
575
|
-
if (item.affectedRoles && item.affectedRoles.length > 0) {
|
|
576
|
-
return item.affectedRoles.includes(roleId);
|
|
577
|
-
}
|
|
578
|
-
return (item.evidenceRefs.length === 0 ||
|
|
579
|
-
item.evidenceRefs.some((reference) => permittedEvidenceRefs.has(reference)));
|
|
580
|
-
};
|
|
581
|
-
const filtered = {
|
|
582
|
-
charter,
|
|
583
|
-
priorCycle: context.priorCycle,
|
|
584
|
-
openDecisions: context.openDecisions.filter(visible),
|
|
585
|
-
openGaps: context.openGaps.filter(visible),
|
|
586
|
-
pendingOutcomes: context.pendingOutcomes.filter(visible),
|
|
587
|
-
};
|
|
588
|
-
return { ...filtered, snapshotDigest: canonicalDigest(filtered) };
|
|
589
|
-
}
|
|
590
|
-
/**
|
|
591
|
-
* Bounded fan-out concurrency for advisor dispatch (FR12): a fixed pool caps how
|
|
592
|
-
* many lenses research at once without limiting any single lens's depth.
|
|
593
|
-
*/
|
|
594
|
-
export const DEFAULT_OPERATING_DISPATCH_CONCURRENCY = 3;
|
|
595
|
-
/**
|
|
596
|
-
* Default per-role research time budget (FR12). Generous by design: it is a signal
|
|
597
|
-
* to STOP researching and synthesize, never a cut-off, so a role that reaches it
|
|
598
|
-
* still returns its full analysis. Raising or removing it never truncates output.
|
|
599
|
-
*/
|
|
600
|
-
export const DEFAULT_OPERATING_ROLE_RESEARCH_BUDGET_MS = 8 * 60_000;
|
|
601
|
-
/**
|
|
602
|
-
* Compose a role's FR12 research guidance from the shared bootstrap map and its
|
|
603
|
-
* registry-derived investigation mandate. The stop criteria are explicit prose so
|
|
604
|
-
* the lens knows WHEN to stop reading and synthesize; the budget line always states
|
|
605
|
-
* that reaching the budget means concluding from what was gathered, never dropping
|
|
606
|
-
* or truncating a conclusion to fit it.
|
|
607
|
-
*/
|
|
608
|
-
function buildMandateResearchGuidance(mandate, bootstrapMap, researchBudgetMs) {
|
|
609
|
-
const budgetMs = researchBudgetMs && researchBudgetMs > 0 ? researchBudgetMs : null;
|
|
610
|
-
const deduplicationHints = [
|
|
611
|
-
'A shared bootstrap map already indexes this project’s planning families and recent git history; use its citations as entry points instead of re-walking the workspace to rediscover them.',
|
|
612
|
-
...(bootstrapMap?.searchHints ?? []),
|
|
613
|
-
];
|
|
614
|
-
const stopResearchingAndSynthesize = [
|
|
615
|
-
'Stop once every material claim and action is grounded in a resolvable citation and further reading no longer changes your ranked conclusions.',
|
|
616
|
-
'Stop once you have reconciled the shared bootstrap map’s cited planning and git indexes for your focus areas against a direct reading of the relevant sources.',
|
|
617
|
-
budgetMs
|
|
618
|
-
? `When your per-role research budget of ~${Math.round(budgetMs / 1000)}s elapses, synthesize from what you have gathered — the budget is a signal to conclude, never a cut-off. Return your full analysis and every citation-qualified action, and never drop or truncate a conclusion to fit it.`
|
|
619
|
-
: 'When you reach your research time budget, synthesize from what you have gathered rather than continuing to read — never drop or truncate a conclusion to fit it.',
|
|
620
|
-
];
|
|
621
|
-
return {
|
|
622
|
-
bootstrapMap,
|
|
623
|
-
bootstrapMapDigest: bootstrapMap?.mapDigest ?? null,
|
|
624
|
-
focusAreas: [...(mandate.investigationMandate?.examine ?? [])],
|
|
625
|
-
deduplicationHints,
|
|
626
|
-
perRoleResearchBudgetMs: budgetMs,
|
|
627
|
-
stopResearchingAndSynthesize,
|
|
628
|
-
};
|
|
629
|
-
}
|
|
630
|
-
let cachedMandateApi = null;
|
|
631
|
-
async function loadOperatingMandateApi() {
|
|
632
|
-
cachedMandateApi ??= (async () => {
|
|
633
|
-
const root = resolveOperatingPipelineRoot({ requireMission: true });
|
|
634
|
-
if (!root) {
|
|
635
|
-
throw new OperateError('E_OPERATE_MISSION_UNAVAILABLE', 'Mandate dispatch requires the pipeline package with Protocol v1.3 (operating mandate).');
|
|
636
|
-
}
|
|
637
|
-
const loaded = (await import(pathToFileURL(path.join(root, 'lib', 'operate', 'mandate.mjs')).href));
|
|
638
|
-
if (typeof loaded.createOperatingMandate !== 'function') {
|
|
639
|
-
throw new OperateError('E_PIPELINE_VERSION_INCOMPATIBLE', 'Installed planr-pipeline does not export the Protocol v1.3 operating mandate builder.');
|
|
640
|
-
}
|
|
641
|
-
return loaded;
|
|
642
|
-
})();
|
|
643
|
-
return cachedMandateApi;
|
|
644
|
-
}
|
|
645
|
-
/**
|
|
646
|
-
* Build the Protocol v1.3 operating mandate for a role (FR1). The mandate's
|
|
647
|
-
* boundaries are declared directly from the caller's granted workspace roots —
|
|
648
|
-
* never an evidence-index-derived subset — so a gitignored `.planr/` tree is
|
|
649
|
-
* fully readable when the caller declares it. The registry supplies the lens
|
|
650
|
-
* question, investigation mandate, and sensitivity ceiling; this function only
|
|
651
|
-
* threads the declared boundaries through.
|
|
652
|
-
*/
|
|
653
|
-
export async function buildOperatingMandate(input) {
|
|
654
|
-
const api = await loadOperatingMandateApi();
|
|
655
|
-
const mandate = api.createOperatingMandate(input.roleId, {
|
|
656
|
-
roots: [...input.roots],
|
|
657
|
-
forbiddenPaths: [...(input.forbiddenPaths ?? [])],
|
|
658
|
-
runtime: input.runtime,
|
|
659
|
-
protocolVersion: input.protocolVersion,
|
|
660
|
-
});
|
|
661
|
-
// Leave the harness/compatibility path byte-identical: research guidance is
|
|
662
|
-
// attached only when a bootstrap map or a per-role budget is threaded in.
|
|
663
|
-
if (input.bootstrapMap === undefined && input.researchBudgetMs === undefined) {
|
|
664
|
-
return mandate;
|
|
665
|
-
}
|
|
666
|
-
return {
|
|
667
|
-
...mandate,
|
|
668
|
-
researchGuidance: buildMandateResearchGuidance(mandate, input.bootstrapMap ?? null, input.researchBudgetMs ?? null),
|
|
669
|
-
};
|
|
670
|
-
}
|
|
671
|
-
const OPERATING_RESPONSE_SCHEMA_FILE = 'operating-advisor-response.schema.json';
|
|
672
|
-
function schemaRecord(value) {
|
|
673
|
-
return value && typeof value === 'object' && !Array.isArray(value)
|
|
674
|
-
? value
|
|
675
|
-
: null;
|
|
676
|
-
}
|
|
677
|
-
/**
|
|
678
|
-
* Read one packaged protocol schema document from the resolved pipeline install.
|
|
679
|
-
* Synchronous because the disclosure is attached on the synchronous prepare path;
|
|
680
|
-
* a missing or unreadable schema is a typed failure, never a silent fallback to a
|
|
681
|
-
* schema the runtime is not validated against.
|
|
682
|
-
*/
|
|
683
|
-
function readPipelineProtocolSchema(protocolVersion, file) {
|
|
684
|
-
const root = resolveOperatingPipelineRoot({ requireMission: true });
|
|
685
|
-
if (!root) {
|
|
686
|
-
throw new OperateError('E_OPERATE_MISSION_UNAVAILABLE', 'Disclosing a mandate response contract requires the pipeline package with the Protocol v1.4 schemas.');
|
|
687
|
-
}
|
|
688
|
-
const location = path.join(root, 'schemas', `v${protocolVersion}`, file);
|
|
689
|
-
let raw;
|
|
690
|
-
try {
|
|
691
|
-
raw = readFileSync(location, 'utf8');
|
|
692
|
-
}
|
|
693
|
-
catch (error) {
|
|
694
|
-
throw new OperateError('E_PIPELINE_VERSION_INCOMPATIBLE', `Installed planr-pipeline does not ship ${file} for Protocol ${protocolVersion} at ${location}: ${error instanceof Error ? error.message : String(error)}`);
|
|
695
|
-
}
|
|
696
|
-
const parsed = schemaRecord(JSON.parse(raw));
|
|
697
|
-
if (!parsed) {
|
|
698
|
-
throw new OperateError('E_PIPELINE_VERSION_INCOMPATIBLE', `${location} is not a JSON Schema object, so the mandate cannot disclose it.`);
|
|
699
|
-
}
|
|
700
|
-
return parsed;
|
|
701
|
-
}
|
|
702
|
-
/** Collect every sibling-file `$ref` (`#/$defs/...` pointers are already local). */
|
|
703
|
-
function collectRelativeSchemaRefs(node, into) {
|
|
704
|
-
if (Array.isArray(node)) {
|
|
705
|
-
for (const item of node)
|
|
706
|
-
collectRelativeSchemaRefs(item, into);
|
|
707
|
-
return;
|
|
708
|
-
}
|
|
709
|
-
const record = schemaRecord(node);
|
|
710
|
-
if (!record)
|
|
711
|
-
return;
|
|
712
|
-
for (const [key, value] of Object.entries(record)) {
|
|
713
|
-
if (key === '$ref' && typeof value === 'string') {
|
|
714
|
-
if (value.endsWith('.schema.json') && !value.includes('://'))
|
|
715
|
-
into.add(value);
|
|
716
|
-
continue;
|
|
717
|
-
}
|
|
718
|
-
collectRelativeSchemaRefs(value, into);
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
const disclosedResponseSchemas = new Map();
|
|
722
|
-
/**
|
|
723
|
-
* Resolve the advisor-response schema for one protocol version as a SELF-CONTAINED
|
|
724
|
-
* document. The packaged v1.3/v1.4 response schemas reference the sibling citation
|
|
725
|
-
* schema by file name, which a runtime holding only the mandate cannot dereference,
|
|
726
|
-
* so each referenced resource is embedded under `$defs` verbatim. JSON Schema
|
|
727
|
-
* 2020-12 bundling: an embedded resource keeps its own `$id`, so the existing
|
|
728
|
-
* sibling `$ref` resolves against the embedded copy and that copy's internal
|
|
729
|
-
* `#/$defs/...` pointers still resolve inside it. Nothing is rewritten, so the
|
|
730
|
-
* disclosed schema stays byte-faithful to the enforced one.
|
|
731
|
-
*/
|
|
732
|
-
function resolveDisclosedResponseSchema(protocolVersion) {
|
|
733
|
-
const cached = disclosedResponseSchemas.get(protocolVersion);
|
|
734
|
-
if (cached)
|
|
735
|
-
return structuredClone(cached);
|
|
736
|
-
const schema = readPipelineProtocolSchema(protocolVersion, OPERATING_RESPONSE_SCHEMA_FILE);
|
|
737
|
-
const identifier = typeof schema.$id === 'string' ? schema.$id : '';
|
|
738
|
-
if (!identifier.endsWith(`/v${protocolVersion}/${OPERATING_RESPONSE_SCHEMA_FILE}`)) {
|
|
739
|
-
throw new OperateError('E_PIPELINE_VERSION_INCOMPATIBLE', `The advisor-response schema packaged for Protocol ${protocolVersion} declares $id "${identifier}", which does not name that version; disclosing it would hand the runtime a contract it is not validated against.`);
|
|
740
|
-
}
|
|
741
|
-
const references = new Set();
|
|
742
|
-
collectRelativeSchemaRefs(schema, references);
|
|
743
|
-
const embedded = { ...(schemaRecord(schema.$defs) ?? {}) };
|
|
744
|
-
for (const reference of [...references].sort()) {
|
|
745
|
-
embedded[reference.replace(/\.schema\.json$/, '')] = readPipelineProtocolSchema(protocolVersion, reference);
|
|
746
|
-
}
|
|
747
|
-
const bundled = references.size > 0 ? { ...schema, $defs: embedded } : schema;
|
|
748
|
-
disclosedResponseSchemas.set(protocolVersion, bundled);
|
|
749
|
-
return structuredClone(bundled);
|
|
750
|
-
}
|
|
751
|
-
/** The `actions[].routeKind` vocabulary a Protocol v1.4 response may author. */
|
|
752
|
-
function disclosedRouteKinds(jsonSchema) {
|
|
753
|
-
const routeKind = schemaRecord(schemaRecord(schemaRecord(schemaRecord(schemaRecord(jsonSchema.properties)?.actions)?.items)?.properties)?.routeKind);
|
|
754
|
-
const values = Array.isArray(routeKind?.enum) ? routeKind.enum : [];
|
|
755
|
-
const kinds = values.filter((value) => typeof value === 'string');
|
|
756
|
-
if (kinds.length === 0) {
|
|
757
|
-
throw new OperateError('E_PIPELINE_VERSION_INCOMPATIBLE', 'The Protocol v1.4 advisor-response schema declares no actions[].routeKind vocabulary, so the mandate cannot disclose the proposal types its actions can produce.');
|
|
758
|
-
}
|
|
759
|
-
return kinds;
|
|
760
|
-
}
|
|
761
|
-
/**
|
|
762
|
-
* The proposal types the disclosed response can ACTUALLY produce. A Protocol v1.4
|
|
763
|
-
* response carries no proposal `type` at all — it carries actions whose
|
|
764
|
-
* `routeKind` the record path projects through `routeKindToProposalType` — so
|
|
765
|
-
* disclosing the frozen v1.2 vocabulary (`data-gap`, or the Chair's
|
|
766
|
-
* `merge`/`sequence`) would name types no v1.4 action can express. The disclosed
|
|
767
|
-
* set is therefore the image of the disclosed route-kind vocabulary, and it must
|
|
768
|
-
* stay within the set `record` enforces from the registry-reconciled brief; a set
|
|
769
|
-
* the enforcer would reject is a defect, not a disclosure.
|
|
770
|
-
*/
|
|
771
|
-
function disclosedProposalTypes(mandate, brief, jsonSchema) {
|
|
772
|
-
if (mandate.protocolVersion !== '1.4.0')
|
|
773
|
-
return [...brief.output.allowedProposalTypes];
|
|
774
|
-
const image = [...new Set(disclosedRouteKinds(jsonSchema).map(routeKindToProposalType))].sort();
|
|
775
|
-
const enforced = new Set(brief.output.allowedProposalTypes);
|
|
776
|
-
const rejected = image.filter((type) => !enforced.has(type));
|
|
777
|
-
if (rejected.length > 0) {
|
|
778
|
-
throw new OperateError('E_OPERATE_STATE_INVALID', `Advisor ${mandate.roleId} would disclose proposal types its own enforced brief rejects: ${rejected.join(', ')}.`);
|
|
779
|
-
}
|
|
780
|
-
return image;
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* US-T1: ship the disclosed response contract INSIDE the dispatched mandate — the
|
|
784
|
-
* dereferenceable response JSON Schema plus the per-role bounds `record` enforces
|
|
785
|
-
* (the proposal cap, the reachable proposal types, the output-byte ceiling, and
|
|
786
|
-
* required behaviors) — so a runtime can satisfy the contract instead of guessing
|
|
787
|
-
* at a `responseSchema` name it cannot resolve.
|
|
788
|
-
*
|
|
789
|
-
* DEFECT this closes: the schema was previously taken from the role's pack-style
|
|
790
|
-
* brief. That brief is a compatibility-only projection the pipeline builds for
|
|
791
|
-
* Protocol v1.2/v1.3 sessions and refuses to build for v1.4 at all, so it can
|
|
792
|
-
* never express the v1.4 contract — yet a v1.4 mandate enforcing
|
|
793
|
-
* `operating-advisor-response@1.4.0` disclosed that legacy contract, and an advisor
|
|
794
|
-
* that followed the disclosure literally was rejected by the enforced schema
|
|
795
|
-
* (v1.2 `proposals` where v1.4 requires `analysisMarkdown`/`claims`/`actions`, and
|
|
796
|
-
* a `proposals|quiet` outcome where v1.4 admits `actions|quiet|partial`). The
|
|
797
|
-
* schema is therefore resolved from the mandate's OWN `responseSchema`, which is
|
|
798
|
-
* also the value disclosed as `output.schema` — so the disclosed identity and the
|
|
799
|
-
* enforced one agree by construction, at the type level as well as at runtime.
|
|
800
|
-
*
|
|
801
|
-
* Layered on AFTER the pipeline signs `mandateDigest` (the returned object keeps
|
|
802
|
-
* the pipeline's signed digest untouched), exactly like `researchGuidance`, so no
|
|
803
|
-
* digest recomputation is required and writer/verifier stay in agreement over the
|
|
804
|
-
* immutable, signed mandate the digest pins.
|
|
805
|
-
*/
|
|
806
|
-
export function attachMandateResponseContract(mandate, brief) {
|
|
807
|
-
const version = mandate.responseSchema.split('@')[1] ?? '';
|
|
808
|
-
const jsonSchema = resolveDisclosedResponseSchema(version);
|
|
809
|
-
return {
|
|
810
|
-
...mandate,
|
|
811
|
-
output: {
|
|
812
|
-
schema: mandate.responseSchema,
|
|
813
|
-
jsonSchema,
|
|
814
|
-
allowedProposalTypes: disclosedProposalTypes(mandate, brief, jsonSchema),
|
|
815
|
-
maximumProposals: brief.output.maximumProposals,
|
|
816
|
-
// The ENFORCED ceiling, not the larger v1.4 registry budget: `record`
|
|
817
|
-
// measures the canonicalized committed output against this brief value, so
|
|
818
|
-
// disclosing a wider ceiling would recreate the divergence above.
|
|
819
|
-
maximumOutputBytes: brief.output.maximumOutputBytes,
|
|
820
|
-
requiredBehavior: [...brief.output.requiredBehavior],
|
|
821
|
-
},
|
|
822
|
-
};
|
|
823
|
-
}
|
|
824
|
-
// A mandate's `boundaries.roots` items must satisfy this pattern (leading dot
|
|
825
|
-
// permitted, no `..` traversal), so `.planr` is a valid declared root.
|
|
826
|
-
const INLINE_MANDATE_ROOT_PATTERN = /^(?!.*\.\.)[A-Za-z0-9._][A-Za-z0-9._/-]*$/;
|
|
827
|
-
/**
|
|
828
|
-
* FR1/FR2: derive a mandate's declared read roots directly from the project
|
|
829
|
-
* working tree — every top-level directory the agent may traverse — for the
|
|
830
|
-
* inline dispatch path. `.planr/` is ALWAYS declared, whether or not it exists
|
|
831
|
-
* yet and REGARDLESS of git tracking, because the mission tool surface walks the
|
|
832
|
-
* filesystem directly rather than a tracked-file inventory, so a gitignored `.planr/` tree
|
|
833
|
-
* is fully readable (finding 2's tracked-file gap cannot reproduce here).
|
|
834
|
-
* `.git`/`node_modules` are never declared, and every root is filtered to the
|
|
835
|
-
* mandate's schema pattern. Mirrors the native adapter path's derivation so both
|
|
836
|
-
* dispatch paths declare identical boundaries.
|
|
837
|
-
*/
|
|
838
|
-
export async function deriveOperatingMandateRoots(projectRoot) {
|
|
839
|
-
const entries = await readdir(projectRoot, { withFileTypes: true }).catch(() => []);
|
|
840
|
-
const roots = new Set(['.planr']);
|
|
841
|
-
for (const entry of entries) {
|
|
842
|
-
if (!entry.isDirectory())
|
|
843
|
-
continue;
|
|
844
|
-
if (entry.name === '.git' || entry.name === 'node_modules')
|
|
845
|
-
continue;
|
|
846
|
-
if (INLINE_MANDATE_ROOT_PATTERN.test(entry.name))
|
|
847
|
-
roots.add(entry.name);
|
|
848
|
-
}
|
|
849
|
-
return [...roots].sort();
|
|
850
|
-
}
|
|
851
|
-
/**
|
|
852
|
-
* Convert a compact native-harness response into the canonical, digest-bound
|
|
853
|
-
* Protocol result. Runtime adapters should not manufacture protocol metadata,
|
|
854
|
-
* producer fields, or JCS digests themselves.
|
|
855
|
-
*/
|
|
856
|
-
function sanitizeMissionOutput(output) {
|
|
857
|
-
return {
|
|
858
|
-
outcome: output.outcome,
|
|
859
|
-
proposals: output.proposals
|
|
860
|
-
.map((proposal) => ({
|
|
861
|
-
...proposal,
|
|
862
|
-
title: sanitizeGeneratedPlainText(proposal.title).replace(/\s+/g, ' ').trim(),
|
|
863
|
-
problem: sanitizeGeneratedPlainText(proposal.problem).replace(/\s+/g, ' ').trim(),
|
|
864
|
-
proposal: sanitizeGeneratedPlainText(proposal.proposal).replace(/\s+/g, ' ').trim(),
|
|
865
|
-
citations: [...proposal.citations],
|
|
866
|
-
...(proposal.dependsOnProposalKeys
|
|
867
|
-
? {
|
|
868
|
-
dependsOnProposalKeys: [...new Set(proposal.dependsOnProposalKeys)].sort(),
|
|
869
|
-
}
|
|
870
|
-
: {}),
|
|
871
|
-
...(proposal.conflictsWithProposalKeys
|
|
872
|
-
? {
|
|
873
|
-
conflictsWithProposalKeys: [...new Set(proposal.conflictsWithProposalKeys)].sort(),
|
|
874
|
-
}
|
|
875
|
-
: {}),
|
|
876
|
-
...(proposal.sequenceProposalKeys
|
|
877
|
-
? { sequenceProposalKeys: [...proposal.sequenceProposalKeys] }
|
|
878
|
-
: {}),
|
|
879
|
-
}))
|
|
880
|
-
.sort((left, right) => left.proposalKey.localeCompare(right.proposalKey) ||
|
|
881
|
-
left.type.localeCompare(right.type) ||
|
|
882
|
-
left.problem.localeCompare(right.problem)),
|
|
883
|
-
gaps: [...new Set(output.gaps.map(sanitizeGeneratedPlainText))].sort(),
|
|
884
|
-
conflicts: [...new Set(output.conflicts.map(sanitizeGeneratedPlainText))].sort(),
|
|
885
|
-
};
|
|
886
|
-
}
|
|
887
|
-
/**
|
|
888
|
-
* The mandate's response contract is `operating-advisor-response@1.3.0`, whose
|
|
889
|
-
* output facet mirrors the v1.2 brief's contract (allowed proposal types,
|
|
890
|
-
* maxima), so a v1.3 response is validated against exactly the same invariants a
|
|
891
|
-
* pack response is — reusing the pipeline's registry-derived brief as the single
|
|
892
|
-
* source of truth.
|
|
893
|
-
*
|
|
894
|
-
* FR2: when the response's citations resolve to ZERO evidence IDs across every
|
|
895
|
-
* proposal, the role commits `not_evaluated` — a schema-legal `quiet` result
|
|
896
|
-
* (the frozen v1.2 role-result schema admits no `not_evaluated` outcome; the
|
|
897
|
-
* not_evaluated state lives in the governed gap + the integrity surface) — and
|
|
898
|
-
* the governed empty-grounding gap the citation gate opened is returned, with
|
|
899
|
-
* `notEvaluated: true`, rather than a `quiet` that pretends the lens evaluated.
|
|
900
|
-
*/
|
|
901
|
-
export async function createNativeMissionOperatingRoleResult(input) {
|
|
902
|
-
const protocol = await loadOperatingProtocol();
|
|
903
|
-
const responseProtocol = input.mandate.protocolVersion === '1.4.0' ? '1.4.0' : '1.3.0';
|
|
904
|
-
// Compact responses carry no protocol envelope, so select the schema from the
|
|
905
|
-
// immutable mandate instead of allowing additive resolution to guess.
|
|
906
|
-
const contractIssues = protocol.validateProtocolArtifact('operating-advisor-response', input.response, { protocolVersion: responseProtocol });
|
|
907
|
-
if (contractIssues.length > 0) {
|
|
908
|
-
throw new OperateError('E_OPERATE_ADVISOR_FAILED', `Native ${input.mandate.roleId} response does not match operating-advisor-response@${responseProtocol}.`, { issues: contractIssues.slice(0, 8) });
|
|
909
|
-
}
|
|
910
|
-
let output;
|
|
911
|
-
if (responseProtocol === '1.4.0') {
|
|
912
|
-
const response = input.response;
|
|
913
|
-
output = sanitizeMissionOutput(normalizeAgentNativeResponse(response, input.pinnedRevision ?? '0000000'));
|
|
914
|
-
}
|
|
915
|
-
else {
|
|
916
|
-
const parsed = missionAdvisorOutputSchema.safeParse(input.response);
|
|
917
|
-
if (!parsed.success) {
|
|
918
|
-
throw new OperateError('E_OPERATE_INTERNAL', 'Protocol and OpenPlanr disagree on the v1.3 mission advisor response contract.', {
|
|
919
|
-
issues: parsed.error.issues.slice(0, 8).map((issue) => ({
|
|
920
|
-
path: issue.path.join('.'),
|
|
921
|
-
code: issue.code,
|
|
922
|
-
})),
|
|
923
|
-
});
|
|
924
|
-
}
|
|
925
|
-
output = sanitizeMissionOutput(parsed.data);
|
|
926
|
-
}
|
|
927
|
-
const brief = createRegistryReconciledAdvisorBrief(protocol, input.mandate.roleId);
|
|
928
|
-
assertAdvisorOutputMatchesBrief(brief, output);
|
|
929
|
-
const capability = brief.role.capabilityTier;
|
|
930
|
-
// The intermediate result: proposals carry their v1.3 citations and an empty
|
|
931
|
-
// evidenceRefs set. It is deliberately NOT yet a v1.2-valid committed
|
|
932
|
-
// operating-role-result — the citation gate mints the evidenceRefs that make
|
|
933
|
-
// it one. `inputDigest` is the mandate's digest, so the record path's
|
|
934
|
-
// input-digest binding (prepare stored the same mandate digest) holds.
|
|
935
|
-
const intermediate = {
|
|
936
|
-
kind: 'operating-role-result',
|
|
937
|
-
schemaVersion: OPERATE_SCHEMA_VERSION,
|
|
938
|
-
protocolVersion: OPERATE_PROTOCOL_VERSION,
|
|
939
|
-
cycleId: input.cycleId,
|
|
940
|
-
roleId: input.mandate.roleId,
|
|
941
|
-
inputDigest: input.mandate.mandateDigest,
|
|
942
|
-
resultDigest: input.mandate.mandateDigest,
|
|
943
|
-
outcome: output.outcome,
|
|
944
|
-
proposals: output.proposals.map((proposal) => ({
|
|
945
|
-
proposalKey: proposal.proposalKey,
|
|
946
|
-
type: proposal.type,
|
|
947
|
-
title: proposal.title,
|
|
948
|
-
problem: proposal.problem,
|
|
949
|
-
proposal: proposal.proposal,
|
|
950
|
-
impact: proposal.impact,
|
|
951
|
-
confidence: proposal.confidence,
|
|
952
|
-
ease: proposal.ease,
|
|
953
|
-
severity: proposal.severity,
|
|
954
|
-
evidenceRefs: [],
|
|
955
|
-
...(proposal.dependsOnProposalKeys
|
|
956
|
-
? { dependsOnProposalKeys: proposal.dependsOnProposalKeys }
|
|
957
|
-
: {}),
|
|
958
|
-
...(proposal.conflictsWithProposalKeys
|
|
959
|
-
? { conflictsWithProposalKeys: proposal.conflictsWithProposalKeys }
|
|
960
|
-
: {}),
|
|
961
|
-
...(proposal.sequenceProposalKeys
|
|
962
|
-
? { sequenceProposalKeys: proposal.sequenceProposalKeys }
|
|
963
|
-
: {}),
|
|
964
|
-
citations: proposal.citations,
|
|
965
|
-
})),
|
|
966
|
-
gaps: output.gaps,
|
|
967
|
-
conflicts: output.conflicts,
|
|
968
|
-
producer: {
|
|
969
|
-
product: 'openplanr',
|
|
970
|
-
version: OPENPLANR_VERSION,
|
|
971
|
-
runtime: input.runtime,
|
|
972
|
-
capability,
|
|
973
|
-
},
|
|
974
|
-
};
|
|
975
|
-
// A quiet response has no proposals/citations, so it never touches the gate; a
|
|
976
|
-
// proposals response threads its citations through the already-live gate.
|
|
977
|
-
const gated = output.proposals.length > 0
|
|
978
|
-
? await input.resolveCitations([intermediate])
|
|
979
|
-
: {
|
|
980
|
-
roleResults: [intermediate],
|
|
981
|
-
gaps: [],
|
|
982
|
-
notEvaluatedRoleIds: [],
|
|
983
|
-
};
|
|
984
|
-
const resolved = gated.roleResults[0] ?? intermediate;
|
|
985
|
-
// FR2: a proposals response whose citations resolved to ZERO evidence is
|
|
986
|
-
// not_evaluated — the gate returned this role in `notEvaluatedRoleIds` and
|
|
987
|
-
// opened the governed empty-grounding gap. The committed artifact is a
|
|
988
|
-
// schema-legal `quiet` result (no proposals); the not_evaluated state is
|
|
989
|
-
// carried by the gap and the returned flag.
|
|
990
|
-
const notEvaluated = gated.notEvaluatedRoleIds.includes(input.mandate.roleId);
|
|
991
|
-
// Finalize into a v1.2-valid committed operating-role-result: strip the
|
|
992
|
-
// now-resolved citations, keep the minted evidenceRefs, and let the surviving
|
|
993
|
-
// proposal count set the honest outcome (a not_evaluated response commits as
|
|
994
|
-
// quiet, its grounding failure preserved only as the opened gaps).
|
|
995
|
-
const survivingProposals = notEvaluated
|
|
996
|
-
? []
|
|
997
|
-
: resolved.proposals
|
|
998
|
-
.map((proposal) => {
|
|
999
|
-
const { citations: _citations, ...rest } = proposal;
|
|
1000
|
-
return rest;
|
|
1001
|
-
})
|
|
1002
|
-
.filter((proposal) => proposal.evidenceRefs.length > 0);
|
|
1003
|
-
const unsigned = {
|
|
1004
|
-
kind: 'operating-role-result',
|
|
1005
|
-
schemaVersion: OPERATE_SCHEMA_VERSION,
|
|
1006
|
-
protocolVersion: OPERATE_PROTOCOL_VERSION,
|
|
1007
|
-
cycleId: input.cycleId,
|
|
1008
|
-
roleId: input.mandate.roleId,
|
|
1009
|
-
inputDigest: input.mandate.mandateDigest,
|
|
1010
|
-
outcome: survivingProposals.length > 0 ? 'proposals' : 'quiet',
|
|
1011
|
-
proposals: survivingProposals,
|
|
1012
|
-
gaps: output.gaps,
|
|
1013
|
-
conflicts: output.conflicts,
|
|
1014
|
-
producer: {
|
|
1015
|
-
product: 'openplanr',
|
|
1016
|
-
version: OPENPLANR_VERSION,
|
|
1017
|
-
runtime: input.runtime,
|
|
1018
|
-
capability,
|
|
1019
|
-
},
|
|
1020
|
-
};
|
|
1021
|
-
const result = {
|
|
1022
|
-
...unsigned,
|
|
1023
|
-
resultDigest: protocol.computeOperatingRoleResultDigest(unsigned),
|
|
1024
|
-
};
|
|
1025
|
-
await assertOperatingArtifact('operating-role-result', result);
|
|
1026
|
-
protocol.validateOperatingRoleResultDigest(result);
|
|
1027
|
-
return { result, gaps: gated.gaps, notEvaluated };
|
|
1028
|
-
}
|
|
1029
|
-
function safeFailureMessage(error) {
|
|
1030
|
-
try {
|
|
1031
|
-
return sanitizeGeneratedPlainText(error instanceof Error ? error.message : String(error));
|
|
1032
|
-
}
|
|
1033
|
-
catch {
|
|
1034
|
-
return 'Advisor failed with an unsafe or unredactable diagnostic.';
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
export function assertAdvisorIsolation(adapter) {
|
|
1038
|
-
if (adapter.mode === 'native-isolated' &&
|
|
1039
|
-
!['enforced', 'advisory', 'none'].includes(adapter.toolIsolation)) {
|
|
1040
|
-
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Native runtime advisors must declare their runtime-governed tool isolation.');
|
|
1041
|
-
}
|
|
1042
|
-
if (adapter.mode === 'structured' && adapter.toolIsolation !== 'not-applicable') {
|
|
1043
|
-
throw new OperateError('E_OPERATE_ADVISOR_ISOLATION', 'Structured provider adapters must declare toolIsolation=not-applicable.');
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
export function createOfflineAdvisorAdapter(fixture) {
|
|
1047
|
-
return {
|
|
1048
|
-
id: 'offline-fixture',
|
|
1049
|
-
mode: 'structured',
|
|
1050
|
-
toolIsolation: 'not-applicable',
|
|
1051
|
-
capability: 'analysis-standard',
|
|
1052
|
-
parallelDispatch: false,
|
|
1053
|
-
async invoke(input) {
|
|
1054
|
-
if (fixture?.[input.roleId] !== undefined)
|
|
1055
|
-
return fixture[input.roleId];
|
|
1056
|
-
return input.mandate.protocolVersion === '1.4.0'
|
|
1057
|
-
? {
|
|
1058
|
-
outcome: 'quiet',
|
|
1059
|
-
analysisMarkdown: `# ${input.roleBrief.role.displayLabel}\n\nOffline fixture mode produced no recommendations.`,
|
|
1060
|
-
claims: [],
|
|
1061
|
-
actions: [],
|
|
1062
|
-
gaps: [],
|
|
1063
|
-
conflicts: [],
|
|
1064
|
-
}
|
|
1065
|
-
: { outcome: 'quiet', proposals: [], gaps: [], conflicts: [] };
|
|
1066
|
-
},
|
|
1067
|
-
};
|
|
1068
|
-
}
|
|
1069
|
-
class OpenPlanrStructuredAdapter {
|
|
1070
|
-
id;
|
|
1071
|
-
mode = 'structured';
|
|
1072
|
-
toolIsolation = 'not-applicable';
|
|
1073
|
-
capability = 'analysis-high';
|
|
1074
|
-
parallelDispatch = false;
|
|
1075
|
-
constructor(providerName) {
|
|
1076
|
-
this.id = `openplanr-${providerName}`;
|
|
1077
|
-
}
|
|
1078
|
-
async invoke(input) {
|
|
1079
|
-
void input;
|
|
1080
|
-
throw new OperateError('E_OPERATE_PROVIDER_DEPRECATED', 'The structured-provider advisor path is deprecated; dispatch now runs through the native Protocol v1.3 mandate harness. See https://openplanr.dev/docs/operate/agent-harness. Scheduled for removal in OpenPlanr 2.0.0.');
|
|
1081
|
-
}
|
|
1082
|
-
}
|
|
1083
|
-
/** Redacted error class label for diagnostics — no message or stack, ever. */
|
|
1084
|
-
function redactedProviderErrorClass(error) {
|
|
1085
|
-
if (error instanceof AIError)
|
|
1086
|
-
return `AIError:${error.code}`;
|
|
1087
|
-
if (error instanceof Error && typeof error.name === 'string' && error.name.length > 0) {
|
|
1088
|
-
return error.name;
|
|
1089
|
-
}
|
|
1090
|
-
return 'UnknownError';
|
|
1091
|
-
}
|
|
1092
|
-
/**
|
|
1093
|
-
* Build the actionable remedy for a failed structured-provider bootstrap,
|
|
1094
|
-
* preserving the underlying provider guidance (e.g. the `planr config set-key`
|
|
1095
|
-
* block an AIError already carries) and always naming the `--offline` escape.
|
|
1096
|
-
*/
|
|
1097
|
-
function structuredProviderBootstrapRemedy(error, provider) {
|
|
1098
|
-
const detail = error instanceof AIError
|
|
1099
|
-
? error.userMessage
|
|
1100
|
-
: error instanceof Error
|
|
1101
|
-
? error.message
|
|
1102
|
-
: String(error);
|
|
1103
|
-
const trimmed = detail.trim();
|
|
1104
|
-
const suffixParts = [];
|
|
1105
|
-
if (!/config set-key/.test(trimmed)) {
|
|
1106
|
-
suffixParts.push(`Configure a key with \`planr config set-key ${provider ?? '<provider>'}\``);
|
|
1107
|
-
}
|
|
1108
|
-
if (!/--offline/.test(trimmed)) {
|
|
1109
|
-
suffixParts.push('or run the cycle offline with --offline');
|
|
1110
|
-
}
|
|
1111
|
-
const suffix = suffixParts.length > 0 ? ` ${suffixParts.join(' ')}.` : '';
|
|
1112
|
-
return `Structured AI provider bootstrap failed: ${trimmed}${suffix}`;
|
|
1113
|
-
}
|
|
1114
|
-
export async function createConfiguredStructuredAdapter(projectRoot, options = {}) {
|
|
1115
|
-
// `planr operate init` writes .planr/operate/config.json, not the project-wide
|
|
1116
|
-
// .planr/config.json that loadConfig requires. A project that ran only the
|
|
1117
|
-
// operate initializer therefore reaches this with no OpenPlanr config at all,
|
|
1118
|
-
// and loadConfig throws ConfigNotFoundError — an untyped failure that surfaces
|
|
1119
|
-
// as "an unexpected internal Operating Board error" on the primary first-run
|
|
1120
|
-
// path. Both the missing config and the unconfigured provider mean the same
|
|
1121
|
-
// thing to the operator, so both resolve to the same actionable error.
|
|
1122
|
-
const config = await loadConfig(projectRoot).catch(() => null);
|
|
1123
|
-
if (!config || !isAIConfigured(config)) {
|
|
1124
|
-
throw new OperateError('E_OPERATE_ADVISOR_FAILED', 'No structured AI provider is configured; use --offline or configure OpenPlanr AI.');
|
|
1125
|
-
}
|
|
1126
|
-
// A named provider whose key cannot be resolved in this (possibly sandboxed)
|
|
1127
|
-
// subprocess environment makes getAIProvider throw a raw AIError. Left
|
|
1128
|
-
// unguarded it reaches index.ts's failure() as E_OPERATE_INTERNAL — the exact
|
|
1129
|
-
// masked crash the audit reproduced. Convert any provider-bootstrap failure
|
|
1130
|
-
// into a typed E_OPERATE_ADVISOR_FAILED that preserves the actionable remedy
|
|
1131
|
-
// (`planr config set-key …` / `--offline`) and records a redacted error class.
|
|
1132
|
-
let provider;
|
|
1133
|
-
try {
|
|
1134
|
-
provider = await getAIProvider(config, {
|
|
1135
|
-
surface: 'operate-structured-provider',
|
|
1136
|
-
});
|
|
1137
|
-
}
|
|
1138
|
-
catch (error) {
|
|
1139
|
-
throw new OperateError('E_OPERATE_ADVISOR_FAILED', structuredProviderBootstrapRemedy(error, config.ai?.provider), { errorClass: redactedProviderErrorClass(error) });
|
|
1140
|
-
}
|
|
1141
|
-
void provider;
|
|
1142
|
-
void options;
|
|
1143
|
-
return new OpenPlanrStructuredAdapter(config.ai?.provider ?? 'ai');
|
|
1144
|
-
}
|
|
1145
|
-
export async function dispatchOperatingAdvisors(input) {
|
|
1146
|
-
assertAdvisorIsolation(input.adapter);
|
|
1147
|
-
const protocol = await loadOperatingProtocol();
|
|
1148
|
-
const roleRegistry = protocol.listOperatingRoles();
|
|
1149
|
-
// Canonical registry order so results and provenance are byte-identical across
|
|
1150
|
-
// parallel/sequential dispatch and across the order roles arrive in (FR4).
|
|
1151
|
-
const roleOrder = new Map(roleRegistry.map((role, index) => [role.id, index]));
|
|
1152
|
-
// The runtime's isolation level is recorded once per dispatch. Protocol v1.4
|
|
1153
|
-
// permits compatible native-agent workflows under runtime-governed session
|
|
1154
|
-
// permissions; citation and schema validation still gate persistence.
|
|
1155
|
-
const runtimeEnforcesBoundedReadOnly = await operatingRuntimeEnforcesBoundedReadOnly(input.runtime);
|
|
1156
|
-
// A structured adapter cannot host a native lens. A native-isolated adapter
|
|
1157
|
-
// can host either an enforced or runtime-governed native workflow.
|
|
1158
|
-
const adapterNativeCapable = input.adapter.mode === 'native-isolated';
|
|
1159
|
-
const runtimeWorkflowCapable = adapterNativeCapable;
|
|
1160
|
-
const resolveIsolation = (roleId) => resolveOperatingDispatchIsolation({
|
|
1161
|
-
roleId,
|
|
1162
|
-
runtimeEnforcesBoundedReadOnly,
|
|
1163
|
-
adapterNativeCapable,
|
|
1164
|
-
runtimeWorkflowCapable,
|
|
1165
|
-
});
|
|
1166
|
-
// FR1/FR2: the mandate's declared read roots are the whole granted workspace —
|
|
1167
|
-
// including a gitignored `.planr/` — never an evidence-index subset. Derived
|
|
1168
|
-
// once and shared by every role's mandate on this path.
|
|
1169
|
-
const roots = await deriveOperatingMandateRoots(input.projectRoot);
|
|
1170
|
-
const skipped = [];
|
|
1171
|
-
const runnable = [];
|
|
1172
|
-
for (const role of input.readiness.roles) {
|
|
1173
|
-
if (!role.modelCallAllowed || role.readiness === 'not_evaluated') {
|
|
1174
|
-
skipped.push({
|
|
1175
|
-
roleId: role.roleId,
|
|
1176
|
-
gapId: role.gapId,
|
|
1177
|
-
reason: role.missingEvidence.join('; '),
|
|
1178
|
-
});
|
|
1179
|
-
continue;
|
|
1180
|
-
}
|
|
1181
|
-
runnable.push(role);
|
|
1182
|
-
}
|
|
1183
|
-
// FR12: build the ONE shared, citation-bearing bootstrap map for this cycle —
|
|
1184
|
-
// only when there is work to dispatch — and thread it, with the graceful per-role
|
|
1185
|
-
// research budget, into every role's mandate below. Built once here and referenced
|
|
1186
|
-
// by all runnable roles, never rebuilt per role, so five lenses stop
|
|
1187
|
-
// independently re-walking the same planning and git indexes.
|
|
1188
|
-
const researchBudgetMs = input.researchBudgetMs ?? DEFAULT_OPERATING_ROLE_RESEARCH_BUDGET_MS;
|
|
1189
|
-
const bootstrapMap = runnable.length > 0 ? await buildOperatingBootstrapMap(input.projectRoot) : null;
|
|
1190
|
-
async function dispatchRole(role) {
|
|
1191
|
-
// Resolve THIS role's dispatch mode once and derive provenance from what is
|
|
1192
|
-
// actually dispatched below — never re-derived after the fact. A role that
|
|
1193
|
-
// resolves to a native bounded lens has its read-only tool grant enforced
|
|
1194
|
-
// before the lens runs (below); `isolation` can only read
|
|
1195
|
-
// `enforced-read-only-bounded` when the bounded grant was genuinely enforced.
|
|
1196
|
-
const resolution = resolveIsolation(role.roleId);
|
|
1197
|
-
const dispatch = {
|
|
1198
|
-
isolation: resolution.isolation,
|
|
1199
|
-
reconciliation: resolution.reconciliation,
|
|
1200
|
-
};
|
|
1201
|
-
let mandate;
|
|
1202
|
-
try {
|
|
1203
|
-
// FR1: a body-free operating mandate — the lens question, declared read
|
|
1204
|
-
// boundaries, and citation requirement — replaces the curated evidence pack.
|
|
1205
|
-
// FR12: the shared bootstrap map and graceful per-role research budget are
|
|
1206
|
-
// threaded in as targeting guidance layered over the immutable mandate.
|
|
1207
|
-
mandate = await buildOperatingMandate({
|
|
1208
|
-
roleId: role.roleId,
|
|
1209
|
-
roots,
|
|
1210
|
-
runtime: input.runtime ?? input.adapter.id,
|
|
1211
|
-
protocolVersion: input.protocolVersion ?? '1.3.0',
|
|
1212
|
-
...(bootstrapMap ? { bootstrapMap } : {}),
|
|
1213
|
-
researchBudgetMs,
|
|
1214
|
-
});
|
|
1215
|
-
}
|
|
1216
|
-
catch (error) {
|
|
1217
|
-
return {
|
|
1218
|
-
ok: false,
|
|
1219
|
-
roleId: role.roleId,
|
|
1220
|
-
message: safeFailureMessage(error),
|
|
1221
|
-
modelCalls: 0,
|
|
1222
|
-
dispatch,
|
|
1223
|
-
};
|
|
1224
|
-
}
|
|
1225
|
-
const roleBrief = createRegistryReconciledAdvisorBrief(protocol, role.roleId);
|
|
1226
|
-
const context = roleContext(input.context, role.roleId, new Set());
|
|
1227
|
-
if (resolution.native) {
|
|
1228
|
-
// Confine the native lens to the bounded read-only toolset over the
|
|
1229
|
-
// mandate's declared roots. Constructing the toolset is what makes
|
|
1230
|
-
// `enforced-read-only-bounded` true; a callable outside the read-only grant
|
|
1231
|
-
// simply does not exist on the surface it hands the lens.
|
|
1232
|
-
const grantedRoots = narrowMissionRootsToCeiling({
|
|
1233
|
-
declaredRoots: mandate.boundaries.roots,
|
|
1234
|
-
forbiddenPaths: mandate.boundaries.forbiddenPaths,
|
|
1235
|
-
});
|
|
1236
|
-
const toolset = createMissionToolset({
|
|
1237
|
-
roots: grantedRoots,
|
|
1238
|
-
ceiling: mandate.boundaries.sensitivityCeiling,
|
|
1239
|
-
});
|
|
1240
|
-
const grantedTools = Object.keys(toolset);
|
|
1241
|
-
if (grantedTools.some((tool) => !MISSION_READ_ONLY_TOOLS.includes(tool))) {
|
|
1242
|
-
throw new OperateError('E_OPERATE_PROVIDER_READ_ONLY', `Mission dispatch for ${role.roleId} assembled a tool outside the bounded read-only grant.`);
|
|
1243
|
-
}
|
|
1244
|
-
}
|
|
1245
|
-
let built;
|
|
1246
|
-
let lastError;
|
|
1247
|
-
let roleModelCalls = 0;
|
|
1248
|
-
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
1249
|
-
try {
|
|
1250
|
-
roleModelCalls += 1;
|
|
1251
|
-
const response = await input.adapter.invoke({
|
|
1252
|
-
roleId: role.roleId,
|
|
1253
|
-
roleBrief,
|
|
1254
|
-
mandate,
|
|
1255
|
-
pinnedRevision: input.pinnedRevision,
|
|
1256
|
-
context,
|
|
1257
|
-
inputDigest: mandate.mandateDigest,
|
|
1258
|
-
});
|
|
1259
|
-
// The mandate response's citations flow into the injected universal gate,
|
|
1260
|
-
// which mints the evidenceRefs that make the committed result v1.2-valid;
|
|
1261
|
-
// a response that grounds zero evidence commits not_evaluated (quiet) with
|
|
1262
|
-
// a governed gap. Identical finalization to the native adapter record path.
|
|
1263
|
-
built = await createNativeMissionOperatingRoleResult({
|
|
1264
|
-
mandate,
|
|
1265
|
-
cycleId: input.cycleId,
|
|
1266
|
-
response,
|
|
1267
|
-
runtime: input.runtime ?? input.adapter.id,
|
|
1268
|
-
pinnedRevision: input.pinnedRevision,
|
|
1269
|
-
resolveCitations: input.resolveCitations,
|
|
1270
|
-
});
|
|
1271
|
-
break;
|
|
1272
|
-
}
|
|
1273
|
-
catch (error) {
|
|
1274
|
-
lastError = error;
|
|
1275
|
-
}
|
|
1276
|
-
}
|
|
1277
|
-
if (!built) {
|
|
1278
|
-
return {
|
|
1279
|
-
ok: false,
|
|
1280
|
-
roleId: role.roleId,
|
|
1281
|
-
message: safeFailureMessage(lastError),
|
|
1282
|
-
modelCalls: roleModelCalls,
|
|
1283
|
-
dispatch,
|
|
1284
|
-
};
|
|
1285
|
-
}
|
|
1286
|
-
return {
|
|
1287
|
-
ok: true,
|
|
1288
|
-
result: built.result,
|
|
1289
|
-
gaps: built.gaps,
|
|
1290
|
-
modelCalls: roleModelCalls,
|
|
1291
|
-
dispatch,
|
|
1292
|
-
};
|
|
1293
|
-
}
|
|
1294
|
-
// Fan the per-role dispatch out in parallel where the adapter reports it,
|
|
1295
|
-
// sequentially otherwise. FR12: the parallel path is bounded-concurrency so five
|
|
1296
|
-
// lenses do not all research at once, without limiting any single lens's depth.
|
|
1297
|
-
// Results are sorted into canonical registry order below so the reduced events
|
|
1298
|
-
// are byte-identical across parallel and sequential dispatch and across dispatch
|
|
1299
|
-
// order (FR4/E-004).
|
|
1300
|
-
const dispatched = await runMissionDispatchFanOut({
|
|
1301
|
-
items: runnable,
|
|
1302
|
-
parallel: Boolean(input.adapter.parallelDispatch),
|
|
1303
|
-
concurrency: input.concurrency ?? DEFAULT_OPERATING_DISPATCH_CONCURRENCY,
|
|
1304
|
-
run: (role) => dispatchRole(role),
|
|
1305
|
-
});
|
|
1306
|
-
const dispatchByRole = new Map();
|
|
1307
|
-
for (const entry of dispatched) {
|
|
1308
|
-
dispatchByRole.set(entry.ok ? entry.result.roleId : entry.roleId, entry.dispatch);
|
|
1309
|
-
}
|
|
1310
|
-
const okEntries = dispatched.filter((entry) => entry.ok);
|
|
1311
|
-
const results = okEntries
|
|
1312
|
-
.map((entry) => entry.result)
|
|
1313
|
-
.sort((left, right) => (roleOrder.get(left.roleId) ?? Number.MAX_SAFE_INTEGER) -
|
|
1314
|
-
(roleOrder.get(right.roleId) ?? Number.MAX_SAFE_INTEGER));
|
|
1315
|
-
// The governed gaps opened while resolving each role's citations (unresolvable
|
|
1316
|
-
// citations, empty grounding) are threaded back so the engine records them
|
|
1317
|
-
// alongside the cycle's other gaps.
|
|
1318
|
-
const gaps = okEntries.flatMap((entry) => entry.gaps);
|
|
1319
|
-
const failed = dispatched
|
|
1320
|
-
.filter((entry) => !entry.ok)
|
|
1321
|
-
.map(({ roleId, message }) => ({ roleId, message }));
|
|
1322
|
-
const modelCalls = dispatched.reduce((total, entry) => total + entry.modelCalls, 0);
|
|
1323
|
-
return {
|
|
1324
|
-
results,
|
|
1325
|
-
provenance: results.map((result) => {
|
|
1326
|
-
const dispatchProvenance = dispatchByRole.get(result.roleId) ?? {
|
|
1327
|
-
isolation: resolveIsolation(result.roleId).isolation,
|
|
1328
|
-
reconciliation: resolveIsolation(result.roleId).reconciliation,
|
|
1329
|
-
};
|
|
1330
|
-
return {
|
|
1331
|
-
roleId: result.roleId,
|
|
1332
|
-
runtime: input.runtime ?? input.adapter.id,
|
|
1333
|
-
adapterId: input.adapter.id,
|
|
1334
|
-
capability: input.adapter.capability,
|
|
1335
|
-
dispatch: input.adapter.parallelDispatch ? 'parallel' : 'sequential',
|
|
1336
|
-
isolation: dispatchProvenance.isolation,
|
|
1337
|
-
reconciliation: dispatchProvenance.reconciliation,
|
|
1338
|
-
};
|
|
1339
|
-
}),
|
|
1340
|
-
skipped,
|
|
1341
|
-
failed,
|
|
1342
|
-
gaps,
|
|
1343
|
-
blocked: failed.some((entry) => entry.roleId === 'chair') ||
|
|
1344
|
-
(input.depth === 'deep' && failed.length > 0),
|
|
1345
|
-
modelCalls,
|
|
1346
|
-
};
|
|
1347
|
-
}
|
|
1348
|
-
/**
|
|
1349
|
-
* Standard-cycle advisor failures are governed data gaps, not ephemeral
|
|
1350
|
-
* warnings. IDs are temporary and are remapped against canonical state by the
|
|
1351
|
-
* cycle engine before persistence.
|
|
1352
|
-
*/
|
|
1353
|
-
export async function advisorFailureGaps(input) {
|
|
1354
|
-
const readinessByRole = new Map(input.readiness.roles.map((role) => [role.roleId, role]));
|
|
1355
|
-
const gaps = [...input.failed]
|
|
1356
|
-
.sort((left, right) => left.roleId.localeCompare(right.roleId))
|
|
1357
|
-
.map(({ roleId, message }, index) => {
|
|
1358
|
-
const role = readinessByRole.get(roleId);
|
|
1359
|
-
return {
|
|
1360
|
-
kind: 'operating-data-gap',
|
|
1361
|
-
schemaVersion: OPERATE_SCHEMA_VERSION,
|
|
1362
|
-
protocolVersion: OPERATE_PROTOCOL_VERSION,
|
|
1363
|
-
id: `GAP-${String(index + 1).padStart(3, '0')}`,
|
|
1364
|
-
cycleId: input.cycleId,
|
|
1365
|
-
question: `What recovery or verified evidence is required to evaluate ${roleId}?`,
|
|
1366
|
-
reason: `Advisor ${roleId} failed after its bounded retry: ${safeFailureMessage(message)}`,
|
|
1367
|
-
unblocks: [],
|
|
1368
|
-
affectedRoles: [roleId],
|
|
1369
|
-
status: 'open',
|
|
1370
|
-
owner: input.owner,
|
|
1371
|
-
evidenceRefs: [...new Set(role?.evidenceRefs ?? [])].sort(),
|
|
1372
|
-
createdAt: input.now,
|
|
1373
|
-
updatedAt: input.now,
|
|
1374
|
-
};
|
|
1375
|
-
});
|
|
1376
|
-
await Promise.all(gaps.map((gap) => assertOperatingArtifact('operating-data-gap', gap)));
|
|
1377
|
-
return gaps;
|
|
1378
|
-
}
|
|
1379
|
-
export async function readProviderConsent(projectRoot, providerId) {
|
|
1380
|
-
return readFile(path.join(projectRoot, '.planr', 'operate', 'providers', `${providerId}.json`), 'utf8')
|
|
1381
|
-
.then(async (raw) => {
|
|
1382
|
-
const manifest = JSON.parse(raw);
|
|
1383
|
-
await assertOperatingArtifact('operating-provider-manifest', manifest);
|
|
1384
|
-
(await loadOperatingProtocol()).validateOperatingProviderPolicyDigest(manifest);
|
|
1385
|
-
return manifest;
|
|
1386
|
-
})
|
|
1387
|
-
.catch(() => null);
|
|
1388
|
-
}
|
|
1389
|
-
function providerPolicyCandidate(input, acceptedAt, existing) {
|
|
1390
|
-
return {
|
|
1391
|
-
kind: 'operating-provider-manifest',
|
|
1392
|
-
schemaVersion: OPERATE_SCHEMA_VERSION,
|
|
1393
|
-
protocolVersion: OPERATE_PROTOCOL_VERSION,
|
|
1394
|
-
id: input.id,
|
|
1395
|
-
providerId: input.providerId,
|
|
1396
|
-
providerVersion: input.providerVersion,
|
|
1397
|
-
mode: input.mode,
|
|
1398
|
-
readOnly: true,
|
|
1399
|
-
endpoint: structuredClone(input.endpoint),
|
|
1400
|
-
permittedDataClasses: [...new Set(input.permittedDataClasses)].sort(),
|
|
1401
|
-
retention: structuredClone(input.retention),
|
|
1402
|
-
capabilities: {
|
|
1403
|
-
incremental: input.incremental,
|
|
1404
|
-
deep: input.deep,
|
|
1405
|
-
toolIsolation: input.toolIsolation,
|
|
1406
|
-
},
|
|
1407
|
-
limits: structuredClone(input.limits),
|
|
1408
|
-
consent: {
|
|
1409
|
-
policyVersion: input.consentPolicyVersion,
|
|
1410
|
-
status: existing ? 'renewed' : 'first-use',
|
|
1411
|
-
acceptedAt: existing?.consent.acceptedAt ?? acceptedAt,
|
|
1412
|
-
renewedAt: existing ? acceptedAt : null,
|
|
1413
|
-
nextReviewAt: new Date(Date.parse(acceptedAt) + 180 * 24 * 60 * 60 * 1_000).toISOString(),
|
|
1414
|
-
renewalTriggers: [...new Set(input.renewalTriggers)].sort(),
|
|
1415
|
-
},
|
|
1416
|
-
policyDigest: `sha256:${'0'.repeat(64)}`,
|
|
1417
|
-
configurationDigest: input.configurationDigest,
|
|
1418
|
-
capturedAt: acceptedAt,
|
|
1419
|
-
};
|
|
1420
|
-
}
|
|
1421
|
-
/**
|
|
1422
|
-
* Build and, only after explicit authority, persist the credential-free policy
|
|
1423
|
-
* that controls a remote advisor call. Keys and endpoint secrets never enter
|
|
1424
|
-
* the manifest.
|
|
1425
|
-
*/
|
|
1426
|
-
export async function ensureOperatingProviderConsent(input) {
|
|
1427
|
-
const existing = await readProviderConsent(input.projectRoot, input.provider.providerId);
|
|
1428
|
-
const now = input.now ?? new Date().toISOString();
|
|
1429
|
-
const protocol = await loadOperatingProtocol();
|
|
1430
|
-
const candidate = providerPolicyCandidate(input.provider, now, existing);
|
|
1431
|
-
candidate.policyDigest = protocol.computeOperatingProviderPolicyDigest(candidate);
|
|
1432
|
-
await assertOperatingArtifact('operating-provider-manifest', candidate);
|
|
1433
|
-
protocol.validateOperatingProviderPolicyDigest(candidate);
|
|
1434
|
-
const changed = !existing ||
|
|
1435
|
-
existing.policyDigest !== candidate.policyDigest ||
|
|
1436
|
-
existing.configurationDigest !== candidate.configurationDigest ||
|
|
1437
|
-
Date.parse(existing.consent.nextReviewAt ?? '1970-01-01') <= Date.parse(now);
|
|
1438
|
-
if (!changed)
|
|
1439
|
-
return { manifest: existing, changed: false };
|
|
1440
|
-
if (!input.confirmed) {
|
|
1441
|
-
throw new OperateError('E_OPERATE_AUTHORITY_REQUIRED', 'The disclosed provider policy requires explicit first-use or renewal consent.', {
|
|
1442
|
-
provider: candidate.providerId,
|
|
1443
|
-
endpoint: candidate.endpoint,
|
|
1444
|
-
permittedDataClasses: candidate.permittedDataClasses,
|
|
1445
|
-
retention: candidate.retention,
|
|
1446
|
-
limits: candidate.limits,
|
|
1447
|
-
policyDigest: candidate.policyDigest,
|
|
1448
|
-
});
|
|
1449
|
-
}
|
|
1450
|
-
if (input.persist !== false) {
|
|
1451
|
-
const directory = path.join(input.projectRoot, '.planr', 'operate', 'providers');
|
|
1452
|
-
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
1453
|
-
const target = path.join(directory, `${candidate.providerId}.json`);
|
|
1454
|
-
const temporary = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
1455
|
-
await writeFile(temporary, `${canonicalize(candidate)}\n`, { mode: 0o600 });
|
|
1456
|
-
await rename(temporary, target);
|
|
1457
|
-
}
|
|
1458
|
-
return { manifest: candidate, changed: true };
|
|
1459
|
-
}
|
|
1460
|
-
function providerEndpoint(config) {
|
|
1461
|
-
const provider = config.ai?.provider ?? 'openai';
|
|
1462
|
-
const configuredUrl = config.ai?.ollamaBaseUrl?.trim();
|
|
1463
|
-
const defaultUrl = provider === 'anthropic'
|
|
1464
|
-
? 'https://api.anthropic.com'
|
|
1465
|
-
: provider === 'openai'
|
|
1466
|
-
? 'https://api.openai.com'
|
|
1467
|
-
: 'http://127.0.0.1:11434';
|
|
1468
|
-
const identity = configuredUrl || defaultUrl;
|
|
1469
|
-
let display = provider === 'ollama' ? 'local Ollama' : `${provider} API`;
|
|
1470
|
-
try {
|
|
1471
|
-
const parsed = new URL(identity);
|
|
1472
|
-
display = `${provider} @ ${parsed.origin}`;
|
|
1473
|
-
}
|
|
1474
|
-
catch {
|
|
1475
|
-
display = `${provider} @ configured endpoint`;
|
|
1476
|
-
}
|
|
1477
|
-
return {
|
|
1478
|
-
kind: provider === 'ollama' ? 'local' : 'remote',
|
|
1479
|
-
display,
|
|
1480
|
-
authentication: provider === 'ollama' ? 'none' : 'machine-local',
|
|
1481
|
-
identity,
|
|
1482
|
-
};
|
|
1483
|
-
}
|
|
1484
|
-
export function configuredAdvisorProviderPolicy(input) {
|
|
1485
|
-
const provider = input.config.ai?.provider ?? 'openai';
|
|
1486
|
-
const model = input.config.ai?.model ?? DEFAULT_MODELS[provider];
|
|
1487
|
-
const endpoint = providerEndpoint(input.config);
|
|
1488
|
-
const local = endpoint.kind === 'local';
|
|
1489
|
-
const configurationDigest = canonicalDigest({
|
|
1490
|
-
provider,
|
|
1491
|
-
model,
|
|
1492
|
-
endpoint: endpoint.identity,
|
|
1493
|
-
runtime: input.runtime,
|
|
1494
|
-
adapterId: input.adapterId,
|
|
1495
|
-
permittedDataClasses: [
|
|
1496
|
-
'source-code',
|
|
1497
|
-
'planning-artifacts',
|
|
1498
|
-
'git-metadata',
|
|
1499
|
-
'issue-metadata',
|
|
1500
|
-
'project-metadata',
|
|
1501
|
-
],
|
|
1502
|
-
retention: local
|
|
1503
|
-
? { providerStoresRequestContent: false, maxProviderRetentionDays: 0 }
|
|
1504
|
-
: { providerStoresRequestContent: true, maxProviderRetentionDays: 30 },
|
|
1505
|
-
});
|
|
1506
|
-
return {
|
|
1507
|
-
id: `PRV-openplanr-${provider}`,
|
|
1508
|
-
providerId: `openplanr-${provider}`,
|
|
1509
|
-
providerVersion: '1.0.0',
|
|
1510
|
-
mode: 'structured',
|
|
1511
|
-
toolIsolation: 'not-applicable',
|
|
1512
|
-
endpoint: {
|
|
1513
|
-
kind: endpoint.kind,
|
|
1514
|
-
display: `${endpoint.display} · ${model}`,
|
|
1515
|
-
authentication: endpoint.authentication,
|
|
1516
|
-
redacted: true,
|
|
1517
|
-
},
|
|
1518
|
-
permittedDataClasses: [
|
|
1519
|
-
'source-code',
|
|
1520
|
-
'planning-artifacts',
|
|
1521
|
-
'git-metadata',
|
|
1522
|
-
'issue-metadata',
|
|
1523
|
-
'project-metadata',
|
|
1524
|
-
],
|
|
1525
|
-
retention: {
|
|
1526
|
-
providerStoresRequestContent: !local,
|
|
1527
|
-
maxProviderRetentionDays: local ? 0 : 30,
|
|
1528
|
-
localEvidenceRetention: 'cycle',
|
|
1529
|
-
},
|
|
1530
|
-
incremental: false,
|
|
1531
|
-
deep: true,
|
|
1532
|
-
limits: {
|
|
1533
|
-
maxItems: 2_000,
|
|
1534
|
-
maxBytes: 10 * 1024 * 1024,
|
|
1535
|
-
maxDurationMs: 60_000,
|
|
1536
|
-
maxRequests: 12,
|
|
1537
|
-
maxTokens: 49_152,
|
|
1538
|
-
maxCostUsd: null,
|
|
1539
|
-
},
|
|
1540
|
-
consentPolicyVersion: '1.0.0',
|
|
1541
|
-
renewalTriggers: ['policy-change', 'scope-expansion', 'credential-renewal', 'scheduled-review'],
|
|
1542
|
-
configurationDigest,
|
|
1543
|
-
};
|
|
1544
|
-
}
|
|
1545
|
-
//# sourceMappingURL=advisors.js.map
|