workspai 0.49.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -434
- package/contracts/analyze-last-run.v1.json +2 -2
- package/contracts/artifact-remediation-plan.v1.json +3 -9
- package/contracts/autopilot-release.v1.json +2 -0
- package/contracts/bootstrap-compliance.v1.json +2 -1
- package/contracts/cli-log-event.v1.json +1 -1
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +80 -0
- package/contracts/compatibility-matrix.v1.json +2 -0
- package/contracts/create-planner-capabilities.v1.json +153 -32
- package/contracts/doctor-project-evidence.v1.json +191 -11
- package/contracts/doctor-project-scan.v2.json +2 -0
- package/contracts/doctor-remediation-plan.v1.json +2 -2
- package/contracts/doctor-remediation-plan.v2.json +2 -2
- package/contracts/doctor-workspace-cache.v2.json +2 -0
- package/contracts/doctor-workspace-evidence.v1.json +189 -10
- package/contracts/extension-cli-compatibility.v1.json +10 -1
- package/contracts/infra-plan.v1.json +2 -0
- package/contracts/ingestion-plan.v1.json +85 -0
- package/contracts/ingestion-result.v1.json +59 -0
- package/contracts/mirror-ops.v1.json +2 -1
- package/contracts/pipeline-last-run.v1.json +2 -2
- package/contracts/private-product-manifest.v1.json +2 -0
- package/contracts/product-factory-plan.v1.json +2 -0
- package/contracts/project-archive.v1.json +2 -0
- package/contracts/project-entry-capability.v1.json +2 -3
- package/contracts/project-test-coverage.v1.json +189 -0
- package/contracts/project-workspace-link.v1.json +66 -0
- package/contracts/project-workspace-resolution.v1.json +28 -0
- package/contracts/published-contract-catalog.v1.json +45 -0
- package/contracts/release-readiness.v1.json +2 -2
- package/contracts/runtime-command-surface.v1.json +1456 -139
- package/contracts/transparency-evidence.v1.json +2 -1
- package/contracts/workspace-archive-capabilities.v1.json +11 -5
- package/contracts/workspace-archive-manifest.v1.json +236 -0
- package/contracts/workspace-archive-operation-result.v1.json +236 -0
- package/contracts/workspace-contract.v1.json +1 -1
- package/contracts/workspace-intelligence/agent-action-outcome.v1.json +2 -2
- package/contracts/workspace-intelligence/agent-customization-pack-report.v1.json +1 -1
- package/contracts/workspace-intelligence/agent-hooks.v1.json +2 -0
- package/contracts/workspace-intelligence/agent-reports-index.v1.json +1 -1
- package/contracts/workspace-intelligence/blocker-resolution.v1.json +3 -9
- package/contracts/workspace-intelligence/doctor-fix-result.v1.json +2 -2
- package/contracts/workspace-intelligence/doctor-graph-diagnosis.v1.json +208 -0
- package/contracts/workspace-intelligence/fact-freshness.v1.json +2 -2
- package/contracts/workspace-intelligence/mcp-design.v1.json +2 -0
- package/contracts/workspace-intelligence/model-usage-event.v1.json +1 -1
- package/contracts/workspace-intelligence/project-context-agent.v1.json +360 -0
- package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-context.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-contract-verify.v1.json +2 -2
- package/contracts/workspace-intelligence/workspace-dependency-graph.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-explain.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-graph-stream.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-graph-token-efficiency.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-impact.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-intelligence-evaluation-comparison.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-intelligence-evaluation.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-intelligence-history.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-intelligence-run.v1.json +2 -2
- package/contracts/workspace-intelligence/workspace-knowledge-graph-change-overlay.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +48 -5
- package/contracts/workspace-intelligence/workspace-knowledge-search.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-model-diff.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-model-snapshot.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-model.v1.json +97 -5
- package/contracts/workspace-intelligence/workspace-operational-skill.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-skills-index.v1.json +1 -1
- package/contracts/workspace-intelligence/workspace-verify.v1.json +1 -1
- package/contracts/workspace-intelligence-architecture.v1.json +33 -7
- package/contracts/workspace-intelligence-chain.v1.json +1 -1
- package/contracts/workspace-list.v1.json +2 -0
- package/contracts/workspace-model-cache.v1.json +2 -0
- package/contracts/workspace-registry.v1.json +1 -1
- package/contracts/workspace-run-last.v1.json +1 -1
- package/contracts/workspace-share-bundle.v1.json +2 -1
- package/contracts/workspace-snapshot.v1.json +2 -0
- package/contracts/workspace-snapshot.v2.json +2 -0
- package/contracts/workspace-sync.v1.json +2 -0
- package/contracts/workspace-watch-event.v1.json +2 -0
- package/dist/analyze-4H33PAUB.js +1 -0
- package/dist/{artifact-remediation-plan-SPOUHMK5.js → artifact-remediation-plan-TQ6KTTXD.js} +1 -1
- package/dist/autopilot-release-BHZYM5KX.js +1 -0
- package/dist/chunk-2D4UOYOJ.js +1 -0
- package/dist/chunk-2OIBHUVH.js +1 -0
- package/dist/chunk-3D2PAIRH.js +3 -0
- package/dist/chunk-3GRKUP5W.js +33 -0
- package/dist/{managed-agent-markers-AXUM75OE.js → chunk-3RBUSW7H.js} +1 -1
- package/dist/chunk-4WJC5QCD.js +2 -0
- package/dist/chunk-6HLPTJZ3.js +13 -0
- package/dist/{chunk-CV5HKU4P.js → chunk-7T4TSV5C.js} +1 -1
- package/dist/chunk-AFIFZTOY.js +2 -0
- package/dist/{chunk-BMWFQXGW.js → chunk-AHLMIL2T.js} +1 -1
- package/dist/chunk-AL237TSJ.js +7 -0
- package/dist/chunk-BBGNDMRU.js +2 -0
- package/dist/chunk-BG4FWJJ3.js +1 -0
- package/dist/{chunk-VU7NZHPM.js → chunk-BHYTI3RH.js} +1 -1
- package/dist/chunk-BYTFXQ6G.js +1 -0
- package/dist/chunk-CZC5P2MF.js +1 -0
- package/dist/chunk-DLM6C7FU.js +8 -0
- package/dist/{chunk-CRHYBQI3.js → chunk-DQ3PI7EP.js} +1 -1
- package/dist/chunk-E3CT7TYT.js +1 -0
- package/dist/chunk-EPVFKJF4.js +1 -0
- package/dist/chunk-EWZZUQBR.js +1 -0
- package/dist/chunk-FKWB66NQ.js +4 -0
- package/dist/{chunk-BGPXQQNY.js → chunk-FZ76CF2W.js} +1 -1
- package/dist/chunk-GBAO4GSW.js +2 -0
- package/dist/chunk-GQRWRHSR.js +86 -0
- package/dist/{chunk-ESLPI3XZ.js → chunk-HE4PUMU4.js} +1 -1
- package/dist/chunk-HMGPELXS.js +1 -0
- package/dist/chunk-HSZCINFX.js +2 -0
- package/dist/{chunk-3VFA7D5T.js → chunk-IND3TUVU.js} +1 -1
- package/dist/{chunk-NHN4QXPP.js → chunk-KVSYBHUR.js} +1 -1
- package/dist/chunk-L2E2Z4OE.js +5 -0
- package/dist/chunk-MAF3LLGK.js +691 -0
- package/dist/chunk-MOSXTVPU.js +1 -0
- package/dist/chunk-MVLIONQD.js +1 -0
- package/dist/chunk-PS5F4DCT.js +1 -0
- package/dist/{chunk-K4X3DM7R.js → chunk-Q6TKQVKQ.js} +1 -1
- package/dist/chunk-RJIYCDVC.js +1 -0
- package/dist/chunk-RVQLMTTI.js +2 -0
- package/dist/chunk-SHXJ2GDR.js +75 -0
- package/dist/chunk-TDTCMZK7.js +10 -0
- package/dist/chunk-TROHVI2V.js +2 -0
- package/dist/chunk-U2LR73E2.js +1 -0
- package/dist/chunk-U2QL5733.js +36 -0
- package/dist/{chunk-TIE2XMGH.js → chunk-VCW5HSPC.js} +12 -12
- package/dist/chunk-VRW6KXNK.js +6 -0
- package/dist/chunk-VU2BKKMB.js +1 -0
- package/dist/chunk-WJVB6SSD.js +16 -0
- package/dist/{chunk-32OJDBIG.js → chunk-XBM2P45G.js} +2 -2
- package/dist/chunk-Y5YAP4F3.js +2 -0
- package/dist/{create-S64IWHAP.js → create-SBFBFXKN.js} +1 -1
- package/dist/{demo-kit-DZ7TPG7K.js → demo-kit-KHH63TNA.js} +2 -2
- package/dist/{doctor-4NNUDNGZ.js → doctor-OPCMTBJB.js} +1 -1
- package/dist/{dotnet-webapi-clean-A6MVDYXX.js → dotnet-webapi-clean-VXEF4SHM.js} +5 -5
- package/dist/{gofiber-standard-I5YPQG5V.js → gofiber-standard-AQGSC7ON.js} +3 -3
- package/dist/{gogin-standard-VY2L4QT5.js → gogin-standard-7DU3OCBX.js} +3 -3
- package/dist/index.d.ts +38 -6
- package/dist/index.js +267 -355
- package/dist/managed-agent-markers-COE5DJ3W.js +1 -0
- package/dist/pipeline-7BUXAFS2.js +5 -0
- package/dist/platform-capabilities-PR6YL4KC.js +1 -0
- package/dist/project-intelligence-lens-BKKVPCLC.js +1 -0
- package/dist/project-test-coverage-BALEHHTT.js +1 -0
- package/dist/{pythonRapidkitExec-CVCIK225.js → pythonRapidkitExec-YR7P5LWG.js} +1 -1
- package/dist/rust-axum-4HXDICIB.js +140 -0
- package/dist/{springboot-standard-55XKCBIZ.js → springboot-standard-EK6GYN5T.js} +7 -7
- package/dist/workspace-U6ZQLELX.js +1 -0
- package/dist/{workspace-agent-sync-662QHXGF.js → workspace-agent-sync-L4SY7B4Q.js} +1 -1
- package/dist/workspace-archive-4JNT4S7N.js +1 -0
- package/dist/workspace-context-KOBSLZTI.js +1 -0
- package/dist/workspace-contract-SOD3OOVF.js +1 -0
- package/dist/workspace-explain-2CTMW2YW.js +1 -0
- package/dist/workspace-explain-contract-H7O26QJU.js +1 -0
- package/dist/{workspace-feedback-SUVH2LUJ.js → workspace-feedback-ZZ4HPW2T.js} +1 -1
- package/dist/{workspace-foundation-WPLD7OEO.js → workspace-foundation-PUIYBQUF.js} +1 -1
- package/dist/workspace-graph-stream-BLKIC7VN.js +1 -0
- package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +1 -0
- package/dist/{workspace-history-BANOJRQ2.js → workspace-history-SPKNRHIX.js} +1 -1
- package/dist/workspace-intelligence-I3ABOH2F.js +1 -0
- package/dist/{workspace-intelligence-evaluation-IPH7M3WV.js → workspace-intelligence-evaluation-7CABG5Y6.js} +1 -1
- package/dist/workspace-intelligence-runner-Q2XSR3ZL.js +1 -0
- package/dist/workspace-intelligence-runtime-registry-ZZ3GRAL2.js +1 -0
- package/dist/{workspace-knowledge-graph-ARDC6HHG.js → workspace-knowledge-graph-5MKEI4Z5.js} +1 -1
- package/dist/{workspace-knowledge-graph-query-VOSPPH4W.js → workspace-knowledge-graph-query-EKHIE3E2.js} +1 -1
- package/dist/{workspace-marker-SMBC3Z2Q.js → workspace-marker-7NHMDIRL.js} +1 -1
- package/dist/workspace-mcp-serve-ETNUA72W.js +3 -0
- package/dist/workspace-model-HHA37SNH.js +1 -0
- package/dist/workspace-model-hash-ZXYPIGCW.js +1 -0
- package/dist/workspace-onboarding-ELHZABJE.js +1 -0
- package/dist/{workspace-python-engine-state-2MLKJYQG.js → workspace-python-engine-state-J4QKW55K.js} +1 -1
- package/dist/workspace-readme-HGGZ4AZB.js +77 -0
- package/dist/{workspace-registry-summary-ORDK7A36.js → workspace-registry-summary-D2QM5JF6.js} +1 -1
- package/dist/workspace-run-DAAZBCN7.js +1 -0
- package/dist/{workspace-verify-EBVL7FWT.js → workspace-verify-4WJTLXRA.js} +1 -1
- package/dist/workspace-watch-2PIFTQ6B.js +1 -0
- package/docs/GLOSSARY.md +17 -16
- package/docs/OPEN_SOURCE_USER_SCENARIOS.md +8 -3
- package/docs/README.md +6 -3
- package/docs/README_CONTENT_CONTRACT.md +98 -115
- package/docs/ci-workflows.md +13 -4
- package/docs/commands-reference.md +43 -10
- package/docs/contracts/ARTIFACT_CATALOG.md +65 -26
- package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +2 -0
- package/docs/contracts/RUNTIME_SUPPORT_MATRIX.md +3 -3
- package/docs/contracts/rapidkit-cli-contracts.json +2 -2
- package/docs/create-planner-capabilities.md +36 -5
- package/docs/creating-workspaces-and-projects.md +59 -3
- package/docs/doctor-command.md +118 -11
- package/docs/from-code-to-shared-understanding.md +4 -1
- package/docs/graph-benchmark-methodology.md +2 -2
- package/docs/workspace-intelligence-evaluation.md +5 -0
- package/docs/workspace-knowledge-graph.md +141 -7
- package/docs/workspace-operations.md +149 -10
- package/package.json +7 -4
- package/scripts/enterprise-package-smoke.mjs +24 -1
- package/templates/kits/fastapi-ddd/README.md.j2 +1 -1
- package/templates/kits/fastapi-standard/README.md.j2 +1 -1
- package/templates/kits/nestjs-standard/Dockerfile.j2 +1 -1
- package/templates/kits/nestjs-standard/README.md.j2 +1 -1
- package/templates/kits/nestjs-standard/package.json.j2 +11 -2
- package/dist/analyze-EEEU3MIF.js +0 -1
- package/dist/autopilot-release-R4XRTWEM.js +0 -1
- package/dist/chunk-22DT744Z.js +0 -1
- package/dist/chunk-37CVKXBD.js +0 -1
- package/dist/chunk-3NU32T4A.js +0 -2
- package/dist/chunk-3ZK2GU7C.js +0 -1
- package/dist/chunk-4HDYADHT.js +0 -13
- package/dist/chunk-4KUIFXHM.js +0 -5
- package/dist/chunk-52PBRX7F.js +0 -1
- package/dist/chunk-54EP5CEV.js +0 -8
- package/dist/chunk-5XATWNME.js +0 -1
- package/dist/chunk-7YHK5NM3.js +0 -2
- package/dist/chunk-AFL3ACCR.js +0 -2
- package/dist/chunk-BFLJ2R4D.js +0 -80
- package/dist/chunk-E2KJ5QWY.js +0 -4
- package/dist/chunk-EKZLUMCS.js +0 -933
- package/dist/chunk-EYJ2CQSK.js +0 -1
- package/dist/chunk-FTY7GGXJ.js +0 -33
- package/dist/chunk-FXQJX34Z.js +0 -1
- package/dist/chunk-GSWPGELT.js +0 -2
- package/dist/chunk-GZTYAEWX.js +0 -1
- package/dist/chunk-HDXNIN4N.js +0 -1
- package/dist/chunk-HZDXO65G.js +0 -36
- package/dist/chunk-J5ENLXDF.js +0 -1
- package/dist/chunk-KB44JP4M.js +0 -2
- package/dist/chunk-LHOZXC2M.js +0 -2
- package/dist/chunk-MER6ZBN2.js +0 -13
- package/dist/chunk-NAJCUQ4X.js +0 -2
- package/dist/chunk-OA537ZQ5.js +0 -1
- package/dist/chunk-OW42TZFB.js +0 -1
- package/dist/chunk-P3D5YQB2.js +0 -1
- package/dist/chunk-PHXQR6PX.js +0 -2
- package/dist/chunk-PRTR2DQ2.js +0 -1
- package/dist/chunk-RHQW3DTP.js +0 -1
- package/dist/chunk-T4YR4RAI.js +0 -2
- package/dist/chunk-WDKNMTJQ.js +0 -1
- package/dist/chunk-Y45WZR5N.js +0 -5
- package/dist/chunk-YJZOMRAS.js +0 -1
- package/dist/pipeline-LHTPE3DR.js +0 -5
- package/dist/platform-capabilities-2B4QMZXE.js +0 -1
- package/dist/workspace-PJPRBUMQ.js +0 -1
- package/dist/workspace-archive-P76EDIUG.js +0 -10
- package/dist/workspace-context-23YYCUCP.js +0 -1
- package/dist/workspace-contract-TU2I7GC2.js +0 -1
- package/dist/workspace-dependency-graph-BP4EXYQ5.js +0 -1
- package/dist/workspace-explain-MWUEN643.js +0 -1
- package/dist/workspace-explain-contract-ZPI3JXJU.js +0 -1
- package/dist/workspace-graph-stream-KAGGQPJT.js +0 -1
- package/dist/workspace-graph-token-efficiency-CFGFCJ5V.js +0 -1
- package/dist/workspace-intelligence-MFJE7W67.js +0 -1
- package/dist/workspace-intelligence-runner-OTYTHV6B.js +0 -1
- package/dist/workspace-mcp-serve-EZR6O76D.js +0 -3
- package/dist/workspace-model-7OU2M3LE.js +0 -1
- package/dist/workspace-model-hash-MHXK5MEI.js +0 -1
- package/dist/workspace-run-QND2SIYA.js +0 -1
- package/dist/workspace-watch-7HWGA5TF.js +0 -1
|
@@ -20,6 +20,28 @@ The canonical `.workspai-workspace` marker must remain trackable. Generated
|
|
|
20
20
|
workspace `.gitignore` files exclude legacy/local engine state but do not
|
|
21
21
|
exclude the canonical marker.
|
|
22
22
|
|
|
23
|
+
## Project entry and grounding
|
|
24
|
+
|
|
25
|
+
These paths are relative to each registered project root, not the workspace
|
|
26
|
+
root:
|
|
27
|
+
|
|
28
|
+
| Artifact | Writer | Schema / format | Portability and reader purpose |
|
|
29
|
+
| --- | --- | --- | --- |
|
|
30
|
+
| `.workspai/workspace-link.local.json` | `adopt`, `import`, project creation, `workspace sync`, `project workspace relink` | `project-workspace-link.v1` | Machine-local absolute binding; always gitignored and never an agent evidence payload |
|
|
31
|
+
| `.workspai/reports/project-context-agent.json` | Project lens reconciliation and `workspace agent-sync --write` | `project-context-agent.v1` | Portable bounded model/graph/proof projection for project-local agents |
|
|
32
|
+
| `.workspai/PROJECT-GROUNDING.md` | Project lens reconciliation | Markdown | Portable human/agent entry guide with path-free workspace references |
|
|
33
|
+
| `AGENTS.md` managed section | Project lens reconciliation in `managed` mode | Managed Markdown block | Preserves user content and routes compatible agents to project/workspace evidence |
|
|
34
|
+
|
|
35
|
+
The project link is validated against the canonical workspace contract and a
|
|
36
|
+
SHA-256 binding over workspace identity, project identity, portable relative
|
|
37
|
+
path, machine paths, and relationship. Project context generation rejects
|
|
38
|
+
absolute paths before writing. `managed`, `local`, and `off` grounding modes
|
|
39
|
+
control portable project surfaces and converge by removing stale managed
|
|
40
|
+
sections and ignore rules during transitions; they never make the
|
|
41
|
+
machine-local link publishable. The context is bounded but not count-only: it
|
|
42
|
+
includes topology, API/deployment/test surfaces, blockers, portable proofs,
|
|
43
|
+
and model/graph freshness for the selected project.
|
|
44
|
+
|
|
23
45
|
## Naming conventions
|
|
24
46
|
|
|
25
47
|
| Pattern | Meaning | Examples |
|
|
@@ -30,18 +52,19 @@ exclude the canonical marker.
|
|
|
30
52
|
|
|
31
53
|
## Governance evidence loop
|
|
32
54
|
|
|
33
|
-
| Command | Primary artifact | Schema version
|
|
34
|
-
| ------------------------------------ | ----------------------------------------------------------- |
|
|
35
|
-
| `doctor workspace` | `.workspai/reports/doctor-last-run.json` | `doctor-workspace-evidence-v1`
|
|
36
|
-
| `doctor project` | `.workspai/reports/doctor-project-last-run.json` | `doctor-project-evidence-v1`
|
|
37
|
-
| `
|
|
38
|
-
| `doctor * --
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
|
|
|
55
|
+
| Command | Primary artifact | Schema version | JSON Schema |
|
|
56
|
+
| ------------------------------------ | ----------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------ |
|
|
57
|
+
| `doctor workspace` | `.workspai/reports/doctor-last-run.json` | `doctor-workspace-evidence-v1` | `contracts/doctor-workspace-evidence.v1.json` |
|
|
58
|
+
| `doctor project` | `.workspai/reports/doctor-project-last-run.json` | `doctor-project-evidence-v1` | `contracts/doctor-project-evidence.v1.json` |
|
|
59
|
+
| `project coverage` | `.workspai/reports/project-test-coverage-last-run.json` | `workspai.project-test-coverage.v1` | `contracts/project-test-coverage.v1.json` |
|
|
60
|
+
| `doctor * --plan` | `.workspai/reports/doctor-remediation-plan-last-run.json` | `doctor-remediation-plan-v2` | `contracts/doctor-remediation-plan.v2.json` |
|
|
61
|
+
| `doctor * --fix/--apply` | `.workspai/reports/doctor-fix-result-last-run.json` | `rapidkit-doctor-fix-result-v1` | `contracts/workspace-intelligence/doctor-fix-result.v1.json` |
|
|
62
|
+
| `workspace remediation-plan --write` | `.workspai/reports/artifact-remediation-plan-last-run.json` | `artifact-remediation-plan-v1` | `contracts/artifact-remediation-plan.v1.json` |
|
|
63
|
+
| `analyze` | `.workspai/reports/analyze-last-run.json` | `rapidkit-analyze-v1` | `contracts/analyze-last-run.v1.json` |
|
|
64
|
+
| `readiness` | `.workspai/reports/release-readiness-last-run.json` | `release-readiness-v1` | `contracts/release-readiness.v1.json` |
|
|
65
|
+
| `pipeline` | `.workspai/reports/pipeline-last-run.json` | `rapidkit-pipeline-v1` | `contracts/pipeline-last-run.v1.json` |
|
|
66
|
+
| `autopilot release` | `.workspai/reports/autopilot-release-last-run.json` | `autopilot-release-v1` | `contracts/autopilot-release.v1.json` |
|
|
67
|
+
| | `.workspai/reports/autopilot-release.json` | (alias, same payload) | `contracts/autopilot-release.v1.json` |
|
|
45
68
|
|
|
46
69
|
Side/cache (not gates): `.workspai/reports/doctor-workspace-cache.json` (`doctor-workspace-cache-v2`).
|
|
47
70
|
|
|
@@ -64,11 +87,13 @@ this plan before inventing per-card repair logic. The plan carries ordered actio
|
|
|
64
87
|
operations where deterministic, refresh/verify commands, risk, approval state, and rollback
|
|
65
88
|
strategy.
|
|
66
89
|
|
|
67
|
-
When `doctor project` runs inside a workspace, the
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
90
|
+
When `doctor project` runs inside a workspace, the project-local report is written beside the
|
|
91
|
+
project and the workspace receives both a latest alias and a collision-safe project copy under
|
|
92
|
+
`.workspai/reports/projects/<project-slug>--<identity-hash>/`. Coverage evidence follows the same
|
|
93
|
+
three-location rule. The hash is derived from workspace-relative identity, so projects with the
|
|
94
|
+
same folder name cannot overwrite each other. Remediation plans and fix results are also mirrored
|
|
95
|
+
into the scoped project. Studio, CI, and project-local tools can therefore use the same evidence
|
|
96
|
+
without guessing which project produced a latest alias.
|
|
72
97
|
|
|
73
98
|
## Workspace intelligence
|
|
74
99
|
|
|
@@ -108,10 +133,14 @@ status/exit coherence, hard-failure skip propagation, and the aggregate verdict.
|
|
|
108
133
|
See [Unified Workspace Intelligence Runner](../workspace-intelligence-runner.md)
|
|
109
134
|
for the normative user and integration semantics.
|
|
110
135
|
|
|
111
|
-
`workspace-model.json` and `workspace-knowledge-graph.json` are published
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
136
|
+
`workspace-model.json` and `workspace-knowledge-graph.json` are published under
|
|
137
|
+
one workspace lock as a rollback-capable artifact transaction. Individual file
|
|
138
|
+
replacement is atomic, and a partial set failure restores both preimages. The
|
|
139
|
+
model is canonical; the graph is derived and cannot mutate it during the run.
|
|
140
|
+
The graph contract fixes `source.kind` to `workspace-model`,
|
|
141
|
+
`source.artifact` to `.workspai/reports/workspace-model.json`, and `source.hash`
|
|
142
|
+
to the model's stable structural SHA-256. Current-state consumers must reject a
|
|
143
|
+
graph whose binding does not match the current model.
|
|
115
144
|
|
|
116
145
|
`workspace graph jsonld|graphml|gexf --output <path>` creates explicit interchange
|
|
117
146
|
projections from that bound graph. These files are portable exports, not competing
|
|
@@ -150,11 +179,13 @@ sources: package manifests (`package.json` deps, `pyproject.toml` path deps, `go
|
|
|
150
179
|
replace → `package-dep`), cross-boundary JS/TS source imports (`code-import`), the
|
|
151
180
|
workspace contract (`dependsOn` → `service-dependsOn`, matched `publishes`/`consumes`
|
|
152
181
|
→ `event-pub-sub`, env↔port references → `shared-resource`), and an optional manual
|
|
153
|
-
override file. Node/edge ordering and `hashDependencyGraph` are stable, so the
|
|
154
|
-
embedded as
|
|
155
|
-
`buildWorkspaceModel` run
|
|
156
|
-
structural
|
|
157
|
-
|
|
182
|
+
override file. Node/edge ordering and `hashDependencyGraph` are stable, so the compact
|
|
183
|
+
topology is embedded as the canonical `workspace-model.v1.projectTopology` field on every
|
|
184
|
+
`buildWorkspaceModel` run. `hashWorkspaceModel` normalizes
|
|
185
|
+
`projectTopology.generatedAt`, so the structural topology participates in the model hash
|
|
186
|
+
without causing timestamp drift. During the v1 migration window the CLI also emits the
|
|
187
|
+
deprecated `graph` compatibility alias. Consumers must read `projectTopology`; when both
|
|
188
|
+
fields exist, validation requires them to be structurally identical.
|
|
158
189
|
|
|
159
190
|
**Manual overrides.** `.workspai/workspace-graph.overrides.json` (`{ "edges": [{ "from",
|
|
160
191
|
"to", "kind", "evidence" }] }`) declares authoritative edges that win over inference for
|
|
@@ -245,6 +276,14 @@ reused and the dependency graph re-infers only edges incident to changed project
|
|
|
245
276
|
changes or project renames, and rescans code-imports fully when the node set changes. Reported
|
|
246
277
|
modes: `full` / `incremental` / `unchanged`.
|
|
247
278
|
|
|
279
|
+
The model command adds a non-structural `build` object to its JSON output and,
|
|
280
|
+
when `--write` is used, to the persisted model result. `mode`, `outcome`, and
|
|
281
|
+
`engineStatus` tell IDE/CI consumers
|
|
282
|
+
whether the result was rebuilt, partially reused, or fully reused. This
|
|
283
|
+
provenance is deliberately excluded from the canonical workspace-model hash,
|
|
284
|
+
so switching between full, cached, and incremental execution cannot make the
|
|
285
|
+
paired knowledge graph appear stale.
|
|
286
|
+
|
|
248
287
|
### Freshness metadata (`rapidkit-freshness-metadata-v1`)
|
|
249
288
|
|
|
250
289
|
Intelligence reports carry a shared freshness envelope so any consumer (CLI
|
|
@@ -58,10 +58,12 @@ These nested Commander commands are implemented and orchestrated by Workspai CLI
|
|
|
58
58
|
- `product manifest create`
|
|
59
59
|
- `product plan`
|
|
60
60
|
- `project commands`
|
|
61
|
+
- `project coverage`
|
|
61
62
|
- `project archives`
|
|
62
63
|
- `project archive`
|
|
63
64
|
- `project restore`
|
|
64
65
|
- `project delete`
|
|
66
|
+
- `project workspace`
|
|
65
67
|
- `snapshot create`
|
|
66
68
|
- `snapshot inspect`
|
|
67
69
|
- `snapshot list`
|
|
@@ -18,9 +18,9 @@ It separates three concerns:
|
|
|
18
18
|
| Go | extended | yes | yes | init, dev, start, build, test, lint, format, help | no | readiness |
|
|
19
19
|
| Java / Spring Boot | extended | yes | yes | init, dev, start, build, test, lint, format, help | no | readiness |
|
|
20
20
|
| .NET / ASP.NET Core | extended | yes | yes | init, dev, start, build, test, lint, format, help | no | readiness |
|
|
21
|
-
| PHP |
|
|
21
|
+
| PHP | extended | yes | yes | init, dev, start, build, test, lint, format, help | no | readiness |
|
|
22
22
|
| Ruby | observed | no | yes | help | no | observed |
|
|
23
|
-
| Rust |
|
|
23
|
+
| Rust | extended | yes | yes | init, dev, start, build, test, lint, format, help | no | readiness |
|
|
24
24
|
| Elixir | observed | no | yes | help | no | observed |
|
|
25
25
|
| Clojure | observed | no | yes | help | no | observed |
|
|
26
26
|
| Scala | observed | no | yes | help | no | observed |
|
|
@@ -40,7 +40,7 @@ It separates three concerns:
|
|
|
40
40
|
| Tier | Frameworks |
|
|
41
41
|
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
42
42
|
| first-class | FastAPI, NestJS |
|
|
43
|
-
| extended | Go/Fiber, Go/Gin, Spring Boot, ASP.NET Core, Django, Flask, Express, Fastify, Koa, Echo, Laravel, Symfony, Rails, Sinatra, Actix, Axum, Rocket, Phoenix, Next.js, Remix, React, Vue, Svelte, Solid, Nuxt, Angular, Astro, SvelteKit |
|
|
43
|
+
| extended | Go/Fiber, Go/Gin, Spring Boot, ASP.NET Core, Django, Flask, Express, Fastify, Koa, Echo, Laravel, Symfony, Rails, Sinatra, Actix, Axum, Rocket, Phoenix, Next.js, Remix, React, Vue, Svelte, Solid, Nuxt, Angular, Astro, SvelteKit, Tauri, Electron, VS Code Extension |
|
|
44
44
|
| observed | Python, Node.js, Go, Java, PHP, Ruby, Rust, Elixir, Unknown/generic projects |
|
|
45
45
|
|
|
46
46
|
## Import Policy
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://
|
|
4
|
-
"title": "RapidKit Core
|
|
3
|
+
"$id": "https://workspai.dev/schemas/rapidkit-cli-contracts.json",
|
|
4
|
+
"title": "Workspai CLI Contracts (RapidKit Core Compatibility)",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"definitions": {
|
|
7
7
|
"VersionResponse": {
|
|
@@ -21,10 +21,15 @@ Native create is reserved for Workspai-owned kits with deterministic contracts:
|
|
|
21
21
|
- Go Fiber and Go Gin
|
|
22
22
|
- Spring Boot
|
|
23
23
|
- ASP.NET Core Web API
|
|
24
|
+
- Rust / Axum
|
|
24
25
|
|
|
25
26
|
These kits can be exposed through `workspai create project` because Workspai can
|
|
26
27
|
create the project and immediately produce the expected `.workspai` metadata,
|
|
27
28
|
workspace registry entries, doctor evidence, and workspace model data.
|
|
29
|
+
They use a tested dependency baseline instead of floating to new upstream
|
|
30
|
+
majors during creation. Baseline upgrades ship as reviewed Workspai changes so
|
|
31
|
+
the same Workspai version remains reproducible across developer machines and
|
|
32
|
+
CI.
|
|
28
33
|
|
|
29
34
|
## Official generators
|
|
30
35
|
|
|
@@ -35,19 +40,45 @@ by Workspai and then registered in Workspace Intelligence:
|
|
|
35
40
|
- React Router: `npx create-react-router@latest <name>`
|
|
36
41
|
- React, Vue, Svelte, Solid, and Vite: `npm create vite@latest <name> ...`
|
|
37
42
|
- Nuxt: `npx create-nuxt@latest <name> ...`
|
|
38
|
-
- Angular: `npx @angular/cli@
|
|
39
|
-
- Astro: `npm create astro@
|
|
43
|
+
- Angular: `npx @angular/cli@latest new <name>`
|
|
44
|
+
- Astro: `npm create astro@latest <name>`
|
|
40
45
|
- SvelteKit: `npx sv@latest create <name>`
|
|
46
|
+
- Tauri: `npm create tauri-app@latest <name> -- --template vanilla-ts`
|
|
47
|
+
- Electron Forge: `npx create-electron-app@latest <name> --template=vite-typescript`
|
|
48
|
+
- VS Code Extension: `npx --package yo@latest --package generator-code@latest -- yo code <name> ...`
|
|
49
|
+
- Laravel: `composer create-project --no-interaction --prefer-dist --stability=stable laravel/laravel <name>`
|
|
50
|
+
|
|
51
|
+
### Stable version and runtime policy
|
|
52
|
+
|
|
53
|
+
Available official entries request the ecosystem's current stable release at
|
|
54
|
+
execution time; Workspai does not silently pin an older framework major. npm
|
|
55
|
+
generators use the `latest` distribution tag and Composer is restricted to
|
|
56
|
+
stable packages. npm engine checks run in strict mode, so an upstream generator
|
|
57
|
+
that does not support the operator's Node.js runtime stops before Workspai
|
|
58
|
+
claims the scaffold is usable.
|
|
59
|
+
|
|
60
|
+
Workspai also checks non-Node prerequisites before invoking a generator:
|
|
61
|
+
|
|
62
|
+
- Tauri requires Rust and Cargo in addition to its platform-specific system
|
|
63
|
+
dependencies.
|
|
64
|
+
- Electron Forge requires Git.
|
|
65
|
+
- VS Code Extension generation requires Git unless `--skip-git` is selected.
|
|
66
|
+
- Laravel requires PHP and Composer; Node.js/npm remain recommended for
|
|
67
|
+
frontend asset workflows.
|
|
68
|
+
|
|
69
|
+
The official generator remains the authority for exact framework/runtime
|
|
70
|
+
compatibility because its stable requirements can change independently of a
|
|
71
|
+
Workspai release. The selected policy is persisted as `latest-stable` in
|
|
72
|
+
project metadata and create evidence.
|
|
41
73
|
|
|
42
74
|
Other ecosystems are planned official handoffs but are not automated yet:
|
|
43
75
|
|
|
44
76
|
- WordPress site: `wp core download`, `wp config create`, `wp db create`, `wp core install`
|
|
45
77
|
- WordPress block/plugin: `npx @wordpress/create-block@latest <slug>`
|
|
46
|
-
- Laravel: `composer create-project laravel/laravel <name>`
|
|
47
78
|
- Symfony: `composer create-project symfony/skeleton <name>`
|
|
48
79
|
- Rails: `rails new <name>`
|
|
49
80
|
|
|
50
|
-
|
|
81
|
+
The remaining entries are `official` candidates, not active native kits. Until each planned
|
|
51
82
|
post-create contract is implemented end to end, Workspai should guide users to
|
|
52
83
|
create externally and then adopt/import the project.
|
|
53
84
|
|
|
@@ -72,7 +103,7 @@ Adoption still gives the project Workspace Intelligence:
|
|
|
72
103
|
## Product rule
|
|
73
104
|
|
|
74
105
|
Do not convert an unsupported or ambiguous stack request into a different native
|
|
75
|
-
kit. For example, a
|
|
106
|
+
kit. For example, a WordPress, Symfony, or Rails request must not
|
|
76
107
|
be translated into FastAPI, NestJS, Go, Java, .NET, or a frontend kit.
|
|
77
108
|
|
|
78
109
|
If executable create is unavailable, the planner should explain the supported
|
|
@@ -204,12 +204,29 @@ or update a registry.
|
|
|
204
204
|
Workspace creation does not merge into or overwrite an existing target. If the
|
|
205
205
|
resolved directory already exists, choose another name or output parent.
|
|
206
206
|
|
|
207
|
-
To bring
|
|
207
|
+
To bring existing software into Workspai, use the operation that matches who
|
|
208
|
+
owns its location:
|
|
208
209
|
|
|
209
210
|
```bash
|
|
211
|
+
# Keep a project where it is.
|
|
210
212
|
npx workspai adopt /path/to/project
|
|
213
|
+
|
|
214
|
+
# Copy or clone a project into the selected workspace.
|
|
215
|
+
npx workspai import /path/to/project --workspace /path/to/my-workspace
|
|
216
|
+
|
|
217
|
+
# Register an existing Workspai workspace without moving it.
|
|
218
|
+
npx workspai workspace connect /path/to/existing-workspace
|
|
219
|
+
|
|
220
|
+
# Restore and register a portable workspace archive.
|
|
221
|
+
npx workspai workspace import team.workspai-archive.zip --output ./team
|
|
211
222
|
```
|
|
212
223
|
|
|
224
|
+
Running `npx workspai create` interactively exposes the same choices as
|
|
225
|
+
“Create a project”, “Add existing software”, and—when appropriate—“Create
|
|
226
|
+
another workspace”. Inside a workspace, project and onboarding choices appear
|
|
227
|
+
first; creating another workspace remains an explicit escape hatch rather than
|
|
228
|
+
the default.
|
|
229
|
+
|
|
213
230
|
## Main workspace files
|
|
214
231
|
|
|
215
232
|
A normal workspace includes:
|
|
@@ -249,7 +266,7 @@ npx workspai create
|
|
|
249
266
|
If you choose project creation, the same project flow is used.
|
|
250
267
|
|
|
251
268
|
When the terminal is interactive and the current directory is not inside a
|
|
252
|
-
workspace, **every supported backend and
|
|
269
|
+
workspace, **every supported backend, frontend, desktop, and extension kit** shows the workspace
|
|
253
270
|
management question before scaffolding:
|
|
254
271
|
|
|
255
272
|
```text
|
|
@@ -275,7 +292,12 @@ npx workspai create project fastapi.standard api
|
|
|
275
292
|
npx workspai create project gofiber.standard gateway
|
|
276
293
|
npx workspai create project springboot.standard orders
|
|
277
294
|
npx workspai create project dotnet.webapi.clean billing
|
|
295
|
+
npx workspai create project rust.axum telemetry-api
|
|
278
296
|
npx workspai create project frontend.nextjs dashboard
|
|
297
|
+
npx workspai create project desktop.tauri desktop-app
|
|
298
|
+
npx workspai create project desktop.electron admin-console
|
|
299
|
+
npx workspai create project extension.vscode editor-tools
|
|
300
|
+
npx workspai create project php.laravel customer-api
|
|
279
301
|
```
|
|
280
302
|
|
|
281
303
|
The shorter frontend alias remains available:
|
|
@@ -295,6 +317,7 @@ npx workspai create frontend nextjs dashboard
|
|
|
295
317
|
| `gogin.standard` | Go | Workspai npm CLI | No |
|
|
296
318
|
| `springboot.standard` | Java | Workspai npm CLI | No |
|
|
297
319
|
| `dotnet.webapi.clean` | .NET | Workspai npm CLI | No |
|
|
320
|
+
| `rust.axum` | Rust | Workspai npm CLI | No |
|
|
298
321
|
|
|
299
322
|
NestJS runs on Node.js, but its current scaffold is provided through the
|
|
300
323
|
RapidKit Core bridge.
|
|
@@ -320,6 +343,34 @@ Workspai has official-generator paths for:
|
|
|
320
343
|
The ecosystem's official generator creates the application. Workspai then adds
|
|
321
344
|
project metadata and performs the selected workspace registration.
|
|
322
345
|
|
|
346
|
+
## Desktop, extension, and additional backend generators
|
|
347
|
+
|
|
348
|
+
| Category | Project | Kit | Creation owner |
|
|
349
|
+
| --------- | ----------------- | ------------------ | -------------------------------------- |
|
|
350
|
+
| Backend | Axum | `rust.axum` | Workspai deterministic Cargo baseline |
|
|
351
|
+
| Backend | Laravel | `php.laravel` | Composer / Laravel |
|
|
352
|
+
| Desktop | Tauri | `desktop.tauri` | create-tauri-app |
|
|
353
|
+
| Desktop | Electron Forge | `desktop.electron` | create-electron-app |
|
|
354
|
+
| Extension | VS Code Extension | `extension.vscode` | generator-code |
|
|
355
|
+
|
|
356
|
+
Every generated project receives a canonical `kind` and `category`. The four
|
|
357
|
+
user-facing categories are `backend`, `frontend`, `desktop`, and `extension`;
|
|
358
|
+
they remain visible in the Workspace Model and Knowledge Graph so consumers do
|
|
359
|
+
not have to guess a project’s role from its runtime.
|
|
360
|
+
|
|
361
|
+
Official generators may download packages and therefore need network access.
|
|
362
|
+
Each available integration requests the upstream latest stable channel rather
|
|
363
|
+
than pinning an old framework major. npm engine compatibility is enforced
|
|
364
|
+
strictly against the Node.js runtime running Workspai, and required ecosystem
|
|
365
|
+
tools such as Rust/Cargo, Git, PHP, or Composer are checked before generation.
|
|
366
|
+
The upstream generator remains authoritative for its exact supported runtime
|
|
367
|
+
range; Workspai records the `latest-stable` policy in the generated project
|
|
368
|
+
metadata and evidence.
|
|
369
|
+
|
|
370
|
+
`desktop.electron`, `extension.vscode`, and `php.laravel` do not accept
|
|
371
|
+
`--skip-install`, because their official generators do not expose a reliable,
|
|
372
|
+
documented no-install contract.
|
|
373
|
+
|
|
323
374
|
# Where the project is created
|
|
324
375
|
|
|
325
376
|
The project path is always:
|
|
@@ -441,6 +492,9 @@ npx workspai create project gofiber.standard gateway \
|
|
|
441
492
|
|
|
442
493
|
Unlike `create workspace --here`, this turns the current directory itself into
|
|
443
494
|
a workspace. It then creates the project under the requested output parent.
|
|
495
|
+
This registration is foundation-only: it does not probe Python or Poetry,
|
|
496
|
+
create a virtual environment, or install `rapidkit-core`. The selected kit owns
|
|
497
|
+
its runtime prerequisites and installation flow.
|
|
444
498
|
|
|
445
499
|
For example, from `/home/me/platform`:
|
|
446
500
|
|
|
@@ -449,7 +503,9 @@ Workspace: /home/me/platform
|
|
|
449
503
|
Project: /home/me/platform/gateway
|
|
450
504
|
```
|
|
451
505
|
|
|
452
|
-
This uses the full current-folder
|
|
506
|
+
This uses the full current-folder Workspace Intelligence registration flow
|
|
507
|
+
(contract, model, graph, agent context, and registry) without coupling the
|
|
508
|
+
workspace to the optional Python engine.
|
|
453
509
|
|
|
454
510
|
## Choice 3: Create without workspace management
|
|
455
511
|
|
package/docs/doctor-command.md
CHANGED
|
@@ -34,7 +34,8 @@ Checks:
|
|
|
34
34
|
- all system checks
|
|
35
35
|
- workspace marker resolution
|
|
36
36
|
- project discovery and per-project health
|
|
37
|
-
- dependency
|
|
37
|
+
- dependency, environment, test, quality, security, deployment, and coverage readiness per project
|
|
38
|
+
- runtime-native evidence without treating missing scanners as a clean result
|
|
38
39
|
|
|
39
40
|
> Compatibility note: `npx workspai doctor --workspace` still works, but `doctor workspace` is the canonical form.
|
|
40
41
|
|
|
@@ -53,6 +54,8 @@ Checks:
|
|
|
53
54
|
- dependency/env readiness for the selected project
|
|
54
55
|
- enterprise probes (config contract, migration surface, runtime health surface)
|
|
55
56
|
- score explainability breakdown for audit trails
|
|
57
|
+
- normalized dependency-audit and test-coverage evidence for CI, IDEs, and agents
|
|
58
|
+
- graph-aware root, impact-candidate, proof-path, and verification-target context
|
|
56
59
|
|
|
57
60
|
> Compatibility note: `npx workspai doctor --project` also works.
|
|
58
61
|
|
|
@@ -84,6 +87,108 @@ npx workspai doctor project --json
|
|
|
84
87
|
npx workspai doctor workspace --profile enterprise-strict --json
|
|
85
88
|
```
|
|
86
89
|
|
|
90
|
+
## One verdict, backed by every probe
|
|
91
|
+
|
|
92
|
+
Doctor calculates one verdict from the host and every project probe:
|
|
93
|
+
|
|
94
|
+
- **Passed** means no blocking probe failed.
|
|
95
|
+
- **Needs attention** means the current profile found advisory work.
|
|
96
|
+
- **Blocked** means at least one error-level probe failed.
|
|
97
|
+
|
|
98
|
+
The score and verdict use the same counts. A failed security, coverage, or
|
|
99
|
+
runtime probe cannot be hidden behind a high percentage or a healthy host. New
|
|
100
|
+
evidence includes the host/project score components and per-project probe
|
|
101
|
+
summary; semantic validation rejects contradictory artifacts before they are
|
|
102
|
+
written. Older v1 evidence remains readable so existing workspaces and IDEs do
|
|
103
|
+
not break during migration.
|
|
104
|
+
|
|
105
|
+
## Graph-aware diagnosis
|
|
106
|
+
|
|
107
|
+
When the project belongs to a workspace with a current model and Knowledge
|
|
108
|
+
Graph, Doctor enriches every warning or failure with evidence-backed structural
|
|
109
|
+
context:
|
|
110
|
+
|
|
111
|
+
- the package, file, service, deployment, or other graph entity nearest to the
|
|
112
|
+
finding;
|
|
113
|
+
- reachable APIs, services, infrastructure, owners, and other affected
|
|
114
|
+
candidates;
|
|
115
|
+
- connected test suites or CI pipelines that can verify the repair;
|
|
116
|
+
- the exact proof path and source artifacts supporting each connection;
|
|
117
|
+
- explicit unknowns when the graph cannot prove an effect or verification path.
|
|
118
|
+
|
|
119
|
+
Runtime-native dependency audits preserve the affected package names,
|
|
120
|
+
versions, advisory identifiers, and available severity/directness metadata.
|
|
121
|
+
Doctor uses those subjects to select the corresponding package or module
|
|
122
|
+
entity in the current project's graph neighborhood. If an audit names a
|
|
123
|
+
dependency that the graph cannot resolve, the diagnosis reports it under
|
|
124
|
+
`unresolvedSubjects`; it does not silently attach the finding to an unrelated
|
|
125
|
+
package.
|
|
126
|
+
|
|
127
|
+
This data is available under `project.graphDiagnosis` in project and workspace
|
|
128
|
+
Doctor JSON evidence. Doctor rejects stale, invalid, or model-unbound graph
|
|
129
|
+
evidence instead of presenting it as current.
|
|
130
|
+
|
|
131
|
+
Graph reachability is deliberately described as a **structural impact
|
|
132
|
+
candidate**, not runtime causality. It narrows investigation and gives Studio a
|
|
133
|
+
proof-carrying starting point; final verification still comes from the
|
|
134
|
+
runtime-owned checks.
|
|
135
|
+
|
|
136
|
+
## Multi-runtime dependency evidence
|
|
137
|
+
|
|
138
|
+
Doctor selects the audit adapter from the detected runtime and lockfile:
|
|
139
|
+
|
|
140
|
+
| Ecosystem | Runtime-native evidence |
|
|
141
|
+
| ------------------------------------ | ------------------------------------------------------------------ |
|
|
142
|
+
| npm | npm, pnpm, Yarn Classic/Berry, Bun, or Deno audit |
|
|
143
|
+
| Python | `pip-audit` through the project virtual environment when available |
|
|
144
|
+
| Go | `govulncheck` |
|
|
145
|
+
| Rust | `cargo audit` |
|
|
146
|
+
| PHP | `composer audit` |
|
|
147
|
+
| Ruby | `bundler-audit` |
|
|
148
|
+
| .NET | vulnerable transitive package report |
|
|
149
|
+
| Elixir | `mix hex.audit` |
|
|
150
|
+
| Java, Scala, Kotlin, Clojure, C, C++ | project/organization-owned scanner contract |
|
|
151
|
+
|
|
152
|
+
Every result records the exact executable, arguments, ecosystem, severity
|
|
153
|
+
counts, and limitations. A missing tool, timeout, registry failure,
|
|
154
|
+
unparseable response, or unsupported zero-configuration workflow is explicit
|
|
155
|
+
evidence—not a zero-vulnerability result. Compatible automatic fixes never use
|
|
156
|
+
force; unresolved findings move to a targeted upgrade and verification plan.
|
|
157
|
+
|
|
158
|
+
## Coverage goals that Doctor can verify
|
|
159
|
+
|
|
160
|
+
Generate a normalized baseline from the current project:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx workspai project coverage --run --target 80 --strict --json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Workspai detects the runtime-owned runner, reads machine-readable coverage, and
|
|
167
|
+
normalizes lines, branches, functions, statements, low-coverage files, source
|
|
168
|
+
hash, and the requested target. It understands Istanbul/LCOV, coverage.py,
|
|
169
|
+
Go coverprofiles, JaCoCo/Cobertura/Clover, scoverage, SimpleCov, and LLVM
|
|
170
|
+
coverage. Runtime plans cover Node/Bun/Deno, Python, Go, JVM, .NET, Rust, PHP,
|
|
171
|
+
Ruby, Elixir, Clojure, Scala, Kotlin, C, and C++; if a project-owned runner does
|
|
172
|
+
not emit one of those portable formats, the result is explicitly `unavailable`
|
|
173
|
+
with setup guidance rather than an invented percentage.
|
|
174
|
+
|
|
175
|
+
Doctor consumes the resulting
|
|
176
|
+
`.workspai/reports/project-test-coverage-last-run.json`. If it is missing,
|
|
177
|
+
below target, unavailable, or failed, the probe tells Studio what evidence to
|
|
178
|
+
generate or which low-coverage source paths need source-aware tests. The repair
|
|
179
|
+
contract explicitly forbids lowering the target, excluding difficult files,
|
|
180
|
+
skipping tests, or removing assertions to manufacture a pass.
|
|
181
|
+
|
|
182
|
+
When the project belongs to a workspace, Workspai also writes:
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
<workspace>/.workspai/reports/project-test-coverage-last-run.json
|
|
186
|
+
<workspace>/.workspai/reports/projects/<slug>--<hash>/project-test-coverage-last-run.json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The same namespaced layout is used for project Doctor evidence, preventing
|
|
190
|
+
same-name projects from overwriting each other.
|
|
191
|
+
|
|
87
192
|
## Enterprise Fix Pipeline
|
|
88
193
|
|
|
89
194
|
Doctor supports policy profiles so the same evidence can be interpreted correctly in local,
|
|
@@ -283,15 +388,17 @@ change is safe enough for Doctor to apply with approval and post-fix verificatio
|
|
|
283
388
|
|
|
284
389
|
Runtime-native probes add a second layer on top of the generic surface checks:
|
|
285
390
|
|
|
286
|
-
| Runtime family
|
|
287
|
-
|
|
|
288
|
-
| Node/Bun/Deno
|
|
289
|
-
| Python
|
|
290
|
-
| Go
|
|
291
|
-
| Java
|
|
292
|
-
| .NET
|
|
293
|
-
| Rust
|
|
294
|
-
| PHP/Ruby
|
|
391
|
+
| Runtime family | Native signals sampled by Doctor |
|
|
392
|
+
| ----------------- | -------------------------------------------------------------------------------- |
|
|
393
|
+
| Node/Bun/Deno | Jest/Vitest/native tests, ESLint/Prettier/Biome, package-manager audit |
|
|
394
|
+
| Python | pytest/tox/nox, Ruff/Black/Mypy, pip-audit/Safety/Bandit |
|
|
395
|
+
| Go | `*_test.go`, golangci-lint, govulncheck/gosec |
|
|
396
|
+
| Java/Kotlin/Scala | Maven/Gradle/sbt tests, Checkstyle/Spotless/Detekt/Scalafmt, declared JVM audit |
|
|
397
|
+
| .NET | test projects, `.editorconfig`, NuGet audit |
|
|
398
|
+
| Rust | Cargo tests, rustfmt/clippy, cargo-audit |
|
|
399
|
+
| PHP/Ruby | PHPUnit/Pest/PHPStan and RSpec/Minitest/RuboCop/Bundler-audit |
|
|
400
|
+
| Elixir/Clojure | ExUnit/Credo/Hex and clojure.test/Kaocha/clj-kondo |
|
|
401
|
+
| C/C++ | CTest/native test markers, clang tooling, declared SBOM or vulnerability scanner |
|
|
295
402
|
|
|
296
403
|
## CI Example
|
|
297
404
|
|
|
@@ -460,7 +567,7 @@ Legacy evidence without `schemaVersion` is still accepted. Unknown versions are
|
|
|
460
567
|
|
|
461
568
|
```bash
|
|
462
569
|
npx workspai bootstrap [--profile <profile>]
|
|
463
|
-
npx workspai setup <python|node|go|java|dotnet> [--warm-deps]
|
|
570
|
+
npx workspai setup <python|node|go|java|dotnet|rust|php> [--warm-deps]
|
|
464
571
|
npx workspai workspace list
|
|
465
572
|
npx workspai cache <status|clear|prune|repair>
|
|
466
573
|
npx workspai mirror <status|sync|verify|rotate>
|
|
@@ -32,7 +32,10 @@ flowchart TB
|
|
|
32
32
|
1. **Connect your software.** Create something new, adopt an existing project
|
|
33
33
|
without moving it, or import a repository.
|
|
34
34
|
2. **Understand the workspace.** Workspai builds one model of the projects and
|
|
35
|
-
how they relate.
|
|
35
|
+
how they relate. That Workspace Model is canonical. Workspai then derives a
|
|
36
|
+
proof-backed Knowledge Graph from the model-owned project inventory so tools
|
|
37
|
+
can query files, APIs, packages, infrastructure, tests, ownership, and
|
|
38
|
+
decisions without creating a second source of truth.
|
|
36
39
|
3. **Understand change and verify it.** Workspai shows affected areas and checks
|
|
37
40
|
the evidence needed for a safe decision.
|
|
38
41
|
4. **Share the result.** Developers, CI, IDEs, AI agents, and MCP clients consume
|
|
@@ -27,8 +27,8 @@ The result conforms to
|
|
|
27
27
|
It records:
|
|
28
28
|
|
|
29
29
|
- the query and result limit;
|
|
30
|
-
- the graph schema, entity/relation/proof counts, source artifact, and
|
|
31
|
-
model SHA-256;
|
|
30
|
+
- the graph schema, entity/relation/proof counts, source artifact, and stable
|
|
31
|
+
structural model SHA-256;
|
|
32
32
|
- the number and size of readable, deduplicated proof-source artifacts;
|
|
33
33
|
- the bounded retrieval size and match count;
|
|
34
34
|
- unreadable artifacts rather than silently excluding them;
|
|
@@ -94,6 +94,7 @@ Event bodies conform to
|
|
|
94
94
|
```bash
|
|
95
95
|
npx workspai workspace eval status --json
|
|
96
96
|
npx workspai workspace eval report --json
|
|
97
|
+
npx workspai workspace eval report --output ./evidence/my-evaluation.json --json
|
|
97
98
|
```
|
|
98
99
|
|
|
99
100
|
Finalization writes:
|
|
@@ -102,6 +103,10 @@ Finalization writes:
|
|
|
102
103
|
.workspai/reports/workspace-intelligence-evaluation-last-run.json
|
|
103
104
|
```
|
|
104
105
|
|
|
106
|
+
`--output` keeps that governed last-run artifact and also copies the finalized
|
|
107
|
+
report to the requested workspace-relative or absolute path. JSON output reports
|
|
108
|
+
the path that was actually requested, so automation does not need to infer it.
|
|
109
|
+
|
|
105
110
|
Both live and final reports conform to
|
|
106
111
|
[`workspace-intelligence-evaluation.v1.json`](../contracts/workspace-intelligence/workspace-intelligence-evaluation.v1.json).
|
|
107
112
|
|