workspai 0.66.0 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +24 -22
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +4 -0
  3. package/contracts/extension-cli-compatibility.v1.json +4 -0
  4. package/contracts/published-contract-catalog.v1.json +20 -0
  5. package/contracts/runtime-command-surface.v1.json +55 -2
  6. package/contracts/workspace-activity-board.v1.json +114 -0
  7. package/contracts/workspace-activity-monitor-fleet.v1.json +18 -0
  8. package/contracts/workspace-activity-monitor-snapshot.v1.json +161 -0
  9. package/contracts/workspace-intelligence/workspace-intelligence-benchmark.v1.json +196 -0
  10. package/contracts/workspace-intelligence-architecture.v1.json +17 -0
  11. package/contracts/workspace-intelligence-chain.v1.json +17 -0
  12. package/dist/analyze-IC2KRVCG.js +1 -0
  13. package/dist/{artifact-remediation-plan-M2XBS2IU.js → artifact-remediation-plan-GFFHC2ZU.js} +1 -1
  14. package/dist/autopilot-release-RECEZAZI.js +1 -0
  15. package/dist/capabilities-command-X4WZIJNR.js +1 -0
  16. package/dist/{chunk-TTHO4MFC.js → chunk-2M62CU3O.js} +1 -1
  17. package/dist/{chunk-JZJBA2V2.js → chunk-2MTJWPQ4.js} +1 -1
  18. package/dist/chunk-2MVIRJJR.js +1 -0
  19. package/dist/chunk-2RPFCBS4.js +1 -0
  20. package/dist/{chunk-O37UBRMX.js → chunk-3O7LZPKA.js} +1 -1
  21. package/dist/chunk-3OGPTLI2.js +1 -0
  22. package/dist/{chunk-3H5ACWWZ.js → chunk-4RV4JVGR.js} +1 -1
  23. package/dist/{chunk-XQFWUM2P.js → chunk-4WVOAX2V.js} +1 -1
  24. package/dist/{chunk-L5CCIIF2.js → chunk-5EVDW7JM.js} +1 -1
  25. package/dist/{chunk-727IQFGN.js → chunk-5ME4W4LN.js} +1 -1
  26. package/dist/{chunk-DUBOKZMA.js → chunk-6254CWUY.js} +12 -12
  27. package/dist/{chunk-AP4PV6WJ.js → chunk-6E2Y3XGT.js} +1 -1
  28. package/dist/{chunk-ZQH2I5RQ.js → chunk-ARUFY5W3.js} +1 -1
  29. package/dist/{chunk-IIFFEEMX.js → chunk-BHFRP7TV.js} +1 -1
  30. package/dist/{chunk-6JX56VAL.js → chunk-BHM6RHTA.js} +1 -1
  31. package/dist/{chunk-VA5VSOBL.js → chunk-BRYJTW6S.js} +1 -1
  32. package/dist/{chunk-3NM3JAZW.js → chunk-BUYLM6QV.js} +1 -1
  33. package/dist/chunk-CPR2CMOY.js +1 -0
  34. package/dist/{chunk-2PACEMNE.js → chunk-CZVT7T2X.js} +1 -1
  35. package/dist/{chunk-7FF5EOIO.js → chunk-EHCKITR4.js} +1 -1
  36. package/dist/{chunk-UPIPSSXY.js → chunk-ENZPM52J.js} +1 -1
  37. package/dist/{chunk-334J2KIP.js → chunk-FPDH3N3A.js} +1 -1
  38. package/dist/{chunk-D4UHRJAP.js → chunk-FX5J6JCK.js} +1 -1
  39. package/dist/{chunk-HJLGXFMK.js → chunk-GIQ4SDRJ.js} +1 -1
  40. package/dist/{chunk-WTWRSEOW.js → chunk-H77ZNH5O.js} +1 -1
  41. package/dist/{chunk-EHH4SKVH.js → chunk-HQLBO23O.js} +3 -3
  42. package/dist/{chunk-AXUA7PFV.js → chunk-HYE5UHPV.js} +1 -1
  43. package/dist/{chunk-XESFJN52.js → chunk-IKUFNK46.js} +1 -1
  44. package/dist/{chunk-YX5VWPR5.js → chunk-IQQMFRWM.js} +1 -1
  45. package/dist/{chunk-PD7Y6HIM.js → chunk-JCGSIDMC.js} +1 -1
  46. package/dist/{chunk-4XEH3WNV.js → chunk-KENOAC2Q.js} +1 -1
  47. package/dist/{chunk-QGAPGZPL.js → chunk-KQ2TMI26.js} +1 -1
  48. package/dist/{chunk-OI2VOU6S.js → chunk-N4QFNOAI.js} +1 -1
  49. package/dist/{chunk-5XGR3LRI.js → chunk-OCNPOYMA.js} +1 -1
  50. package/dist/{chunk-VQOWB26M.js → chunk-PSYQ6IJA.js} +1 -1
  51. package/dist/{chunk-HLWDIIWL.js → chunk-QMQBX3RV.js} +1 -1
  52. package/dist/{chunk-H5RJCS5E.js → chunk-SLFOUSRW.js} +1 -1
  53. package/dist/chunk-SRLWHOLF.js +1 -0
  54. package/dist/chunk-SVYY55IS.js +157 -0
  55. package/dist/{chunk-JRP6WP5C.js → chunk-THIG2YQP.js} +1 -1
  56. package/dist/{chunk-PJPS7CNH.js → chunk-TP7VKEUF.js} +1 -1
  57. package/dist/{chunk-IVF6NEHS.js → chunk-VI4ZRAY6.js} +1 -1
  58. package/dist/{chunk-EP4CUWOO.js → chunk-VWBMDGPY.js} +1 -1
  59. package/dist/{chunk-GAYK3WGV.js → chunk-XDPTAV2T.js} +1 -1
  60. package/dist/{chunk-R2M5OJOK.js → chunk-Y35VLVF6.js} +1 -1
  61. package/dist/{chunk-ECLMYTWT.js → chunk-Y4Z6CEII.js} +1 -1
  62. package/dist/{chunk-UOCERSAN.js → chunk-YYY2WXOH.js} +1 -1
  63. package/dist/{chunk-6UNATTB7.js → chunk-ZGHJIQXL.js} +1 -1
  64. package/dist/chunk-ZI2E7P6O.js +4 -0
  65. package/dist/{create-SOLLXXAB.js → create-72ITVZXV.js} +1 -1
  66. package/dist/{doctor-NQ5PUCUP.js → doctor-CVYUESRQ.js} +1 -1
  67. package/dist/{goal-lifecycle-IPNY7KNR.js → goal-lifecycle-H55AGFCB.js} +1 -1
  68. package/dist/{goal-pack-2WV3EA4Y.js → goal-pack-6OBZOPCD.js} +1 -1
  69. package/dist/index.d.ts +14 -2
  70. package/dist/index.js +129 -129
  71. package/dist/live-command-5VXPR43F.js +15 -0
  72. package/dist/{pipeline-MIMENSI7.js → pipeline-SKYOXWHW.js} +1 -1
  73. package/dist/{project-agent-entry-OWLJ3IHQ.js → project-agent-entry-5IUBEREI.js} +1 -1
  74. package/dist/{project-intelligence-lens-I67EO6AE.js → project-intelligence-lens-LQCN65P2.js} +1 -1
  75. package/dist/{project-test-coverage-OPDVSFPH.js → project-test-coverage-KD4LLFGV.js} +1 -1
  76. package/dist/{verified-goal-46JWNCDY.js → verified-goal-HN7G532B.js} +1 -1
  77. package/dist/{workspace-KO37XHF6.js → workspace-5W7FYGDQ.js} +1 -1
  78. package/dist/{workspace-agent-sync-32FIJQBH.js → workspace-agent-sync-OZCDQORK.js} +1 -1
  79. package/dist/{workspace-archive-6R5DRNZW.js → workspace-archive-NOSGRKRZ.js} +1 -1
  80. package/dist/{workspace-context-JKRPX775.js → workspace-context-L65BR5L6.js} +1 -1
  81. package/dist/{workspace-contract-4T3NYNK5.js → workspace-contract-JYHNEJPV.js} +1 -1
  82. package/dist/workspace-explain-SUBK6FLO.js +1 -0
  83. package/dist/workspace-explain-contract-WMREJWHF.js +1 -0
  84. package/dist/{workspace-feedback-6VQ7T4CR.js → workspace-feedback-MWGCT5R2.js} +1 -1
  85. package/dist/{workspace-foundation-GHWO3BZU.js → workspace-foundation-VIB3PXNH.js} +1 -1
  86. package/dist/{workspace-graph-stream-PTVS47NJ.js → workspace-graph-stream-45JHE4MG.js} +1 -1
  87. package/dist/workspace-graph-token-efficiency-NPECU6Y5.js +1 -0
  88. package/dist/{workspace-history-M2K4M2JY.js → workspace-history-JKW3VJO3.js} +1 -1
  89. package/dist/{workspace-intelligence-PJIPTXL3.js → workspace-intelligence-3C47PK4L.js} +1 -1
  90. package/dist/workspace-intelligence-benchmark-SRDIHX3X.js +1 -0
  91. package/dist/workspace-intelligence-evaluation-OJIQS5SN.js +1 -0
  92. package/dist/{workspace-intelligence-runner-M47QR3JM.js → workspace-intelligence-runner-OWN5ZI6W.js} +1 -1
  93. package/dist/{workspace-intelligence-runtime-registry-FFGQF4A7.js → workspace-intelligence-runtime-registry-UKFB3BI7.js} +1 -1
  94. package/dist/{workspace-knowledge-graph-V2EAYDCL.js → workspace-knowledge-graph-AKG5NUU6.js} +1 -1
  95. package/dist/{workspace-knowledge-graph-contract-VANN7RCA.js → workspace-knowledge-graph-contract-X52KXBXJ.js} +1 -1
  96. package/dist/{workspace-knowledge-graph-query-RASPF7FS.js → workspace-knowledge-graph-query-DXA4CROE.js} +1 -1
  97. package/dist/workspace-knowledge-graph-snapshot-SNI5K2RL.js +1 -0
  98. package/dist/{workspace-mcp-serve-YRORNE4P.js → workspace-mcp-serve-PK226GMV.js} +1 -1
  99. package/dist/{workspace-model-VSVKLX7M.js → workspace-model-R4ISKDB2.js} +1 -1
  100. package/dist/{workspace-onboarding-2VMJZVLZ.js → workspace-onboarding-Y5RPEFUD.js} +1 -1
  101. package/dist/{workspace-readme-6X3GLTBM.js → workspace-readme-PL5V3UDH.js} +1 -1
  102. package/dist/{workspace-registry-summary-QVSJKKTX.js → workspace-registry-summary-STGUGROG.js} +1 -1
  103. package/dist/{workspace-repair-engine-WSKV3Q4V.js → workspace-repair-engine-FNLL5ZDK.js} +1 -1
  104. package/dist/workspace-run-GFBFGUFM.js +1 -0
  105. package/dist/{workspace-verify-EJCSOBIK.js → workspace-verify-AXVX3PF3.js} +1 -1
  106. package/dist/{workspace-watch-JTIFBF4Z.js → workspace-watch-RLBEJKXE.js} +1 -1
  107. package/docs/DEVELOPMENT.md +19 -0
  108. package/docs/README.md +19 -16
  109. package/docs/ci-workflows.md +1 -1
  110. package/docs/commands-reference.md +17 -1
  111. package/docs/contracts/ARTIFACT_CATALOG.md +1 -0
  112. package/docs/contracts/README.md +3 -0
  113. package/docs/workspace-intelligence-benchmark.md +82 -0
  114. package/docs/workspace-live-activity.md +11 -1
  115. package/package.json +4 -2
  116. package/dist/analyze-UJQWGNM2.js +0 -1
  117. package/dist/autopilot-release-U6F4M2BQ.js +0 -1
  118. package/dist/capabilities-command-XUKPO25Z.js +0 -1
  119. package/dist/chunk-5U4L6VF2.js +0 -1
  120. package/dist/chunk-C4S22E6S.js +0 -1
  121. package/dist/chunk-H7MRINGP.js +0 -1
  122. package/dist/chunk-JC4XSU7G.js +0 -1
  123. package/dist/chunk-MZ7U4BIQ.js +0 -157
  124. package/dist/live-command-Q6E45N7S.js +0 -18
  125. package/dist/workspace-explain-MOGL4GEA.js +0 -1
  126. package/dist/workspace-explain-contract-W2E6LF4Q.js +0 -1
  127. package/dist/workspace-graph-token-efficiency-Z5JD5NHI.js +0 -1
  128. package/dist/workspace-intelligence-evaluation-GONCRE6O.js +0 -1
  129. package/dist/workspace-knowledge-graph-snapshot-5YIG6EMG.js +0 -1
  130. package/dist/workspace-run-3BXKTLVL.js +0 -1
