workspai 0.55.1 → 0.56.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.
Files changed (163) hide show
  1. package/contracts/artifact-remediation-plan.v1.json +110 -2
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +29 -1
  3. package/contracts/doctor-project-evidence.v1.json +68 -2
  4. package/contracts/doctor-remediation-plan.v1.json +29 -2
  5. package/contracts/doctor-workspace-evidence.v1.json +68 -2
  6. package/contracts/extension-cli-compatibility.v1.json +6 -1
  7. package/contracts/published-contract-catalog.v1.json +25 -0
  8. package/contracts/runtime-command-surface.v1.json +63 -0
  9. package/contracts/workspace-intelligence/doctor-capabilities.v1.json +133 -0
  10. package/contracts/workspace-intelligence/doctor-diagnosis.v1.json +273 -0
  11. package/contracts/workspace-intelligence/doctor-graph-diagnosis.v1.json +3 -0
  12. package/contracts/workspace-intelligence/doctor-receipt.v1.json +136 -0
  13. package/contracts/workspace-intelligence/doctor-summary.v1.json +99 -0
  14. package/contracts/workspace-intelligence/doctor-validation.v1.json +109 -0
  15. package/contracts/workspace-intelligence/project-context-agent.v1.json +110 -0
  16. package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +25 -0
  17. package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +36 -0
  18. package/contracts/workspace-intelligence/workspace-knowledge-search.v1.json +54 -0
  19. package/dist/analyze-HJ774J3E.js +1 -0
  20. package/dist/{artifact-remediation-plan-O3YIULQN.js → artifact-remediation-plan-BPLON5VX.js} +1 -1
  21. package/dist/autopilot-release-CH57CGET.js +1 -0
  22. package/dist/capabilities-command-WEOGFCWF.js +1 -0
  23. package/dist/chunk-2647BYBC.js +1 -0
  24. package/dist/chunk-2L4PSZQB.js +1 -0
  25. package/dist/chunk-3U4VLIGW.js +1 -0
  26. package/dist/chunk-5BGPGNRQ.js +2 -0
  27. package/dist/chunk-5EPPPMAS.js +1 -0
  28. package/dist/{chunk-M5ICGR55.js → chunk-5RL254O2.js} +1 -1
  29. package/dist/chunk-5ZA4JYOP.js +1 -0
  30. package/dist/{chunk-AMB42V2F.js → chunk-64JUYYRC.js} +1 -1
  31. package/dist/chunk-664GXRLD.js +1 -0
  32. package/dist/chunk-6HCAGHCY.js +8 -0
  33. package/dist/chunk-7PNARN6S.js +4 -0
  34. package/dist/chunk-7Y3KVZJF.js +8 -0
  35. package/dist/{chunk-WIO6L24E.js → chunk-ADL3CK44.js} +1 -1
  36. package/dist/chunk-AO2ZI42U.js +4 -0
  37. package/dist/chunk-BDN32Y2N.js +81 -0
  38. package/dist/chunk-D4RST2HE.js +1 -0
  39. package/dist/{chunk-6HJJHEL6.js → chunk-DIZSHNZ5.js} +1 -1
  40. package/dist/chunk-DOIZANFA.js +2 -0
  41. package/dist/{chunk-HY3RMPW5.js → chunk-E53BGUOW.js} +1 -1
  42. package/dist/{chunk-FZCYTRBQ.js → chunk-ESWFBSYM.js} +1 -1
  43. package/dist/chunk-GBMCHFOV.js +1 -0
  44. package/dist/{chunk-HUPLAFZQ.js → chunk-HASVV34S.js} +1 -1
  45. package/dist/chunk-IZLEMTES.js +1 -0
  46. package/dist/chunk-KR7CIEQR.js +1 -0
  47. package/dist/chunk-KS4FB5W7.js +6 -0
  48. package/dist/chunk-LYVDRRDO.js +2 -0
  49. package/dist/{chunk-IBPPMOHM.js → chunk-NHTLE3WN.js} +1 -1
  50. package/dist/chunk-NS53IPAC.js +1 -0
  51. package/dist/{chunk-YTLUT6IA.js → chunk-OX53L237.js} +2 -2
  52. package/dist/chunk-PKIRVQLG.js +1 -0
  53. package/dist/chunk-QAF26ZQX.js +36 -0
  54. package/dist/{chunk-NWQ5VWUW.js → chunk-QFCKHUEP.js} +1 -1
  55. package/dist/chunk-QRWWYL52.js +88 -0
  56. package/dist/chunk-QTCZPS5I.js +1 -0
  57. package/dist/{chunk-WSAFBPS5.js → chunk-SV2SP22H.js} +4 -4
  58. package/dist/chunk-T5YRFRJV.js +1 -0
  59. package/dist/chunk-UQEQ6CXU.js +1 -0
  60. package/dist/chunk-V5EYVQ63.js +1 -0
  61. package/dist/chunk-VGJVIHHR.js +1 -0
  62. package/dist/{chunk-MRFN5ZQP.js → chunk-W5ZFXKSL.js} +1 -1
  63. package/dist/chunk-WLCBXCZV.js +5 -0
  64. package/dist/chunk-WOTTSPSF.js +2 -0
  65. package/dist/chunk-X7FYEKLI.js +1 -0
  66. package/dist/chunk-XH7PDHBF.js +1 -0
  67. package/dist/{chunk-KFKZOPZC.js → chunk-XMTLKDPP.js} +1 -1
  68. package/dist/chunk-YJTEMJFV.js +3 -0
  69. package/dist/chunk-YM77FQB3.js +8 -0
  70. package/dist/chunk-ZCPT6KC3.js +6 -0
  71. package/dist/chunk-ZPA6ECBJ.js +7 -0
  72. package/dist/{create-3NSOY7CA.js → create-DLUWG46F.js} +1 -1
  73. package/dist/doctor-IZ4YOCYE.js +1 -0
  74. package/dist/index.d.ts +15 -0
  75. package/dist/index.js +168 -168
  76. package/dist/pipeline-IBQYDLFF.js +5 -0
  77. package/dist/{project-intelligence-lens-ZOAWXYC5.js → project-intelligence-lens-SIU7IXKG.js} +1 -1
  78. package/dist/project-test-coverage-FRMVYTFB.js +1 -0
  79. package/dist/verified-goal-M4GPOXNL.js +1 -0
  80. package/dist/{workspace-C4UETGY7.js → workspace-3AAOUELG.js} +1 -1
  81. package/dist/{workspace-agent-sync-446AXPHJ.js → workspace-agent-sync-QGYLY7HH.js} +1 -1
  82. package/dist/{workspace-archive-VHUPOBAV.js → workspace-archive-BA3ONVXX.js} +1 -1
  83. package/dist/{workspace-context-XSECHC7O.js → workspace-context-JCLPRYNC.js} +1 -1
  84. package/dist/workspace-contract-IUUPBQXU.js +1 -0
  85. package/dist/workspace-explain-CZGBVDE6.js +1 -0
  86. package/dist/workspace-explain-contract-KVQO57RC.js +1 -0
  87. package/dist/{workspace-feedback-WXE7NVMV.js → workspace-feedback-PCZKXG5R.js} +1 -1
  88. package/dist/{workspace-foundation-3EVAQ5X6.js → workspace-foundation-7IGMO4CW.js} +1 -1
  89. package/dist/{workspace-graph-stream-AJPS45FD.js → workspace-graph-stream-5YMLJXAJ.js} +1 -1
  90. package/dist/workspace-graph-token-efficiency-HK4KNWWP.js +1 -0
  91. package/dist/{workspace-history-YY7YRDOH.js → workspace-history-CHJOABME.js} +1 -1
  92. package/dist/{workspace-intelligence-FWRB47EJ.js → workspace-intelligence-XHSUFTAT.js} +1 -1
  93. package/dist/workspace-intelligence-evaluation-YMY3C5AW.js +1 -0
  94. package/dist/{workspace-intelligence-runner-SMEAB4CO.js → workspace-intelligence-runner-EN5V4KSC.js} +1 -1
  95. package/dist/workspace-intelligence-runtime-registry-NCVHKCMP.js +1 -0
  96. package/dist/workspace-knowledge-graph-VWQTIEYK.js +1 -0
  97. package/dist/{workspace-knowledge-graph-query-EKHIE3E2.js → workspace-knowledge-graph-query-TXA3KVUV.js} +1 -1
  98. package/dist/workspace-knowledge-graph-snapshot-WB62AVDK.js +1 -0
  99. package/dist/workspace-mcp-serve-NCAGGWQS.js +3 -0
  100. package/dist/{workspace-model-MNJOGBPP.js → workspace-model-NXFIKX26.js} +1 -1
  101. package/dist/{workspace-onboarding-5KO7Z7AD.js → workspace-onboarding-OP22NHQ4.js} +1 -1
  102. package/dist/{workspace-readme-4S6PJ74A.js → workspace-readme-IVJXSIBS.js} +1 -1
  103. package/dist/{workspace-registry-summary-GPJEL7K7.js → workspace-registry-summary-A5VDPRHU.js} +1 -1
  104. package/dist/workspace-repair-engine-N4KXNSVL.js +3 -0
  105. package/dist/workspace-run-PXKC3ELS.js +1 -0
  106. package/dist/{workspace-verify-C6HWHRLJ.js → workspace-verify-TUVLFPPN.js} +1 -1
  107. package/dist/{workspace-watch-DLPHLF5R.js → workspace-watch-2ZNOYSUQ.js} +1 -1
  108. package/docs/commands-reference.md +35 -6
  109. package/docs/contracts/ARTIFACT_CATALOG.md +6 -1
  110. package/docs/contracts/README.md +5 -0
  111. package/docs/doctor-command.md +158 -7
  112. package/docs/graph-benchmark-methodology.md +13 -0
  113. package/docs/workspace-intelligence-runner.md +4 -0
  114. package/docs/workspace-knowledge-graph.md +53 -4
  115. package/docs/workspace-run.md +14 -3
  116. package/package.json +10 -3
  117. package/dist/analyze-AAZEJ4FC.js +0 -1
  118. package/dist/autopilot-release-3H5FTF6H.js +0 -1
  119. package/dist/chunk-2PY65U6X.js +0 -5
  120. package/dist/chunk-3DONU3DU.js +0 -1
  121. package/dist/chunk-44VJHNZB.js +0 -1
  122. package/dist/chunk-5XDPQ3CB.js +0 -1
  123. package/dist/chunk-7AR5PDLD.js +0 -1
  124. package/dist/chunk-7KKP7RNB.js +0 -3
  125. package/dist/chunk-7S4QNH5A.js +0 -5
  126. package/dist/chunk-7T4TSV5C.js +0 -1
  127. package/dist/chunk-BYVTHIC3.js +0 -2
  128. package/dist/chunk-CEIJIFY7.js +0 -88
  129. package/dist/chunk-D37NEYV6.js +0 -1
  130. package/dist/chunk-DPMO4U3Z.js +0 -8
  131. package/dist/chunk-DS4UYMLX.js +0 -1
  132. package/dist/chunk-FQLB4BIC.js +0 -7
  133. package/dist/chunk-GDU7VP6G.js +0 -1
  134. package/dist/chunk-H7P7SSUW.js +0 -75
  135. package/dist/chunk-KVUYAYTY.js +0 -8
  136. package/dist/chunk-MQ73VS4E.js +0 -2
  137. package/dist/chunk-NYHVCFBT.js +0 -1
  138. package/dist/chunk-OUBBBC7T.js +0 -36
  139. package/dist/chunk-P7K5RHJC.js +0 -2
  140. package/dist/chunk-PS5F4DCT.js +0 -1
  141. package/dist/chunk-QZ7PNMVP.js +0 -1
  142. package/dist/chunk-RA24WQLF.js +0 -1
  143. package/dist/chunk-RMXXK64P.js +0 -4
  144. package/dist/chunk-S7Z4DP3P.js +0 -2
  145. package/dist/chunk-SJLUE6AY.js +0 -1
  146. package/dist/chunk-TEHQ7XKK.js +0 -3
  147. package/dist/chunk-UFOCUHG3.js +0 -1
  148. package/dist/chunk-WD2XDMGB.js +0 -1
  149. package/dist/chunk-XVRJVKOX.js +0 -1
  150. package/dist/doctor-UEFFNAUD.js +0 -1
  151. package/dist/pipeline-B5S6P36F.js +0 -5
  152. package/dist/project-test-coverage-44ZPCOPV.js +0 -1
  153. package/dist/verified-goal-KOU3WJYN.js +0 -1
  154. package/dist/workspace-contract-AYFTZIKM.js +0 -1
  155. package/dist/workspace-explain-ZEWVKDBF.js +0 -1
  156. package/dist/workspace-explain-contract-6CCC26QT.js +0 -1
  157. package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +0 -1
  158. package/dist/workspace-intelligence-evaluation-UP2K3L35.js +0 -1
  159. package/dist/workspace-intelligence-runtime-registry-MRSF7RTT.js +0 -1
  160. package/dist/workspace-knowledge-graph-BMMM2FUE.js +0 -1
  161. package/dist/workspace-mcp-serve-X6C3AWTA.js +0 -3
  162. package/dist/workspace-repair-engine-GWTXVVKB.js +0 -3
  163. package/dist/workspace-run-FJTBX4JQ.js +0 -1
