workspai 0.59.0 → 0.60.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 (99) hide show
  1. package/README.md +5 -0
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +4 -0
  3. package/contracts/workspace-intelligence/goal-agent-handoff.v1.json +89 -8
  4. package/contracts/workspace-intelligence/goal-index.v1.json +76 -7
  5. package/contracts/workspace-intelligence/goal-lifecycle-result.v1.json +49 -5
  6. package/contracts/workspace-intelligence/goal-pack.v1.json +182 -19
  7. package/contracts/workspace-intelligence/verified-goal.v1.json +44 -3
  8. package/dist/analyze-FYNMI5KT.js +1 -0
  9. package/dist/autopilot-release-O5PPB6HQ.js +1 -0
  10. package/dist/chunk-6YFCS2AI.js +1 -0
  11. package/dist/{chunk-M4UOXP5T.js → chunk-7COD67YY.js} +19 -19
  12. package/dist/{chunk-DGGTTRYE.js → chunk-7ITSLGPZ.js} +1 -1
  13. package/dist/{chunk-5NIZNXRS.js → chunk-A4BK7C7M.js} +1 -1
  14. package/dist/{chunk-M3IKRWXA.js → chunk-AHKXQRLX.js} +1 -1
  15. package/dist/{chunk-KVSYBHUR.js → chunk-B6FJ6RG6.js} +1 -1
  16. package/dist/{chunk-5PSKBJKJ.js → chunk-DIJGQUEV.js} +1 -1
  17. package/dist/{chunk-QMPFNXI7.js → chunk-E4LJ3PQD.js} +1 -1
  18. package/dist/{chunk-RBBBXFEU.js → chunk-FUCFNB3P.js} +1 -1
  19. package/dist/{chunk-6FBNSTUS.js → chunk-GPGEJVVO.js} +1 -1
  20. package/dist/chunk-ILIBOMYL.js +1 -0
  21. package/dist/chunk-J7G3YL4O.js +1 -0
  22. package/dist/{chunk-NOZ4JCH7.js → chunk-KCJ3VS6R.js} +1 -1
  23. package/dist/{chunk-SP5EHSWG.js → chunk-KG3TUTXU.js} +1 -1
  24. package/dist/{chunk-RHK53ZK7.js → chunk-KKAGBP4T.js} +1 -1
  25. package/dist/{chunk-OLC7EYUA.js → chunk-KPEVYWOC.js} +12 -12
  26. package/dist/{chunk-WSRUPDZN.js → chunk-NA2NXX5P.js} +1 -1
  27. package/dist/{chunk-OFWSZYUX.js → chunk-NBJ6AP7K.js} +1 -1
  28. package/dist/{chunk-7WUT5ZSO.js → chunk-NVQUBUTY.js} +1 -1
  29. package/dist/{chunk-YEEAWZWI.js → chunk-O6R7SE6Y.js} +1 -1
  30. package/dist/{chunk-7SFXADXO.js → chunk-OU7DF6MP.js} +1 -1
  31. package/dist/{chunk-WJVB6SSD.js → chunk-PTNLVI62.js} +5 -5
  32. package/dist/{chunk-UVBPEX3E.js → chunk-PZLHQEGC.js} +1 -1
  33. package/dist/{chunk-WP3CXMVA.js → chunk-SCP5LJNO.js} +1 -1
  34. package/dist/{chunk-QFBVQUKV.js → chunk-TFOOSYGO.js} +6 -6
  35. package/dist/chunk-UJXE4UAX.js +1 -0
  36. package/dist/{chunk-ENKGGWRX.js → chunk-VDFHUYAQ.js} +8 -8
  37. package/dist/chunk-VR6XMUF3.js +2 -0
  38. package/dist/{chunk-S45YGN2I.js → chunk-WJ7MZB3I.js} +1 -1
  39. package/dist/{chunk-ZJCM37KX.js → chunk-WLFJHRB3.js} +1 -1
  40. package/dist/chunk-X6TNBARH.js +6 -0
  41. package/dist/{chunk-V3ABABV5.js → chunk-XXQRHS5I.js} +1 -1
  42. package/dist/chunk-XZ55OA4C.js +2 -0
  43. package/dist/{create-6QWIJTGU.js → create-IRNHMUEN.js} +1 -1
  44. package/dist/demo-kit-QHIDCSBI.js +149 -0
  45. package/dist/{doctor-NAZEKMGU.js → doctor-MAPZ2ZCD.js} +1 -1
  46. package/dist/{dotnet-webapi-clean-VXEF4SHM.js → dotnet-webapi-clean-AVHPJG7Y.js} +5 -5
  47. package/dist/goal-command-contract-43E22XQD.js +1 -0
  48. package/dist/goal-interactive-selection-6YJOK4WC.js +1 -0
  49. package/dist/goal-lifecycle-VQDUWZVG.js +1 -0
  50. package/dist/goal-pack-U3ZP7A2A.js +1 -0
  51. package/dist/{gofiber-standard-AQGSC7ON.js → gofiber-standard-47S2GYAO.js} +2 -2
  52. package/dist/{gogin-standard-7DU3OCBX.js → gogin-standard-EWB4XNOI.js} +3 -3
  53. package/dist/index.js +122 -122
  54. package/dist/{pipeline-5LLFP5ZH.js → pipeline-5O36G4ZV.js} +1 -1
  55. package/dist/{project-agent-entry-AFKDDRDL.js → project-agent-entry-CN4K6JNZ.js} +1 -1
  56. package/dist/{project-intelligence-lens-U2V3VNZG.js → project-intelligence-lens-N7REBQ3A.js} +1 -1
  57. package/dist/{project-test-coverage-HP37HUV2.js → project-test-coverage-E2Q4QL44.js} +1 -1
  58. package/dist/{rust-axum-4HXDICIB.js → rust-axum-M5X4ZC4Z.js} +4 -4
  59. package/dist/{springboot-standard-EK6GYN5T.js → springboot-standard-Y5ADLZMQ.js} +7 -7
  60. package/dist/verified-goal-CIYKNDOU.js +1 -0
  61. package/dist/{workspace-CQ43AWUF.js → workspace-UUU4VMZB.js} +1 -1
  62. package/dist/{workspace-agent-sync-YMXYUGYY.js → workspace-agent-sync-LQNIMGLN.js} +1 -1
  63. package/dist/{workspace-context-RAO62QVU.js → workspace-context-YAK5XX27.js} +1 -1
  64. package/dist/{workspace-contract-ACSIHJIO.js → workspace-contract-3BWIRSVQ.js} +1 -1
  65. package/dist/{workspace-explain-RH27OQB4.js → workspace-explain-QH4FXQW5.js} +1 -1
  66. package/dist/{workspace-foundation-JH2GFSAZ.js → workspace-foundation-AISQHJA3.js} +1 -1
  67. package/dist/{workspace-graph-stream-ZZZEQQTE.js → workspace-graph-stream-XTSDKRLM.js} +1 -1
  68. package/dist/{workspace-intelligence-3YERTBA3.js → workspace-intelligence-625UN27X.js} +1 -1
  69. package/dist/{workspace-intelligence-runner-YXMOT6GK.js → workspace-intelligence-runner-7KCGHRID.js} +1 -1
  70. package/dist/{workspace-knowledge-graph-HZZP6ZRB.js → workspace-knowledge-graph-3ZBPSAS7.js} +1 -1
  71. package/dist/workspace-knowledge-graph-snapshot-ZI4W735H.js +1 -0
  72. package/dist/{workspace-mcp-serve-5TTAN243.js → workspace-mcp-serve-ALIZV72K.js} +1 -1
  73. package/dist/{workspace-model-EIQSKDX7.js → workspace-model-ETCLINRB.js} +1 -1
  74. package/dist/{workspace-onboarding-SHHW4R4G.js → workspace-onboarding-XNBC6H2G.js} +1 -1
  75. package/dist/{workspace-registry-summary-OV5KX3WC.js → workspace-registry-summary-VSOBKAJG.js} +1 -1
  76. package/dist/workspace-repair-engine-7WGJWUBN.js +3 -0
  77. package/dist/workspace-run-I6E6VI6N.js +1 -0
  78. package/dist/{workspace-verify-W4P6LBIH.js → workspace-verify-7ENGIY4S.js} +1 -1
  79. package/dist/{workspace-watch-EZ4D4VCF.js → workspace-watch-2YFSB2WL.js} +1 -1
  80. package/docs/ci-workflows.md +18 -1
  81. package/docs/commands-reference.md +12 -2
  82. package/docs/contracts/README.md +15 -2
  83. package/docs/goal-packs.md +41 -5
  84. package/package.json +2 -1
  85. package/dist/analyze-52TEGLDR.js +0 -1
  86. package/dist/autopilot-release-KQGDM2AA.js +0 -1
  87. package/dist/chunk-HOUQIT7U.js +0 -1
  88. package/dist/chunk-RO73VVHW.js +0 -2
  89. package/dist/chunk-T3GJ7YVG.js +0 -1
  90. package/dist/chunk-TCURN5VD.js +0 -2
  91. package/dist/chunk-VRW6KXNK.js +0 -6
  92. package/dist/demo-kit-KHH63TNA.js +0 -149
  93. package/dist/goal-command-contract-CHE7U6YY.js +0 -1
  94. package/dist/goal-lifecycle-ECIRCHN5.js +0 -1
  95. package/dist/goal-pack-HBOPVZFO.js +0 -1
  96. package/dist/verified-goal-HUYJ6LBI.js +0 -1
  97. package/dist/workspace-knowledge-graph-snapshot-7DWHMEM2.js +0 -1
  98. package/dist/workspace-repair-engine-BNXZHW35.js +0 -3
  99. package/dist/workspace-run-7EJEBHAH.js +0 -1