package/README.md CHANGED
@@ -22,24 +22,24 @@ Two commands. Your project gains a bounded, evidence-backed system view:
22
22
 
23
23
  ### Before vs After
24
24
 
25
- | Before Workspai | After Workspai |
26
- | --- | --- |
27
- | Agent scans thousands of files for context | Agent starts from bounded entry and context artifacts |
28
- | No dependency map between services | Searchable graph with source-level proof |
29
- | Broken test blocks release, no one knows why | Doctor localizes the blocker and next target |
30
- | Every AI session starts from scratch | Sessions resume from durable evidence |
25
+ | Before Workspai | After Workspai |
26
+ | -------------------------------------------- | ----------------------------------------------------- |
27
+ | Agent scans thousands of files for context | Agent starts from bounded entry and context artifacts |
28
+ | No dependency map between services | Searchable graph with source-level proof |
29
+ | Broken test blocks release, no one knows why | Doctor localizes the blocker and next target |
30
+ | Every AI session starts from scratch | Sessions resume from durable evidence |
31
31
 
32
32
  Here is what you get:
33
33
 
34
- | What it produces | Why it matters |
35
- | --- | --- |
36
- | **Workspace Model** | A canonical inventory of registered projects, detected runtimes, frameworks, and proven dependencies |
37
- | **Knowledge Graph** | Searchable relationships between projects, backed by source-level proof |
38
- | **Health & Readiness** | Doctor checks, verification gates, and release posture based on evidence, not guesses |
39
- | **Agent Context** | Bounded, focused instructions so AI tools read what they need, not the entire repo |
40
- | **Agent Rules** | Ready-to-use grounding for Cursor, Copilot, Claude, Codex, Gemini, and more |
41
- | **Agent Skills** | Runtime-, polyglot-, test-, and delivery-aware operational playbooks, with portable `SKILL.md` projections where the host supports Agent Skills |
42
- | **MCP Server** | Versioned read-oriented tools for querying evidence, graph, blockers, and context live |
34
+ | What it produces | Why it matters |
35
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | **Workspace Model** | A canonical inventory of registered projects, detected runtimes, frameworks, and proven dependencies |
37
+ | **Knowledge Graph** | Searchable relationships between projects, backed by source-level proof |
38
+ | **Health & Readiness** | Doctor checks, verification gates, and release posture based on evidence, not guesses |
39
+ | **Agent Context** | Bounded, focused instructions so AI tools read what they need, not the entire repo |
40
+ | **Agent Rules** | Ready-to-use grounding for Cursor, Copilot, Claude, Codex, Gemini, and more |
41
+ | **Agent Skills** | Runtime-, polyglot-, test-, and delivery-aware operational playbooks, with portable `SKILL.md` projections where the host supports Agent Skills |
42
+ | **MCP Server** | Versioned read-oriented tools for querying evidence, graph, blockers, and context live |
43
43
 
