rapidkit 0.34.0 → 0.36.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 (64) hide show
  1. package/README.md +137 -706
  2. package/contracts/backend-import-stack-parity.snapshot.json +36 -36
  3. package/contracts/infra-stack.v1.json +190 -47
  4. package/contracts/module-layout.v1.json +12 -3
  5. package/contracts/module-support.v1.json +20 -0
  6. package/contracts/runtime-command-surface.v1.json +139 -22
  7. package/contracts/workspace-intelligence/workspace-context.v1.json +59 -0
  8. package/contracts/workspace-intelligence/workspace-impact.v1.json +84 -0
  9. package/contracts/workspace-intelligence/workspace-model-diff.v1.json +105 -0
  10. package/contracts/workspace-intelligence/workspace-model-snapshot.v1.json +36 -0
  11. package/contracts/workspace-intelligence/workspace-model.v1.json +50 -0
  12. package/contracts/workspace-intelligence/workspace-verify.v1.json +111 -0
  13. package/dist/analyze-HXO6R656.js +1 -0
  14. package/dist/autopilot-release-FMQ5KND5.js +1 -0
  15. package/dist/chunk-45KNNNAB.js +2 -0
  16. package/dist/chunk-7ZSURMR2.js +4 -0
  17. package/dist/chunk-A5FBGRJA.js +1 -0
  18. package/dist/{chunk-3TBSWOTY.js → chunk-DC44JPI3.js} +13 -13
  19. package/dist/chunk-HHJAANUC.js +1 -0
  20. package/dist/{chunk-2PGMJSO5.js → chunk-HUQ5WRUF.js} +86 -86
  21. package/dist/chunk-KIB4KHBF.js +3 -0
  22. package/dist/chunk-KMUWWZRT.js +1 -0
  23. package/dist/chunk-MCLLP6MW.js +2 -0
  24. package/dist/chunk-OCGZNSOE.js +1 -0
  25. package/dist/chunk-TC2PSHT6.js +50 -0
  26. package/dist/chunk-UY4LZEXK.js +7 -0
  27. package/dist/chunk-UZW5QFRW.js +5 -0
  28. package/dist/chunk-VPNHGQIV.js +1 -0
  29. package/dist/chunk-Y2ZPG7KN.js +9 -0
  30. package/dist/chunk-YBS2HGO3.js +2 -0
  31. package/dist/chunk-YJ24EV3P.js +1 -0
  32. package/dist/create-7R4CGABE.js +1 -0
  33. package/dist/{doctor-3SBEO7XU.js → doctor-DG3TBPZN.js} +1 -1
  34. package/dist/imported-projects-registry-ZOCHFWMK.js +1 -0
  35. package/dist/index.d.ts +29 -2
  36. package/dist/index.js +135 -129
  37. package/dist/module-layout-NZ43RSC5.js +1 -0
  38. package/dist/pipeline-23AEXNF2.js +5 -0
  39. package/dist/{workspace-AG2MQFTY.js → workspace-ZDL5IQU4.js} +1 -1
  40. package/dist/workspace-context-YFQQROOZ.js +2 -0
  41. package/dist/{workspace-contract-Z5VYUF3T.js → workspace-contract-A6QP7FPA.js} +1 -1
  42. package/dist/workspace-foundation-QVWALXMP.js +1 -0
  43. package/dist/workspace-intelligence-VLA2RILM.js +1 -0
  44. package/dist/workspace-model-OO4WOBJS.js +1 -0
  45. package/dist/workspace-run-NIKH2IKF.js +1 -0
  46. package/dist/workspace-verify-XEXRCET7.js +1 -0
  47. package/package.json +14 -4
  48. package/dist/analyze-SVYRQNLO.js +0 -1
  49. package/dist/autopilot-release-LBKCP73F.js +0 -1
  50. package/dist/chunk-4E6ZGX6V.js +0 -1
  51. package/dist/chunk-ILY6QARY.js +0 -9
  52. package/dist/chunk-JIECGCLV.js +0 -4
  53. package/dist/chunk-KXTXQODI.js +0 -5
  54. package/dist/chunk-QCZGNOTH.js +0 -2
  55. package/dist/chunk-QUNCXYYK.js +0 -1
  56. package/dist/chunk-RGXFDBYB.js +0 -7
  57. package/dist/chunk-SAIWD6VM.js +0 -3
  58. package/dist/chunk-Y3UKTEZO.js +0 -2
  59. package/dist/chunk-YV7IQDBM.js +0 -50
  60. package/dist/create-BO2I3ESU.js +0 -1
  61. package/dist/module-layout-J56LHEGH.js +0 -1
  62. package/dist/pipeline-VUQ6AXKF.js +0 -5
  63. package/dist/workspace-foundation-G74V6K4U.js +0 -1
  64. package/dist/workspace-run-EDM3SUPA.js +0 -1
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "schemaVersion": "rapidkit-runtime-command-surface-v1",
3
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"],
3
+ "lifecycleCommands": [
4
+ "init",
5
+ "dev",
6
+ "start",
7
+ "build",
8
+ "test",
9
+ "lint",
10
+ "format",
11
+ "help"
12
+ ],
4
13
  "moduleMutationCommands": [
5
14
  "add",
6
15
  "modules",
@@ -14,10 +23,42 @@
14
23
  "snapshot",
15
24
  "optimize"
16
25
  ],
