workspai 0.64.0 → 0.66.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 +40 -44
- package/contracts/agent-customization-pack.v1.json +4 -2
- package/contracts/analyze-last-run.v1.json +9 -1
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +117 -0
- package/contracts/extension-cli-compatibility.v1.json +2 -0
- package/contracts/published-contract-catalog.v1.json +10 -0
- package/contracts/runtime-command-surface.v1.json +59 -3
- package/contracts/workspace-activity-event.v1.json +132 -0
- package/contracts/workspace-contract.v1.json +51 -6
- package/contracts/workspace-intelligence/agent-bootstrap-receipt.v1.json +17 -0
- package/contracts/workspace-intelligence/mcp-design.v1.json +49 -2
- package/contracts/workspace-intelligence/project-agent-entry.v1.json +3 -0
- package/contracts/workspace-intelligence/project-context-agent.v1.json +78 -7
- package/contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json +51 -0
- package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +108 -3
- package/contracts/workspace-intelligence/workspace-model.v1.json +28 -1
- package/contracts/workspace-intelligence/workspace-skills-index.v1.json +34 -0
- package/contracts/workspace-model-cache.v1.json +4 -0
- package/contracts/workspace-repair-capabilities.v1.json +66 -0
- package/dist/analyze-UJQWGNM2.js +1 -0
- package/dist/{artifact-remediation-plan-XIQNI35L.js → artifact-remediation-plan-M2XBS2IU.js} +1 -1
- package/dist/autopilot-release-U6F4M2BQ.js +1 -0
- package/dist/capabilities-command-XUKPO25Z.js +1 -0
- package/dist/chunk-2LIVMG5C.js +2 -0
- package/dist/{chunk-ZGS5NKEO.js → chunk-2PACEMNE.js} +1 -1
- package/dist/chunk-334J2KIP.js +7 -0
- package/dist/{chunk-6TBTMWNA.js → chunk-3H5ACWWZ.js} +1 -1
- package/dist/{chunk-HCFWT42C.js → chunk-3NM3JAZW.js} +1 -1
- package/dist/chunk-4XEH3WNV.js +13 -0
- package/dist/chunk-5OA33JH2.js +2 -0
- package/dist/chunk-5TY74LLW.js +2 -0
- package/dist/{chunk-QCKWQFCD.js → chunk-5U4L6VF2.js} +1 -1
- package/dist/{chunk-W6FHVXNL.js → chunk-5XGR3LRI.js} +1 -1
- package/dist/{chunk-KTN2ARZJ.js → chunk-6JX56VAL.js} +3 -3
- package/dist/chunk-6UNATTB7.js +1 -0
- package/dist/{chunk-J3X56S7L.js → chunk-727IQFGN.js} +1 -1
- package/dist/chunk-7FF5EOIO.js +2 -0
- package/dist/chunk-AP4PV6WJ.js +1 -0
- package/dist/chunk-AXUA7PFV.js +2 -0
- package/dist/chunk-B4IVVTMQ.js +2 -0
- package/dist/{chunk-LNXIMF3O.js → chunk-C4S22E6S.js} +1 -1
- package/dist/{chunk-PXWKMPPI.js → chunk-D4UHRJAP.js} +1 -1
- package/dist/chunk-DUBOKZMA.js +49 -0
- package/dist/{chunk-VYDURWN7.js → chunk-ECLMYTWT.js} +1 -1
- package/dist/{chunk-VB6I52ZT.js → chunk-EHH4SKVH.js} +50 -50
- package/dist/chunk-EP4CUWOO.js +9 -0
- package/dist/chunk-FY4X2VOE.js +39 -0
- package/dist/chunk-GAYK3WGV.js +2 -0
- package/dist/{chunk-YUGKQ44M.js → chunk-H5RJCS5E.js} +1 -1
- package/dist/{chunk-5SFCBZOH.js → chunk-H7MRINGP.js} +1 -1
- package/dist/chunk-HJLGXFMK.js +1 -0
- package/dist/{chunk-VRGEPPUB.js → chunk-HLWDIIWL.js} +1 -1
- package/dist/{chunk-KJXMLBSY.js → chunk-IIFFEEMX.js} +1 -1
- package/dist/chunk-IVF6NEHS.js +1 -0
- package/dist/chunk-JC4XSU7G.js +1 -0
- package/dist/chunk-JRP6WP5C.js +681 -0
- package/dist/chunk-JZJBA2V2.js +1 -0
- package/dist/{chunk-N4QQADXX.js → chunk-L5CCIIF2.js} +1 -1
- package/dist/chunk-L5Q2S5GY.js +3 -0
- package/dist/chunk-LPCZHKD5.js +1 -0
- package/dist/chunk-MZ7U4BIQ.js +157 -0
- package/dist/chunk-NMXGSVMD.js +1 -0
- package/dist/{chunk-GQSRNUCU.js → chunk-NVND4727.js} +3 -3
- package/dist/chunk-O37UBRMX.js +4 -0
- package/dist/chunk-OI2VOU6S.js +1 -0
- package/dist/chunk-PD7Y6HIM.js +2 -0
- package/dist/chunk-PJPS7CNH.js +1 -0
- package/dist/chunk-QGAPGZPL.js +97 -0
- package/dist/chunk-R2M5OJOK.js +5 -0
- package/dist/chunk-SX6A656X.js +1 -0
- package/dist/{chunk-X6TNBARH.js → chunk-TABXSDTR.js} +2 -2
- package/dist/chunk-TTHO4MFC.js +2 -0
- package/dist/chunk-U5ENEDJA.js +7 -0
- package/dist/chunk-UOCERSAN.js +1 -0
- package/dist/chunk-UPIPSSXY.js +1 -0
- package/dist/chunk-UTV4DTNM.js +1 -0
- package/dist/chunk-VA5VSOBL.js +2 -0
- package/dist/chunk-VQOWB26M.js +12 -0
- package/dist/chunk-VQZ5PI5J.js +1 -0
- package/dist/chunk-WCJU3CFG.js +1 -0
- package/dist/chunk-WTWRSEOW.js +1 -0
- package/dist/{chunk-D65FCQIO.js → chunk-XESFJN52.js} +1 -1
- package/dist/chunk-XQFWUM2P.js +1 -0
- package/dist/chunk-XWKGZRHN.js +1 -0
- package/dist/{chunk-WRQWVSBJ.js → chunk-YX5VWPR5.js} +1 -1
- package/dist/chunk-ZEEV5J4I.js +1 -0
- package/dist/chunk-ZQH2I5RQ.js +1 -0
- package/dist/{create-PWJDTKDN.js → create-SOLLXXAB.js} +1 -1
- package/dist/{demo-kit-QHIDCSBI.js → demo-kit-5UQH2OXC.js} +1 -1
- package/dist/{doctor-CGXY4IDE.js → doctor-NQ5PUCUP.js} +1 -1
- package/dist/{dotnet-webapi-clean-AVHPJG7Y.js → dotnet-webapi-clean-YEHYIGOT.js} +1 -1
- package/dist/{goal-lifecycle-BRFFTIU2.js → goal-lifecycle-IPNY7KNR.js} +1 -1
- package/dist/goal-pack-2WV3EA4Y.js +1 -0
- package/dist/{gofiber-standard-47S2GYAO.js → gofiber-standard-C44IIQYH.js} +1 -1
- package/dist/{gogin-standard-EWB4XNOI.js → gogin-standard-X7VKACVR.js} +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.js +170 -170
- package/dist/live-command-Q6E45N7S.js +18 -0
- package/dist/{pipeline-DF4UIHAD.js → pipeline-MIMENSI7.js} +1 -1
- package/dist/{project-agent-entry-IWUCV72J.js → project-agent-entry-OWLJ3IHQ.js} +1 -1
- package/dist/project-intelligence-lens-I67EO6AE.js +1 -0
- package/dist/{project-test-coverage-4S7MEQ6T.js → project-test-coverage-OPDVSFPH.js} +1 -1
- package/dist/{pythonRapidkitExec-VAW5XE4Z.js → pythonRapidkitExec-44ORGQ4R.js} +1 -1
- package/dist/{rust-axum-M5X4ZC4Z.js → rust-axum-JKZTZDRZ.js} +1 -1
- package/dist/{springboot-standard-Y5ADLZMQ.js → springboot-standard-PI4FLTAN.js} +1 -1
- package/dist/verified-goal-46JWNCDY.js +1 -0
- package/dist/{workspace-35Q2IXAR.js → workspace-KO37XHF6.js} +1 -1
- package/dist/{workspace-agent-sync-FFNSW2PD.js → workspace-agent-sync-32FIJQBH.js} +1 -1
- package/dist/{workspace-archive-ZBCKJHXS.js → workspace-archive-6R5DRNZW.js} +1 -1
- package/dist/{workspace-context-IJ36ZP6G.js → workspace-context-JKRPX775.js} +1 -1
- package/dist/workspace-contract-4T3NYNK5.js +1 -0
- package/dist/workspace-explain-MOGL4GEA.js +1 -0
- package/dist/workspace-explain-contract-W2E6LF4Q.js +1 -0
- package/dist/{workspace-feedback-RQ4TGJW6.js → workspace-feedback-6VQ7T4CR.js} +1 -1
- package/dist/{workspace-foundation-GMGDUMPR.js → workspace-foundation-GHWO3BZU.js} +1 -1
- package/dist/workspace-graph-stream-PTVS47NJ.js +1 -0
- package/dist/workspace-graph-token-efficiency-Z5JD5NHI.js +1 -0
- package/dist/{workspace-history-SYCDK7FO.js → workspace-history-M2K4M2JY.js} +1 -1
- package/dist/{workspace-intelligence-5NO4K5SC.js → workspace-intelligence-PJIPTXL3.js} +1 -1
- package/dist/{workspace-intelligence-evaluation-CQDKOYZZ.js → workspace-intelligence-evaluation-GONCRE6O.js} +1 -1
- package/dist/{workspace-intelligence-runner-FGEBFVVM.js → workspace-intelligence-runner-M47QR3JM.js} +1 -1
- package/dist/{workspace-intelligence-runtime-registry-IW6J53LO.js → workspace-intelligence-runtime-registry-FFGQF4A7.js} +1 -1
- package/dist/workspace-knowledge-graph-V2EAYDCL.js +1 -0
- package/dist/workspace-knowledge-graph-contract-VANN7RCA.js +1 -0
- package/dist/{workspace-knowledge-graph-query-ON45H6Y7.js → workspace-knowledge-graph-query-RASPF7FS.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-5YIG6EMG.js +1 -0
- package/dist/{workspace-marker-7NHMDIRL.js → workspace-marker-XGAWZZDX.js} +1 -1
- package/dist/workspace-mcp-serve-YRORNE4P.js +3 -0
- package/dist/workspace-model-VSVKLX7M.js +1 -0
- package/dist/{workspace-onboarding-VS3YYNGK.js → workspace-onboarding-2VMJZVLZ.js} +1 -1
- package/dist/{workspace-python-engine-state-J4QKW55K.js → workspace-python-engine-state-BE4A3BL5.js} +1 -1
- package/dist/{workspace-readme-G7TZ3V5T.js → workspace-readme-6X3GLTBM.js} +2 -2
- package/dist/{workspace-registry-summary-MIDFG6EC.js → workspace-registry-summary-QVSJKKTX.js} +1 -1
- package/dist/workspace-repair-engine-WSKV3Q4V.js +3 -0
- package/dist/workspace-run-3BXKTLVL.js +1 -0
- package/dist/{workspace-verify-4R7QHUPO.js → workspace-verify-EJCSOBIK.js} +1 -1
- package/dist/workspace-watch-JTIFBF4Z.js +1 -0
- package/docs/SETUP.md +10 -0
- package/docs/agent-entry.md +22 -7
- package/docs/ci-workflows.md +1 -1
- package/docs/commands-reference.md +43 -7
- package/docs/contracts/ARTIFACT_CATALOG.md +63 -44
- package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +1 -0
- package/docs/contracts/NAMING_AND_COEXISTENCE.md +20 -18
- package/docs/contracts/README.md +4 -3
- package/docs/real-world-qualification.md +19 -3
- package/docs/workspace-knowledge-graph.md +131 -27
- package/docs/workspace-live-activity.md +199 -0
- package/docs/workspace-operations.md +54 -9
- package/docs/workspace-repair-engine.md +17 -0
- package/package.json +1 -1
- package/dist/analyze-NUGNB256.js +0 -1
- package/dist/autopilot-release-TWJWSVVF.js +0 -1
- package/dist/capabilities-command-LHM3XIS6.js +0 -1
- package/dist/chunk-2647BYBC.js +0 -1
- package/dist/chunk-27UR373Z.js +0 -1
- package/dist/chunk-2VJUAKMS.js +0 -2
- package/dist/chunk-3A23KJAQ.js +0 -1
- package/dist/chunk-4PUJVYRM.js +0 -1
- package/dist/chunk-5B2GAZAC.js +0 -5
- package/dist/chunk-6DAQ7PYT.js +0 -13
- package/dist/chunk-CCAXADKP.js +0 -49
- package/dist/chunk-CCDGHPEJ.js +0 -2
- package/dist/chunk-CJHWKXDN.js +0 -1
- package/dist/chunk-CT4IODPG.js +0 -2
- package/dist/chunk-DK6JNE6K.js +0 -2
- package/dist/chunk-DOXNVBX6.js +0 -1
- package/dist/chunk-DWB2RRF4.js +0 -1
- package/dist/chunk-FQSBOLM7.js +0 -1
- package/dist/chunk-ILIBOMYL.js +0 -1
- package/dist/chunk-ISOOENLW.js +0 -8
- package/dist/chunk-J7RU5WR5.js +0 -2
- package/dist/chunk-JQLJBK5N.js +0 -1
- package/dist/chunk-KANAJH65.js +0 -681
- package/dist/chunk-KV6PS54A.js +0 -8
- package/dist/chunk-L22EABIC.js +0 -7
- package/dist/chunk-MOSXTVPU.js +0 -1
- package/dist/chunk-NHTDPXTW.js +0 -4
- package/dist/chunk-NZ3WZYD5.js +0 -1
- package/dist/chunk-Q2WF7D5U.js +0 -2
- package/dist/chunk-RSG2GJXT.js +0 -2
- package/dist/chunk-SFO5GVRT.js +0 -1
- package/dist/chunk-T5YRFRJV.js +0 -1
- package/dist/chunk-THIOE2PB.js +0 -2
- package/dist/chunk-TOYN76K4.js +0 -144
- package/dist/chunk-U5WVR74V.js +0 -1
- package/dist/chunk-UXEO5QCF.js +0 -33
- package/dist/chunk-VR6XMUF3.js +0 -2
- package/dist/chunk-WY4DOMEA.js +0 -1
- package/dist/chunk-XKDR5BGS.js +0 -6
- package/dist/chunk-Y5YAP4F3.js +0 -2
- package/dist/chunk-ZH7CXQH3.js +0 -94
- package/dist/goal-pack-FG3QDNQH.js +0 -1
- package/dist/project-intelligence-lens-PZPPSCUW.js +0 -1
- package/dist/verified-goal-BBHZRYYH.js +0 -1
- package/dist/workspace-contract-JS4LZZQZ.js +0 -1
- package/dist/workspace-explain-TITIT5XN.js +0 -1
- package/dist/workspace-explain-contract-V2IVSROX.js +0 -1
- package/dist/workspace-graph-stream-7UU2YVHC.js +0 -1
- package/dist/workspace-graph-token-efficiency-D7CUT6NX.js +0 -1
- package/dist/workspace-knowledge-graph-RSDP2E36.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-3FJHH5IK.js +0 -1
- package/dist/workspace-mcp-serve-WUIQ2AE6.js +0 -3
- package/dist/workspace-model-OKY4CQ3X.js +0 -1
- package/dist/workspace-repair-engine-VUBT77Y7.js +0 -3
- package/dist/workspace-run-SSF6Z26G.js +0 -1
- package/dist/workspace-watch-IOPSHQS5.js +0 -1
package/README.md
CHANGED
|
@@ -18,28 +18,28 @@ npx workspai adopt .
|
|
|
18
18
|
npx workspai workspace intelligence run --for-agent generic
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
Two commands. Your project
|
|
21
|
+
Two commands. Your project gains a bounded, evidence-backed system view:
|
|
22
22
|
|
|
23
23
|
### Before vs After
|
|
24
24
|
|
|
25
25
|
| Before Workspai | After Workspai |
|
|
26
26
|
| --- | --- |
|
|
27
|
-
| Agent scans thousands of files for context | Agent
|
|
27
|
+
| Agent scans thousands of files for context | Agent starts from bounded entry and context artifacts |
|
|
28
28
|
| No dependency map between services | Searchable graph with source-level proof |
|
|
29
|
-
| Broken test blocks release, no one knows why | Doctor
|
|
29
|
+
| Broken test blocks release, no one knows why | Doctor localizes the blocker and next target |
|
|
30
30
|
| Every AI session starts from scratch | Sessions resume from durable evidence |
|
|
31
31
|
|
|
32
32
|
Here is what you get:
|
|
33
33
|
|
|
34
34
|
| What it produces | Why it matters |
|
|
35
35
|
| --- | --- |
|
|
36
|
-
| **Workspace Model** | A canonical inventory of
|
|
36
|
+
| **Workspace Model** | A canonical inventory of registered projects, detected runtimes, frameworks, and proven dependencies |
|
|
37
37
|
| **Knowledge Graph** | Searchable relationships between projects, backed by source-level proof |
|
|
38
38
|
| **Health & Readiness** | Doctor checks, verification gates, and release posture based on evidence, not guesses |
|
|
39
39
|
| **Agent Context** | Bounded, focused instructions so AI tools read what they need, not the entire repo |
|
|
40
40
|
| **Agent Rules** | Ready-to-use grounding for Cursor, Copilot, Claude, Codex, Gemini, and more |
|
|
41
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** |
|
|
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
|
|
@@ -47,46 +47,31 @@ for every supported host, without duplicating the Model or Graph.
|
|
|
47
47
|
|
|
48
48
|
### What the output looks like
|
|
49
49
|
|
|
50
|
-
After a single run,
|
|
50
|
+
After a single run, the canonical workspace stores governed artifacts under
|
|
51
|
+
`.workspai/`. Each linked project keeps only its local entry contract, scoped
|
|
52
|
+
lens, and workspace binding under its own `.workspai/` directory:
|
|
51
53
|
|
|
52
54
|
```text
|
|
53
|
-
your-workspace/
|
|
55
|
+
your-workspace/ # canonical system boundary
|
|
54
56
|
├── .workspai/
|
|
55
|
-
│ ├── workspace.json
|
|
56
|
-
│ ├──
|
|
57
|
-
│ ├──
|
|
58
|
-
│ │ ├── workspace-
|
|
59
|
-
│ │ ├── workspace-
|
|
60
|
-
│ │
|
|
61
|
-
│
|
|
62
|
-
│ │ ├── workspace-verify-last-run.json # pass/fail with evidence
|
|
63
|
-
│ │ ├── INDEX.json # evidence inventory & read order
|
|
64
|
-
│ │ └── ... # impact, doctor, analyze, explain, etc.
|
|
65
|
-
│ └── skills/ # generated operational skills
|
|
66
|
-
│ ├── workspai-release-readiness.md # always available
|
|
67
|
-
│ ├── workspai-node-runtime-validation.md # only when Node is detected
|
|
68
|
-
│ └── workspai-polyglot-change-validation.md # only for multi-runtime workspaces
|
|
69
|
-
│
|
|
70
|
-
│ # Workspace-level agent grounding (per host):
|
|
57
|
+
│ ├── workspace.contract.json # registered projects and declarations
|
|
58
|
+
│ ├── reports/
|
|
59
|
+
│ │ ├── workspace-model.json # canonical system model
|
|
60
|
+
│ │ ├── workspace-knowledge-graph.json # derived proof-backed graph
|
|
61
|
+
│ │ ├── workspace-context-agent.json # bounded consumer context
|
|
62
|
+
│ │ └── INDEX.json # evidence inventory and read order
|
|
63
|
+
│ └── skills/ # detected operational playbooks
|
|
71
64
|
├── AGENTS.md · CLAUDE.md · GEMINI.md · QWEN.md
|
|
72
|
-
├── .cursor/
|
|
73
|
-
├── .claude/rules/workspai-*.md # workspace + evidence
|
|
74
|
-
├── .grok/rules/ · .windsurf/rules/ # grounding + evidence
|
|
75
|
-
├── .amazonq/rules/ · .github/ # Copilot, prompts, agents, skills
|
|
76
|
-
│
|
|
77
|
-
│ # ── Project level (repeated per project) ──
|
|
65
|
+
├── .cursor/ · .claude/ · .github/ · .agents/ # host-native projections
|
|
78
66
|
├── nova-api/
|
|
79
|
-
│ ├── .workspai
|
|
80
|
-
│
|
|
81
|
-
│
|
|
82
|
-
│
|
|
83
|
-
│
|
|
84
|
-
│
|
|
85
|
-
│
|
|
86
|
-
|
|
87
|
-
│ └── .amazonq/rules/workspai-agent-entry.md
|
|
88
|
-
│
|
|
89
|
-
└── summit-web/ # (same structure per project)
|
|
67
|
+
│ ├── .agents/skills/workspai-*/SKILL.md # portable project Skill wrappers
|
|
68
|
+
│ └── .workspai/
|
|
69
|
+
│ ├── agent-entry.v1.json # canonical project entry
|
|
70
|
+
│ ├── workspace-link.local.json # machine-local binding
|
|
71
|
+
│ └── reports/
|
|
72
|
+
│ ├── project-context-agent.json
|
|
73
|
+
│ └── project-knowledge-graph-reference.json
|
|
74
|
+
└── summit-web/ # same project-level boundary
|
|
90
75
|
```
|
|
91
76
|
|
|
92
77
|
Your agent starts with `agent-entry.v1.json`, compact workspace context, and the Skills
|
|
@@ -105,8 +90,8 @@ scan or complete Graph load is needed for ordinary work.
|
|
|
105
90
|
Workspai is an open-source CLI that brings related software projects together,
|
|
106
91
|
so people and AI tools can understand and work with the same system.
|
|
107
92
|
|
|
108
|
-
- **See the whole system:**
|
|
109
|
-
- **Ask with proof:** trace
|
|
93
|
+
- **See the whole system:** registered projects and proven relationships in one model.
|
|
94
|
+
- **Ask with proof:** trace answers back to their evidence record and source location.
|
|
110
95
|
- **Change safely:** know impact before you commit, verify after, and give AI agents
|
|
111
96
|
only the context they need.
|
|
112
97
|
|
|
@@ -202,7 +187,7 @@ generated in one run. The key files for each audience:
|
|
|
202
187
|
| **AI agent** | `agent-entry.v1.json` (project) → `workspace-context-agent.json` (workspace) |
|
|
203
188
|
| **Developer** | Terminal summary, or `workspace-explain-last-run.json` for diagnosis |
|
|
204
189
|
| **CI / automation** | `workspace-verify-last-run.json` (exit code 0 = pass, 2 = blocked) |
|
|
205
|
-
| **MCP client** | `workspace mcp serve` (
|
|
190
|
+
| **MCP client** | `workspace mcp serve` (versioned read-oriented tools over JSON-RPC) |
|
|
206
191
|
| **IDE extension** | Same artifacts + watch events |
|
|
207
192
|
|
|
208
193
|
An agent can prove that it entered through governed evidence before scanning
|
|
@@ -264,6 +249,17 @@ complements this chain; it does not replace it.
|
|
|
264
249
|
|
|
265
250
|
The deterministic model, graph, and checks do not require an AI API key.
|
|
266
251
|
|
|
252
|
+
### See the evidence-backed graph
|
|
253
|
+
|
|
254
|
+
The graph connects projects, APIs, packages, tests, infrastructure, ownership,
|
|
255
|
+
and runtime topology only when current evidence supports the relationship.
|
|
256
|
+
Every visible relationship can retain proof, while missing relationships stay
|
|
257
|
+
explicitly unproven.
|
|
258
|
+
|
|
259
|
+

|
|
260
|
+
|
|
261
|
+
[Query, explain, and export the graph](docs/workspace-knowledge-graph.md)
|
|
262
|
+
|
|
267
263
|
## Everyday workflows
|
|
268
264
|
|
|
269
265
|
| Goal | Command |
|
|
@@ -294,7 +290,7 @@ Workspai exposes the same governed data through several stable surfaces:
|
|
|
294
290
|
- JSON output for scripts and CI;
|
|
295
291
|
- versioned artifacts under `.workspai/reports/`;
|
|
296
292
|
- focused context and instructions for AI agents;
|
|
297
|
-
- MCP server with
|
|
293
|
+
- MCP server with versioned read-oriented workspace tools (`workspace mcp serve`);
|
|
298
294
|
- watch events and reports for IDEs and dashboards;
|
|
299
295
|
- JSON, JSON-LD, Mermaid, DOT, GraphML, and GEXF graph exports.
|
|
300
296
|
|
|
@@ -52,9 +52,10 @@
|
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"agents": {
|
|
55
|
-
"meaning": "Generate portable AGENTS.md grounding
|
|
55
|
+
"meaning": "Generate portable AGENTS.md grounding and .agents/skills projections.",
|
|
56
56
|
"outputFamilies": [
|
|
57
|
-
"portable"
|
|
57
|
+
"portable",
|
|
58
|
+
"skills"
|
|
58
59
|
]
|
|
59
60
|
},
|
|
60
61
|
"copilot": {
|
|
@@ -281,6 +282,7 @@
|
|
|
281
282
|
".workspai/skills/"
|
|
282
283
|
],
|
|
283
284
|
"l2PrefixedMirrorRoots": [
|
|
285
|
+
".agents/",
|
|
284
286
|
".github/",
|
|
285
287
|
".cursor/",
|
|
286
288
|
".claude/",
|
|
@@ -26,8 +26,16 @@
|
|
|
26
26
|
"profile": { "type": ["string", "null"] },
|
|
27
27
|
"summary": {
|
|
28
28
|
"type": "object",
|
|
29
|
-
"required": [
|
|
29
|
+
"required": [
|
|
30
|
+
"score",
|
|
31
|
+
"verdict",
|
|
32
|
+
"projectCount",
|
|
33
|
+
"runtimeCount",
|
|
34
|
+
"findings"
|
|
35
|
+
],
|
|
30
36
|
"properties": {
|
|
37
|
+
"statusScope": { "const": "source-structure" },
|
|
38
|
+
"releaseReadiness": { "const": "not-evaluated" },
|
|
31
39
|
"score": { "type": "number" },
|
|
32
40
|
"verdict": {
|
|
33
41
|
"enum": ["ready", "needs-attention", "blocked"]
|
|
@@ -727,6 +727,98 @@
|
|
|
727
727
|
}
|
|
728
728
|
]
|
|
729
729
|
},
|
|
730
|
+
{
|
|
731
|
+
"path": [
|
|
732
|
+
"live"
|
|
733
|
+
],
|
|
734
|
+
"command": "live",
|
|
735
|
+
"parent": null,
|
|
736
|
+
"registrationKind": "commander",
|
|
737
|
+
"aliases": [],
|
|
738
|
+
"description": "Open a live cross-terminal execution graph for Workspai activity",
|
|
739
|
+
"hidden": false,
|
|
740
|
+
"arguments": [
|
|
741
|
+
{
|
|
742
|
+
"name": "target",
|
|
743
|
+
"required": false,
|
|
744
|
+
"variadic": false
|
|
745
|
+
}
|
|
746
|
+
],
|
|
747
|
+
"options": [
|
|
748
|
+
{
|
|
749
|
+
"flags": "--global",
|
|
750
|
+
"attributeName": "global"
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
"flags": "--run <runId>",
|
|
754
|
+
"attributeName": "run"
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
"flags": "--once",
|
|
758
|
+
"attributeName": "once"
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
"flags": "--json",
|
|
762
|
+
"attributeName": "json"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"flags": "--refresh-ms <milliseconds>",
|
|
766
|
+
"attributeName": "refreshMs"
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"flags": "--max-runs <count>",
|
|
770
|
+
"attributeName": "maxRuns"
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"flags": "--max-scopes <count>",
|
|
774
|
+
"attributeName": "maxScopes"
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"flags": "--classic",
|
|
778
|
+
"attributeName": "classic"
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"flags": "--no-color",
|
|
782
|
+
"attributeName": "color"
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"flags": "--no-motion",
|
|
786
|
+
"attributeName": "motion"
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"flags": "--ascii",
|
|
790
|
+
"attributeName": "ascii"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"flags": "--accessible",
|
|
794
|
+
"attributeName": "accessible"
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"flags": "--capture <file>",
|
|
798
|
+
"attributeName": "capture"
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
"flags": "--capture-preset <preset>",
|
|
802
|
+
"attributeName": "capturePreset"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"flags": "--capture-theme <theme>",
|
|
806
|
+
"attributeName": "captureTheme"
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
"flags": "--no-capture-redact",
|
|
810
|
+
"attributeName": "captureRedact"
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"flags": "--replay <runId>",
|
|
814
|
+
"attributeName": "replay"
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"flags": "--replay-speed <multiplier>",
|
|
818
|
+
"attributeName": "replaySpeed"
|
|
819
|
+
}
|
|
820
|
+
]
|
|
821
|
+
},
|
|
730
822
|
{
|
|
731
823
|
"path": [
|
|
732
824
|
"mirror"
|
|
@@ -1469,10 +1561,30 @@
|
|
|
1469
1561
|
"flags": "--scan-depth <count>",
|
|
1470
1562
|
"attributeName": "scanDepth"
|
|
1471
1563
|
},
|
|
1564
|
+
{
|
|
1565
|
+
"flags": "--graph-inventory-limit <count>",
|
|
1566
|
+
"attributeName": "graphInventoryLimit"
|
|
1567
|
+
},
|
|
1568
|
+
{
|
|
1569
|
+
"flags": "--graph-semantic-budget <count>",
|
|
1570
|
+
"attributeName": "graphSemanticBudget"
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"flags": "--graph-deep-budget <count>",
|
|
1574
|
+
"attributeName": "graphDeepBudget"
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
"flags": "--graph-source-budget <count>",
|
|
1578
|
+
"attributeName": "graphSourceBudget"
|
|
1579
|
+
},
|
|
1472
1580
|
{
|
|
1473
1581
|
"flags": "--limit <count>",
|
|
1474
1582
|
"attributeName": "limit"
|
|
1475
1583
|
},
|
|
1584
|
+
{
|
|
1585
|
+
"flags": "--kind <kind>",
|
|
1586
|
+
"attributeName": "kind"
|
|
1587
|
+
},
|
|
1476
1588
|
{
|
|
1477
1589
|
"flags": "--refresh-graph",
|
|
1478
1590
|
"attributeName": "refreshGraph"
|
|
@@ -1593,6 +1705,10 @@
|
|
|
1593
1705
|
"flags": "--parallel",
|
|
1594
1706
|
"attributeName": "parallel"
|
|
1595
1707
|
},
|
|
1708
|
+
{
|
|
1709
|
+
"flags": "--plan",
|
|
1710
|
+
"attributeName": "plan"
|
|
1711
|
+
},
|
|
1596
1712
|
{
|
|
1597
1713
|
"flags": "--runtime <runtime>",
|
|
1598
1714
|
"attributeName": "runtime"
|
|
@@ -1703,6 +1819,7 @@
|
|
|
1703
1819
|
"goal",
|
|
1704
1820
|
"import",
|
|
1705
1821
|
"infra",
|
|
1822
|
+
"live",
|
|
1706
1823
|
"mirror",
|
|
1707
1824
|
"pipeline",
|
|
1708
1825
|
"product",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"projectWorkspaceLink": "project-workspace-link.v1",
|
|
19
19
|
"projectWorkspaceResolution": "project-workspace-resolution.v1",
|
|
20
20
|
"projectContextAgent": "project-context-agent.v1",
|
|
21
|
+
"projectKnowledgeGraphReference": "project-knowledge-graph-reference.v1",
|
|
21
22
|
"projectAgentEntry": "workspai.agent-entry.v1",
|
|
22
23
|
"agentBootstrapReceipt": "workspai.agent-bootstrap-receipt.v1",
|
|
23
24
|
"doctorProjectEvidence": "doctor-project-evidence-v1",
|
|
@@ -63,6 +64,7 @@
|
|
|
63
64
|
"repairTransaction": "workspai.workspace-repair-transaction.v1"
|
|
64
65
|
},
|
|
65
66
|
"cliLogEvent": "cli-log-event-v1",
|
|
67
|
+
"workspaceActivityEvent": "workspace-activity-event.v1",
|
|
66
68
|
"freshnessMetadata": "rapidkit-freshness-metadata-v1",
|
|
67
69
|
"factFreshness": "rapidkit-fact-freshness-v1",
|
|
68
70
|
"blockerResolution": "rapidkit-blocker-resolution-v1",
|
|
@@ -76,6 +76,11 @@
|
|
|
76
76
|
"contractPath": "contracts/workspace-intelligence/project-context-agent.v1.json",
|
|
77
77
|
"publication": "json-schema"
|
|
78
78
|
},
|
|
79
|
+
"projectKnowledgeGraphReference": {
|
|
80
|
+
"schemaVersion": "project-knowledge-graph-reference.v1",
|
|
81
|
+
"contractPath": "contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json",
|
|
82
|
+
"publication": "json-schema"
|
|
83
|
+
},
|
|
79
84
|
"projectAgentEntry": {
|
|
80
85
|
"schemaVersion": "workspai.agent-entry.v1",
|
|
81
86
|
"contractPath": "contracts/workspace-intelligence/project-agent-entry.v1.json",
|
|
@@ -321,6 +326,11 @@
|
|
|
321
326
|
"contractPath": "contracts/cli-log-event.v1.json",
|
|
322
327
|
"publication": "json-schema"
|
|
323
328
|
},
|
|
329
|
+
"workspaceActivityEvent": {
|
|
330
|
+
"schemaVersion": "workspace-activity-event.v1",
|
|
331
|
+
"contractPath": "contracts/workspace-activity-event.v1.json",
|
|
332
|
+
"publication": "json-schema"
|
|
333
|
+
},
|
|
324
334
|
"freshnessMetadata": {
|
|
325
335
|
"schemaVersion": "rapidkit-freshness-metadata-v1",
|
|
326
336
|
"contractPath": null,
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"goal",
|
|
52
52
|
"agent",
|
|
53
53
|
"snapshot",
|
|
54
|
+
"live",
|
|
54
55
|
"bootstrap",
|
|
55
56
|
"setup",
|
|
56
57
|
"cache",
|
|
@@ -557,6 +558,13 @@
|
|
|
557
558
|
"list"
|
|
558
559
|
]
|
|
559
560
|
},
|
|
561
|
+
{
|
|
562
|
+
"invocation": "live",
|
|
563
|
+
"summary": "Render the versioned cross-terminal execution graph for Workspai runs in the current project or workspace.",
|
|
564
|
+
"canonicalArgv": [
|
|
565
|
+
"live"
|
|
566
|
+
]
|
|
567
|
+
},
|
|
560
568
|
{
|
|
561
569
|
"invocation": "merge",
|
|
562
570
|
"summary": "Combine supported governed configuration or project state through the owning runtime operation.",
|
|
@@ -1901,6 +1909,32 @@
|
|
|
1901
1909
|
]
|
|
1902
1910
|
]
|
|
1903
1911
|
},
|
|
1912
|
+
{
|
|
1913
|
+
"artifactPath": ".workspai/reports/project-knowledge-graph-reference.json",
|
|
1914
|
+
"schemaVersion": "project-knowledge-graph-reference.v1",
|
|
1915
|
+
"contractPath": "contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json",
|
|
1916
|
+
"producerCommands": [
|
|
1917
|
+
[
|
|
1918
|
+
"adopt"
|
|
1919
|
+
],
|
|
1920
|
+
[
|
|
1921
|
+
"import"
|
|
1922
|
+
],
|
|
1923
|
+
[
|
|
1924
|
+
"workspace",
|
|
1925
|
+
"model"
|
|
1926
|
+
],
|
|
1927
|
+
[
|
|
1928
|
+
"workspace",
|
|
1929
|
+
"sync"
|
|
1930
|
+
],
|
|
1931
|
+
[
|
|
1932
|
+
"workspace",
|
|
1933
|
+
"intelligence",
|
|
1934
|
+
"run"
|
|
1935
|
+
]
|
|
1936
|
+
]
|
|
1937
|
+
},
|
|
1904
1938
|
{
|
|
1905
1939
|
"artifactPath": ".workspai/agent-entry.v1.json",
|
|
1906
1940
|
"schemaVersion": "workspai.agent-entry.v1",
|
|
@@ -2694,6 +2728,10 @@
|
|
|
2694
2728
|
"flag": "--limit",
|
|
2695
2729
|
"description": "Bound graph query results (1–100)."
|
|
2696
2730
|
},
|
|
2731
|
+
{
|
|
2732
|
+
"flag": "--kind",
|
|
2733
|
+
"description": "Limit graph entity search to one canonical entity kind."
|
|
2734
|
+
},
|
|
2697
2735
|
{
|
|
2698
2736
|
"flag": "--refresh-graph",
|
|
2699
2737
|
"description": "Bypass the compatible persisted graph and rebuild from live sources."
|
|
@@ -2732,7 +2770,7 @@
|
|
|
2732
2770
|
],
|
|
2733
2771
|
"artifact": null,
|
|
2734
2772
|
"examples": [
|
|
2735
|
-
"workspai workspace graph search \"authentication endpoint\" --limit 12 --json",
|
|
2773
|
+
"workspai workspace graph search \"authentication endpoint\" --kind endpoint --limit 12 --json",
|
|
2736
2774
|
"workspai workspace graph evidence \"GET /users\" --json",
|
|
2737
2775
|
"workspai workspace graph mermaid"
|
|
2738
2776
|
]
|
|
@@ -3209,8 +3247,8 @@
|
|
|
3209
3247
|
},
|
|
3210
3248
|
{
|
|
3211
3249
|
"id": "contract",
|
|
3212
|
-
"usage": "workspai workspace contract [init|inspect|verify|graph] [--strict] [--json]",
|
|
3213
|
-
"summary": "Create, inspect, verify, or project the workspace contract.",
|
|
3250
|
+
"usage": "workspai workspace contract [init|inspect|sync|verify|graph] [--strict] [--json]",
|
|
3251
|
+
"summary": "Create, inspect, synchronize, verify, or project the workspace contract.",
|
|
3214
3252
|
"options": [
|
|
3215
3253
|
{
|
|
3216
3254
|
"flag": "--workspace",
|
|
@@ -3236,11 +3274,13 @@
|
|
|
3236
3274
|
"subactions": [
|
|
3237
3275
|
"init",
|
|
3238
3276
|
"inspect",
|
|
3277
|
+
"sync",
|
|
3239
3278
|
"verify",
|
|
3240
3279
|
"graph"
|
|
3241
3280
|
],
|
|
3242
3281
|
"artifact": ".workspai/workspace.contract.json",
|
|
3243
3282
|
"examples": [
|
|
3283
|
+
"workspai workspace contract sync --strict --json",
|
|
3244
3284
|
"workspai workspace contract verify --strict --json",
|
|
3245
3285
|
"workspai workspace contract graph --json"
|
|
3246
3286
|
]
|
|
@@ -3492,6 +3532,14 @@
|
|
|
3492
3532
|
"flag": "--scope",
|
|
3493
3533
|
"description": "Limit the operation to a bounded scope such as project:<name>."
|
|
3494
3534
|
},
|
|
3535
|
+
{
|
|
3536
|
+
"flag": "--plan",
|
|
3537
|
+
"description": "Resolve lifecycle commands without executing project code."
|
|
3538
|
+
},
|
|
3539
|
+
{
|
|
3540
|
+
"flag": "--runtime",
|
|
3541
|
+
"description": "Limit lifecycle planning or execution to one detected runtime family."
|
|
3542
|
+
},
|
|
3495
3543
|
{
|
|
3496
3544
|
"flag": "--affected",
|
|
3497
3545
|
"description": "Run only projects affected by the selected Git change."
|
|
@@ -3538,6 +3586,7 @@
|
|
|
3538
3586
|
],
|
|
3539
3587
|
"artifact": ".workspai/reports/workspace-run-last.json",
|
|
3540
3588
|
"examples": [
|
|
3589
|
+
"workspai workspace run test --scope project:api --plan --runtime ruby --json",
|
|
3541
3590
|
"workspai workspace run test --affected --blast-radius --strict",
|
|
3542
3591
|
"workspai workspace run build --parallel --max-workers 4 --json"
|
|
3543
3592
|
]
|
|
@@ -4133,6 +4182,13 @@
|
|
|
4133
4182
|
"moduleCommands": false,
|
|
4134
4183
|
"doctor": "observed",
|
|
4135
4184
|
"lifecycleCommands": [
|
|
4185
|
+
"init",
|
|
4186
|
+
"dev",
|
|
4187
|
+
"start",
|
|
4188
|
+
"build",
|
|
4189
|
+
"test",
|
|
4190
|
+
"lint",
|
|
4191
|
+
"format",
|
|
4136
4192
|
"help"
|
|
4137
4193
|
]
|
|
4138
4194
|
},
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://workspai.dev/contracts/workspace-activity-event.v1.json",
|
|
4
|
+
"title": "Workspai Workspace Activity Event",
|
|
5
|
+
"description": "Local-first operational activity emitted by Workspai commands. Activity is observational and does not by itself establish evidence or decision authority.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"eventId",
|
|
10
|
+
"sequence",
|
|
11
|
+
"timestamp",
|
|
12
|
+
"runId",
|
|
13
|
+
"scope",
|
|
14
|
+
"kind",
|
|
15
|
+
"status",
|
|
16
|
+
"component",
|
|
17
|
+
"message"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schemaVersion": { "const": "workspace-activity-event.v1" },
|
|
21
|
+
"eventId": { "type": "string", "minLength": 8 },
|
|
22
|
+
"sequence": { "type": "integer", "minimum": 1 },
|
|
23
|
+
"timestamp": { "type": "string", "format": "date-time" },
|
|
24
|
+
"runId": { "type": "string", "minLength": 8 },
|
|
25
|
+
"parentRunId": { "type": "string", "minLength": 8 },
|
|
26
|
+
"spanId": { "type": "string", "minLength": 1 },
|
|
27
|
+
"parentSpanId": { "type": "string", "minLength": 1 },
|
|
28
|
+
"causationId": { "type": "string", "minLength": 1 },
|
|
29
|
+
"correlationId": { "type": "string", "minLength": 1 },
|
|
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": 8 },
|
|
36
|
+
"label": { "type": "string", "minLength": 1 },
|
|
37
|
+
"portable": { "type": "boolean" }
|
|
38
|
+
},
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
},
|
|
41
|
+
"kind": {
|
|
42
|
+
"enum": [
|
|
43
|
+
"run.started",
|
|
44
|
+
"run.completed",
|
|
45
|
+
"run.failed",
|
|
46
|
+
"run.cancelled",
|
|
47
|
+
"block.planned",
|
|
48
|
+
"block.started",
|
|
49
|
+
"block.progress",
|
|
50
|
+
"block.completed",
|
|
51
|
+
"block.failed",
|
|
52
|
+
"block.blocked",
|
|
53
|
+
"block.skipped",
|
|
54
|
+
"edge.declared",
|
|
55
|
+
"operation.started",
|
|
56
|
+
"operation.completed",
|
|
57
|
+
"operation.failed",
|
|
58
|
+
"touch.planned",
|
|
59
|
+
"touch.observed",
|
|
60
|
+
"artifact.published",
|
|
61
|
+
"artifact.rejected",
|
|
62
|
+
"warning.detected"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"status": {
|
|
66
|
+
"enum": [
|
|
67
|
+
"planned",
|
|
68
|
+
"running",
|
|
69
|
+
"succeeded",
|
|
70
|
+
"warned",
|
|
71
|
+
"blocked",
|
|
72
|
+
"failed",
|
|
73
|
+
"cancelled",
|
|
74
|
+
"skipped",
|
|
75
|
+
"rolled-back"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"component": { "type": "string", "minLength": 1 },
|
|
79
|
+
"message": { "type": "string", "minLength": 1 },
|
|
80
|
+
"blockId": { "type": "string", "minLength": 1 },
|
|
81
|
+
"attempt": { "type": "integer", "minimum": 1 },
|
|
82
|
+
"origin": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"required": ["id", "kind", "label"],
|
|
85
|
+
"properties": {
|
|
86
|
+
"id": { "type": "string", "minLength": 8 },
|
|
87
|
+
"kind": { "enum": ["project", "workspace-root"] },
|
|
88
|
+
"label": { "type": "string", "minLength": 1 }
|
|
89
|
+
},
|
|
90
|
+
"additionalProperties": false
|
|
91
|
+
},
|
|
92
|
+
"projectId": { "type": "string", "minLength": 1 },
|
|
93
|
+
"durationMs": { "type": "number", "minimum": 0 },
|
|
94
|
+
"progress": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"properties": {
|
|
97
|
+
"completed": { "type": "number", "minimum": 0 },
|
|
98
|
+
"total": { "type": "number", "minimum": 0 },
|
|
99
|
+
"percent": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
100
|
+
"iteration": { "type": "number", "minimum": 0 },
|
|
101
|
+
"iterations": { "type": "number", "minimum": 0 }
|
|
102
|
+
},
|
|
103
|
+
"additionalProperties": false
|
|
104
|
+
},
|
|
105
|
+
"target": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"required": ["kind"],
|
|
108
|
+
"properties": {
|
|
109
|
+
"kind": {
|
|
110
|
+
"enum": ["file", "directory", "artifact", "process", "workspace", "project", "other"]
|
|
111
|
+
},
|
|
112
|
+
"locator": { "type": "string" },
|
|
113
|
+
"operation": { "type": "string" },
|
|
114
|
+
"provenance": { "enum": ["authoritative", "observed", "inferred"] }
|
|
115
|
+
},
|
|
116
|
+
"additionalProperties": false
|
|
117
|
+
},
|
|
118
|
+
"edge": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"required": ["id", "fromBlockId", "toBlockId", "kind"],
|
|
121
|
+
"properties": {
|
|
122
|
+
"id": { "type": "string", "minLength": 1 },
|
|
123
|
+
"fromBlockId": { "type": "string", "minLength": 1 },
|
|
124
|
+
"toBlockId": { "type": "string", "minLength": 1 },
|
|
125
|
+
"kind": { "enum": ["sequence", "parallel", "gate", "handoff"] }
|
|
126
|
+
},
|
|
127
|
+
"additionalProperties": false
|
|
128
|
+
},
|
|
129
|
+
"attributes": { "type": "object", "additionalProperties": true }
|
|
130
|
+
},
|
|
131
|
+
"additionalProperties": false
|
|
132
|
+
}
|