44
44
  `generic` is the safe default when you do not yet know which agent will use the
45
45
  project: Workspai builds one portable context and prepares discovery adapters
@@ -182,13 +182,13 @@ a machine-readable decision and can use `--scope` and `--runtime`.
182
182
  Everything shown in the [output tree above](#what-the-output-looks-like) is
183
183
  generated in one run. The key files for each audience:
184
184
 
185
- | Audience | What to read |
186
- | --- | --- |
187
- | **AI agent** | `agent-entry.v1.json` (project) → `workspace-context-agent.json` (workspace) |
188
- | **Developer** | Terminal summary, or `workspace-explain-last-run.json` for diagnosis |
189
- | **CI / automation** | `workspace-verify-last-run.json` (exit code 0 = pass, 2 = blocked) |
190
- | **MCP client** | `workspace mcp serve` (versioned read-oriented tools over JSON-RPC) |
191
- | **IDE extension** | Same artifacts + watch events |
185
+ | Audience | What to read |
186
+ | ------------------- | ---------------------------------------------------------------------------- |
187
+ | **AI agent** | `agent-entry.v1.json` (project) → `workspace-context-agent.json` (workspace) |
188
+ | **Developer** | Terminal summary, or `workspace-explain-last-run.json` for diagnosis |
189
+ | **CI / automation** | `workspace-verify-last-run.json` (exit code 0 = pass, 2 = blocked) |
190
+ | **MCP client** | `workspace mcp serve` (versioned read-oriented tools over JSON-RPC) |
191
+ | **IDE extension** | Same artifacts + watch events |
192
192
 
193
193
  An agent can prove that it entered through governed evidence before scanning
194
194
  the repository:
@@ -273,6 +273,8 @@ explicitly unproven.
273
273
  | Check the current project | `npx workspai doctor project` |
274
274
  | Check the whole workspace | `npx workspai doctor workspace` |
275
275
  | Refresh Model and Graph | `npx workspai workspace model --write --json` |
276
+ | Watch command activity as a portable board | `npx workspai live --once --json --projection board` |
277
+ | Benchmark bounded agent retrieval | `npx workspai workspace graph benchmark-suite agent-core.v1 --write --json` |
276
278
  | Ask a focused architecture question | `npx workspai workspace graph search "authentication service" --limit 12 --json` |
277
279
  | Verify current evidence | `npx workspai workspace verify --strict --json` |
278
280
  | Inspect a governed repair before execution | `npx workspai workspace repair capabilities --json` |
@@ -761,6 +761,10 @@
761
761
  "flags": "--json",
762
762
  "attributeName": "json"
763
763
  },