@@ -1,6 +1,12 @@
1
1
  # Commands Reference
2
2
 
3
- Complete CLI syntax for the Workspai CLI. For behavior and workflows, see [workspace-operations.md](./workspace-operations.md) and [OPEN_SOURCE_USER_SCENARIOS.md](./OPEN_SOURCE_USER_SCENARIOS.md).
3
+ Human-readable CLI syntax for the Workspai CLI. The machine-complete command,
4
+ argument, option, alias, ownership, and integrity inventory is available through
5
+ `workspai commands --json` and
6
+ [`runtime-command-surface.v1.json`](../contracts/runtime-command-surface.v1.json).
7
+ For behavior and workflows, see
8
+ [workspace-operations.md](./workspace-operations.md) and
9
+ [OPEN_SOURCE_USER_SCENARIOS.md](./OPEN_SOURCE_USER_SCENARIOS.md).
4
10
 
5
11
  ## Workspace lifecycle
6
12
 
@@ -44,6 +50,7 @@ profile.
44
50
 
45
51
  ```bash
46
52
  npx workspai workspace sync [--json]
53
+ npx workspai workspace registry [--json]
47
54
  npx workspai workspace policy show
48
55
  npx workspai workspace policy set <key> <value>
49
56
  npx workspai doctor
@@ -70,10 +77,11 @@ npx workspai workspace snapshot [--workspace <path>] [--json] [--include-paths]
70
77
  npx workspai workspace diff --from <snapshot-or-model|git[:ref]> [--workspace <path>] [--json] [--include-paths] [--include-evidence] [--scan-depth <count>] [--strict]
71
78
  npx workspai workspace impact --from <workspace-diff-report> [--workspace <path>] [--scope project:<name>] [--json] [--include-paths] [--include-evidence] [--scan-depth <count>] [--strict]
72
79
  npx workspai workspace verify [--from-impact <file>] [--workspace <path>] [--scope project:<name>] [--strict] [--json] [--include-paths] [--include-evidence] [--scan-depth <count>]
73
- npx workspai workspace graph [emit|explain|search|benchmark|entities|evidence|path|overlay|dot|mermaid|jsonld|graphml|gexf] [key] [value] [--from <graph.json>] [--output <file>] [--limit <1..100>] [--workspace <path>] [--scope project:<name>] [--json] [--include-paths] [--include-evidence] [--scan-depth <count>]
80
+ npx workspai workspace graph [emit|explain|search|benchmark|entities|evidence|path|overlay|dot|mermaid|jsonld|graphml|gexf] [key] [value] [--from <graph.json>] [--output <file>] [--limit <1..100>] [--workspace <path>] [--scope project:<name>] [--refresh-graph] [--json] [--include-paths] [--include-evidence] [--scan-depth <count>]
74
81
  npx workspai workspace eval [init <task> [strategy]|record|status|report|compare --from <report>] [--workspace <path>] [--output <file>] [--json]
75
82
  npx workspai workspace watch [--workspace <path>] [--json] [--graph-stream] [--once] [--scan-depth <count>]
76
- npx workspai workspace explain|why <target> [--workspace <path>] [--json] [--write]
83
+ npx workspai workspace explain <target> [--workspace <path>] [--json] [--write]
84
+ npx workspai workspace why <target> [--workspace <path>] [--json] [--write]
77
85
  npx workspai workspace trace --from <workspace-diff-report> [--workspace <path>] [--json] [--write]
78
86
  printf '%s\n' '{"actionId":"fix-api","summary":"API tests passed","outcome":"ok"}' | npx workspai workspace feedback record [--workspace <path>] --json
79
87
  npx workspai workspace mcp serve [--workspace <path>] [--json]
@@ -96,7 +104,7 @@ npx workspai project restore <archive> [--name <project-name>] [--force] [--dry-
96
104
  npx workspai project delete <name> [--permanent --confirm <name>] [--dry-run] [--json]
97
105
  npx workspai project workspace [status|relink] [--workspace <path>] [--project <path>] [--json]
98
106
  npx workspai workspace init
99
- npx workspai workspace run <init|test|build|start|custom-stage> [--workspace <path>] [--scope project:<name>] [--affected] [--blast-radius] [--since <ref>] [--parallel] [--max-workers <n>] [--continue-on-error] [--reuse-passed] [--strict] [--no-gates] [--json]
107
+ npx workspai workspace run <init|test|build|start|custom-stage> [--workspace <path>] [--scope project:<name>] [--plan] [--runtime <runtime>] [--affected] [--blast-radius] [--since <ref>] [--parallel] [--max-workers <n>] [--continue-on-error] [--reuse-passed] [--strict] [--no-gates] [--json]
100
108
  npx workspai infra plan [--workspace <path>] [--json] [--dry-run] [--verbose]
101
109
  npx workspai infra up [--workspace <path>] [--no-plan] [--build]
102
110
  npx workspai infra down [--workspace <path>] [--volumes]
@@ -183,6 +191,15 @@ that retrieval payload with the readable proof-indexed corpus using a labelled
183
191
  `characters / 4` estimate. It measures payload reduction only; it does not
184
192
  assert equivalent answer quality or model-specific billing savings.
185
193
 
194
+ Add `--scope project:<name>` to retrieve project-owned facts plus
195
+ workspace-level shared entities proven to be connected to that project. The
196
+ agent projection reports explicit omission budgets for relations, related
197
+ entities, proofs, aliases, attributes, and proof references. Read-oriented
198
+ `search`, `entities`, `evidence`, `path`, and `benchmark` modes reuse the
199
+ persisted graph only when its model binding, proofs, project scopes, and live
200
+ Git/Merkle input fingerprint still match. `--refresh-graph` bypasses that
201
+ compatible snapshot and rebuilds from current sources.
202
+
186
203
  `workspace graph jsonld|graphml|gexf` exports the current derived,
187
204
  evidence-backed Knowledge Graph for semantic, graph-analysis, and interactive
188
205
  2D/3D consumers. All five export modes accept `--output <file>`; Mermaid and
@@ -230,8 +247,11 @@ cross-runtime additions are allowed with a recommendation such as
230
247
  blocked before the project is registered. Rust is an extended runtime with
231
248
  Axum/Tauri scaffolding and Cargo lifecycle support. PHP is extended through
232
249
  Laravel and Composer lifecycle support. Observed runtimes such as C and C++ are
233
- still counted in the workspace runtime mix even when Workspai does not own a
234
- native scaffold for them.
250
+ counted in the workspace runtime mix even when Workspai does not own a native
251
+ scaffold for them. Existing CMake and Meson projects can also expose discovered
252
+ lifecycle units to `workspace run`; inspect them without execution using
253
+ `workspace run <stage> --plan`, and select one runtime family with
254
+ `--runtime <runtime>`.
235
255
 
236
256
  Core module/template commands are intentionally narrower than runtime detection.
237
257
  RapidKit Core modules are guaranteed only for RapidKit Core module-enabled kits:
@@ -287,8 +307,17 @@ governance while Core module mutation remains disabled.
287
307
  npx workspai cache <status|clear|prune|repair>
288
308
  npx workspai mirror <status|sync|verify|rotate>
289
309
  npx workspai infra <plan|up|down|status>
310
+ npx workspai ai <info|recommend|generate-embeddings|update-embeddings>
311
+ npx workspai config <show|ai|set-api-key|remove-api-key>
312
+ npx workspai product <manifest|plan>
313
+ npx workspai shell
290
314
  ```