package/README.md CHANGED
@@ -106,6 +106,8 @@ Describe the outcome in plain language from the adopted project:
106
106
 
107
107
  ```bash
108
108
  npx workspai goal "Raise test coverage to 85%" --for-agent generic
109
+ # In a polyglot scope, choose interactively or bind a canonical runtime:
110
+ npx workspai goal "Raise test coverage to 85%" --runtime cpp --for-agent generic
109
111
  # Or pursue feature, defect, refactor, performance, documentation, or
110
112
  # system-understanding outcomes in the same governed flow.
111
113
  npx workspai goal "Add retry with exponential backoff" --for-agent generic
@@ -123,6 +125,9 @@ control. The command prepares governed work; it does not edit source or claim
123
125
  that the outcome is complete. Exact coverage, dependency-security, and release
124
126
  Goals have deterministic CLI verifiers; other outcomes retain CLI safety and
125
127
  rollback while the consumer performs an evidence-backed outcome review.
128
+ Multi-project scope and polyglot runtime choices are explicit. Interactive
129
+ users get bounded choices from the canonical Workspace Model; automation gets
130
+ a machine-readable decision and can use `--scope` and `--runtime`.
126
131
 
127
132
  ![Workspai turns a plain-language objective into a governed Goal Pack](https://raw.githubusercontent.com/chistiq/workspai/main/packages/cli/docs/workspai-goal-readme-cli.gif)
128
133
 
@@ -504,6 +504,10 @@
504
504
  "flags": "--scope <scope>",
505
505
  "attributeName": "scope"
506
506
  },
507
+ {
508
+ "flags": "--runtime <runtime>",
509
+ "attributeName": "runtime"
510
+ },
507
511
  {
508
512
  "flags": "--for-agent <consumer>",
509
513
  "attributeName": "forAgent"
@@ -3,7 +3,22 @@
3
3
  "$id": "https://workspai.dev/schemas/workspace-intelligence/goal-agent-handoff.v1.json",
4
4
  "title": "Workspai Goal Agent Handoff",
5
5
  "type": "object",
6
- "required": ["schemaVersion", "goalId", "goalFingerprint", "generatedAt", "consumer", "state", "objective", "scope", "discovery", "retrieval", "evidence", "guardrails", "workflow", "renewal"],
6
+ "required": [
7
+ "schemaVersion",
8
+ "goalId",
9
+ "goalFingerprint",
10
+ "generatedAt",
11
+ "consumer",
12
+ "state",
13
+ "objective",
14
+ "scope",
15
+ "discovery",
16
+ "retrieval",
17
+ "evidence",
18
+ "guardrails",
19
+ "workflow",
20
+ "renewal"
21
+ ],
7
22
  "properties": {
8
23
  "schemaVersion": { "const": "workspai.goal-agent-handoff.v1" },
9
24
  "goalId": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$" },
@@ -16,10 +31,46 @@
16
31
  "type": "object",
17
32
  "required": ["kind", "projects", "selectionSource"],
18
33
  "properties": {
19
- "kind": { "enum": ["workspace", "project"] },
20
- "projects": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
21
- "selectionSource": { "enum": ["workspace", "invocation-project", "explicit"] }
34
+ "kind": { "enum": ["workspace", "project", "project-set"] },
35
+ "projects": {
36
+ "type": "array",
37
+ "minItems": 1,
38
+ "items": { "type": "string", "minLength": 1 },
39
+ "uniqueItems": true
40
+ },
41
+ "selectionSource": {
42
+ "enum": [
43
+ "workspace",
44
+ "single-project-workspace",
45
+ "invocation-project",
46
+ "explicit",
47
+ "interactive"
48
+ ]
49
+ },
50
+ "resolution": { "enum": ["selected", "selection-required"] }
22
51
  },
52
+ "allOf": [
53
+ {
54
+ "if": { "properties": { "kind": { "const": "project" } } },
55
+ "then": { "properties": { "projects": { "type": "array", "maxItems": 1 } } }
56
+ },
57
+ {
58
+ "if": { "properties": { "kind": { "const": "project-set" } } },
59
+ "then": { "properties": { "projects": { "type": "array", "minItems": 2 } } }
60
+ },
61
+ {
62
+ "if": {
63
+ "properties": { "resolution": { "const": "selection-required" } },
64
+ "required": ["resolution"]
65
+ },
66
+ "then": {
67
+ "properties": {
68
+ "kind": { "const": "workspace" },
69
+ "selectionSource": { "const": "workspace" }
70
+ }
71
+ }
72
+ }
73
+ ],
23
74
  "additionalProperties": false
24
75
  },
25
76
  "evidence": {
@@ -51,7 +102,12 @@
51
102
  "properties": {
52
103
  "index": { "const": ".workspai/goals/index.json" },
53
104
  "statusCommand": { "type": "string", "pattern": "^workspai goal --status " },
54
- "requiredReads": { "type": "array", "minItems": 3, "items": { "type": "string", "pattern": "^\\.workspai/" }, "uniqueItems": true }
105
+ "requiredReads": {
106
+ "type": "array",
107
+ "minItems": 3,
108
+ "items": { "type": "string", "pattern": "^\\.workspai/" },
109
+ "uniqueItems": true
110
+ }
55
111
  },
56
112
  "additionalProperties": false
57
113
  },
@@ -61,12 +117,37 @@
61
117
  "properties": {
62
118
  "status": { "enum": ["grounded", "partial", "empty"] },
63
119
  "strategy": { "const": "deterministic-category-v1" },
64
- "queries": { "type": "array", "minItems": 1, "maxItems": 3, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
65
- "anchors": { "type": "array", "maxItems": 20, "items": { "type": "object", "required": ["entityId", "kind", "label", "proofIds"], "properties": { "entityId": { "type": "string" }, "kind": { "type": "string" }, "label": { "type": "string" }, "proofIds": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } }
120
+ "queries": {
121
+ "type": "array",
122
+ "minItems": 1,
123
+ "maxItems": 3,
124
+ "items": { "type": "string", "minLength": 1 },
125
+ "uniqueItems": true
126
+ },
127
+ "anchors": {
128
+ "type": "array",
129
+ "maxItems": 20,
130
+ "items": {
131
+ "type": "object",
132
+ "required": ["entityId", "kind", "label", "proofIds"],
133
+ "properties": {
134
+ "entityId": { "type": "string" },
135
+ "kind": { "type": "string" },
136
+ "label": { "type": "string" },
137
+ "proofIds": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
138
+ },
139
+ "additionalProperties": false
140
+ }
141
+ }
66
142
  },
67
143
  "additionalProperties": false
68
144
  },
69
- "guardrails": { "type": "array", "minItems": 5, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
145
+ "guardrails": {
146
+ "type": "array",
147
+ "minItems": 5,
148
+ "items": { "type": "string", "minLength": 1 },
149
+ "uniqueItems": true
150
+ },
70
151
  "workflow": {
71
152
  "type": "array",
72
153
  "minItems": 5,
@@ -12,28 +12,97 @@
12
12
  "type": "array",
13
13
  "items": {
14
14
  "type": "object",
15
- "required": ["id", "fingerprint", "objective", "category", "state", "lifecycle", "scope", "createdAt", "updatedAt", "goalPack", "agentHandoff"],
15
+ "required": [
16
+ "id",
17
+ "fingerprint",
18
+ "objective",
19
+ "category",
20
+ "state",
21
+ "lifecycle",
22
+ "scope",
23
+ "createdAt",
24
+ "updatedAt",
25
+ "goalPack",
26
+ "agentHandoff"
27
+ ],
16
28
  "properties": {
17
29
  "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$" },
18
30
  "fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
19
31
  "objective": { "type": "string", "minLength": 1, "maxLength": 2000 },
20
- "category": { "enum": ["release-readiness", "dependency-security", "test-coverage", "defect-repair", "feature-change", "refactor", "performance", "documentation", "system-understanding"] },
32
+ "category": {
33
+ "enum": [
34
+ "release-readiness",
35
+ "dependency-security",
36
+ "test-coverage",
37
+ "defect-repair",
38
+ "feature-change",
39
+ "refactor",
40
+ "performance",
41
+ "documentation",
42
+ "system-understanding"
43
+ ]
44
+ },
21
45
  "state": { "enum": ["ready-to-plan", "needs-confirmation", "needs-evidence", "blocked"] },
22
- "lifecycle": { "enum": ["planned", "active", "cancelled", "verification-ready", "verified", "failed"] },
46
+ "lifecycle": {
47
+ "enum": ["planned", "active", "cancelled", "verification-ready", "verified", "failed"]
48
+ },
23
49
  "scope": {
24
50
  "type": "object",
25
51
  "required": ["kind", "projects", "selectionSource"],
26
52
  "properties": {
27
- "kind": { "enum": ["workspace", "project"] },
28
- "projects": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
29
- "selectionSource": { "enum": ["workspace", "invocation-project", "explicit"] }
53
+ "kind": { "enum": ["workspace", "project", "project-set"] },
54
+ "projects": {
55
+ "type": "array",
56
+ "minItems": 1,
57
+ "items": { "type": "string", "minLength": 1 },
58
+ "uniqueItems": true
59
+ },
60
+ "selectionSource": {
61
+ "enum": [
62
+ "workspace",
63
+ "single-project-workspace",
64
+ "invocation-project",
65
+ "explicit",
66
+ "interactive"
67
+ ]
68
+ },
69
+ "resolution": { "enum": ["selected", "selection-required"] }
30
70
  },
71
+ "allOf": [
72
+ {
73
+ "if": { "properties": { "kind": { "const": "project" } } },
74
+ "then": {
75
+ "properties": { "projects": { "type": "array", "maxItems": 1 } }
76
+ }
77
+ },
78
+ {
79
+ "if": { "properties": { "kind": { "const": "project-set" } } },
80
+ "then": {
81
+ "properties": { "projects": { "type": "array", "minItems": 2 } }
82
+ }
83
+ },
84
+ {
85
+ "if": {
86
+ "properties": { "resolution": { "const": "selection-required" } },
87
+ "required": ["resolution"]
88
+ },
89
+ "then": {
90
+ "properties": {
91
+ "kind": { "const": "workspace" },
92
+ "selectionSource": { "const": "workspace" }
93
+ }
94
+ }
95
+ }
96
+ ],
31
97
  "additionalProperties": false
32
98
  },
33
99
  "createdAt": { "type": "string", "format": "date-time" },
34
100
  "updatedAt": { "type": "string", "format": "date-time" },
35
101
  "goalPack": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/goal-pack\\.json$" },
36
- "agentHandoff": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$" },
102
+ "agentHandoff": {
103
+ "type": "string",
104
+ "pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$"
105
+ },
37
106
  "verifiedGoalId": { "type": "string", "minLength": 1 },
38
107
  "repairTransactionId": { "type": "string", "minLength": 1 },
39
108
  "repairTransactionIds": {
@@ -28,7 +28,9 @@
28
28
  "schemaVersion": { "const": "workspai.goal-pack.v1" },
29
29
  "id": { "type": "string" },
30
30
  "fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
31
- "state": { "enum": ["ready-to-plan", "needs-confirmation", "needs-evidence", "blocked"] }
31
+ "state": {
32
+ "enum": ["ready-to-plan", "needs-confirmation", "needs-evidence", "blocked"]
33
+ }
32
34
  }
33
35
  },
34
36
  { "type": "null" }
@@ -71,15 +73,57 @@
71
73
  ]
72
74
  },
73
75
  "state": { "enum": ["ready-to-plan", "needs-confirmation", "needs-evidence", "blocked"] },
74
- "lifecycle": { "enum": ["planned", "active", "cancelled", "verification-ready", "verified", "failed"] },
76
+ "lifecycle": {
77
+ "enum": ["planned", "active", "cancelled", "verification-ready", "verified", "failed"]
78
+ },
75
79
  "scope": {
76
80
  "type": "object",
77
81
  "required": ["kind", "projects", "selectionSource"],
78
82
  "properties": {
79
- "kind": { "enum": ["workspace", "project"] },
80
- "projects": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
81
- "selectionSource": { "enum": ["workspace", "invocation-project", "explicit"] }
83
+ "kind": { "enum": ["workspace", "project", "project-set"] },
84
+ "projects": {
85
+ "type": "array",
86
+ "minItems": 1,
87
+ "items": { "type": "string", "minLength": 1 },
88
+ "uniqueItems": true
89
+ },
90
+ "selectionSource": {
91
+ "enum": [
92
+ "workspace",
93
+ "single-project-workspace",
94
+ "invocation-project",
95
+ "explicit",
96
+ "interactive"
97
+ ]
98
+ },
99
+ "resolution": { "enum": ["selected", "selection-required"] }
82
100
  },
101
+ "allOf": [
102
+ {
103
+ "if": { "properties": { "kind": { "const": "project" } } },
104
+ "then": {
105
+ "properties": { "projects": { "type": "array", "maxItems": 1 } }
106
+ }
107
+ },
108
+ {
109
+ "if": { "properties": { "kind": { "const": "project-set" } } },
110
+ "then": {
111
+ "properties": { "projects": { "type": "array", "minItems": 2 } }
112
+ }
113
+ },
114
+ {
115
+ "if": {
116
+ "properties": { "resolution": { "const": "selection-required" } },
117
+ "required": ["resolution"]
118
+ },
119
+ "then": {
120
+ "properties": {
121
+ "kind": { "const": "workspace" },
122
+ "selectionSource": { "const": "workspace" }
123
+ }
124
+ }
125
+ }
126
+ ],
83
127
  "additionalProperties": false
84
128
  },
85
129
  "createdAt": { "type": "string", "format": "date-time" },
@@ -3,7 +3,24 @@
3
3
  "$id": "https://workspai.dev/schemas/workspace-intelligence/goal-pack.v1.json",
4
4
  "title": "Workspai Goal Pack",
5
5
  "type": "object",
6
- "required": ["schemaVersion", "id", "fingerprint", "generatedAt", "state", "intent", "workspace", "scope", "sourceBinding", "baseline", "preflight", "successCriteria", "policy", "orchestration", "artifacts", "commands"],
6
+ "required": [
7
+ "schemaVersion",
8
+ "id",
9
+ "fingerprint",
10
+ "generatedAt",
11
+ "state",
12
+ "intent",
13
+ "workspace",
14
+ "scope",
15
+ "sourceBinding",
16
+ "baseline",
17
+ "preflight",
18
+ "successCriteria",
19
+ "policy",
20
+ "orchestration",
21
+ "artifacts",
22
+ "commands"
23
+ ],
7
24
  "properties": {
8
25
  "schemaVersion": { "const": "workspai.goal-pack.v1" },
9
26
  "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$" },
@@ -17,16 +34,52 @@
17
34
  "original": { "type": "string", "minLength": 1, "maxLength": 2000 },
18
35
  "normalized": { "type": "string", "minLength": 1, "maxLength": 2000 },
19
36
  "statement": { "type": "string", "minLength": 1, "maxLength": 2000 },
20
- "category": { "enum": ["release-readiness", "dependency-security", "test-coverage", "defect-repair", "feature-change", "refactor", "performance", "documentation", "system-understanding"] },
37
+ "category": {
38
+ "enum": [
39
+ "release-readiness",
40
+ "dependency-security",
41
+ "test-coverage",
42
+ "defect-repair",
43
+ "feature-change",
44
+ "refactor",
45
+ "performance",
46
+ "documentation",
47
+ "system-understanding"
48
+ ]
49
+ },
21
50
  "confidence": { "enum": ["high", "medium", "low"] },
22
- "ambiguities": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
51
+ "ambiguities": {
52
+ "type": "array",
53
+ "items": { "type": "string", "minLength": 1 },
54
+ "uniqueItems": true
55
+ },
23
56
  "requestedTarget": {
24
57
  "type": "object",
25
58
  "required": ["metric", "operator", "value"],
26
59
  "properties": {
27
60
  "metric": { "const": "test-coverage-percent" },
28
61
  "operator": { "const": "at-least" },
29
- "value": { "type": "number", "minimum": 0, "maximum": 100 }
62
+ "value": { "type": "number", "minimum": 0, "maximum": 100 },
63
+ "runtime": {
64
+ "enum": [
65
+ "node",
66
+ "bun",
67
+ "deno",
68
+ "python",
69
+ "go",
70
+ "java",
71
+ "dotnet",
72
+ "rust",
73
+ "php",
74
+ "ruby",
75
+ "elixir",
76
+ "clojure",
77
+ "scala",
78
+ "kotlin",
79
+ "c",
80
+ "cpp"
81
+ ]
82
+ }
30
83
  },
31
84
  "additionalProperties": false
32
85
  }
@@ -81,7 +134,11 @@
81
134
  "properties": {
82
135
  "status": { "enum": ["passed", "blocked", "unknown"] },
83
136
  "artifact": { "const": ".workspai/reports/workspace-intelligence-run-last-run.json" },
84
- "blockedStages": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
137
+ "blockedStages": {
138
+ "type": "array",
139
+ "items": { "type": "string", "minLength": 1 },
140
+ "uniqueItems": true
141
+ }
85
142
  },
86
143
  "additionalProperties": false
87
144
  },
@@ -91,9 +148,30 @@
91
148
  "properties": {
92
149
  "status": { "enum": ["available", "requires-setup", "unsupported", "not-applicable"] },
93
150
  "runtime": { "type": ["string", "null"] },
151
+ "runtimeChoices": {
152
+ "type": "array",
153
+ "items": { "type": "string", "minLength": 1 },
154
+ "uniqueItems": true
155
+ },
94
156
  "runner": { "type": ["string", "null"] },
95
- "existingEvidence": { "type": "array", "items": { "type": "object", "required": ["project", "path", "sha256"], "properties": { "project": { "type": "string", "minLength": 1 }, "path": { "type": "string", "minLength": 1 }, "sha256": { "$ref": "#/$defs/hash" } }, "additionalProperties": false } },
96
- "prerequisites": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
157
+ "existingEvidence": {
158
+ "type": "array",
159
+ "items": {
160
+ "type": "object",
161
+ "required": ["project", "path", "sha256"],
162
+ "properties": {
163
+ "project": { "type": "string", "minLength": 1 },
164
+ "path": { "type": "string", "minLength": 1 },
165
+ "sha256": { "$ref": "#/$defs/hash" }
166
+ },
167
+ "additionalProperties": false
168
+ }
169
+ },
170
+ "prerequisites": {
171
+ "type": "array",
172
+ "items": { "type": "string", "minLength": 1 },
173
+ "uniqueItems": true
174
+ }
97
175
  },
98
176
  "additionalProperties": false
99
177
  },
@@ -109,7 +187,14 @@
109
187
  "required": ["id", "kind", "expected", "producerCommand", "machineVerifiable"],
110
188
  "properties": {
111
189
  "id": { "type": "string", "minLength": 1 },
112
- "kind": { "enum": ["workspace-verify", "release-readiness", "dependency-security", "test-coverage"] },
190
+ "kind": {
191
+ "enum": [
192
+ "workspace-verify",
193
+ "release-readiness",
194
+ "dependency-security",
195
+ "test-coverage"
196
+ ]
197
+ },
113
198
  "expected": { "type": "string", "minLength": 1 },
114
199
  "producerCommand": { "type": "string", "minLength": 1 },
115
200
  "machineVerifiable": { "type": "boolean" }
@@ -119,7 +204,17 @@
119
204
  },
120
205
  "policy": {
121
206
  "type": "object",
122
- "required": ["mutationMode", "approval", "verificationOwner", "rollbackOwner", "maxAttempts", "allowBreakingChanges", "allowForce", "networkAccess", "scopeExpansion"],
207
+ "required": [
208
+ "mutationMode",
209
+ "approval",
210
+ "verificationOwner",
211
+ "rollbackOwner",
212
+ "maxAttempts",
213
+ "allowBreakingChanges",
214
+ "allowForce",
215
+ "networkAccess",
216
+ "scopeExpansion"
217
+ ],
123
218
  "properties": {
124
219
  "mutationMode": { "const": "proposal-only" },
125
220
  "approval": { "const": "required-before-mutation" },
@@ -164,7 +259,10 @@
164
259
  "required": ["goalPack", "agentHandoff", "latestReport"],
165
260
  "properties": {
166
261
  "goalPack": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/goal-pack\\.json$" },
167
- "agentHandoff": { "type": "string", "pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$" },
262
+ "agentHandoff": {
263
+ "type": "string",
264
+ "pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$"
265
+ },
168
266
  "latestReport": { "const": ".workspai/reports/goal-pack-last-run.json" }
169
267
  },
170
268
  "additionalProperties": false
@@ -173,10 +271,14 @@
173
271
  "type": "object",
174
272
  "required": ["refreshEvidence", "inspectGraph", "proposeRepair"],
175
273
  "properties": {
176
- "refreshEvidence": { "const": "workspai workspace intelligence run --for-agent generic --strict --json" },
274
+ "refreshEvidence": {
275
+ "const": "workspai workspace intelligence run --for-agent generic --strict --json"
276
+ },
177
277
  "inspectGraph": { "type": "string", "pattern": "^workspai workspace graph search " },
178
278
  "planVerifiedGoal": { "type": "string", "pattern": "^workspai workspace goal plan " },
179
- "proposeRepair": { "const": "workspai workspace repair propose --file <proposal.json> --json" }
279
+ "proposeRepair": {
280
+ "const": "workspai workspace repair propose --file <proposal.json> --json"
281
+ }
180
282
  },
181
283
  "additionalProperties": false
182
284
  }
@@ -187,15 +289,58 @@
187
289
  "type": "object",
188
290
  "required": ["kind", "projects", "selectionSource"],
189
291
  "properties": {
190
- "kind": { "enum": ["workspace", "project"] },
191
- "projects": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
192
- "selectionSource": { "enum": ["workspace", "invocation-project", "explicit"] }
292
+ "kind": { "enum": ["workspace", "project", "project-set"] },
293
+ "projects": {
294
+ "type": "array",
295
+ "minItems": 1,
296
+ "items": { "type": "string", "minLength": 1 },
297
+ "uniqueItems": true
298
+ },
299
+ "selectionSource": {
300
+ "enum": [
301
+ "workspace",
302
+ "single-project-workspace",
303
+ "invocation-project",
304
+ "explicit",
305
+ "interactive"
306
+ ]
307
+ },
308
+ "resolution": { "enum": ["selected", "selection-required"] }
193
309
  },
310
+ "allOf": [
311
+ {
312
+ "if": { "properties": { "kind": { "const": "project" } } },
313
+ "then": { "properties": { "projects": { "type": "array", "maxItems": 1 } } }
314
+ },
315
+ {
316
+ "if": { "properties": { "kind": { "const": "project-set" } } },
317
+ "then": { "properties": { "projects": { "type": "array", "minItems": 2 } } }
318
+ },
319
+ {
320
+ "if": {
321
+ "properties": { "resolution": { "const": "selection-required" } },
322
+ "required": ["resolution"]
323
+ },
324
+ "then": {
325
+ "properties": {
326
+ "kind": { "const": "workspace" },
327
+ "selectionSource": { "const": "workspace" }
328
+ }
329
+ }
330
+ }
331
+ ],
194
332
  "additionalProperties": false
195
333
  },
196
334
  "modelBinding": {
197
335
  "type": "object",
198
- "required": ["artifact", "schemaVersion", "hashAlgorithm", "hashSemantics", "hash", "generatedAt"],
336
+ "required": [
337
+ "artifact",
338
+ "schemaVersion",
339
+ "hashAlgorithm",
340
+ "hashSemantics",
341
+ "hash",
342
+ "generatedAt"
343
+ ],
199
344
  "properties": {
200
345
  "artifact": { "const": ".workspai/reports/workspace-model.json" },
201
346
  "schemaVersion": { "const": "workspace-model.v1" },
@@ -208,7 +353,15 @@
208
353
  },
209
354
  "graphBinding": {
210
355
  "type": "object",
211
- "required": ["artifact", "schemaVersion", "hashAlgorithm", "hashSemantics", "hash", "generatedAt", "modelHash"],
356
+ "required": [
357
+ "artifact",
358
+ "schemaVersion",
359
+ "hashAlgorithm",
360
+ "hashSemantics",
361
+ "hash",
362
+ "generatedAt",
363
+ "modelHash"
364
+ ],
212
365
  "properties": {
213
366
  "artifact": { "const": ".workspai/reports/workspace-knowledge-graph.json" },
214
367
  "schemaVersion": { "const": "workspace-knowledge-graph.v1" },
@@ -227,7 +380,13 @@
227
380
  "properties": {
228
381
  "status": { "enum": ["grounded", "partial", "empty"] },
229
382
  "strategy": { "const": "deterministic-category-v1" },
230
- "queries": { "type": "array", "minItems": 1, "maxItems": 3, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
383
+ "queries": {
384
+ "type": "array",
385
+ "minItems": 1,
386
+ "maxItems": 3,
387
+ "items": { "type": "string", "minLength": 1 },
388
+ "uniqueItems": true
389
+ },
231
390
  "anchors": {
232
391
  "type": "array",
233
392
  "maxItems": 20,
@@ -238,7 +397,11 @@
238
397
  "entityId": { "type": "string", "minLength": 1 },
239
398
  "kind": { "type": "string", "minLength": 1 },
240
399
  "label": { "type": "string", "minLength": 1 },
241
- "proofIds": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
400
+ "proofIds": {
401
+ "type": "array",
402
+ "items": { "type": "string", "minLength": 1 },
403
+ "uniqueItems": true
404
+ }
242
405
  },
243
406
  "additionalProperties": false
244
407
  }