764
+ {
765
+ "flags": "--projection <projection>",
766
+ "attributeName": "projection"
767
+ },
764
768
  {
765
769
  "flags": "--refresh-ms <milliseconds>",
766
770
  "attributeName": "refreshMs"
@@ -65,6 +65,9 @@
65
65
  },
66
66
  "cliLogEvent": "cli-log-event-v1",
67
67
  "workspaceActivityEvent": "workspace-activity-event.v1",
68
+ "workspaceActivityMonitorSnapshot": "workspace-activity-monitor-snapshot.v1",
69
+ "workspaceActivityMonitorFleet": "workspace-activity-monitor-fleet.v1",
70
+ "workspaceActivityBoard": "workspace-activity-board.v1",
68
71
  "freshnessMetadata": "rapidkit-freshness-metadata-v1",
69
72
  "factFreshness": "rapidkit-fact-freshness-v1",
70
73
  "blockerResolution": "rapidkit-blocker-resolution-v1",
@@ -78,6 +81,7 @@
78
81
  "workspaceKnowledgeGraphChangeOverlay": "workspace-knowledge-graph-change-overlay.v1",
79
82
  "workspaceKnowledgeSearch": "workspace-knowledge-search.v1",
80
83
  "workspaceGraphTokenEfficiency": "workspace-graph-token-efficiency.v1",