291
315
 
316
+ These groups are part of the public CLI surface, but availability of an
317
+ operation can still depend on project runtime, optional provider configuration,
318
+ or product metadata. Use the action's `--help` and `workspai commands --json`
319
+ instead of inferring support from this compact synopsis.
320
+
292
321
  See [workspace-operations.md](./workspace-operations.md#workspace-infrastructure-sidecar) for infra discovery rules.
293
322
 
294
323
  ## Profiles
@@ -258,6 +258,11 @@ return bounded Knowledge Graph projections with proof references; `benchmark`
258
258
  measures corpus-versus-retrieval payload; `overlay --from` compares a proposed
259
259
  or earlier graph with the current graph; `emit` returns the complete
260
260
  interchange graph; and `dot|mermaid` render deterministic dependency views.
261
+ Read-oriented modes accept a persisted graph only after model binding, proof
262
+ freshness, canonical project scopes, and the live `hybrid-git-content-v2`
263
+ fingerprint pass. `--refresh-graph` bypasses that snapshot. Search and benchmark
264
+ accept `--scope project:<name>` and the agent projection reports explicit
265
+ omission budgets instead of silently expanding its payload.
261
266
  Canonical sources are `src/workspace-graph.ts`,
262
267
  `src/workspace-knowledge-graph-query.ts`,
263
268
  `src/workspace-knowledge-graph-change-overlay.ts`, and
@@ -409,7 +414,7 @@ canonical file. Legacy files remain readable during the compatibility window.
409
414
  2. **Workspace Intelligence chain:** run `workspace intelligence run --for-agent generic --strict --json` to preserve Model → Diff → Impact → Doctor + Contract Verify + Analyze → Readiness → Verify → Context → Agent Sync → Explain. `pipeline` is the broader governance/release orchestrator and `autopilot` is a separate release surface; neither redefines the canonical chain. Use `pipeline-last-run.json` only for the pipeline orchestration summary.
410
415
  3. **Do not** use `workspace.json.projects` (removed in schema 1.0).
411
416
  4. Prefer `schemaVersion` constants in each artifact; legacy `v1` on readiness is accepted when reading old reports.
412
- 5. **Agent retrieval:** start with `AGENTS.md` and `.workspai/reports/INDEX.json`, then use `workspace graph search <query> --limit <n> --json` or MCP `searchWorkspaceGraph` for question-sized facts. Follow returned proof paths to source evidence. Read the full context, model, or graph only when the bounded result is insufficient.
417
+ 5. **Agent retrieval:** start with `AGENTS.md` and `.workspai/reports/INDEX.json`, then use `workspace graph search <query> --limit <n> --json` or MCP `searchWorkspaceGraph` for question-sized facts. Use `--scope project:<name>` when the task has one registered project boundary, inspect `budget.omitted` before assuming the result is complete, and follow returned proof paths to source evidence. Read the full context, model, or graph only when the bounded result is insufficient.
413
418
  6. **Agent customization state:** use `.workspai/reports/agent-customization-pack.json` to inspect generated surfaces and drift; regenerate with `workspace agent-sync --write --refresh-context --preset enterprise`.
414
419
 
415
420
  ## Agent customization files (repo hooks)
@@ -59,6 +59,11 @@ Published under `../../contracts/` (not duplicated in this folder):
59
59
  - `release-readiness.v1.json` — release readiness gate evidence
60
60
  - `workspace-run-last.v1.json` — multi-stage workspace run evidence
61
61
  - `doctor-workspace-evidence.v1.json` / `doctor-project-evidence.v1.json` — doctor evidence
62
+ - `workspace-intelligence/doctor-diagnosis.v1.json` — runtime-neutral causal findings, proof bindings, confidence, unknowns, contradictions, and repair disposition embedded in Doctor evidence
63
+ - `workspace-intelligence/doctor-capabilities.v1.json` — fail-closed runtime/framework ownership, six-domain support levels, platform boundaries, repair modes, and extraction-safe adapter inventory
64
+ - `workspace-intelligence/doctor-validation.v1.json` — versioned disease-corpus results across every registered adapter, with bounded synthetic precision/recall and explicit limitations
65
+ - `workspace-intelligence/doctor-receipt.v1.json` — compact Doctor verdict, unambiguous counts, freshness, affected projects, blockers, and next-action handoff; full evidence remains canonical
66
+ - `workspace-intelligence/doctor-summary.v1.json` — bounded stdout contract emitted by `doctor --json=summary` for system, workspace, and project consumers
62
67
  - `doctor-remediation-plan.v2.json` — canonical persisted Doctor fix/plan Studio handoff contract (`v1` path is a deprecated compatibility alias)
63
68
  - `artifact-remediation-plan.v1.json` — cross-artifact Studio handoff for Bootstrap, Analyze, Readiness, Pipeline, Workspace Run, Workspace Verify, and Doctor plan bridging
64
69
  - `workspace-intelligence/workspace-repair-proposal.v1.json` — bounded, hash-pinned source changes and optional runtime-native validation proposed by an IDE model; proposals never execute themselves
@@ -59,6 +59,49 @@ Checks:
59
59
 
60
60
  > Compatibility note: `npx workspai doctor --project` also works.
61
61
 
62
+ ### 4) Capability truth and validation
63
+
64
+ ```bash
65
+ # Complete runtime/domain matrix
66
+ npx workspai doctor capabilities --json
67
+
68
+ # Ask what Doctor can prove for one runtime or framework
69
+ npx workspai doctor capabilities --runtime node --json
70
+ npx workspai doctor capabilities --framework "Spring Boot" --json
71
+
72
+ # Exercise every registered adapter against the versioned disease corpus
73
+ npx workspai doctor capabilities --validate --json
74
+
75
+ # Persist both governed artifacts in a workspace
76
+ npx workspai doctor capabilities --validate --write --workspace . --json
77
+ ```
78
+
79
+ Runtime and framework filters narrow only the command response. With `--write`, Doctor persists the
80
+ complete capability registry, never a filtered subset, so downstream consumers cannot mistake a
81
+ query result for canonical capability truth. Conflicting runtime/framework ownership fails closed
82
+ to the unknown adapter and records the conflict as an explicit limitation.
83
+
84
+ The capability matrix never turns absence into success. Each adapter declares all six diagnostic
85
+ domains as `native`, `portable`, `observable`, or `unsupported`, plus its limitations, platforms,
86
+ repair modes, runtime aliases, and framework ownership. An unknown runtime resolves to the
87
+ fail-closed fallback adapter: unsupported or unobserved evidence stays unknown and cannot produce a
88
+ healthy security claim.
89
+
90
+ `--validate` runs the same versioned disease classes through every registered runtime adapter. Its
91
+ precision and recall describe that deterministic synthetic corpus only. Real tool execution,
92
+ runtime-native fixtures, and Linux/macOS/Windows acceptance remain separate gates; the report says
93
+ so explicitly instead of presenting synthetic coverage as production accuracy.
94
+
95
+ With `--write`, consumers can read:
96
+
97
+ - `.workspai/reports/doctor-capabilities.json`
98
+ - `.workspai/reports/doctor-validation-last-run.json`
99
+
100
+ Contracts:
101
+
102
+ - `contracts/workspace-intelligence/doctor-capabilities.v1.json`
103
+ - `contracts/workspace-intelligence/doctor-validation.v1.json`
104
+
62
105
  ## Typical Usage
63
106
 
64
107
  ```bash
@@ -74,6 +117,9 @@ npx workspai doctor project
74
117
  # Machine-readable output
75
118
  npx workspai doctor workspace --json
76
119
 
120
+ # Compact agent/CI projection; full evidence is still written
121
+ npx workspai doctor workspace --fresh --json=summary
122
+
77
123
  # Attempt safe fixes (interactive)
78
124
  npx workspai doctor workspace --fix
79
125
 
@@ -87,6 +133,18 @@ npx workspai doctor project --json
87
133
  npx workspai doctor workspace --profile enterprise-strict --json
88
134
  ```
89
135
 
136
+ `--json` remains the complete backward-compatible payload. `--json=summary` returns a bounded
137
+ projection with the verdict, affected projects, explicit count categories, freshness, and artifact
138
+ locations. It never replaces or weakens the full Doctor evidence. `--fresh` bypasses the project
139
+ scan cache; the default cache also expires after five minutes (configurable with
140
+ `WORKSPAI_DOCTOR_CACHE_MAX_AGE_SECONDS`) so live security state cannot be reused indefinitely.
141
+
142
+ Every project or workspace run also writes
143
+ `.workspai/reports/doctor-receipt-last-run.json`. The receipt is a small governed handoff for IDEs,
144
+ CI, and agents: it distinguishes blocking causes, advisory findings, unknowns, dependency advisory
145
+ subjects, vulnerability findings, not-applicable checks, and the next safe action. The complete
146
+ probe and diagnosis evidence remains in `doctor-last-run.json` or `doctor-project-last-run.json`.
147
+
90
148
  ## One verdict, backed by every probe
91
149
 
92
150
  Doctor calculates one verdict from the host and every project probe:
@@ -102,6 +160,72 @@ summary; semantic validation rejects contradictory artifacts before they are
102
160
  written. Older v1 evidence remains readable so existing workspaces and IDEs do
103
161
  not break during migration.
104
162
 
163
+ ## Universal diagnosis core
164
+
165
+ Doctor normalizes every runtime-specific observation through one internal diagnosis boundary
166
+ before CLI, Studio, CI, or an agent consumes it. This boundary is intentionally kept inside the
167
+ CLI until its contracts stabilize; it does not depend on Commander, terminal rendering, or the
168
+ VS Code extension.
169
+
170
+ Project and workspace evidence publish the result under `project.diagnosis`:
171
+
172
+ - a stable causal key and typed finding status for every non-passing observation;
173
+ - confidence and diagnosis state (`confirmed`, `candidate`, or `unknown`) rather than fabricated
174
+ certainty;
175
+ - proof bindings for the originating probe, affected dependency, structured command, and repair
176
+ targets;
177
+ - repair disposition (`automatic`, `approval-required`, `manual`, or `unavailable`);
178
+ - causal groups that let Repair close one disease family without mixing unrelated guidance;
179
+ - explicit unknowns and contradictions when providers disagree or evidence is stale;
180
+ - diagnosis completeness and repair-coverage counts that cannot silently score empty/unsupported
181
+ evidence as healthy.
182
+
183
+ Completeness is measured across six canonical diagnostic domains—runtime, dependency, security,
184
+ configuration, test, and quality. Every domain is explicitly `clean`, `findings`,
185
+ `not-applicable`, `not-run`, or `stale`. An explicit `not-applicable` observation is retained as
186
+ evidence but does not become a warning or inflate passing counts. A provider that did not run, or
187
+ evidence that is no longer fresh, increases unknowns and prevents a 100% completeness claim.
188
+ Readiness and Workspace Verify consume this canonical diagnosis instead of independently
189
+ recounting legacy issue strings.
190
+
191
+ The same diagnosis contract is used for Node, Python, Go, JVM, Rust, .NET, PHP, Ruby, Elixir,
192
+ Clojure, Deno, Bun, Scala, Kotlin, C, C++, and unknown/custom projects. Runtime adapters gather
193
+ different evidence; the diagnosis, causality, safety, and verification vocabulary stays the same.
194
+ Composite projects publish every detected family under `project.runtimeFamilies`; Doctor keeps a
195
+ primary runtime for compatibility and explicitly warns when secondary runtimes need their own
196
+ project boundary or custom adapter instead of silently claiming full coverage. Every unevaluated
197
+ secondary runtime is also published as a diagnosis unknown and proportionally lowers diagnosis
198
+ completeness; a primary-only polyglot scan can never report 100%.
199
+
200
+ Workspace project boundaries come from the canonical workspace contract/registry when available.
201
+ A nested solution, test project, or manifest inside a registered project is treated as evidence for
202
+ that project—not silently promoted into another workspace project. Unregistered monorepos remain
203
+ discoverable, while an explicitly registered nested project remains an independent boundary.
204
+
205
+ Contract: `contracts/workspace-intelligence/doctor-diagnosis.v1.json`.
206
+
207
+ The internal ownership boundaries are deliberately narrow:
208
+
209
+ | Boundary | Owns | Must not own |
210
+ | ------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------- |
211
+ | Runtime sensors | Observable runtime, manifest, tool, source, and audit facts | Verdicts or speculative causality |
212
+ | Universal diagnosis | Causal reconciliation, confidence, proof binding, unknowns, and contradictions | File mutation or terminal/UI rendering |
213
+ | Doctor policy | Blocking/advisory projection, health score, and profile-specific gate semantics | Re-running sensors or inventing repairs |
214
+ | Remediation planner | Typed operations bound to `diagnosisFindingId` and `causalKey` | Reclassifying the disease |
215
+ | Repair engine | Approval, checkpoint, execution, validation, canonical verify, and rollback | Silently weakening Doctor policy |
216
+ | Consumers | Rendering and user/model interaction | Recomputing or overriding diagnosis and verdict |
217
+
218
+ This keeps Doctor internal today without turning `doctor.ts` into a public dependency boundary. A
219
+ future package extraction can move the diagnosis contract and engine without changing the evidence
220
+ or remediation protocol consumed by the CLI, Studio, CI, and agents.
221
+
222
+ The extraction seam is enforced in source and tests. `adapter-contract.ts`,
223
+ `capability-registry.ts`, `diagnosis-engine.ts`, and `validation-corpus.ts` are pure core modules:
224
+ they cannot import Commander, terminal styling, workspace discovery, or extension/UI code.
225
+ `capabilities-command.ts` is the CLI adapter that owns workspace resolution, artifact persistence,
226
+ and human rendering. A future `@workspai/doctor` package can therefore take the pure core without
227
+ moving command UX or creating a second source of truth.
228
+
105
229
  ## Graph-aware diagnosis
106
230
 
107
231
  When the project belongs to a workspace with a current model and Knowledge
@@ -128,6 +252,12 @@ This data is available under `project.graphDiagnosis` in project and workspace
128
252
  Doctor JSON evidence. Doctor rejects stale, invalid, or model-unbound graph
129
253
  evidence instead of presenting it as current.
130
254
 
255
+ Graph enrichment is deliberately bounded per finding and restricted to the selected project's
256
+ graph neighborhood. Doctor publishes a small set of affected candidates, verification targets,
257
+ source artifacts, and shortest proof paths; consumers can query the canonical graph for deeper
258
+ exploration. This prevents unrelated projects and repeated graph payloads from consuming an
259
+ agent's context budget.
260
+
131
261
  Graph reachability is deliberately described as a **structural impact
132
262
  candidate**, not runtime causality. It narrows investigation and gives Studio a
133
263
  proof-carrying starting point; final verification still comes from the
@@ -291,12 +421,12 @@ The remediation plan is intentionally ordered for Studio execution:
291
421
  | Phase | Purpose |
292
422
  | --------------------- | ------------------------------------------------------------------------------------- |
293
423
  | `dependency-baseline` | Restore package/runtime dependency baselines before other fixes |
294
- | `local-environment` | Seed local env files without overwriting operator-owned values |
424
+ | `local-environment` | Repair declared configuration contracts without inventing local secrets |
295
425
  | `source-hygiene` | Apply safe project-scoped hygiene files such as `.dockerignore` or `.gitignore` rules |
296
426
  | `command-contract` | Add missing test, quality, audit, or runtime command contracts |
297
427
  | `runtime-governance` | Run RapidKit/workspace initializers that may touch multiple project surfaces |
298
428
  | `manual-review` | Surface guidance that requires a human decision |
299
- | `generic-execution` | Last-resort shell remediation when no typed operation exists |
429
+ | `generic-execution` | Review-only legacy guidance when no typed operation or invocation exists |
300
430
 
301
431
  `dependsOn` lets Workspai avoid false loops: for example, a missing test script repair can depend on
302
432
  the project dependency baseline step, so Studio can run or ask for approval in the same order Doctor
@@ -371,9 +501,11 @@ safe `file-create` operation, and a `.gitignore` missing env-file rules can prod
371
501
  `file-append` operation. Workspai can render those operations as reviewable file edits before the
372
502
  operator approves the fix.
373
503
 
374
- Local environment seeding is also typed. When `.env.example` exists and `.env` is missing, Doctor
375
- emits a safe `file-copy` operation instead of an opaque shell copy command. The target is never
376
- overwritten.
504
+ `.env.example`, a config schema, or environment documentation is the portable configuration
505
+ contract. Doctor does **not** create `.env` implicitly: that file can contain operator-owned secrets
506
+ and its absence is not a health defect when a portable contract exists. A product-specific typed
507
+ operation may still create a non-secret local file when its own contract explicitly requires it and
508
+ the user approves the change.
377
509
 
378
510
  For Node projects without a security audit script, Doctor can emit a guarded
379
511
  `package-json-script` operation for `scripts.audit="npm audit --audit-level=moderate"`, giving CI,
@@ -419,6 +551,16 @@ These probes are intentionally evidence-first. Missing optional surfaces are sur
419
551
  or manual repair capabilities, while deterministic repairs are promoted into `--fix` only when the
420
552
  change is safe enough for Doctor to apply with approval and post-fix verification.
421
553
 
554
+ Workspace scans are bounded and cache-safe. Doctor fingerprints manifests plus relevant source,
555
+ test, and module trees, includes content hashes for small files, writes cache artifacts atomically,
556
+ and limits project concurrency (four workers by default; configurable with
557
+ `RAPIDKIT_DOCTOR_SCAN_CONCURRENCY`). Dependency trees and build outputs are represented by bounded
558
+ materialization sensors rather than recursively traversed. Repair/plan/apply always bypass scan
559
+ cache, and Java warm-up uses workspace-local Maven/Gradle cache paths so its postcondition is both
560
+ portable and observable. Dependency-audit cache keys hash the complete governed manifest/lockfile
561
+ inputs and use a bounded in-memory cache, so same-size lockfile changes cannot reuse stale security
562
+ evidence.
563
+
422
564
  Runtime-native probes add a second layer on top of the generic surface checks:
423
565
 
424
566
  | Runtime family | Native signals sampled by Doctor |
@@ -581,7 +723,7 @@ These fields are designed for release gates and extension timeline cards that mu
581
723
 
582
724
  ## Workspace JSON fields (AI/automation)
583
725
 
584
- `npx workspai doctor workspace --json` includes per-project metadata: `framework`, `frameworkKey`, `importStack`, `runtimeFamily`, `projectKind`, `supportTier`, `frameworkConfidence`, `probes`, and `repairCapabilities`.
726
+ `npx workspai doctor workspace --json` includes per-project metadata: `framework`, `frameworkKey`, `importStack`, `runtimeFamily`, `runtimeFamilies`, `projectKind`, `supportTier`, `frameworkConfidence`, `probes`, and `repairCapabilities`. Passing probes never retain an executable repair capability; only non-passing evidence can enter remediation planning.
585
727
 
586
728
  ## Project scope behavior
587
729
 
@@ -600,7 +742,16 @@ These fields are designed for release gates and extension timeline cards that mu
600
742
  - Project evidence: `doctor-project-evidence-v1`
601
743
  - Workspace scan cache: `doctor-workspace-cache-v2`
602
744
 
603
- Legacy evidence without `schemaVersion` is still accepted. Unknown versions are treated as invalid evidence. `readiness` and `workspace share` share the same validation path.
745
+ Recognizable legacy evidence without `schemaVersion` remains readable only when it exposes an
746
+ actual workspace/project Doctor shape. Arbitrary JSON objects, unknown versions, contradictory
747
+ score accounting, malformed typed repairs, and semantically invalid canonical diagnosis are
748
+ treated as missing or invalid evidence. Readiness and Workspace Verify enforce the same fail-closed
749
+ semantic boundary.
750
+
751
+ Typed file repairs resolve existing ancestors through the filesystem before mutation. A lexical
752
+ path under the project is rejected if a symbolic link escapes the governed project/workspace
753
+ boundary. The checkpointed `package-json-script` target is the exact file that is edited; JSON
754
+ pointer prototype segments and hidden multiline env/append values are rejected before execution.
604
755
 
605
756
  ## Related Workspace Commands
606
757
 
@@ -20,6 +20,7 @@ From a Workspai workspace:
20
20
  ```bash
21
21
  npx workspai workspace model --write --json
22
22
  npx workspai workspace graph benchmark "authentication endpoint" --limit 12 --json
23
+ npx workspai workspace graph benchmark "authentication endpoint" --scope project:api --limit 12 --json
23
24
  ```
24
25
 
25
26
  The result conforms to
@@ -34,6 +35,18 @@ It records:
34
35
  - unreadable artifacts rather than silently excluding them;
35
36
  - the estimate formula, reduction ratio, percentage, and claim boundary.
36
37
 
38
+ For linked projects, portable proof artifacts such as
39
+ `external/api/src/server.ts` are resolved through the canonical workspace
40
+ contract's `externalPath`. Resolution remains containment-checked beneath that
41
+ registered project root. A missing or unsafe mapping stays in
42
+ `unreadableArtifacts`; it is never silently dropped from the denominator
43
+ explanation.
44
+
45
+ The benchmark uses the same bounded agent projection as Graph search. A project
46
+ scope therefore includes facts owned by that project and connected
47
+ workspace-level shared entities, while the response's omission budget makes
48
+ payload caps explicit.
49
+
37
50
  ## Baseline and formula
38
51
 
39
52
  The current methodology is `indexed-corpus-vs-bounded-retrieval.v1`.
@@ -185,6 +185,10 @@ Automation must distinguish:
185
185
  Do not parse terminal prose. Read `status`, `exitCode`, `preflight`, `stages`,
186
186
  and their registered artifacts from the JSON report.
187
187
 
188
+ When Verify publishes `resolutionHints`, an evidence-backed step includes its
189
+ exact `sourceCommand` and `sourceArtifact`. Consumers should run that producer
190
+ command instead of substituting a generic Analyze refresh, then re-run Verify.
191
+
188
192
  ## Verified engineering goals
189
193
 
190
194
  The intelligence runner answers what is true now. A verified goal adds the
@@ -71,6 +71,7 @@ graph:
71
71
 
72
72
  ```bash
73
73
  npx workspai workspace graph search "billing database" --limit 12 --json
74
+ npx workspai workspace graph search "billing database" --scope project:billing --limit 12 --json
74
75
  ```
75
76
 
76
77
  A simplified response looks like this:
@@ -79,17 +80,21 @@ A simplified response looks like this:
79
80
  {
80
81
  "schemaVersion": "workspace-knowledge-search.v1",
81
82
  "query": "billing database",
83
+ "projectId": "billing",
82
84
  "totalMatches": 23,
83
85
  "truncated": true,
84
86
  "entities": [{ "kind": "database", "label": "billing-db", "proofIds": ["proof:..."] }],
85
87
  "relations": [{ "kind": "reads-from", "from": "service:billing", "to": "database:billing-db" }],
86
- "proofs": [{ "provider": "compose", "artifact": "infra/compose.yml", "trust": "authoritative" }]
88
+ "proofs": [{ "provider": "compose", "artifact": "infra/compose.yml", "trust": "authoritative" }],
89
+ "budget": { "mode": "agent", "limits": { "proofs": 16 }, "omitted": { "proofs": 4 } }
87
90
  }
88
91
  ```
89
92
 
90
93
  The response is intentionally bounded. `totalMatches` tells the consumer more
91
94
  results exist, `truncated` prevents silent omission, and every returned claim can
92
- be traced through `proofIds`.
95
+ be traced through `proofIds`. Use `--scope project:<name>` to keep a query within
96
+ one registered project while retaining workspace-level shared entities that are
97
+ proven to be connected to it.
93
98
 
94
99
  Search remains deterministic, local, and offline. Natural-language filler words
95
100
  are removed before ranking, and the remaining terms are weighted by how rare
@@ -97,6 +102,37 @@ they are in the current graph. Exact labels and identities still win. This keeps
97
102
  a common word such as `check` from outranking a rarer term such as `user` merely
98
103
  because it appears in more files. No embedding service or model call is involved.
99
104
 
105
+ ### Fast reads without stale answers
106
+
107
+ The read-oriented `search`, `entities`, `evidence`, `path`, and `benchmark`
108
+ commands first try the persisted Model and Knowledge Graph. A snapshot is a hit
109
+ only when all of the following remain true:
110
+
111
+ - both artifacts are structurally readable;
112
+ - the graph's stable model SHA-256 matches the persisted canonical model;
113
+ - no proof is marked stale;
114
+ - the graph fingerprint contains exactly one workspace scope and every
115
+ canonical project scope with compatible scan limits;
116
+ - a fresh bounded scan produces the same aggregate live-input hash.
117
+
118
+ Git-backed scopes use `git-worktree-v2`, covering tracked tree state plus
119
+ modified, deleted, renamed, untracked, and relevant ignored files. If Git cannot
120
+ prove the scanned inventory safely—for example because a traversed initialized
121
+ submodule or hidden index flag is present—Workspai falls back to
122
+ `content-merkle-v1`, which hashes each bounded file by portable path and content.
123
+ The graph records the combined strategy as `hybrid-git-content-v2`.
124
+
125
+ A miss rebuilds from live sources. Use `--refresh-graph` when the caller requires
126
+ an explicit rebuild even if the persisted snapshot is compatible:
127
+
128
+ ```bash
129
+ npx workspai workspace graph search "protobuf ownership" --refresh-graph --json
130
+ ```
131
+
132
+ The fingerprint proves compatibility of the exact bounded provider inventory;
133
+ if a scope reports `truncated: true`, it must not be interpreted as proof about
134
+ files beyond that declared limit.
135
+
100
136
  ## Pick the command by question
101
137
 
102
138
  | You want to know… | Use |
@@ -259,6 +295,8 @@ The current CLI uses bounded providers for:
259
295
  - workspace/project foundations and service contracts;
260
296
  - language-neutral source structure and package manifests;
261
297
  - OpenAPI, GraphQL, Protobuf, and AsyncAPI interfaces;
298
+ - C/C++ source, CMake/Meson lifecycle units, Bazel/CMake packages, and
299
+ cross-language protocol bindings;
262
300
  - Docker/Compose, Kubernetes, Terraform, and CI workflows;
263
301
  - README/docs, ADRs, tests, and CODEOWNERS.
264
302
 
@@ -273,6 +311,13 @@ imports are labelled `unresolved-local` and produce a diagnostic. This prevents
273
311
  an unknown local path from being silently presented as a third-party
274
312
  dependency.
275
313
 
314
+ Protocol Buffers services and messages retain definition-level identity
315
+ variants. Two projects may use the same fully qualified name without being
316
+ silently collapsed; proven cross-project or cross-language equivalence is
317
+ represented as a relation instead. In a C++-primary repository, ambiguous
318
+ `.h` headers inherit the authoritative project language so C/C++ inventories do
319
+ not split solely because the extension is shared.
320
+
276
321
  ### Binding quality, not just graph size
277
322
 
278
323
  Entity and relation counts do not tell you whether a graph can answer useful
@@ -382,8 +427,10 @@ The recommended read order is:
382
427
  Graph construction inventories each project once per build and caps the number
383
428
  of scanned files. Providers reuse the same in-memory inventory and content
384
429
  hashes. Query indexes are cached per immutable graph object; replacing the graph
385
- is the invalidation boundary. `workspace model --cache` and `--incremental`
386
- avoid unnecessary model/project work when inputs are unchanged.
430
+ is the in-memory invalidation boundary. Across CLI processes, compatible
431
+ persisted read queries validate the live Git/Merkle fingerprint before reuse.
432
+ `workspace model --cache` and `--incremental` avoid unnecessary model/project
433
+ work when inputs are unchanged.
387
434
 
388
435
  Use full graph export for interchange or offline analysis. Use bounded search
389
436
  for interactive agents. The latter keeps response size proportional to the
@@ -426,6 +473,8 @@ a general performance claim.
426
473
 
427
474
  - The CLI graph is intentionally file-backed; a graph database is not required.
428
475
  - Text search is deterministic lexical retrieval, not embedding similarity.
476
+ - The live-input fingerprint enables whole-graph snapshot reuse; it is not yet
477
+ a per-file incremental graph rebuild or a hosted semantic-vector index.
429
478
  - Compiler/LSP-grade symbol resolution belongs in deeper language providers.
430
479
  - Missing project edges mean “relationship not proven,” not “projects are
431
480
  independent.” Author service contracts or provide API/package/runtime
@@ -6,6 +6,8 @@
6
6
 
7
7
  ```bash
8
8
  npx workspai workspace run test --parallel
9
+ npx workspai workspace run build --plan --json
10
+ npx workspai workspace run test --runtime cpp --scope project:native-core --json
9
11
  npx workspai workspace run test --affected --since HEAD~1
10
12
  npx workspai workspace run test --affected --blast-radius
11
13
  npx workspai workspace run build --json --max-workers 8
@@ -20,9 +22,18 @@ npx workspai workspace run build --json --max-workers 8
20
22
 
21
23
  `workspace run` does not infer support from a hard-coded framework list. It
22
24
  reads the effective project capability map produced by the runtime adapters and
23
- project metadata. First-class and extended Node.js, Python, Go, Java, .NET,
24
- PHP, and Rust projects can expose governed lifecycle stages; observed runtimes
25
- run only commands explicitly declared by their project context.
25
+ project metadata. First-class and extended Node.js, Python, Go, Java, .NET, PHP,
26
+ and Rust projects can expose governed lifecycle stages. Existing polyglot
27
+ repositories also publish bounded runtime units discovered from npm, Python,
28
+ Go, Cargo, Maven, Gradle, NuGet, CMake, and Meson manifests. CMake and Meson
29
+ provide explicit native init, test, and build plans; Workspai does not treat
30
+ discovery as permission to execute them.
31
+
32
+ Use `--plan` to return the selected runtime units and commands without running
33
+ them. Use `--runtime <runtime>` to limit a polyglot project to one runtime
34
+ family. Vendored trees, build outputs, fixtures, and nested test fixture package
35
+ manifests are excluded from lifecycle discovery so orchestration does not turn
36
+ sample inputs into install targets.
26
37
 
27
38
  The authoritative scaffold/import/lifecycle tiers are in
28
39
  [contracts/RUNTIME_SUPPORT_MATRIX.md](./contracts/RUNTIME_SUPPORT_MATRIX.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workspai",
3
- "version": "0.55.1",
3
+ "version": "0.56.0",
4
4
  "type": "module",
5
5
  "description": "Open-source workspace intelligence CLI for software systems: create, adopt, govern, verify, and align polyglot workspaces for humans, CI, IDEs, and AI agents.",
6
6
  "keywords": [
@@ -83,6 +83,7 @@
83
83
  "test:e2e:user-first-install": "bash scripts/e2e-user-first-install.sh",
84
84
  "test:prebuild": "tsup",
85
85
  "test": "corepack npm run test:prebuild && vitest run",
86
+ "test:no-build": "vitest run",
86
87
  "test:drift": "node scripts/run-drift-guard.mjs",
87
88
  "benchmark:intelligence": "vitest run src/__tests__/workspace-intelligence-benchmark.test.ts",
88
89
  "sync:shared-contracts": "node scripts/sync-shared-contracts.mjs",
@@ -93,6 +94,7 @@
93
94
  "check:generated-contracts": "node scripts/generate-shared-contracts.mjs --check",
94
95
  "check:agent-customization-drift": "node scripts/check-agent-customization-drift.mjs",
95
96
  "validate:contracts": "corepack npm run check:shared-contracts && vitest run src/__tests__/contracts/",
97
+ "validate:contracts:tests": "vitest run src/__tests__/contracts/",
96
98
  "test:parity-contract": "corepack npm run check:shared-contracts && vitest run src/__tests__/contracts/import-stack-parity.snapshot.test.ts",
97
99
  "test:watch": "vitest",
98
100
  "test:coverage": "corepack npm run test:prebuild && vitest run --coverage --reporter=default --reporter=json --outputFile.json=test-results/vitest.json",
@@ -103,6 +105,7 @@
103
105
  "check:workspace-intelligence-runtime": "node scripts/check-workspace-intelligence-runtime-conformance.mjs",
104
106
  "check:workspace-intelligence-adversarial": "node scripts/check-workspace-intelligence-adversarial.mjs",
105
107
  "check:windows-registry": "node scripts/check-windows-registry-invariants.mjs",
108
+ "check:doctor-capabilities": "node --import tsx scripts/check-doctor-capabilities.ts",
106
109
  "smoke:enterprise-package": "node scripts/enterprise-package-smoke.mjs",
107
110
  "prepack": "node scripts/prepack-enterprise.mjs",
108
111
  "test:e2e": "vitest run src/__tests__/e2e.test.ts",
@@ -132,6 +135,7 @@
132
135
  "smoke:frontend-generators": "tsup && node scripts/smoke-frontend-generators.mjs",
133
136
  "smoke:frontend-generators:network": "tsup && node scripts/smoke-frontend-generators.mjs --execute",
134
137
  "smoke:official-generators": "tsup && node scripts/smoke-official-generators.mjs",
138
+ "smoke:official-generators:no-build": "node scripts/smoke-official-generators.mjs",
135
139
  "smoke:official-generators:network": "tsup && node scripts/smoke-official-generators.mjs --execute",
136
140
  "check:generator-smoke-coverage": "node scripts/check-generator-smoke-coverage.mjs",
137
141
  "sync:contracts": "node scripts/sync-contracts.mjs",
@@ -139,8 +143,10 @@
139
143
  "bundle-size": "corepack npm run build && node scripts/report-dist-size.mjs",
140
144
  "analyze": "corepack npm run build && node scripts/analyze-dist.mjs",
141
145
  "size-check": "corepack npm run build && size-limit",
146
+ "size-check:no-build": "size-limit",
142
147
  "bench": "npx tsx scripts/benchmarks.ts",
143
- "quality": "corepack npm run check:package-manager && corepack npm run typecheck && corepack npm run lint && corepack npm run format:check && corepack npm test && corepack npm run size-check && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run test:runtime-contract && corepack npm run security && corepack npm run validate:docs && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators && corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:agent-customization-drift",
148
+ "quality": "corepack npm run check:package-manager && corepack npm run typecheck && corepack npm run lint && corepack npm run format:check && corepack npm test && corepack npm run size-check && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run check:doctor-capabilities && corepack npm run test:runtime-contract && corepack npm run security && corepack npm run validate:docs && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators && corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:agent-customization-drift",
149
+ "quality:push": "corepack npm run check:package-manager && corepack npm run check:windows-registry && corepack npm run typecheck && corepack npm run lint && corepack npm run format:check && corepack npm run build && corepack npm run test:no-build && corepack npm run size-check:no-build && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run check:doctor-capabilities && corepack npm run test:runtime-contract && corepack npm run validate:docs && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators:no-build && corepack npm run contracts:check:local && corepack npm run validate:contracts:tests",
144
150
  "act-matrix": "act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-22.04 -P macos-latest=ghcr.io/catthehacker/ubuntu:act-22.04 -P windows-latest=ghcr.io/catthehacker/ubuntu:act-22.04 --pull=false -j build-test-matrix",
145
151
  "release:dry": "bash scripts/release.sh --no-publish --yes --allow-dirty",
146
152
  "release:patch": "bash scripts/release.sh patch",
@@ -150,7 +156,8 @@
150
156
  "ci": "corepack npm run quality",
151
157
  "contracts:sync": "corepack npm run sync:contracts && corepack npm run sync:shared-contracts",
152
158
  "contracts:check": "corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:parity-snapshot && corepack npm run check:generated-contracts && corepack npm run check:agent-customization-drift",
153
- "contracts:validate": "corepack npm run contracts:check && corepack npm run validate:contracts && corepack npm run build && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial",
159
+ "contracts:check:local": "corepack npm run check:contracts && corepack npm run check:shared-contracts && corepack npm run check:generated-contracts && corepack npm run check:agent-customization-drift",
160
+ "contracts:validate": "corepack npm run contracts:check && corepack npm run validate:contracts && corepack npm run build && corepack npm run check:workspace-intelligence-runtime && corepack npm run check:workspace-intelligence-adversarial && corepack npm run check:doctor-capabilities",
154
161
  "docs:validate": "corepack npm run validate:docs",
155
162
  "smoke": "corepack npm run smoke:enterprise-package && corepack npm run smoke:readme && corepack npm run check:generator-smoke-coverage && corepack npm run smoke:official-generators",
156
163
  "fix": "corepack npm run lint:fix && corepack npm run format && corepack npm run sync:contracts && corepack npm run sync:shared-contracts && corepack npm run sync-kits"
@@ -1 +0,0 @@
1
- export{b as printAnalyzeReport,a as runAnalyze}from'./chunk-KVUYAYTY.js';
@@ -1 +0,0 @@
1
- export{b as AUTOPILOT_RELEASE_ALIAS_FILENAME,a as AUTOPILOT_RELEASE_LAST_RUN_FILENAME,c as runAutopilotRelease}from'./chunk-DPMO4U3Z.js';