Diagnostics and remediation / JSON Schema
Workspai Doctor Workspace Evidence
Defines the versioned doctor workspace evidence v1 boundary used by Workspai and its consumers.
- Schema version
doctor-workspace-evidence-v1- Contract path
contracts/doctor-workspace-evidence.v1.json- Publication
- json-schema, embedded-type
- Defined fields
- 217
- Artifact bindings
- 1
Why this contract exists
Architecture role
Carries structured evidence, findings, and verdicts across governance boundaries.
Consumption boundary
- • Workspai CLI
- • CI and release automation
- • Developers
Related commands
Commands are linked only when the runtime contract identifies a direct production relationship. Supporting contracts may be consumed without having a single producer command.
Produced artifacts
These durable files are emitted by registered commands and validated against this contract.
| Artifact path | Schema | Producer |
|---|---|---|
| .workspai/reports/doctor-last-run.json | doctor-workspace-evidence-v1 | workspai doctor workspace --json |
Field reference
Every declared schema property or published capability path is listed here. Required means the contract declares or publishes that field at the shown boundary.
| Field path | Type | Required | Meaning | Constraints |
|---|---|---|---|---|
| $defs.commandInvocation.args | array | Yes | Defines the args value at this contract boundary. | — |
| $defs.commandInvocation.cwd | string | Yes | Defines the cwd value at this contract boundary. | minLength: 1 |
| $defs.commandInvocation.executable | string | Yes | Defines the executable value at this contract boundary. | minLength: 1 |
| $defs.dependencyAudit.blockingFindingCount | integer | null | Yes | Defines the blockingfindingcount value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.ecosystem | string | Yes | Defines the ecosystem value at this contract boundary. | minLength: 1 |
| $defs.dependencyAudit.exitCode | integer | No | Defines the exitcode value at this contract boundary. | — |
| $defs.dependencyAudit.findingCount | integer | null | Yes | Defines the findingcount value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.dependencyAudit.invocation | reference | No | Defines the invocation value at this contract boundary. | ref: #/$defs/commandInvocation |
| $defs.dependencyAudit.limitations | array | Yes | Defines the limitations value at this contract boundary. | — |
| $defs.dependencyAudit.reason | string | Yes | Defines the reason value at this contract boundary. | minLength: 1 |
| $defs.dependencyAudit.remediation | reference | No | Defines the remediation value at this contract boundary. | ref: #/$defs/dependencyRemediation |
| $defs.dependencyAudit.runtime | enum | Yes | Defines the runtime value at this contract boundary. | enum: node, bun, deno, python, go, java, rust, elixir, clojure, php, ruby, dotnet, scala, kotlin, c, cpp, unknown |
| $defs.dependencyAudit.schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "doctor-dependency-audit-v1" |
| $defs.dependencyAudit.severityCounts | object | Yes | Defines the severitycounts value at this contract boundary. | additionalProperties: false |
| $defs.dependencyAudit.severityCounts.critical | integer | Yes | Defines the critical value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.severityCounts.high | integer | Yes | Defines the high value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.severityCounts.low | integer | Yes | Defines the low value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.severityCounts.moderate | integer | Yes | Defines the moderate value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.severityCounts.unknown | integer | Yes | Defines the unknown value at this contract boundary. | minimum: 0 |
| $defs.dependencyAudit.status | enum | Yes | Defines the status value at this contract boundary. | enum: clean, vulnerable, tool-unavailable, unsupported, failed |
| $defs.dependencyAudit.subjects | array | No | Defines the subjects value at this contract boundary. | — |
| $defs.dependencyAudit.tool | string | Yes | Defines the tool value at this contract boundary. | minLength: 1 |
| $defs.dependencyAuditSubject.advisoryIds | array | Yes | Defines the advisoryids value at this contract boundary. | — |
| $defs.dependencyAuditSubject.direct | boolean | No | Defines the direct value at this contract boundary. | — |
| $defs.dependencyAuditSubject.name | string | Yes | Defines the name value at this contract boundary. | minLength: 1 |
| $defs.dependencyAuditSubject.severities | array | Yes | Defines the severities value at this contract boundary. | — |
| $defs.dependencyAuditSubject.version | string | No | Defines the version value at this contract boundary. | minLength: 1 |
| $defs.dependencyRemediation.breakingFixAvailable | boolean | Yes | Defines the breakingfixavailable value at this contract boundary. | — |
| $defs.dependencyRemediation.candidates | array | Yes | Defines the candidates value at this contract boundary. | — |
| $defs.dependencyRemediation.candidates[].breaking | boolean | Yes | Defines the breaking value at this contract boundary. | — |
| $defs.dependencyRemediation.candidates[].packageName | string | Yes | Defines the packagename value at this contract boundary. | minLength: 1 |
| $defs.dependencyRemediation.candidates[].version | string | No | Defines the version value at this contract boundary. | minLength: 1 |
| $defs.dependencyRemediation.compatibleFixAvailable | boolean | Yes | Defines the compatiblefixavailable value at this contract boundary. | — |
| $defs.dependencyRemediation.disposition | enum | Yes | Defines the disposition value at this contract boundary. | enum: not-needed, compatible, breaking-only, mixed, none, unknown |
| $defs.dependencyRemediation.resolutionCandidates | array | No | Defines the resolutioncandidates value at this contract boundary. | — |
| $defs.dependencyRepairTransaction.completion | object | Yes | Defines the completion value at this contract boundary. | additionalProperties: false |
| $defs.dependencyRepairTransaction.completion.auditClean | boolean | No | Defines the auditclean value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.completion.canonicalVerificationRequired | boolean | Yes | Defines the canonicalverificationrequired value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.completion.declaredBuildPass | boolean | Yes | Defines the declaredbuildpass value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.completion.declaredTestsPass | boolean | Yes | Defines the declaredtestspass value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.completion.installedTreePresent | boolean | No | Defines the installedtreepresent value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.completion.manifestLockConsistent | boolean | Yes | Defines the manifestlockconsistent value at this contract boundary. | const: true |
| $defs.dependencyRepairTransaction.ecosystem | string | Yes | Defines the ecosystem value at this contract boundary. | minLength: 1 |
| $defs.dependencyRepairTransaction.kind | enum | Yes | Defines the kind value at this contract boundary. | enum: dependency-security, dependency-materialization |
| $defs.dependencyRepairTransaction.observableState | enum | No | Defines the observablestate value at this contract boundary. | enum: runtime-dependency-tree |
| $defs.dependencyRepairTransaction.projectPath | string | Yes | Defines the projectpath value at this contract boundary. | minLength: 1 |
| $defs.dependencyRepairTransaction.requiredStages | array | Yes | Defines the requiredstages value at this contract boundary. | — |
| $defs.dependencyRepairTransaction.schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "workspai.doctor-dependency-repair-transaction.v1" |
| $defs.dependencyRepairTransaction.sourceMutationRequired | boolean | No | Defines the sourcemutationrequired value at this contract boundary. | — |
| $defs.dependencyRepairTransaction.state | string | Yes | Defines the state value at this contract boundary. | const: "planned" |
| $defs.dependencyResolutionCandidate.advisoryIds | array | Yes | Defines the advisoryids value at this contract boundary. | — |
| $defs.dependencyResolutionCandidate.autoExecutable | boolean | Yes | Defines the autoexecutable value at this contract boundary. | — |
| $defs.dependencyResolutionCandidate.currentRange | string | No | Defines the currentrange value at this contract boundary. | minLength: 1 |
| $defs.dependencyResolutionCandidate.currentVersion | string | No | Defines the currentversion value at this contract boundary. | minLength: 1 |
| $defs.dependencyResolutionCandidate.ownerPackages | array | Yes | Defines the ownerpackages value at this contract boundary. | — |
| $defs.dependencyResolutionCandidate.packageName | string | Yes | Defines the packagename value at this contract boundary. | minLength: 1 |
| $defs.dependencyResolutionCandidate.reason | string | Yes | Defines the reason value at this contract boundary. | minLength: 1 |
| $defs.dependencyResolutionCandidate.relationship | enum | Yes | Defines the relationship value at this contract boundary. | enum: direct, transitive, unknown |
| $defs.dependencyResolutionCandidate.requiresCompatibilityVerification | boolean | Yes | Defines the requirescompatibilityverification value at this contract boundary. | — |
| $defs.dependencyResolutionCandidate.risk | enum | Yes | Defines the risk value at this contract boundary. | enum: safe, guarded, breaking, unknown |
| $defs.dependencyResolutionCandidate.safeVersionConstraint | string | No | Defines the safeversionconstraint value at this contract boundary. | minLength: 1 |
| $defs.dependencyResolutionCandidate.strategies | array | Yes | Defines the strategies value at this contract boundary. | minItems: 1 |
| $defs.dependencyResolutionCandidate.vulnerableRange | string | No | Defines the vulnerablerange value at this contract boundary. | minLength: 1 |
| $defs.evidenceFreshness.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.evidenceFreshness.liveStateProbeCount | integer | Yes | Defines the livestateprobecount value at this contract boundary. | minimum: 0 |
| $defs.evidenceFreshness.oldestProbeGeneratedAt | string | No | Defines the oldestprobegeneratedat value at this contract boundary. | format: date-time |
| $defs.evidenceFreshness.staleProbeCount | integer | Yes | Defines the staleprobecount value at this contract boundary. | minimum: 0 |
| $defs.evidenceFreshness.status | enum | Yes | Defines the status value at this contract boundary. | enum: fresh, stale, unknown |
| $defs.evidenceFreshness.unknownProbeCount | integer | Yes | Defines the unknownprobecount value at this contract boundary. | minimum: 0 |
| $defs.evidenceFreshness.verifyBeforeUseProbeCount | integer | Yes | Defines the verifybeforeuseprobecount value at this contract boundary. | minimum: 0 |
| $defs.freshness.category | enum | Yes | Defines the category value at this contract boundary. | enum: structure, verification, state |
| $defs.freshness.expiresAt | string | No | Defines the expiresat value at this contract boundary. | format: date-time |
| $defs.freshness.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.freshness.reason | string | Yes | Defines the reason value at this contract boundary. | — |
| $defs.freshness.status | enum | Yes | Defines the status value at this contract boundary. | enum: fresh, stale, unknown |
| $defs.freshness.ttlSeconds | integer | null | Yes | Defines the ttlseconds value at this contract boundary. | minimum: 0 |
| $defs.freshness.verifyBeforeUse | boolean | Yes | Defines the verifybeforeuse value at this contract boundary. | — |
| $defs.healthScore.components | object | No | Defines the components value at this contract boundary. | additionalProperties: false |
| $defs.healthScore.components.host | reference | Yes | Defines the host value at this contract boundary. | ref: #/$defs/scoreComponent |
| $defs.healthScore.components.projects | reference | Yes | Defines the projects value at this contract boundary. | ref: #/$defs/scoreComponent |
| $defs.healthScore.errors | integer | Yes | Defines the errors value at this contract boundary. | minimum: 0 |
| $defs.healthScore.passed | integer | No | Defines the passed value at this contract boundary. | minimum: 0 |
| $defs.healthScore.percent | number | No | Defines the percent value at this contract boundary. | minimum: 0 · maximum: 100 |
| $defs.healthScore.presentation | reference | No | Defines the presentation value at this contract boundary. | ref: #/$defs/healthScorePresentation |
| $defs.healthScore.total | integer | No | Defines the total value at this contract boundary. | minimum: 0 |
| $defs.healthScore.verdict | enum | No | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
| $defs.healthScore.warnings | integer | No | Defines the warnings value at this contract boundary. | minimum: 0 |
| $defs.healthScorePresentation.advisoryFindings | integer | Yes | Defines the advisoryfindings value at this contract boundary. | minimum: 0 |
| $defs.healthScorePresentation.blockingFindings | integer | Yes | Defines the blockingfindings value at this contract boundary. | minimum: 0 |
| $defs.healthScorePresentation.contradictionFindings | integer | Yes | Defines the contradictionfindings value at this contract boundary. | minimum: 0 |
| $defs.healthScorePresentation.diagnosticPassRatePercent | number | null | Yes | Defines the diagnosticpassratepercent value at this contract boundary. | minimum: 0 · maximum: 100 |
| $defs.healthScorePresentation.label | string | Yes | Defines the label value at this contract boundary. | const: "diagnostic-pass-rate" |
| $defs.healthScorePresentation.notApplicableChecks | integer | Yes | Defines the notapplicablechecks value at this contract boundary. | minimum: 0 |
| $defs.healthScorePresentation.policy | string | Yes | Defines the policy value at this contract boundary. | const: "doctor-multi-axis-v1" |
| $defs.healthScorePresentation.unknownFindings | integer | Yes | Defines the unknownfindings value at this contract boundary. | minimum: 0 |
| $defs.policyProfile.advisoryWarningsBlockRelease | boolean | Yes | Defines the advisorywarningsblockrelease value at this contract boundary. | — |
| $defs.policyProfile.description | string | Yes | Defines the description value at this contract boundary. | — |
| $defs.policyProfile.exitOnErrors | boolean | Yes | Defines the exitonerrors value at this contract boundary. | const: true |
| $defs.policyProfile.exitOnWarnings | boolean | Yes | Defines the exitonwarnings value at this contract boundary. | — |
| $defs.policyProfile.name | enum | Yes | Defines the name value at this contract boundary. | enum: local, ci, release, enterprise-strict |
| $defs.policyProfile.warningExitCode | enum | Yes | Defines the warningexitcode value at this contract boundary. | enum: 0, 1, 2 |
| $defs.probe.applicability | enum | No | Defines the applicability value at this contract boundary. | enum: applicable, not-applicable, unknown |
| $defs.probe.freshness | reference | No | Defines the freshness value at this contract boundary. | ref: #/$defs/freshness |
| $defs.probe.id | string | No | Defines the id value at this contract boundary. | minLength: 1 |
| $defs.probe.issueClass | enum | No | Defines the issueclass value at this contract boundary. | enum: dependency, environment, security, test, quality, container, deployment, runtime, workspace-contract, source-tree, framework, configuration, custom, unknown |
| $defs.probe.label | string | No | Defines the label value at this contract boundary. | minLength: 1 |
| $defs.probe.operationalImpact | enum | No | Defines the operationalimpact value at this contract boundary. | enum: none, developer-friction, ci-risk, release-risk, security-risk, runtime-risk, customer-risk |
| $defs.probe.reason | string | No | Defines the reason value at this contract boundary. | — |
| $defs.probe.recommendation | string | No | Defines the recommendation value at this contract boundary. | — |
| $defs.probe.repairCapability | reference | No | Defines the repaircapability value at this contract boundary. | ref: #/$defs/repairCapability |
| $defs.probe.repairIntent | reference | No | Defines the repairintent value at this contract boundary. | ref: #/$defs/repairIntent |
| $defs.probe.scope | string | No | Defines the scope value at this contract boundary. | — |
| $defs.probe.severity | enum | No | Defines the severity value at this contract boundary. | enum: info, warn, error |
| $defs.probe.status | enum | No | Defines the status value at this contract boundary. | enum: pass, warn, fail |
| $defs.probeSummary.advisoryFindings | integer | Yes | Defines the advisoryfindings value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.blockingFindings | integer | Yes | Defines the blockingfindings value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.contradictionFindings | integer | No | Defines the contradictionfindings value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.failed | integer | Yes | Defines the failed value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.passed | integer | Yes | Defines the passed value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.total | integer | Yes | Defines the total value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.unknownFindings | integer | No | Defines the unknownfindings value at this contract boundary. | minimum: 0 |
| $defs.probeSummary.verdict | enum | Yes | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
| $defs.probeSummary.warnings | integer | Yes | Defines the warnings value at this contract boundary. | minimum: 0 |
| $defs.repairCapability.canAutoFix | boolean | Yes | Defines the canautofix value at this contract boundary. | — |
| $defs.repairCapability.canEditFiles | boolean | Yes | Defines the caneditfiles value at this contract boundary. | — |
| $defs.repairCapability.command | string | No | Defines the command value at this contract boundary. | — |
| $defs.repairCapability.files | array | Yes | Defines the files value at this contract boundary. | — |
| $defs.repairCapability.fixKind | enum | Yes | Defines the fixkind value at this contract boundary. | enum: package-json-script, file-create, file-append, file-copy, dependency-sync, command, manual |
| $defs.repairCapability.id | string | Yes | Defines the id value at this contract boundary. | minLength: 1 |
| $defs.repairCapability.invocation | reference | No | Defines the invocation value at this contract boundary. | ref: #/$defs/commandInvocation |
| $defs.repairCapability.issueId | string | Yes | Defines the issueid value at this contract boundary. | minLength: 1 |
| $defs.repairCapability.limitations | array | No | Defines the limitations value at this contract boundary. | — |
| $defs.repairCapability.operation | reference | No | Defines the operation value at this contract boundary. | ref: #/$defs/repairOperation |
| $defs.repairCapability.reason | string | Yes | Defines the reason value at this contract boundary. | — |
| $defs.repairCapability.refreshCommands | array | Yes | Defines the refreshcommands value at this contract boundary. | — |
| $defs.repairCapability.requiresApproval | boolean | Yes | Defines the requiresapproval value at this contract boundary. | — |
| $defs.repairCapability.requiresReview | boolean | Yes | Defines the requiresreview value at this contract boundary. | — |
| $defs.repairCapability.risk | enum | Yes | Defines the risk value at this contract boundary. | enum: safe, guarded, invasive |
| $defs.repairCapability.status | enum | Yes | Defines the status value at this contract boundary. | enum: available, manual, blocked |
| $defs.repairCapability.strategy | array | No | Defines the strategy value at this contract boundary. | — |
| $defs.repairCapability.title | string | Yes | Defines the title value at this contract boundary. | minLength: 1 |
| $defs.repairCapability.transaction | reference | No | Defines the transaction value at this contract boundary. | ref: #/$defs/dependencyRepairTransaction |
| $defs.repairCapability.verifyCommand | string | No | Defines the verifycommand value at this contract boundary. | — |
| $defs.repairIntent.confidence | enum | Yes | Defines the confidence value at this contract boundary. | enum: high, medium, low |
| $defs.repairIntent.mode | enum | Yes | Defines the mode value at this contract boundary. | enum: none, run-command, edit-file, review-required, verify-before-fix, refresh-evidence, manual-guidance |
| $defs.repairIntent.primaryActionLabel | string | Yes | Defines the primaryactionlabel value at this contract boundary. | — |
| $defs.repairIntent.reason | string | Yes | Defines the reason value at this contract boundary. | — |
| $defs.repairIntent.relatedCommands | array | Yes | Defines the relatedcommands value at this contract boundary. | — |
| $defs.repairIntent.requiresApproval | boolean | Yes | Defines the requiresapproval value at this contract boundary. | — |
| $defs.repairIntent.requiresFreshEvidence | boolean | Yes | Defines the requiresfreshevidence value at this contract boundary. | — |
| $defs.repairOperation.command | string | No | Defines the command value at this contract boundary. | — |
| $defs.repairOperation.content | string | No | Defines the content value at this contract boundary. | — |
| $defs.repairOperation.edits | array | No | Defines the edits value at this contract boundary. | — |
| $defs.repairOperation.edits[].pointer | string | Yes | Defines the pointer value at this contract boundary. | — |
| $defs.repairOperation.edits[].value | string | number | boolean | null | Yes | Defines the value value at this contract boundary. | — |
| $defs.repairOperation.ensureNewline | boolean | No | Defines the ensurenewline value at this contract boundary. | — |
| $defs.repairOperation.keys | array | No | Defines the keys value at this contract boundary. | — |
| $defs.repairOperation.keys[].comment | string | No | Defines the comment value at this contract boundary. | — |
| $defs.repairOperation.keys[].name | string | Yes | Defines the name value at this contract boundary. | — |
| $defs.repairOperation.keys[].value | string | Yes | Defines the value value at this contract boundary. | — |
| $defs.repairOperation.lines | array | No | Defines the lines value at this contract boundary. | — |
| $defs.repairOperation.overwrite | boolean | No | Defines the overwrite value at this contract boundary. | — |
| $defs.repairOperation.path | string | Yes | Defines the path value at this contract boundary. | minLength: 1 |
| $defs.repairOperation.phony | boolean | No | Defines the phony value at this contract boundary. | — |
| $defs.repairOperation.scriptName | string | No | Defines the scriptname value at this contract boundary. | — |
| $defs.repairOperation.scriptValue | string | No | Defines the scriptvalue value at this contract boundary. | — |
| $defs.repairOperation.sourcePath | string | No | Defines the sourcepath value at this contract boundary. | minLength: 1 |
| $defs.repairOperation.target | string | No | Defines the target value at this contract boundary. | — |
| $defs.repairOperation.type | enum | Yes | Defines the type value at this contract boundary. | enum: file-create, file-append, file-copy, package-json-script, json-edit, env-key-add, makefile-target |
| $defs.repairStrategyStage.continueWhen | enum | Yes | Defines the continuewhen value at this contract boundary. | enum: always, previous-passed, blocker-remains, manual-decision |
| $defs.repairStrategyStage.description | string | Yes | Defines the description value at this contract boundary. | minLength: 1 |
| $defs.repairStrategyStage.id | string | Yes | Defines the id value at this contract boundary. | minLength: 1 |
| $defs.repairStrategyStage.invocation | reference | No | Defines the invocation value at this contract boundary. | ref: #/$defs/commandInvocation |
| $defs.repairStrategyStage.kind | enum | Yes | Defines the kind value at this contract boundary. | enum: diagnose, safe-fix, targeted-upgrade, verify, exception-review |
| $defs.repairStrategyStage.risk | enum | Yes | Defines the risk value at this contract boundary. | enum: safe, guarded, invasive |
| $defs.scoreComponent.errors | integer | Yes | Defines the errors value at this contract boundary. | minimum: 0 |
| $defs.scoreComponent.passed | integer | No | Defines the passed value at this contract boundary. | minimum: 0 |
| $defs.scoreComponent.percent | number | No | Defines the percent value at this contract boundary. | minimum: 0 · maximum: 100 |
| $defs.scoreComponent.total | integer | No | Defines the total value at this contract boundary. | minimum: 0 |
| $defs.scoreComponent.warnings | integer | No | Defines the warnings value at this contract boundary. | minimum: 0 |
| cachePath | string | null | No | Defines the cachepath value at this contract boundary. | — |
| contract | object | No | Defines the contract value at this contract boundary. | additionalProperties: true |
| driftDelta | object | No | Defines the driftdelta value at this contract boundary. | additionalProperties: true |
| evidenceFreshness | reference | No | Defines the evidencefreshness value at this contract boundary. | ref: #/$defs/evidenceFreshness |
| evidenceType | string | Yes | Defines the evidencetype value at this contract boundary. | const: "workspace" |
| generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| healthScore | reference | No | Defines the healthscore value at this contract boundary. | ref: #/$defs/healthScore |
| policyProfile | reference | No | Defines the policyprofile value at this contract boundary. | ref: #/$defs/policyProfile |
| projects | array | Yes | Defines the projects value at this contract boundary. | — |
| projects[].dependencyAudit | reference | No | Defines the dependencyaudit value at this contract boundary. | ref: #/$defs/dependencyAudit |
| projects[].diagnosis | reference | No | Defines the diagnosis value at this contract boundary. | ref: https://workspai.dev/schemas/workspace-intelligence/doctor-diagnosis.v1.json |
| projects[].graphDiagnosis | reference | No | Defines the graphdiagnosis value at this contract boundary. | ref: https://workspai.dev/schemas/workspace-intelligence/doctor-graph-diagnosis.v1.json |
| projects[].probes | array | No | Defines the probes value at this contract boundary. | — |
| projects[].probeSummary | reference | No | Defines the probesummary value at this contract boundary. | ref: #/$defs/probeSummary |
| projects[].repairCapabilities | array | No | Defines the repaircapabilities value at this contract boundary. | — |
| projects[].verdict | enum | No | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
| projectScanCached | boolean | No | Defines the projectscancached value at this contract boundary. | — |
| projectScanSignature | string | No | Defines the projectscansignature value at this contract boundary. | — |
| schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "doctor-workspace-evidence-v1" |
| scoreBreakdown | array | No | Defines the scorebreakdown value at this contract boundary. | — |
| summary | object | Yes | Defines the summary value at this contract boundary. | additionalProperties: true |
| summary.advisoryFindings | integer | No | Defines the advisoryfindings value at this contract boundary. | minimum: 0 |
| summary.blockingFindings | integer | No | Defines the blockingfindings value at this contract boundary. | minimum: 0 |
| summary.contradictionFindings | integer | No | Defines the contradictionfindings value at this contract boundary. | minimum: 0 |
| summary.counts | reference | No | Defines the counts value at this contract boundary. | ref: #/$defs/counts |
| summary.hasSystemErrors | boolean | Yes | Defines the hassystemerrors value at this contract boundary. | — |
| summary.projectAdvisoryWarningProjects | integer | No | Defines the projectadvisorywarningprojects value at this contract boundary. | minimum: 0 |
| summary.projectAdvisoryWarnings | integer | No | Defines the projectadvisorywarnings value at this contract boundary. | minimum: 0 |
| summary.scopeProvenance | object | No | Defines the scopeprovenance value at this contract boundary. | additionalProperties: true |
| summary.totalIssues | integer | Yes | Defines the totalissues value at this contract boundary. | minimum: 0 |
| summary.totalProjects | integer | Yes | Defines the totalprojects value at this contract boundary. | minimum: 0 |
| summary.unknownFindings | integer | No | Defines the unknownfindings value at this contract boundary. | minimum: 0 |
| summary.verdict | enum | No | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
| system | object | No | Defines the system value at this contract boundary. | additionalProperties: true |
| workspaceName | string | No | Defines the workspacename value at this contract boundary. | — |
| workspacePath | string | Yes | Defines the workspacepath value at this contract boundary. | minLength: 1 |
Canonical machine-readable definition
The raw synchronized contract remains authoritative. The educational sections above are projections of this definition.
Show raw JSON
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://workspai.dev/schemas/doctor-workspace-evidence.v1.json",
"title": "Workspai Doctor Workspace Evidence",
"type": "object",
"required": [
"schemaVersion",
"evidenceType",
"generatedAt",
"workspacePath",
"summary",
"projects"
],
"properties": {
"schemaVersion": {
"const": "doctor-workspace-evidence-v1"
},
"evidenceType": {
"const": "workspace"
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"workspacePath": {
"type": "string",
"minLength": 1
},
"workspaceName": {
"type": "string"
},
"projectScanCached": {
"type": "boolean"
},
"projectScanSignature": {
"type": "string"
},
"cachePath": {
"type": [
"string",
"null"
]
},
"healthScore": {
"$ref": "#/$defs/healthScore"
},
"evidenceFreshness": {
"$ref": "#/$defs/evidenceFreshness"
},
"system": {
"type": "object",
"additionalProperties": true
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"probes": {
"type": "array",
"items": {
"$ref": "#/$defs/probe"
}
},
"repairCapabilities": {
"type": "array",
"items": {
"$ref": "#/$defs/repairCapability"
}
},
"dependencyAudit": {
"$ref": "#/$defs/dependencyAudit"
},
"graphDiagnosis": {
"$ref": "https://workspai.dev/schemas/workspace-intelligence/doctor-graph-diagnosis.v1.json"
},
"diagnosis": {
"$ref": "https://workspai.dev/schemas/workspace-intelligence/doctor-diagnosis.v1.json"
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
},
"probeSummary": {
"$ref": "#/$defs/probeSummary"
}
},
"additionalProperties": true
}
},
"summary": {
"type": "object",
"required": [
"totalProjects",
"totalIssues",
"hasSystemErrors"
],
"properties": {
"counts": {
"$ref": "#/$defs/counts"
},
"totalProjects": {
"type": "integer",
"minimum": 0
},
"totalIssues": {
"type": "integer",
"minimum": 0
},
"projectAdvisoryWarningProjects": {
"type": "integer",
"minimum": 0
},
"projectAdvisoryWarnings": {
"type": "integer",
"minimum": 0
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
},
"blockingFindings": {
"type": "integer",
"minimum": 0
},
"advisoryFindings": {
"type": "integer",
"minimum": 0
},
"unknownFindings": {
"type": "integer",
"minimum": 0
},
"contradictionFindings": {
"type": "integer",
"minimum": 0
},
"hasSystemErrors": {
"type": "boolean"
},
"scopeProvenance": {
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": true
},
"driftDelta": {
"type": "object",
"additionalProperties": true
},
"scoreBreakdown": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"contract": {
"type": "object",
"additionalProperties": true
},
"policyProfile": {
"$ref": "#/$defs/policyProfile"
}
},
"$defs": {
"counts": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"dependencyAudit": {
"type": "object",
"required": [
"schemaVersion",
"runtime",
"ecosystem",
"tool",
"status",
"generatedAt",
"findingCount",
"blockingFindingCount",
"severityCounts",
"reason",
"limitations"
],
"properties": {
"schemaVersion": {
"const": "doctor-dependency-audit-v1"
},
"runtime": {
"enum": [
"node",
"bun",
"deno",
"python",
"go",
"java",
"rust",
"elixir",
"clojure",
"php",
"ruby",
"dotnet",
"scala",
"kotlin",
"c",
"cpp",
"unknown"
]
},
"ecosystem": {
"type": "string",
"minLength": 1
},
"tool": {
"type": "string",
"minLength": 1
},
"status": {
"enum": [
"clean",
"vulnerable",
"tool-unavailable",
"unsupported",
"failed"
]
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"invocation": {
"$ref": "#/$defs/commandInvocation"
},
"exitCode": {
"type": "integer"
},
"findingCount": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"blockingFindingCount": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"severityCounts": {
"type": "object",
"required": [
"low",
"moderate",
"high",
"critical",
"unknown"
],
"properties": {
"low": {
"type": "integer",
"minimum": 0
},
"moderate": {
"type": "integer",
"minimum": 0
},
"high": {
"type": "integer",
"minimum": 0
},
"critical": {
"type": "integer",
"minimum": 0
},
"unknown": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"subjects": {
"type": "array",
"items": {
"$ref": "#/$defs/dependencyAuditSubject"
}
},
"remediation": {
"$ref": "#/$defs/dependencyRemediation"
},
"reason": {
"type": "string",
"minLength": 1
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"dependencyRemediation": {
"type": "object",
"required": [
"disposition",
"compatibleFixAvailable",
"breakingFixAvailable",
"candidates"
],
"properties": {
"disposition": {
"enum": [
"not-needed",
"compatible",
"breaking-only",
"mixed",
"none",
"unknown"
]
},
"compatibleFixAvailable": {
"type": "boolean"
},
"breakingFixAvailable": {
"type": "boolean"
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"required": [
"packageName",
"breaking"
],
"properties": {
"packageName": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"minLength": 1
},
"breaking": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"resolutionCandidates": {
"type": "array",
"items": {
"$ref": "#/$defs/dependencyResolutionCandidate"
}
}
},
"additionalProperties": false
},
"dependencyResolutionCandidate": {
"type": "object",
"required": [
"packageName",
"relationship",
"strategies",
"risk",
"autoExecutable",
"requiresCompatibilityVerification",
"ownerPackages",
"advisoryIds",
"reason"
],
"properties": {
"packageName": {
"type": "string",
"minLength": 1
},
"relationship": {
"enum": [
"direct",
"transitive",
"unknown"
]
},
"strategies": {
"type": "array",
"items": {
"enum": [
"direct-upgrade",
"owner-upgrade",
"constraint-update",
"transitive-override",
"replacement",
"policy-exception",
"upstream-wait"
]
},
"minItems": 1,
"uniqueItems": true
},
"risk": {
"enum": [
"safe",
"guarded",
"breaking",
"unknown"
]
},
"autoExecutable": {
"type": "boolean"
},
"requiresCompatibilityVerification": {
"type": "boolean"
},
"currentVersion": {
"type": "string",
"minLength": 1
},
"currentRange": {
"type": "string",
"minLength": 1
},
"vulnerableRange": {
"type": "string",
"minLength": 1
},
"safeVersionConstraint": {
"type": "string",
"minLength": 1
},
"ownerPackages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"advisoryIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"reason": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"dependencyAuditSubject": {
"type": "object",
"required": [
"name",
"advisoryIds",
"severities"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"minLength": 1
},
"direct": {
"type": "boolean"
},
"advisoryIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"severities": {
"type": "array",
"items": {
"enum": [
"low",
"moderate",
"high",
"critical",
"unknown"
]
},
"uniqueItems": true
}
},
"additionalProperties": false
},
"scoreComponent": {
"type": "object",
"required": [
"errors"
],
"properties": {
"percent": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"total": {
"type": "integer",
"minimum": 0
},
"passed": {
"type": "integer",
"minimum": 0
},
"warnings": {
"type": "integer",
"minimum": 0
},
"errors": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"healthScore": {
"type": "object",
"required": [
"errors"
],
"properties": {
"percent": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"total": {
"type": "integer",
"minimum": 0
},
"passed": {
"type": "integer",
"minimum": 0
},
"warnings": {
"type": "integer",
"minimum": 0
},
"errors": {
"type": "integer",
"minimum": 0
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
},
"presentation": {
"$ref": "#/$defs/healthScorePresentation"
},
"components": {
"type": "object",
"required": [
"host",
"projects"
],
"properties": {
"host": {
"$ref": "#/$defs/scoreComponent"
},
"projects": {
"$ref": "#/$defs/scoreComponent"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"healthScorePresentation": {
"type": "object",
"required": [
"policy",
"diagnosticPassRatePercent",
"blockingFindings",
"advisoryFindings",
"unknownFindings",
"contradictionFindings",
"notApplicableChecks",
"label"
],
"properties": {
"policy": {
"const": "doctor-multi-axis-v1"
},
"diagnosticPassRatePercent": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"blockingFindings": {
"type": "integer",
"minimum": 0
},
"advisoryFindings": {
"type": "integer",
"minimum": 0
},
"unknownFindings": {
"type": "integer",
"minimum": 0
},
"contradictionFindings": {
"type": "integer",
"minimum": 0
},
"notApplicableChecks": {
"type": "integer",
"minimum": 0
},
"label": {
"const": "diagnostic-pass-rate"
}
},
"additionalProperties": false
},
"probeSummary": {
"type": "object",
"required": [
"total",
"passed",
"warnings",
"failed",
"blockingFindings",
"advisoryFindings",
"verdict"
],
"properties": {
"total": {
"type": "integer",
"minimum": 0
},
"passed": {
"type": "integer",
"minimum": 0
},
"warnings": {
"type": "integer",
"minimum": 0
},
"failed": {
"type": "integer",
"minimum": 0
},
"blockingFindings": {
"type": "integer",
"minimum": 0
},
"advisoryFindings": {
"type": "integer",
"minimum": 0
},
"unknownFindings": {
"type": "integer",
"minimum": 0
},
"contradictionFindings": {
"type": "integer",
"minimum": 0
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
}
},
"additionalProperties": false
},
"freshness": {
"type": "object",
"required": [
"category",
"generatedAt",
"ttlSeconds",
"status",
"verifyBeforeUse",
"reason"
],
"properties": {
"category": {
"enum": [
"structure",
"verification",
"state"
]
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"ttlSeconds": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"status": {
"enum": [
"fresh",
"stale",
"unknown"
]
},
"verifyBeforeUse": {
"type": "boolean"
},
"reason": {
"type": "string"
}
},
"additionalProperties": false
},
"evidenceFreshness": {
"type": "object",
"required": [
"generatedAt",
"status",
"staleProbeCount",
"unknownProbeCount",
"liveStateProbeCount",
"verifyBeforeUseProbeCount"
],
"properties": {
"generatedAt": {
"type": "string",
"format": "date-time"
},
"status": {
"enum": [
"fresh",
"stale",
"unknown"
]
},
"staleProbeCount": {
"type": "integer",
"minimum": 0
},
"unknownProbeCount": {
"type": "integer",
"minimum": 0
},
"liveStateProbeCount": {
"type": "integer",
"minimum": 0
},
"verifyBeforeUseProbeCount": {
"type": "integer",
"minimum": 0
},
"oldestProbeGeneratedAt": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
},
"repairIntent": {
"type": "object",
"required": [
"mode",
"confidence",
"primaryActionLabel",
"requiresApproval",
"requiresFreshEvidence",
"reason",
"relatedCommands"
],
"properties": {
"mode": {
"enum": [
"none",
"run-command",
"edit-file",
"review-required",
"verify-before-fix",
"refresh-evidence",
"manual-guidance"
]
},
"confidence": {
"enum": [
"high",
"medium",
"low"
]
},
"primaryActionLabel": {
"type": "string"
},
"requiresApproval": {
"type": "boolean"
},
"requiresFreshEvidence": {
"type": "boolean"
},
"reason": {
"type": "string"
},
"relatedCommands": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"policyProfile": {
"type": "object",
"required": [
"name",
"exitOnErrors",
"exitOnWarnings",
"warningExitCode",
"advisoryWarningsBlockRelease",
"description"
],
"properties": {
"name": {
"enum": [
"local",
"ci",
"release",
"enterprise-strict"
]
},
"exitOnErrors": {
"const": true
},
"exitOnWarnings": {
"type": "boolean"
},
"warningExitCode": {
"enum": [
0,
1,
2
]
},
"advisoryWarningsBlockRelease": {
"type": "boolean"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"probe": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string",
"minLength": 1
},
"status": {
"enum": [
"pass",
"warn",
"fail"
]
},
"severity": {
"enum": [
"info",
"warn",
"error"
]
},
"scope": {
"type": "string"
},
"applicability": {
"enum": [
"applicable",
"not-applicable",
"unknown"
]
},
"reason": {
"type": "string"
},
"recommendation": {
"type": "string"
},
"freshness": {
"$ref": "#/$defs/freshness"
},
"issueClass": {
"enum": [
"dependency",
"environment",
"security",
"test",
"quality",
"container",
"deployment",
"runtime",
"workspace-contract",
"source-tree",
"framework",
"configuration",
"custom",
"unknown"
]
},
"operationalImpact": {
"enum": [
"none",
"developer-friction",
"ci-risk",
"release-risk",
"security-risk",
"runtime-risk",
"customer-risk"
]
},
"repairIntent": {
"$ref": "#/$defs/repairIntent"
},
"repairCapability": {
"$ref": "#/$defs/repairCapability"
}
},
"additionalProperties": true
},
"repairCapability": {
"type": "object",
"required": [
"id",
"issueId",
"title",
"status",
"fixKind",
"risk",
"canAutoFix",
"canEditFiles",
"requiresApproval",
"requiresReview",
"files",
"refreshCommands",
"reason"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"issueId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1
},
"status": {
"enum": [
"available",
"manual",
"blocked"
]
},
"fixKind": {
"enum": [
"package-json-script",
"file-create",
"file-append",
"file-copy",
"dependency-sync",
"command",
"manual"
]
},
"risk": {
"enum": [
"safe",
"guarded",
"invasive"
]
},
"canAutoFix": {
"type": "boolean"
},
"canEditFiles": {
"type": "boolean"
},
"requiresApproval": {
"type": "boolean"
},
"requiresReview": {
"type": "boolean"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"command": {
"type": "string"
},
"invocation": {
"$ref": "#/$defs/commandInvocation"
},
"strategy": {
"type": "array",
"items": {
"$ref": "#/$defs/repairStrategyStage"
}
},
"transaction": {
"$ref": "#/$defs/dependencyRepairTransaction"
},
"operation": {
"$ref": "#/$defs/repairOperation"
},
"verifyCommand": {
"type": "string"
},
"refreshCommands": {
"type": "array",
"items": {
"type": "string"
}
},
"reason": {
"type": "string"
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true
},
"dependencyRepairTransaction": {
"type": "object",
"required": [
"schemaVersion",
"kind",
"state",
"projectPath",
"ecosystem",
"requiredStages",
"completion"
],
"properties": {
"schemaVersion": {
"const": "workspai.doctor-dependency-repair-transaction.v1"
},
"kind": {
"enum": [
"dependency-security",
"dependency-materialization"
]
},
"state": {
"const": "planned"
},
"projectPath": {
"type": "string",
"minLength": 1
},
"ecosystem": {
"type": "string",
"minLength": 1
},
"sourceMutationRequired": {
"type": "boolean"
},
"observableState": {
"enum": [
"runtime-dependency-tree"
]
},
"requiredStages": {
"type": "array",
"items": {
"enum": [
"reconcile",
"audit",
"test",
"build"
]
},
"uniqueItems": true
},
"completion": {
"type": "object",
"required": [
"manifestLockConsistent",
"declaredTestsPass",
"declaredBuildPass",
"canonicalVerificationRequired"
],
"properties": {
"manifestLockConsistent": {
"const": true
},
"auditClean": {
"const": true
},
"installedTreePresent": {
"const": true
},
"declaredTestsPass": {
"const": true
},
"declaredBuildPass": {
"const": true
},
"canonicalVerificationRequired": {
"const": true
}
},
"additionalProperties": false
}
},
"allOf": [
{
"if": {
"properties": {
"kind": {
"const": "dependency-security"
}
}
},
"then": {
"properties": {
"completion": {
"type": "object",
"properties": {
"auditClean": {
"const": true
}
},
"required": [
"auditClean"
]
}
}
}
},
{
"if": {
"properties": {
"kind": {
"const": "dependency-materialization"
}
}
},
"then": {
"required": [
"sourceMutationRequired",
"observableState"
],
"properties": {
"sourceMutationRequired": {
"const": false
},
"observableState": {
"const": "runtime-dependency-tree"
},
"completion": {
"type": "object",
"properties": {
"installedTreePresent": {
"const": true
}
},
"required": [
"installedTreePresent"
]
}
}
}
}
],
"additionalProperties": false
},
"commandInvocation": {
"type": "object",
"required": [
"cwd",
"executable",
"args"
],
"properties": {
"cwd": {
"type": "string",
"minLength": 1
},
"executable": {
"type": "string",
"minLength": 1
},
"args": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"repairStrategyStage": {
"type": "object",
"required": [
"id",
"kind",
"description",
"risk",
"continueWhen"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"diagnose",
"safe-fix",
"targeted-upgrade",
"verify",
"exception-review"
]
},
"description": {
"type": "string",
"minLength": 1
},
"risk": {
"enum": [
"safe",
"guarded",
"invasive"
]
},
"invocation": {
"$ref": "#/$defs/commandInvocation"
},
"continueWhen": {
"enum": [
"always",
"previous-passed",
"blocker-remains",
"manual-decision"
]
}
},
"additionalProperties": false
},
"repairOperation": {
"type": "object",
"required": [
"type",
"path"
],
"properties": {
"type": {
"enum": [
"file-create",
"file-append",
"file-copy",
"package-json-script",
"json-edit",
"env-key-add",
"makefile-target"
]
},
"sourcePath": {
"type": "string",
"minLength": 1
},
"path": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string"
},
"overwrite": {
"type": "boolean"
},
"lines": {
"type": "array",
"items": {
"type": "string"
}
},
"ensureNewline": {
"type": "boolean"
},
"scriptName": {
"type": "string"
},
"scriptValue": {
"type": "string"
},
"edits": {
"type": "array",
"items": {
"type": "object",
"required": [
"pointer",
"value"
],
"properties": {
"pointer": {
"type": "string"
},
"value": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
},
"additionalProperties": false
}
},
"keys": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"value"
],
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
},
"comment": {
"type": "string"
}
},
"additionalProperties": false
}
},
"target": {
"type": "string"
},
"command": {
"type": "string"
},
"phony": {
"type": "boolean"
}
},
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "file-create"
}
}
},
"then": {
"required": [
"content",
"overwrite"
],
"properties": {
"content": {},
"overwrite": {
"const": false
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "file-append"
}
}
},
"then": {
"required": [
"lines",
"ensureNewline"
],
"properties": {
"lines": {},
"ensureNewline": {}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "file-copy"
}
}
},
"then": {
"required": [
"sourcePath",
"overwrite"
],
"properties": {
"sourcePath": {},
"overwrite": {
"const": false
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "package-json-script"
}
}
},
"then": {
"required": [
"scriptName",
"scriptValue"
],
"properties": {
"scriptName": {},
"scriptValue": {}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "json-edit"
}
}
},
"then": {
"required": [
"edits"
],
"properties": {
"edits": {}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "env-key-add"
}
}
},
"then": {
"required": [
"keys"
],
"properties": {
"keys": {}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "makefile-target"
}
}
},
"then": {
"required": [
"target",
"command",
"phony"
],
"properties": {
"target": {},
"command": {},
"phony": {}
}
}
}
],
"additionalProperties": false
}
},
"additionalProperties": true
}