84
+ "workspaceIntelligenceBenchmark": "workspace-intelligence-benchmark.v1",
81
85
  "modelUsageEvent": "model-usage-event.v1",
82
86
  "workspaceIntelligenceEvaluation": "workspace-intelligence-evaluation.v1",
83
87
  "workspaceIntelligenceEvaluationComparison": "workspace-intelligence-evaluation-comparison.v1",
@@ -331,6 +331,21 @@
331
331
  "contractPath": "contracts/workspace-activity-event.v1.json",
332
332
  "publication": "json-schema"
333
333
  },
334
+ "workspaceActivityMonitorSnapshot": {
335
+ "schemaVersion": "workspace-activity-monitor-snapshot.v1",
336
+ "contractPath": "contracts/workspace-activity-monitor-snapshot.v1.json",
337
+ "publication": "capability-contract"
338
+ },
339
+ "workspaceActivityMonitorFleet": {
340
+ "schemaVersion": "workspace-activity-monitor-fleet.v1",
341
+ "contractPath": "contracts/workspace-activity-monitor-fleet.v1.json",
342
+ "publication": "json-schema"
343
+ },
344
+ "workspaceActivityBoard": {
345
+ "schemaVersion": "workspace-activity-board.v1",
346
+ "contractPath": "contracts/workspace-activity-board.v1.json",
347
+ "publication": "json-schema"
348
+ },
334
349
  "freshnessMetadata": {
335
350
  "schemaVersion": "rapidkit-freshness-metadata-v1",
336
351
  "contractPath": null,
@@ -396,6 +411,11 @@
396
411
  "contractPath": "contracts/workspace-intelligence/workspace-graph-token-efficiency.v1.json",
397
412
  "publication": "json-schema"
398
413
  },
414
+ "workspaceIntelligenceBenchmark": {
415
+ "schemaVersion": "workspace-intelligence-benchmark.v1",
416
+ "contractPath": "contracts/workspace-intelligence/workspace-intelligence-benchmark.v1.json",
417
+ "publication": "json-schema"
418
+ },
399
419
  "modelUsageEvent": {
400
420
  "schemaVersion": "model-usage-event.v1",
401
421
  "contractPath": "contracts/workspace-intelligence/model-usage-event.v1.json",
@@ -562,8 +562,27 @@
562
562
  "invocation": "live",
563
563
  "summary": "Render the versioned cross-terminal execution graph for Workspai runs in the current project or workspace.",
564
564
  "canonicalArgv": [
565
- "live"
566
- ]
565
+ "live",
566
+ "--once",
567
+ "--json",
568
+ "--projection",
569
+ "board"
570
+ ],
571
+ "output": {
572
+ "defaultFormat": "human-or-json",
573
+ "modes": [
574
+ {
575
+ "selector": "--once --json --projection monitor",
576
+ "format": "json",
577
+ "mediaType": "application/json"
578
+ },
579
+ {
580
+ "selector": "--once --json --projection board",
581
+ "format": "json",
582
+ "mediaType": "application/json"
583
+ }
584
+ ]
585
+ }
567
586
  },
568
587
  {
569
588
  "invocation": "merge",
@@ -1177,6 +1196,11 @@
1177
1196
  "format": "json",
1178
1197
  "mediaType": "application/json"
1179
1198
  },
1199
+ {
1200
+ "selector": "benchmark-suite agent-core.v1 --write --json",
1201
+ "format": "json",
1202
+ "mediaType": "application/json"
1203
+ },
1180
1204
  {
1181
1205
  "selector": "emit --json",
1182
1206
  "format": "json",
@@ -1235,6 +1259,16 @@
1235
1259
  ]
1236
1260
  }
1237
1261
  },
1262
+ {
1263
+ "invocation": "workspace graph benchmark-suite --write",
1264
+ "summary": "Run the fixed multi-scenario retrieval suite, preserve estimate-versus-measurement provenance, and publish the benchmark artifact.",
1265
+ "canonicalArgv": [
1266
+ "workspace",
1267
+ "graph",
1268
+ "benchmark-suite",
1269
+ "--write"
1270
+ ]
1271
+ },
1238
1272
  {
1239
1273
  "invocation": "workspace hydrate",
1240
1274
  "summary": "Restore or materialize workspace state from a portable representation.",
@@ -2219,6 +2253,19 @@
2219
2253
  ]
