workspai 0.55.0 → 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.
- package/contracts/artifact-remediation-plan.v1.json +110 -2
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +29 -1
- package/contracts/doctor-project-evidence.v1.json +68 -2
- package/contracts/doctor-remediation-plan.v1.json +29 -2
- package/contracts/doctor-workspace-evidence.v1.json +68 -2
- package/contracts/extension-cli-compatibility.v1.json +6 -1
- package/contracts/published-contract-catalog.v1.json +25 -0
- package/contracts/runtime-command-surface.v1.json +63 -0
- package/contracts/workspace-intelligence/doctor-capabilities.v1.json +133 -0
- package/contracts/workspace-intelligence/doctor-diagnosis.v1.json +273 -0
- package/contracts/workspace-intelligence/doctor-graph-diagnosis.v1.json +3 -0
- package/contracts/workspace-intelligence/doctor-receipt.v1.json +136 -0
- package/contracts/workspace-intelligence/doctor-summary.v1.json +99 -0
- package/contracts/workspace-intelligence/doctor-validation.v1.json +109 -0
- package/contracts/workspace-intelligence/project-context-agent.v1.json +110 -0
- package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +25 -0
- package/contracts/workspace-intelligence/workspace-explain.v1.json +3 -0
- package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +36 -0
- package/contracts/workspace-intelligence/workspace-knowledge-search.v1.json +54 -0
- package/contracts/workspace-intelligence/workspace-repair-transaction.v1.json +27 -0
- package/contracts/workspace-repair-capabilities.v1.json +1 -0
- package/dist/analyze-HJ774J3E.js +1 -0
- package/dist/{artifact-remediation-plan-O3YIULQN.js → artifact-remediation-plan-BPLON5VX.js} +1 -1
- package/dist/autopilot-release-CH57CGET.js +1 -0
- package/dist/capabilities-command-WEOGFCWF.js +1 -0
- package/dist/chunk-2647BYBC.js +1 -0
- package/dist/chunk-2L4PSZQB.js +1 -0
- package/dist/chunk-3U4VLIGW.js +1 -0
- package/dist/chunk-5BGPGNRQ.js +2 -0
- package/dist/chunk-5EPPPMAS.js +1 -0
- package/dist/{chunk-M5ICGR55.js → chunk-5RL254O2.js} +1 -1
- package/dist/chunk-5ZA4JYOP.js +1 -0
- package/dist/{chunk-AMB42V2F.js → chunk-64JUYYRC.js} +1 -1
- package/dist/chunk-664GXRLD.js +1 -0
- package/dist/chunk-6HCAGHCY.js +8 -0
- package/dist/chunk-7PNARN6S.js +4 -0
- package/dist/chunk-7Y3KVZJF.js +8 -0
- package/dist/{chunk-WIO6L24E.js → chunk-ADL3CK44.js} +1 -1
- package/dist/chunk-AO2ZI42U.js +4 -0
- package/dist/chunk-BDN32Y2N.js +81 -0
- package/dist/chunk-D4RST2HE.js +1 -0
- package/dist/{chunk-6HJJHEL6.js → chunk-DIZSHNZ5.js} +1 -1
- package/dist/chunk-DOIZANFA.js +2 -0
- package/dist/{chunk-HY3RMPW5.js → chunk-E53BGUOW.js} +1 -1
- package/dist/{chunk-FZCYTRBQ.js → chunk-ESWFBSYM.js} +1 -1
- package/dist/chunk-GBMCHFOV.js +1 -0
- package/dist/{chunk-HUPLAFZQ.js → chunk-HASVV34S.js} +1 -1
- package/dist/chunk-IZLEMTES.js +1 -0
- package/dist/chunk-KR7CIEQR.js +1 -0
- package/dist/chunk-KS4FB5W7.js +6 -0
- package/dist/chunk-LYVDRRDO.js +2 -0
- package/dist/chunk-NHTLE3WN.js +1 -0
- package/dist/chunk-NS53IPAC.js +1 -0
- package/dist/{chunk-WZA5ISAQ.js → chunk-OX53L237.js} +6 -6
- package/dist/chunk-PKIRVQLG.js +1 -0
- package/dist/chunk-QAF26ZQX.js +36 -0
- package/dist/{chunk-NWQ5VWUW.js → chunk-QFCKHUEP.js} +1 -1
- package/dist/chunk-QRWWYL52.js +88 -0
- package/dist/chunk-QTCZPS5I.js +1 -0
- package/dist/{chunk-WSAFBPS5.js → chunk-SV2SP22H.js} +4 -4
- package/dist/chunk-T5YRFRJV.js +1 -0
- package/dist/chunk-UQEQ6CXU.js +1 -0
- package/dist/chunk-V5EYVQ63.js +1 -0
- package/dist/chunk-VGJVIHHR.js +1 -0
- package/dist/{chunk-MRFN5ZQP.js → chunk-W5ZFXKSL.js} +1 -1
- package/dist/chunk-WLCBXCZV.js +5 -0
- package/dist/chunk-WOTTSPSF.js +2 -0
- package/dist/chunk-X7FYEKLI.js +1 -0
- package/dist/chunk-XH7PDHBF.js +1 -0
- package/dist/{chunk-KFKZOPZC.js → chunk-XMTLKDPP.js} +1 -1
- package/dist/chunk-YJTEMJFV.js +3 -0
- package/dist/chunk-YM77FQB3.js +8 -0
- package/dist/chunk-ZCPT6KC3.js +6 -0
- package/dist/chunk-ZPA6ECBJ.js +7 -0
- package/dist/{create-3NSOY7CA.js → create-DLUWG46F.js} +1 -1
- package/dist/doctor-IZ4YOCYE.js +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +168 -168
- package/dist/pipeline-IBQYDLFF.js +5 -0
- package/dist/{project-intelligence-lens-ZOAWXYC5.js → project-intelligence-lens-SIU7IXKG.js} +1 -1
- package/dist/project-test-coverage-FRMVYTFB.js +1 -0
- package/dist/verified-goal-M4GPOXNL.js +1 -0
- package/dist/{workspace-C4UETGY7.js → workspace-3AAOUELG.js} +1 -1
- package/dist/{workspace-agent-sync-446AXPHJ.js → workspace-agent-sync-QGYLY7HH.js} +1 -1
- package/dist/{workspace-archive-VHUPOBAV.js → workspace-archive-BA3ONVXX.js} +1 -1
- package/dist/{workspace-context-XSECHC7O.js → workspace-context-JCLPRYNC.js} +1 -1
- package/dist/workspace-contract-IUUPBQXU.js +1 -0
- package/dist/workspace-explain-CZGBVDE6.js +1 -0
- package/dist/workspace-explain-contract-KVQO57RC.js +1 -0
- package/dist/{workspace-feedback-WXE7NVMV.js → workspace-feedback-PCZKXG5R.js} +1 -1
- package/dist/{workspace-foundation-3EVAQ5X6.js → workspace-foundation-7IGMO4CW.js} +1 -1
- package/dist/{workspace-graph-stream-AJPS45FD.js → workspace-graph-stream-5YMLJXAJ.js} +1 -1
- package/dist/workspace-graph-token-efficiency-HK4KNWWP.js +1 -0
- package/dist/{workspace-history-YY7YRDOH.js → workspace-history-CHJOABME.js} +1 -1
- package/dist/{workspace-intelligence-FWRB47EJ.js → workspace-intelligence-XHSUFTAT.js} +1 -1
- package/dist/workspace-intelligence-evaluation-YMY3C5AW.js +1 -0
- package/dist/{workspace-intelligence-runner-GLC666ER.js → workspace-intelligence-runner-EN5V4KSC.js} +1 -1
- package/dist/workspace-intelligence-runtime-registry-NCVHKCMP.js +1 -0
- package/dist/workspace-knowledge-graph-VWQTIEYK.js +1 -0
- package/dist/{workspace-knowledge-graph-query-EKHIE3E2.js → workspace-knowledge-graph-query-TXA3KVUV.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-WB62AVDK.js +1 -0
- package/dist/workspace-mcp-serve-NCAGGWQS.js +3 -0
- package/dist/{workspace-model-MNJOGBPP.js → workspace-model-NXFIKX26.js} +1 -1
- package/dist/{workspace-onboarding-5KO7Z7AD.js → workspace-onboarding-OP22NHQ4.js} +1 -1
- package/dist/{workspace-readme-4S6PJ74A.js → workspace-readme-IVJXSIBS.js} +1 -1
- package/dist/{workspace-registry-summary-GPJEL7K7.js → workspace-registry-summary-A5VDPRHU.js} +1 -1
- package/dist/workspace-repair-engine-N4KXNSVL.js +3 -0
- package/dist/workspace-run-PXKC3ELS.js +1 -0
- package/dist/{workspace-verify-C6HWHRLJ.js → workspace-verify-TUVLFPPN.js} +1 -1
- package/dist/{workspace-watch-DLPHLF5R.js → workspace-watch-2ZNOYSUQ.js} +1 -1
- package/docs/commands-reference.md +35 -6
- package/docs/contracts/ARTIFACT_CATALOG.md +6 -1
- package/docs/contracts/README.md +5 -0
- package/docs/doctor-command.md +158 -7
- package/docs/graph-benchmark-methodology.md +13 -0
- package/docs/workspace-intelligence-runner.md +4 -0
- package/docs/workspace-knowledge-graph.md +53 -4
- package/docs/workspace-run.md +14 -3
- package/package.json +10 -3
- package/dist/analyze-AAZEJ4FC.js +0 -1
- package/dist/autopilot-release-EZXOGAVE.js +0 -1
- package/dist/chunk-2PY65U6X.js +0 -5
- package/dist/chunk-3DONU3DU.js +0 -1
- package/dist/chunk-44VJHNZB.js +0 -1
- package/dist/chunk-4GPKQFPY.js +0 -1
- package/dist/chunk-5XDPQ3CB.js +0 -1
- package/dist/chunk-7AR5PDLD.js +0 -1
- package/dist/chunk-7KKP7RNB.js +0 -3
- package/dist/chunk-7T4TSV5C.js +0 -1
- package/dist/chunk-B5AY55A5.js +0 -1
- package/dist/chunk-BQ24743S.js +0 -5
- package/dist/chunk-BYVTHIC3.js +0 -2
- package/dist/chunk-CEIJIFY7.js +0 -88
- package/dist/chunk-EBKYSDCX.js +0 -1
- package/dist/chunk-FQLB4BIC.js +0 -7
- package/dist/chunk-GDU7VP6G.js +0 -1
- package/dist/chunk-H7P7SSUW.js +0 -75
- package/dist/chunk-KJYLCZRI.js +0 -8
- package/dist/chunk-KVUYAYTY.js +0 -8
- package/dist/chunk-MQ73VS4E.js +0 -2
- package/dist/chunk-NYHVCFBT.js +0 -1
- package/dist/chunk-OUBBBC7T.js +0 -36
- package/dist/chunk-P7K5RHJC.js +0 -2
- package/dist/chunk-PS5F4DCT.js +0 -1
- package/dist/chunk-QZ7PNMVP.js +0 -1
- package/dist/chunk-RA24WQLF.js +0 -1
- package/dist/chunk-RMXXK64P.js +0 -4
- package/dist/chunk-S7Z4DP3P.js +0 -2
- package/dist/chunk-SJLUE6AY.js +0 -1
- package/dist/chunk-TEHQ7XKK.js +0 -3
- package/dist/chunk-UFOCUHG3.js +0 -1
- package/dist/chunk-WD2XDMGB.js +0 -1
- package/dist/chunk-XVRJVKOX.js +0 -1
- package/dist/doctor-UEFFNAUD.js +0 -1
- package/dist/pipeline-ZYKDWUKK.js +0 -5
- package/dist/project-test-coverage-44ZPCOPV.js +0 -1
- package/dist/verified-goal-PE2PGAHF.js +0 -1
- package/dist/workspace-contract-AYFTZIKM.js +0 -1
- package/dist/workspace-explain-SZI2WAAD.js +0 -1
- package/dist/workspace-explain-contract-N2XQHAPM.js +0 -1
- package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +0 -1
- package/dist/workspace-intelligence-evaluation-UP2K3L35.js +0 -1
- package/dist/workspace-intelligence-runtime-registry-MRSF7RTT.js +0 -1
- package/dist/workspace-knowledge-graph-BMMM2FUE.js +0 -1
- package/dist/workspace-mcp-serve-COA4FMCA.js +0 -3
- package/dist/workspace-repair-engine-NMKOWUQP.js +0 -3
- package/dist/workspace-run-2DEVJOVH.js +0 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Commands Reference
|
|
2
2
|
|
|
3
|
-
|
|
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
|
|
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
|
-
|
|
234
|
-
|
|
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.
|
|
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)
|
package/docs/contracts/README.md
CHANGED
|
@@ -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
|
package/docs/doctor-command.md
CHANGED
|
@@ -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` |
|
|
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` |
|
|
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
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
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.
|
|
386
|
-
|
|
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
|
package/docs/workspace-run.md
CHANGED
|
@@ -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
|
-
|
|
25
|
-
|
|
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.
|
|
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:
|
|
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"
|
package/dist/analyze-AAZEJ4FC.js
DELETED
|
@@ -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-KJYLCZRI.js';
|