17
- "globalCommands": ["create", "list", "info", "frameworks", "license"],
18
- "universalCommands": ["version", "commands", "doctor", "project"],
19
- "moduleSuggestionFrameworks": ["fastapi", "nestjs"],
20
- "moduleUnsupportedFrameworks": ["go", "springboot", "dotnet"],
26
+ "globalCommands": [
27
+ "create",
28
+ "list",
29
+ "info",
30
+ "frameworks",
31
+ "license"
32
+ ],
33
+ "universalCommands": [
34
+ "version",
35
+ "commands",
36
+ "doctor",
37
+ "project"
38
+ ],
39
+ "coreProjectCommands": [
40
+ "docs"
41
+ ],
42
+ "moduleSuggestionFrameworks": [
43
+ "fastapi",
44
+ "nestjs"
45
+ ],
46
+ "moduleUnsupportedFrameworks": [
47
+ "go",
48
+ "springboot",
49
+ "dotnet",
50
+ "nextjs",
51
+ "remix",
52
+ "vite-react",
53
+ "vite-vue",
54
+ "vite-svelte",
55
+ "vite-solid",
56
+ "vite-vanilla",
57
+ "nuxt",
58
+ "angular",
59
+ "astro",
60
+ "sveltekit"
61
+ ],
21
62
  "scaffoldKits": [
22
63
  "fastapi.standard",
23
64
  "fastapi.ddd",
@@ -25,7 +66,18 @@
25
66
  "gofiber.standard",
26
67
  "gogin.standard",
27
68
  "springboot.standard",
28
- "dotnet.webapi.clean"
69
+ "dotnet.webapi.clean",
70
+ "frontend.nextjs",
71
+ "frontend.remix",
72
+ "frontend.vite-react",
73
+ "frontend.vite-vue",
74
+ "frontend.vite-svelte",
75
+ "frontend.vite-solid",
76
+ "frontend.vite-vanilla",
77
+ "frontend.nuxt",
78
+ "frontend.angular",
79
+ "frontend.astro",
80
+ "frontend.sveltekit"
29
81
  ],