2220
2254
  ]
2221
2255
  },
2256
+ {
2257
+ "artifactPath": ".workspai/reports/workspace-intelligence-benchmark-last-run.json",
2258
+ "schemaVersion": "workspace-intelligence-benchmark.v1",
2259
+ "contractPath": "contracts/workspace-intelligence/workspace-intelligence-benchmark.v1.json",
2260
+ "producerCommands": [
2261
+ [
2262
+ "workspace",
2263
+ "graph",
2264
+ "benchmark-suite",
2265
+ "--write"
2266
+ ]
2267
+ ]
2268
+ },
2222
2269
  {
2223
2270
  "artifactPath": ".workspai/reports/rapidkit-mcp-design.json",
2224
2271
  "schemaVersion": "workspai-mcp-design.v1",
@@ -2751,6 +2798,10 @@
2751
2798
  {
2752
2799
  "flag": "--scope",
2753
2800
  "description": "Limit the operation to a bounded scope such as project:<name>."
2801
+ },
2802
+ {
2803
+ "flag": "--write",
2804
+ "description": "Persist the command artifact under .workspai/reports."
2754
2805
  }
2755
2806
  ],
2756
2807
  "subactions": [
@@ -2762,6 +2813,7 @@
2762
2813
  "path",
2763
2814
  "overlay",
2764
2815
  "benchmark",
2816
+ "benchmark-suite",
2765
2817
  "dot",
2766
2818
  "mermaid",
2767
2819
  "jsonld",
@@ -2772,6 +2824,7 @@
2772
2824
  "examples": [
2773
2825
  "workspai workspace graph search \"authentication endpoint\" --kind endpoint --limit 12 --json",
2774
2826
  "workspai workspace graph evidence \"GET /users\" --json",
2827
+ "workspai workspace graph benchmark-suite agent-core.v1 --write --json",
2775
2828
  "workspai workspace graph mermaid"
2776
2829
  ]
2777
2830
  },