30
82
  "runtimeMatrix": {
31
83
  "python": {
@@ -34,15 +86,33 @@
34
86
  "import": true,
35
87
  "moduleCommands": true,
36
88
  "doctor": "full",
37
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"]
89
+ "lifecycleCommands": [
90
+ "init",
91
+ "dev",
92
+ "start",
93
+ "build",
94
+ "test",
95
+ "lint",
96
+ "format",
97
+ "help"
98
+ ]
38
99
  },
39
100
  "node": {
40
- "tier": "first-class",
101
+ "tier": "extended",
41
102
  "scaffold": true,
42
103
  "import": true,
43
104
  "moduleCommands": true,
44
105
  "doctor": "full",
45
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"]
106
+ "lifecycleCommands": [
107
+ "init",
108
+ "dev",
109
+ "start",
110
+ "build",
111
+ "test",
112
+ "lint",
113
+ "format",
114
+ "help"
115
+ ]
46
116
  },
47
117
  "go": {
48
118
  "tier": "extended",
@@ -50,7 +120,16 @@
50
120
  "import": true,
51
121
  "moduleCommands": false,
52
122
  "doctor": "readiness",
53
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"]
123
+ "lifecycleCommands": [
124
+ "init",
125
+ "dev",
126
+ "start",
127
+ "build",
128
+ "test",
129
+ "lint",
130
+ "format",
131
+ "help"
132
+ ]
54
133
  },
55
134
  "java": {
56
135
  "tier": "extended",
@@ -58,7 +137,16 @@
58
137
  "import": true,
59
138
  "moduleCommands": false,
60
139
  "doctor": "readiness",
61
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"]
140
+ "lifecycleCommands": [
141
+ "init",
142
+ "dev",
143
+ "start",
144
+ "build",
145
+ "test",
146
+ "lint",
147
+ "format",
148
+ "help"
149
+ ]
62
150
  },
63
151
  "dotnet": {
64
152
  "tier": "extended",
@@ -66,7 +154,16 @@
66
154
  "import": true,
67
155
  "moduleCommands": false,
68
156
  "doctor": "readiness",
69
- "lifecycleCommands": ["init", "dev", "start", "build", "test", "lint", "format", "help"]
157
+ "lifecycleCommands": [
158
+ "init",
159
+ "dev",
160
+ "start",
161
+ "build",
162
+ "test",
163
+ "lint",
164
+ "format",
165
+ "help"
166
+ ]
70
167
  },
71
168
  "php": {
72
169
  "tier": "observed",
@@ -74,7 +171,9 @@
74
171
  "import": true,
75
172
  "moduleCommands": false,
76
173
  "doctor": "observed",
77
- "lifecycleCommands": ["help"]
174
+ "lifecycleCommands": [
175
+ "help"
176
+ ]
78
177
  },
79
178
  "ruby": {
80
179
  "tier": "observed",
@@ -82,7 +181,9 @@
82
181
  "import": true,
83
182
  "moduleCommands": false,
84
183
  "doctor": "observed",
85
- "lifecycleCommands": ["help"]
184
+ "lifecycleCommands": [
185
+ "help"
186
+ ]
86
187
  },
87
188
  "rust": {
88
189
  "tier": "observed",
@@ -90,7 +191,9 @@
90
191
  "import": true,
91
192
  "moduleCommands": false,
92
193
  "doctor": "observed",
93
- "lifecycleCommands": ["help"]
194
+ "lifecycleCommands": [
195
+ "help"
196
+ ]
94
197
  },
95
198
  "elixir": {
96
199
  "tier": "observed",
@@ -98,7 +201,9 @@
98
201
  "import": true,
99
202
  "moduleCommands": false,
100
203
  "doctor": "observed",
101
- "lifecycleCommands": ["help"]
204
+ "lifecycleCommands": [
205
+ "help"
206
+ ]
102
207
  },
103
208
  "clojure": {
104
209
  "tier": "observed",
@@ -106,7 +211,9 @@
106
211
  "import": true,
107
212
  "moduleCommands": false,
108
213
  "doctor": "observed",
109
- "lifecycleCommands": ["help"]
214
+ "lifecycleCommands": [
215
+ "help"
216
+ ]
110
217
  },
111
218
  "scala": {
112
219
  "tier": "observed",
@@ -114,7 +221,9 @@
114
221
  "import": true,
115
222
  "moduleCommands": false,
116
223
  "doctor": "observed",
117
- "lifecycleCommands": ["help"]
224
+ "lifecycleCommands": [
225
+ "help"
226
+ ]
118
227
  },
119
228
  "kotlin": {
120
229
  "tier": "observed",
@@ -122,7 +231,9 @@
122
231
  "import": true,
123
232
  "moduleCommands": false,
124
233
  "doctor": "observed",
125
- "lifecycleCommands": ["help"]
234
+ "lifecycleCommands": [
235
+ "help"
236
+ ]
126
237
  },
127
238
  "deno": {
128
239
  "tier": "observed",
@@ -130,7 +241,9 @@
130
241
  "import": true,
131
242
  "moduleCommands": false,
132
243
  "doctor": "observed",
133
- "lifecycleCommands": ["help"]
244
+ "lifecycleCommands": [
245
+ "help"
246
+ ]
134
247
  },
135
248
  "bun": {
136
249
  "tier": "observed",
@@ -138,7 +251,9 @@
138
251
  "import": true,
139
252
  "moduleCommands": false,
140
253
  "doctor": "observed",
141
- "lifecycleCommands": ["help"]
254
+ "lifecycleCommands": [
255
+ "help"
256
+ ]
142
257
  },
143
258
  "unknown": {
144
259
  "tier": "observed",
@@ -146,7 +261,9 @@
146
261
  "import": true,
147
262
  "moduleCommands": false,
148
263
  "doctor": "observed",
149
- "lifecycleCommands": ["help"]
264
+ "lifecycleCommands": [
265
+ "help"
266
+ ]
150
267
  }
151
268
  }
152
269
  }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://getrapidkit.com/schemas/workspace-context.v1.json",
4
+ "title": "RapidKit Workspace Agent Context",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "generatedAt",
9
+ "agent",
10
+ "workspaceSummary",
11
+ "modelRef",
12
+ "workspace",
13
+ "scope",
14
+ "projects",
15
+ "safeCommands",
16
+ "validation"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": {
20
+ "const": "workspace-context.v1"
21
+ },
22
+ "generatedAt": {
23
+ "type": "string",
24
+ "format": "date-time"
25
+ },
26
+ "agent": {
27
+ "enum": ["generic", "codex", "claude", "cursor", "orca"]
28
+ },
29
+ "workspaceSummary": { "type": "string" },
30
+ "modelRef": { "type": "string" },
31
+ "workspace": {
32
+ "type": "object",
33
+ "required": ["name", "root", "type"],
34
+ "properties": {
35
+ "name": { "type": "string" },
36
+ "root": { "type": "string" },
37
+ "type": { "type": "string" },
38
+ "profile": { "type": "string" }
39
+ },
40
+ "additionalProperties": false
41
+ },
42
+ "scope": { "type": "object", "additionalProperties": true },
43
+ "projects": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
44
+ "safeCommands": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
45
+ "validation": {
46
+ "type": "object",
47
+ "required": ["status", "errors", "warnings"],
48
+ "properties": {
49
+ "status": {
50
+ "enum": ["passed", "warning", "failed"]
51
+ },
52
+ "errors": { "type": "integer", "minimum": 0 },
53
+ "warnings": { "type": "integer", "minimum": 0 }
54
+ },
55
+ "additionalProperties": true
56
+ }
57
+ },
58
+ "additionalProperties": true
59
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://getrapidkit.com/schemas/workspace-impact.v1.json",
4
+ "title": "RapidKit Workspace Impact",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "generatedAt",
9
+ "fromRef",
10
+ "diffRef",
11
+ "workspace",
12
+ "summary",
13
+ "affectedProjects",
14
+ "workspaceImpact",
15
+ "verificationPlan",
16
+ "agentBrief",
17
+ "diff"
18
+ ],
19
+ "properties": {
20
+ "schemaVersion": {
21
+ "const": "workspace-impact.v1"
22
+ },
23
+ "generatedAt": {
24
+ "type": "string",
25
+ "format": "date-time"
26
+ },
27
+ "fromRef": { "type": "string" },
28
+ "diffRef": { "type": "string" },
29
+ "workspace": {
30
+ "type": "object",
31
+ "required": ["name", "type"],
32
+ "properties": {
33
+ "name": { "type": "string" },
34
+ "profile": { "type": "string" },
35
+ "type": { "type": "string" }
36
+ },
37
+ "additionalProperties": false
38
+ },
39
+ "summary": {
40
+ "type": "object",
41
+ "required": [
42
+ "changed",
43
+ "risk",
44
+ "affectedProjects",
45
+ "workspaceItems",
46
+ "recommendedCommands"
47
+ ],
48
+ "properties": {
49
+ "changed": { "type": "boolean" },
50
+ "risk": {
51
+ "enum": ["none", "low", "medium", "high", "critical"]
52
+ },
53
+ "affectedProjects": { "type": "integer", "minimum": 0 },
54
+ "workspaceItems": { "type": "integer", "minimum": 0 },
55
+ "recommendedCommands": { "type": "integer", "minimum": 0 }
56
+ },
57
+ "additionalProperties": false
58
+ },
59
+ "affectedProjects": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
60
+ "workspaceImpact": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
61
+ "verificationPlan": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
62
+ "agentBrief": {
63
+ "type": "object",
64
+ "required": ["headline", "bullets", "unsafeAssumptions"],
65
+ "properties": {
66
+ "headline": { "type": "string" },
67
+ "bullets": { "type": "array", "items": { "type": "string" } },
68
+ "unsafeAssumptions": { "type": "array", "items": { "type": "string" } }
69
+ },
70
+ "additionalProperties": false
71
+ },
72
+ "diff": {
73
+ "type": "object",
74
+ "required": ["schemaVersion"],
75
+ "properties": {
76
+ "schemaVersion": {
77
+ "const": "workspace-model-diff.v1"
78
+ }
79
+ },
80
+ "additionalProperties": true
81
+ }
82
+ },
83
+ "additionalProperties": true
84
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://getrapidkit.com/schemas/workspace-model-diff.v1.json",
4
+ "title": "RapidKit Workspace Model Diff",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "generatedAt",
9
+ "fromRef",
10
+ "toRef",
11
+ "fromHash",
12
+ "toHash",
13
+ "summary",
14
+ "changes",
15
+ "currentModel"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "const": "workspace-model-diff.v1"
20
+ },
21
+ "generatedAt": {
22
+ "type": "string",
23
+ "format": "date-time"
24
+ },
25
+ "fromRef": { "type": "string" },
26
+ "toRef": { "type": "string" },
27
+ "fromHash": { "type": "string" },
28
+ "toHash": { "type": "string" },
29
+ "summary": {
30
+ "type": "object",
31
+ "required": [
32
+ "changed",
33
+ "addedProjects",
34
+ "removedProjects",
35
+ "changedProjects",
36
+ "workspaceChanges",
37
+ "validationChanges",
38
+ "gitChangedFiles"
39
+ ],
40
+ "properties": {
41
+ "changed": { "type": "boolean" },
42
+ "addedProjects": { "type": "integer", "minimum": 0 },
43
+ "removedProjects": { "type": "integer", "minimum": 0 },
44
+ "changedProjects": { "type": "integer", "minimum": 0 },
45
+ "workspaceChanges": { "type": "integer", "minimum": 0 },
46
+ "validationChanges": { "type": "integer", "minimum": 0 },
47
+ "gitChangedFiles": { "type": "integer", "minimum": 0 }
48
+ },
49
+ "additionalProperties": false
50
+ },
51
+ "git": {
52
+ "type": "object",
53
+ "required": ["available", "dirty", "changedFiles", "untrackedFiles", "deletedFiles"],
54
+ "properties": {
55
+ "available": { "type": "boolean" },
56
+ "ref": { "type": "string" },
57
+ "branch": { "type": "string" },
58
+ "commit": { "type": "string" },
59
+ "dirty": { "type": "boolean" },
60
+ "changedFiles": { "type": "integer", "minimum": 0 },
61
+ "untrackedFiles": { "type": "integer", "minimum": 0 },
62
+ "deletedFiles": { "type": "integer", "minimum": 0 }
63
+ },
64
+ "additionalProperties": false
65
+ },
66
+ "changes": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "object",
70
+ "required": ["type", "severity", "target", "message"],
71
+ "properties": {
72
+ "type": {
73
+ "enum": [
74
+ "project.added",
75
+ "project.removed",
76
+ "project.changed",
77
+ "workspace.changed",
78
+ "validation.changed",
79
+ "git.file.changed",
80
+ "git.untracked",
81
+ "git.deleted"
82
+ ]
83
+ },
84
+ "severity": {
85
+ "enum": ["info", "warning", "critical"]
86
+ },
87
+ "target": { "type": "string" },
88
+ "message": { "type": "string" }
89
+ },
90
+ "additionalProperties": true
91
+ }
92
+ },
93
+ "currentModel": {
94
+ "type": "object",
95
+ "required": ["schemaVersion"],
96
+ "properties": {
97
+ "schemaVersion": {
98
+ "const": "workspace-model.v1"
99
+ }
100
+ },
101
+ "additionalProperties": true
102
+ }
103
+ },
104
+ "additionalProperties": true
105
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://getrapidkit.com/schemas/workspace-model-snapshot.v1.json",
4
+ "title": "RapidKit Workspace Model Snapshot",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "generatedAt", "modelHash", "modelRef", "model"],
7
+ "properties": {
8
+ "schemaVersion": {
9
+ "const": "workspace-model-snapshot.v1"
10
+ },
11
+ "generatedAt": {
12
+ "type": "string",
13
+ "format": "date-time"
14
+ },
15
+ "modelHash": {
16
+ "type": "string",
17
+ "minLength": 64,
18
+ "maxLength": 64
19
+ },
20
+ "modelRef": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "model": {
25
+ "type": "object",
26
+ "required": ["schemaVersion"],
27
+ "properties": {
28
+ "schemaVersion": {
29
+ "const": "workspace-model.v1"
30
+ }
31
+ },
32
+ "additionalProperties": true
33
+ }
34
+ },
35
+ "additionalProperties": true
36
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://getrapidkit.com/schemas/workspace-model.v1.json",
4
+ "title": "RapidKit Workspace Intelligence Model",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "generatedAt",
9
+ "workspace",
10
+ "identity",
11
+ "summary",
12
+ "projects",
13
+ "contracts",
14
+ "evidence",
15
+ "discovery",
16
+ "policies"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": {
20
+ "const": "workspace-model.v1"
21
+ },
22
+ "generatedAt": {
23
+ "type": "string",
24
+ "format": "date-time"
25
+ },
26
+ "workspace": {
27
+ "type": "object",
28
+ "required": ["name", "root", "type"],
29
+ "properties": {
30
+ "name": { "type": "string" },
31
+ "root": { "type": "string" },
32
+ "type": { "type": "string" },
33
+ "profile": { "type": "string" }
34
+ },
35
+ "additionalProperties": true
36
+ },
37
+ "identity": { "type": "object", "additionalProperties": true },
38
+ "summary": { "type": "object", "additionalProperties": true },
39
+ "projects": {
40
+ "type": "array",
41
+ "items": { "type": "object", "additionalProperties": true }
42
+ },
43
+ "contracts": { "type": "object", "additionalProperties": true },
44
+ "evidence": { "type": "object", "additionalProperties": true },
45
+ "discovery": { "type": "object", "additionalProperties": true },
46
+ "policies": { "type": "object", "additionalProperties": true },
47
+ "validation": { "type": "object", "additionalProperties": true }
48
+ },
49
+ "additionalProperties": true
50
+ }