@@ -0,0 +1,114 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://workspai.dev/contracts/workspace-activity-board.v1.json",
4
+ "title": "Workspai Renderer-Neutral Activity Board",
5
+ "description": "A bounded renderer-neutral projection for IDE, web, terminal, SVG and capture consumers. It preserves observed run data without becoming verification evidence.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "scopeLabel",
10
+ "generatedAt",
11
+ "activeRunCount",
12
+ "healthyRunCount",
13
+ "warningRunCount",
14
+ "failedRunCount",
15
+ "runs",
16
+ "diagnostics",
17
+ "global",
18
+ "scopeCount"
19
+ ],
20
+ "properties": {
21
+ "schemaVersion": { "const": "workspace-activity-board.v1" },
22
+ "scopeLabel": { "type": "string", "minLength": 1 },
23
+ "generatedAt": { "type": "string", "format": "date-time" },
24
+ "activeRunCount": { "type": "integer", "minimum": 0 },
25
+ "healthyRunCount": { "type": "integer", "minimum": 0 },
26
+ "warningRunCount": { "type": "integer", "minimum": 0 },
27
+ "failedRunCount": { "type": "integer", "minimum": 0 },
28
+ "selectedRunId": { "type": "string", "minLength": 1 },
29
+ "runs": { "type": "array", "items": { "$ref": "#/$defs/boardRun" } },
30
+ "diagnostics": { "type": "array", "items": { "type": "string" } },
31
+ "global": { "type": "boolean" },
32
+ "scopeCount": { "type": "integer", "minimum": 0 }
33
+ },
34
+ "additionalProperties": false,
35
+ "$defs": {
36
+ "boardRun": {
37
+ "type": "object",
38
+ "required": [
39
+ "run",
40
+ "commandLabel",
41
+ "active",
42
+ "nodes",
43
+ "edges",
44
+ "activeBlockCount",
45
+ "warningCount",
46
+ "scope",
47
+ "locationLabel"
48
+ ],
49
+ "properties": {
50
+ "run": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/run" },
51
+ "commandLabel": { "type": "string", "minLength": 1 },
52
+ "active": { "type": "boolean" },
53
+ "nodes": {
54
+ "type": "array",
55
+ "items": {
56
+ "type": "object",
57
+ "required": ["id", "label", "status", "order", "updatedAt", "attempts", "root"],
58
+ "properties": {
59
+ "id": { "type": "string", "minLength": 1 },
60
+ "label": { "type": "string", "minLength": 1 },
61
+ "status": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/status" },
62
+ "order": { "type": "number" },
63
+ "parentId": { "type": "string", "minLength": 1 },
64
+ "progress": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/progress" },
65
+ "durationMs": { "type": "number", "minimum": 0 },
66
+ "layoutHint": { "enum": ["source", "process", "gate", "sink"] },
67
+ "group": { "type": "string", "minLength": 1 },
68
+ "updatedAt": { "type": "string", "format": "date-time" },
69
+ "attempt": { "type": "integer", "minimum": 1 },
70
+ "attempts": {
71
+ "type": "array",
72
+ "items": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/attempt" }
73
+ },
74
+ "root": { "type": "boolean" }
75
+ },
76
+ "additionalProperties": false
77
+ }
78
+ },
79
+ "edges": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "object",
83
+ "required": [
84
+ "id",
85
+ "fromBlockId",
86
+ "toBlockId",
87
+ "kind",
88
+ "status",
89
+ "order",
90
+ "updatedAt",
91
+ "inferred"
92
+ ],
93
+ "properties": {
94
+ "id": { "type": "string", "minLength": 1 },
95
+ "fromBlockId": { "type": "string", "minLength": 1 },
96
+ "toBlockId": { "type": "string", "minLength": 1 },
97
+ "kind": { "enum": ["sequence", "parallel", "gate", "handoff"] },
98
+ "status": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/status" },
99
+ "order": { "type": "number" },
100
+ "updatedAt": { "type": "string", "format": "date-time" },
101
+ "inferred": { "type": "boolean" }
102
+ },
103
+ "additionalProperties": false
104
+ }
105
+ },
106
+ "activeBlockCount": { "type": "integer", "minimum": 0 },
107
+ "warningCount": { "type": "integer", "minimum": 0 },
108
+ "scope": { "$ref": "workspace-activity-monitor-snapshot.v1.json#/$defs/scope" },
109
+ "locationLabel": { "type": "string", "minLength": 1 }
110
+ },
111
+ "additionalProperties": false
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://workspai.dev/contracts/workspace-activity-monitor-fleet.v1.json",
4
+ "title": "Workspai Activity Monitor Fleet Snapshot",
5
+ "description": "A deterministic aggregate of bounded local activity monitor snapshots.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "generatedAt", "scopes", "diagnostics"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "workspace-activity-monitor-fleet.v1" },
10
+ "generatedAt": { "type": "string", "format": "date-time" },
11
+ "scopes": {
12
+ "type": "array",
13
+ "items": { "$ref": "workspace-activity-monitor-snapshot.v1.json" }
14
+ },
15
+ "diagnostics": { "type": "array", "items": { "type": "string" } }
16
+ },
17
+ "additionalProperties": false
18
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://workspai.dev/contracts/workspace-activity-monitor-snapshot.v1.json",
4
+ "title": "Workspai Activity Monitor Snapshot",
5
+ "description": "A deterministic local projection of durable Workspai activity journals. It is observational and is not verification evidence by itself.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "generatedAt", "scope", "runs", "diagnostics"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "workspace-activity-monitor-snapshot.v1" },
10
+ "generatedAt": { "type": "string", "format": "date-time" },
11
+ "scope": { "$ref": "#/$defs/scope" },
12
+ "runs": { "type": "array", "items": { "$ref": "#/$defs/run" } },
13
+ "diagnostics": { "type": "array", "items": { "type": "string" } }
14
+ },
15
+ "additionalProperties": false,
16
+ "$defs": {
17
+ "status": {
18
+ "enum": [
19
+ "planned",
20
+ "running",
21
+ "succeeded",
22
+ "warned",
23
+ "blocked",
24
+ "failed",
25
+ "cancelled",
26
+ "skipped",
27
+ "rolled-back"
28
+ ]
29
+ },
30
+ "scope": {
31
+ "type": "object",
32
+ "required": ["kind", "id", "label", "portable"],
33
+ "properties": {
34
+ "kind": { "enum": ["ephemeral-project", "project", "workspace"] },
35
+ "id": { "type": "string", "minLength": 1 },
36
+ "label": { "type": "string", "minLength": 1 },
37
+ "portable": { "type": "boolean" }
38
+ },
39
+ "additionalProperties": false
40
+ },
41
+ "origin": {
42
+ "type": "object",
43
+ "required": ["id", "kind", "label"],
44
+ "properties": {
45
+ "id": { "type": "string", "minLength": 1 },
46
+ "kind": { "enum": ["project", "workspace-root"] },
47
+ "label": { "type": "string", "minLength": 1 }
48
+ },
49
+ "additionalProperties": false
50
+ },
51
+ "progress": {
52
+ "type": "object",
53
+ "properties": {
54
+ "completed": { "type": "number", "minimum": 0 },
55
+ "total": { "type": "number", "minimum": 0 },
56
+ "percent": { "type": "number", "minimum": 0, "maximum": 100 },
57
+ "iteration": { "type": "number", "minimum": 0 },
58
+ "iterations": { "type": "number", "minimum": 0 }
59
+ },
60
+ "additionalProperties": false
61
+ },
62
+ "attempt": {
63
+ "type": "object",
64
+ "required": ["attempt", "status", "startedAt", "updatedAt"],
65
+ "properties": {
66
+ "attempt": { "type": "integer", "minimum": 1 },
67
+ "status": { "$ref": "#/$defs/status" },
68
+ "startedAt": { "type": "string", "format": "date-time" },
69
+ "updatedAt": { "type": "string", "format": "date-time" },
70
+ "progress": { "$ref": "#/$defs/progress" },
71
+ "durationMs": { "type": "number", "minimum": 0 }
72
+ },
73
+ "additionalProperties": false
74
+ },
75
+ "block": {
76
+ "type": "object",
77
+ "required": ["id", "label", "status", "order", "updatedAt", "attempts"],
78
+ "properties": {
79
+ "id": { "type": "string", "minLength": 1 },
80
+ "label": { "type": "string", "minLength": 1 },
81
+ "status": { "$ref": "#/$defs/status" },
82
+ "order": { "type": "number" },
83
+ "parentId": { "type": "string", "minLength": 1 },
84
+ "progress": { "$ref": "#/$defs/progress" },
85
+ "durationMs": { "type": "number", "minimum": 0 },
86
+ "layoutHint": { "enum": ["source", "process", "gate", "sink"] },
87
+ "group": { "type": "string", "minLength": 1 },
88
+ "updatedAt": { "type": "string", "format": "date-time" },
89
+ "attempt": { "type": "integer", "minimum": 1 },
90
+ "attempts": { "type": "array", "items": { "$ref": "#/$defs/attempt" } }
91
+ },
92
+ "additionalProperties": false
93
+ },
94
+ "edge": {
95
+ "type": "object",
96
+ "required": ["id", "fromBlockId", "toBlockId", "kind", "status", "order", "updatedAt"],
97
+ "properties": {
98
+ "id": { "type": "string", "minLength": 1 },
99
+ "fromBlockId": { "type": "string", "minLength": 1 },
100
+ "toBlockId": { "type": "string", "minLength": 1 },
101
+ "kind": { "enum": ["sequence", "parallel", "gate", "handoff"] },
102
+ "status": { "$ref": "#/$defs/status" },
103
+ "order": { "type": "number" },
104
+ "updatedAt": { "type": "string", "format": "date-time" }
105
+ },
106
+ "additionalProperties": false
107
+ },
108
+ "touch": {
109
+ "type": "object",
110
+ "required": ["locator", "at"],
111
+ "properties": {
112
+ "locator": { "type": "string" },
113
+ "operation": { "type": "string" },
114
+ "at": { "type": "string", "format": "date-time" }
115
+ },
116
+ "additionalProperties": false
117
+ },
118
+ "artifact": {
119
+ "type": "object",
120
+ "required": ["locator", "at"],
121
+ "properties": {
122
+ "locator": { "type": "string" },
123
+ "at": { "type": "string", "format": "date-time" }
124
+ },
125
+ "additionalProperties": false
126
+ },
127
+ "run": {
128
+ "type": "object",
129
+ "required": [
130
+ "runId",
131
+ "command",
132
+ "status",
133
+ "startedAt",
134
+ "updatedAt",
135
+ "blocks",
136
+ "edges",
137
+ "touches",
138
+ "artifacts",
139
+ "warnings"
140
+ ],
141
+ "properties": {
142
+ "runId": { "type": "string", "minLength": 1 },
143
+ "parentRunId": { "type": "string", "minLength": 1 },
144
+ "pid": { "type": "integer", "minimum": 1 },
145
+ "orphaned": { "type": "boolean" },
146
+ "origin": { "$ref": "#/$defs/origin" },
147
+ "command": { "type": "array", "items": { "type": "string" } },
148
+ "status": { "$ref": "#/$defs/status" },
149
+ "startedAt": { "type": "string", "format": "date-time" },
150
+ "updatedAt": { "type": "string", "format": "date-time" },
151
+ "durationMs": { "type": "number", "minimum": 0 },
152
+ "blocks": { "type": "array", "items": { "$ref": "#/$defs/block" } },
153
+ "edges": { "type": "array", "items": { "$ref": "#/$defs/edge" } },
154
+ "touches": { "type": "array", "items": { "$ref": "#/$defs/touch" } },
155
+ "artifacts": { "type": "array", "items": { "$ref": "#/$defs/artifact" } },
156
+ "warnings": { "type": "array", "items": { "type": "string" } }
157
+ },
158
+ "additionalProperties": false
159
+ }
160
+ }
161
+ }