cox-protocol-package 1.0.2 → 1.2.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 (74) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/COX_FILE_FORMAT_SPECIFICATION_v1.0.md +40 -200
  3. package/FINALIZATION.md +50 -0
  4. package/LocalAppManager/Dashboard/analytics_sidebar_panels/analytics_sidebar_panels.cox +56 -0
  5. package/LocalAppManager/Dashboard/analytics_sidebar_panels/analytics_sidebar_panels_screenshot.placeholder.txt +1 -0
  6. package/LocalAppManager/Dashboard/dashboard.cox +62 -0
  7. package/LocalAppManager/Dashboard/dashboard_screenshot.placeholder.txt +1 -0
  8. package/LocalAppManager/Dashboard/left_navigation_sidebar/left_navigation_sidebar.cox +56 -0
  9. package/LocalAppManager/Dashboard/left_navigation_sidebar/left_navigation_sidebar_screenshot.placeholder.txt +1 -0
  10. package/LocalAppManager/Dashboard/projects_grid_cards/projects_grid_cards.cox +56 -0
  11. package/LocalAppManager/Dashboard/projects_grid_cards/projects_grid_cards_screenshot.placeholder.txt +1 -0
  12. package/LocalAppManager/Dashboard/top_header_stats_bar/top_header_stats_bar.cox +56 -0
  13. package/LocalAppManager/Dashboard/top_header_stats_bar/top_header_stats_bar_screenshot.placeholder.txt +1 -0
  14. package/MANIFEST.in +20 -0
  15. package/README.md +67 -154
  16. package/bin/cox-protocol.js +23 -97
  17. package/cox_protocol/__init__.py +2 -0
  18. package/cox_protocol/__main__.py +3 -0
  19. package/cox_protocol/compiler.py +273 -0
  20. package/cox_protocol/cox_cli.py +146 -0
  21. package/cox_protocol/cox_lib.py +599 -0
  22. package/cox_protocol/package_target.py +262 -0
  23. package/cox_protocol/react_target.py +306 -0
  24. package/cox_protocol/scaffold.py +56 -0
  25. package/cox_protocol/schemas/cox.component.v1.schema.json +180 -0
  26. package/cox_protocol/schemas/cox.crop_metadata.v1.schema.json +83 -0
  27. package/cox_protocol/schemas/cox.manifest.v1.schema.json +172 -0
  28. package/cox_protocol/schemas/cox.page.v1.schema.json +242 -0
  29. package/cox_protocol/schemas/cox.protocol.v1.schema.json +38 -0
  30. package/cox_protocol/starter/README.md +7 -0
  31. package/cox_protocol/starter/manifest.cox +26 -0
  32. package/cox_protocol/starter/page/action_button/action_button.cox +34 -0
  33. package/cox_protocol/starter/page/action_button/reference.svg +1 -0
  34. package/cox_protocol/starter/page/page.cox +39 -0
  35. package/cox_protocol/starter/page/reference.svg +1 -0
  36. package/editor-support/vscode/CHANGELOG.md +6 -0
  37. package/editor-support/vscode/README.md +2 -1
  38. package/editor-support/vscode/package.json +3 -3
  39. package/editor-support/vscode/snippets/cox-common.json +1 -1
  40. package/editor-support/vscode/snippets/cox-component.json +2 -1
  41. package/editor-support/vscode/snippets/cox-crop-metadata.json +1 -1
  42. package/editor-support/vscode/snippets/cox-manifest.json +1 -1
  43. package/editor-support/vscode/snippets/cox-page.json +2 -1
  44. package/editor-support/vscode/snippets/cox-protocol.json +1 -1
  45. package/examples/quickstart/README.md +7 -0
  46. package/examples/quickstart/manifest.cox +26 -0
  47. package/examples/quickstart/page/action_button/action_button.cox +34 -0
  48. package/examples/quickstart/page/action_button/reference.svg +1 -0
  49. package/examples/quickstart/page/page.cox +39 -0
  50. package/examples/quickstart/page/reference.svg +1 -0
  51. package/guides/contract-demo.md +24 -0
  52. package/guides/npm-installation.md +16 -287
  53. package/manifest.cox +7 -4
  54. package/package.json +30 -14
  55. package/protocols/recursive_decomposition_protocol.cox +8 -8
  56. package/pyproject.toml +17 -6
  57. package/schemas/cox.component.v1.schema.json +17 -4
  58. package/schemas/cox.crop_metadata.v1.schema.json +1 -1
  59. package/schemas/cox.manifest.v1.schema.json +1 -1
  60. package/schemas/cox.page.v1.schema.json +17 -4
  61. package/schemas/cox.protocol.v1.schema.json +1 -1
  62. package/scripts/check_distribution.py +87 -0
  63. package/scripts/demo.py +62 -0
  64. package/scripts/package-vscode.mjs +12 -0
  65. package/scripts/release_check.py +86 -0
  66. package/tests/conftest.py +21 -0
  67. package/tests/test_cli_and_typescript.py +123 -0
  68. package/tests/test_compiler.py +279 -0
  69. package/tests/test_validation.py +215 -0
  70. package/tools/__init__.py +2 -2
  71. package/tools/cox_cli.py +2 -123
  72. package/tools/cox_lib.py +2 -558
  73. package/tools/package_target.py +2 -214
  74. package/tools/react_target.py +2 -278
@@ -1,296 +1,25 @@
1
- # Publishing And Installing COX With NPM
1
+ # Installing the npm wrapper
2
2
 
3
- This package ships an NPM command named `cox-protocol`. The command delegates to the Python COX CLI bundled in the package, so target machines need both Node.js and Python.
3
+ The npm package ships the same Python compiler and schema resources. It requires Node 18+, Python 3.9+, and the Python dependencies in the interpreter selected by `COX_PYTHON`. It never installs Python packages automatically.
4
4
 
5
- If the target machine has multiple Python installations, set `COX_PYTHON` to the interpreter that has the COX dependencies installed.
6
-
7
- > Note: This NPM package installs the `cox-protocol` command wrapper and the COX package files. The target machine must also have Python 3.9+ and the required Python packages:
8
- >
9
- > ```bash
10
- > python3 -m pip install PyYAML jsonschema typer rich
11
- > ```
12
- >
13
- > Optional when you need to force a specific interpreter:
14
- >
15
- > ```bash
16
- > export COX_PYTHON=/path/to/python
17
- > ```
18
-
19
- ## Prerequisites
20
-
21
- - Node.js 18 or newer
22
- - Python 3.9 or newer
23
- - `pip` available for the Python interpreter you want COX to use
24
- - An npm account with two-factor authentication or an appropriate granular publishing token
25
-
26
- ## Check `package.json`
27
-
28
- Run all publishing commands from the repository root folder that contains `package.json`.
29
-
30
- The publish metadata should include:
31
-
32
- ```json
33
- {
34
- "name": "cox-protocol-package",
35
- "version": "1.0.1",
36
- "description": "NPM wrapper and distribution package for the COX protocol CLI.",
37
- "license": "MIT",
38
- "bin": {
39
- "cox-protocol": "bin/cox-protocol.js"
40
- },
41
- "files": [
42
- "bin",
43
- "COX_FILE_FORMAT_SPECIFICATION_v1.0.md",
44
- "LICENSE",
45
- "README.md",
46
- "guides",
47
- "manifest.cox",
48
- "protocols",
49
- "pyproject.toml",
50
- "requirements.txt",
51
- "schemas",
52
- "skills",
53
- "templates",
54
- "tools"
55
- ]
56
- }
57
- ```
58
-
59
- The `bin` field makes `cox-protocol` available after a global install. The wrapper file must be executable and start with a Node shebang:
60
-
61
- ```bash
62
- chmod +x bin/cox-protocol.js
63
- head -n 1 bin/cox-protocol.js
64
- ```
65
-
66
- Expected first line:
67
-
68
- ```text
69
- #!/usr/bin/env node
70
- ```
71
-
72
- ## Check Package Name Availability
73
-
74
- Unscoped npm package names are public and globally unique. Check the current package name:
75
-
76
- ```bash
77
- npm view cox-protocol-package
78
- ```
79
-
80
- If npm returns package info, the name is already taken. If it returns a 404, the name can be used.
81
-
82
- For this repository, `cox-protocol-package` is already in use. That is expected once the package has been published. For updates, keep the name and publish a new version.
83
-
84
- A shorter public name may be better if it is available:
85
-
86
- ```bash
87
- npm view cox-protocol
88
- ```
89
-
90
- If `cox-protocol` is available and you want that name, update `package.json` before publishing:
91
-
92
- ```json
93
- {
94
- "name": "cox-protocol"
95
- }
96
- ```
97
-
98
- Then users install:
99
-
100
- ```bash
101
- npm install -g cox-protocol
102
- ```
103
-
104
- ## Log In To NPM
105
-
106
- Create an npm account, then log in:
107
-
108
- ```bash
109
- npm login
110
- npm whoami
111
- ```
112
-
113
- If your account has 2FA enabled, expect an OTP prompt during login or publish. For CI, use a granular npm token with publish permissions.
114
-
115
- ## Preview The Published Contents
116
-
117
- Run a dry run first:
118
-
119
- ```bash
120
- npm pack --dry-run
121
- ```
122
-
123
- Then create and inspect the actual tarball:
5
+ For the local 1.2.0 release artifacts on macOS/Linux:
124
6
 
125
7
  ```bash
126
- npm pack
127
- tar -tzf cox-protocol-package-<version>.tgz
8
+ python3 -m venv .cox-venv
9
+ .cox-venv/bin/python -m pip install /path/to/cox_protocol_package-1.2.0-py3-none-any.whl
10
+ export COX_PYTHON="$PWD/.cox-venv/bin/python"
11
+ npm install --prefix ./cox-tools /path/to/cox-protocol-package-1.2.0.tgz
12
+ ./cox-tools/node_modules/.bin/cox-protocol --version
13
+ ./cox-tools/node_modules/.bin/cox-protocol init my-contract --name MyProject
14
+ ./cox-tools/node_modules/.bin/cox-protocol validate my-contract --strict
15
+ ./cox-tools/node_modules/.bin/cox-protocol compile my-contract --target all --out build
16
+ ./cox-tools/node_modules/.bin/cox-protocol verify-package my-contract/build/package/myproject.zip
128
17
  ```
129
18
 
130
- Confirm the tarball includes:
131
-
132
- - `package.json`
133
- - `README.md`
134
- - `bin/cox-protocol.js`
135
- - `tools/` Python CLI files
136
- - `schemas/`, `protocols/`, `templates/`, `guides/`, and `skills/`
137
-
138
- Confirm it does not include:
139
-
140
- - secrets or `.env` files
141
- - `.venv/`
142
- - `.git/`
143
- - `node_modules/`
144
- - `__pycache__/` or `*.pyc`
145
- - generated tarballs or raw intake ZIPs
146
- - unrelated build or test artifacts
147
-
148
- ## Test The Tarball Locally
149
-
150
- From another temporary folder:
151
-
152
- ```bash
153
- npm install -g /path/to/cox-protocol-package-<version>.tgz
154
- python3 -m pip install PyYAML jsonschema typer rich
155
- cox-protocol --help
156
- ```
157
-
158
- Then test a real COX project:
159
-
160
- ```bash
161
- cd /path/to/cox/project
162
- cox-protocol validate .
163
- cox-protocol compile . --target json --target react --target package --out build
164
- ```
165
-
166
- ## Publish To NPM
167
-
168
- For an unscoped public package such as `cox-protocol-package`:
169
-
170
- ```bash
171
- npm publish
172
- ```
19
+ The local npm prefix avoids changing global packages. On Windows, use the virtual environment's `Scripts/python.exe`, set `$env:COX_PYTHON`, and invoke the `.cmd` launcher from PowerShell. Windows execution is not covered by the local macOS release check.
173
20
 
174
- NPM publishes unscoped packages to the public registry by default. Publishing fails if the same package name and version already exists. Once a version is published, that exact version cannot be reused, even if it is later unpublished.
175
-
176
- For a scoped package, such as `@charbel/cox-protocol`, the first public publish must include `--access public`:
177
-
178
- ```bash
179
- npm publish --access public
180
- ```
181
-
182
- Scoped packages are not public by default on initial publish.
183
-
184
- ## Verify Public Installation
185
-
186
- After publishing:
187
-
188
- ```bash
189
- npm view cox-protocol-package
190
- npm install -g cox-protocol-package
191
- cox-protocol --help
192
- ```
193
-
194
- Then verify a real project:
195
-
196
- ```bash
197
- python3 -m pip install PyYAML jsonschema typer rich
198
- cd /path/to/cox/project
199
- cox-protocol validate .
200
- cox-protocol compile . --target json --target react --target package --out build
201
- ```
202
-
203
- ## Install From NPM After Publication
204
-
205
- ```bash
206
- npm install -g cox-protocol-package
207
- python3 -m pip install PyYAML jsonschema typer rich
208
- ```
209
-
210
- Then validate a COX project:
211
-
212
- ```bash
213
- cd /path/to/cox/project
214
- cox-protocol validate .
215
- cox-protocol compile . --target json --target react --target package --out build
216
- ```
217
-
218
- ## Install From A Local NPM Tarball
219
-
220
- On the development machine, create the tarball:
221
-
222
- ```bash
223
- npm pack
224
- ```
225
-
226
- Copy `cox-protocol-package-<version>.tgz` to the other device, then install it there:
227
-
228
- ```bash
229
- npm install -g ./cox-protocol-package-<version>.tgz
230
- python3 -m pip install PyYAML jsonschema typer rich
231
- ```
232
-
233
- Run the same smoke test from any COX project folder:
234
-
235
- ```bash
236
- cox-protocol validate .
237
- cox-protocol compile . --target json --target react --target package --out build
238
- ```
239
-
240
- ## Use A Specific Python Interpreter
241
-
242
- If the device has multiple Python installations, set `COX_PYTHON`:
243
-
244
- ```bash
245
- COX_PYTHON=/path/to/python3 cox-protocol validate .
246
- ```
247
-
248
- For a virtual environment:
249
-
250
- ```bash
251
- python3 -m venv .venv
252
- . .venv/bin/activate
253
- python -m pip install PyYAML jsonschema typer rich
254
- COX_PYTHON="$PWD/.venv/bin/python" cox-protocol validate .
255
- ```
256
-
257
- ## Publish Updates Later
258
-
259
- Every new publish needs a new version:
260
-
261
- ```bash
262
- npm version patch
263
- npm publish
264
- ```
265
-
266
- For larger changes:
267
-
268
- ```bash
269
- npm version minor
270
- npm publish
271
- ```
272
-
273
- or:
274
-
275
- ```bash
276
- npm version major
277
- npm publish
278
- ```
279
-
280
- ## Minimum Manual Publish Sequence
281
-
282
- ```bash
283
- npm login
284
- npm whoami
285
- npm pack --dry-run
286
- npm pack
287
- npm install -g ./cox-protocol-package-<version>.tgz
288
- python3 -m pip install PyYAML jsonschema typer rich
289
- cox-protocol --help
290
- npm publish
291
- npm view cox-protocol-package
292
- ```
21
+ If using the npm tarball without a wheel, install its `requirements.txt` into that virtual environment using `python -m pip install -r cox-tools/node_modules/cox-protocol-package/requirements.txt`. Runtime source and canonical schemas are bundled in the npm package.
293
22
 
294
- ## Current Limitation
23
+ `cox-protocol --version` works without Python. Other commands explain a missing interpreter or dependencies. The wrapper removes the caller's current directory and PYTHONPATH from module resolution before loading the bundled CLI to avoid accidental module shadowing.
295
24
 
296
- The NPM package is a distribution wrapper, not a TypeScript-native compiler. Python dependencies must be installed separately until the compiler is ported to Node.js or the NPM package gains an installer that manages the Python environment.
25
+ Use a version available in the selected registry when installing by package name. Building a local 1.2.0 artifact does not publish it; see the release record for status.
package/manifest.cox CHANGED
@@ -10,11 +10,12 @@ Encoding: "UTF-8"
10
10
  SyntaxBase: "YAML-compatible structured text"
11
11
  EntryPoint: "manifest.cox"
12
12
  ReferenceDocs:
13
+ - "CHANGELOG.md"
14
+ - "FINALIZATION.md"
13
15
  - "README.md"
14
16
  - "COX_FILE_FORMAT_SPECIFICATION_v1.0.md"
15
- - "verification_report.txt"
16
- - "zip_content_listing.txt"
17
17
  GuideDocs:
18
+ - "guides/contract-demo.md"
18
19
  - "guides/imported-packages/cox_protocol_package_compiled.md"
19
20
  - "guides/npm-installation.md"
20
21
  ProtocolDocs:
@@ -43,9 +44,11 @@ Schemas:
43
44
  - "schemas/cox.protocol.v1.schema.json"
44
45
  - "schemas/cox.crop_metadata.v1.schema.json"
45
46
  ToolingFiles:
47
+ - "cox_protocol"
48
+ - "scripts"
49
+ - "tests"
50
+ - "MANIFEST.in"
46
51
  - "LICENSE"
47
- - ".gitignore"
48
- - ".npmignore"
49
52
  - "package.json"
50
53
  - "bin/cox-protocol.js"
51
54
  - "pyproject.toml"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cox-protocol-package",
3
- "version": "1.0.2",
3
+ "version": "1.2.0",
4
4
  "description": "NPM wrapper and distribution package for the COX protocol CLI.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,22 +9,32 @@
9
9
  },
10
10
  "files": [
11
11
  "bin",
12
- "COX_FILE_FORMAT_SPECIFICATION_v1.0.md",
13
- "LICENSE",
14
- "README.md",
15
- "editor-support/vscode",
12
+ "cox_protocol",
13
+ "tools",
14
+ "schemas",
15
+ "protocols",
16
+ "templates",
17
+ "examples",
16
18
  "guides",
19
+ "skills",
20
+ "editor-support/vscode",
21
+ "README.md",
22
+ "LICENSE",
23
+ "CHANGELOG.md",
24
+ "COX_FILE_FORMAT_SPECIFICATION_v1.0.md",
17
25
  "manifest.cox",
18
- "protocols",
26
+ "LocalAppManager",
19
27
  "pyproject.toml",
20
28
  "requirements.txt",
21
- "schemas",
22
- "skills",
23
- "templates",
24
- "tools",
29
+ "FINALIZATION.md",
30
+ "scripts",
31
+ "tests",
32
+ "MANIFEST.in",
25
33
  "!**/__pycache__/**",
26
34
  "!**/*.pyc",
27
- "!**/*.pyo"
35
+ "!**/.cox-build.json",
36
+ "!**/node_modules/**",
37
+ "!**/build/**"
28
38
  ],
29
39
  "keywords": [
30
40
  "cox",
@@ -43,11 +53,17 @@
43
53
  "url": "https://github.com/charbelmalo/cox-protocol-package/issues"
44
54
  },
45
55
  "scripts": {
56
+ "test": "python3 -m pytest",
46
57
  "pack:dry-run": "npm pack --dry-run",
47
- "package:vscode": "cd editor-support/vscode && npm run package",
48
- "smoke:python": "cox validate . && cox compile . --target json --target react --target package --out build"
58
+ "package:vscode": "npm --prefix editor-support/vscode run package",
59
+ "smoke:python": "python3 scripts/release_check.py"
49
60
  },
50
61
  "engines": {
51
62
  "node": ">=18"
63
+ },
64
+ "devDependencies": {
65
+ "@types/react": "19.3.0",
66
+ "@vscode/vsce": "4.0.0",
67
+ "typescript": "7.0.2"
52
68
  }
53
- }
69
+ }
@@ -32,17 +32,17 @@ ComplexityLevels:
32
32
 
33
33
  DecompositionDecisionTree:
34
34
  - Question: "Can the page be explained accurately in one {page_slug}.cox without becoming long or ambiguous?"
35
- Yes: "Do not split."
36
- No: "Identify primary components."
35
+ "Yes": "Do not split."
36
+ "No": "Identify primary components."
37
37
  - Question: "Are component boundaries visually distinguishable?"
38
- Yes: "Create component folders."
39
- No: "Use {page_slug}.cox with internal regions and mark boundaries as Inferred."
38
+ "Yes": "Create component folders."
39
+ "No": "Use {page_slug}.cox with internal regions and mark boundaries as Inferred."
40
40
  - Question: "Would a component name need vague or overly specific wording to be unique?"
41
- Yes: "Split or rename using purpose/domain; validate sibling names."
42
- No: "Keep component as-is."
41
+ "Yes": "Split or rename using purpose/domain; validate sibling names."
42
+ "No": "Keep component as-is."
43
43
  - Question: "Does the component contain multi-layered visual logic, expandable interactions, nested states, or creative animation?"
44
- Yes: "Create ComplexSubcomponentName folders."
45
- No: "Keep inside component .cox."
44
+ "Yes": "Create ComplexSubcomponentName folders."
45
+ "No": "Keep inside component .cox."
46
46
 
47
47
  PageCoxResponsibility:
48
48
  Includes:
package/pyproject.toml CHANGED
@@ -1,14 +1,15 @@
1
1
  [build-system]
2
- requires = ["setuptools>=68", "wheel"]
2
+ requires = ["setuptools>=77", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cox-protocol-package"
7
- version = "1.0.1"
7
+ version = "1.2.0"
8
8
  description = "Validator and compiler for COX design-spec documents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
11
- license = { file = "LICENSE" }
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
12
13
  authors = [
13
14
  { name = "Charbel Malo" },
14
15
  ]
@@ -24,7 +25,6 @@ classifiers = [
24
25
  "Development Status :: 4 - Beta",
25
26
  "Environment :: Console",
26
27
  "Intended Audience :: Developers",
27
- "License :: OSI Approved :: MIT License",
28
28
  "Programming Language :: Python :: 3",
29
29
  "Programming Language :: Python :: 3.9",
30
30
  "Programming Language :: Python :: 3.10",
@@ -41,7 +41,7 @@ dependencies = [
41
41
  ]
42
42
 
43
43
  [project.scripts]
44
- cox = "tools.cox_cli:app"
44
+ cox = "cox_protocol.cox_cli:app"
45
45
 
46
46
  [project.urls]
47
47
  Homepage = "https://github.com/charbelmalo/cox-protocol-package#readme"
@@ -49,4 +49,15 @@ Repository = "https://github.com/charbelmalo/cox-protocol-package"
49
49
  Issues = "https://github.com/charbelmalo/cox-protocol-package/issues"
50
50
 
51
51
  [tool.setuptools]
52
- packages = ["tools"]
52
+ packages = ["cox_protocol"]
53
+ include-package-data = false
54
+
55
+ [tool.setuptools.package-data]
56
+ cox_protocol = ["schemas/*.json", "starter/*", "starter/page/*", "starter/page/action_button/*"]
57
+
58
+ [project.optional-dependencies]
59
+ dev = ["pytest>=7.4", "build>=1.0", "twine>=5.0"]
60
+
61
+ [tool.pytest.ini_options]
62
+ testpaths = ["tests"]
63
+ addopts = "-ra"
@@ -99,7 +99,7 @@
99
99
  }
100
100
  }
101
101
  },
102
- "additionalProperties": true
102
+ "additionalProperties": false
103
103
  },
104
104
  "interactionSummary": {
105
105
  "type": "object",
@@ -127,9 +127,15 @@
127
127
  "items": {
128
128
  "type": "string"
129
129
  }
130
+ },
131
+ "UserSpecified": {
132
+ "type": "array",
133
+ "items": {
134
+ "type": "string"
135
+ }
130
136
  }
131
137
  },
132
- "additionalProperties": true
138
+ "additionalProperties": false
133
139
  },
134
140
  "namingDecision": {
135
141
  "type": "object",
@@ -157,11 +163,18 @@
157
163
  "type": "string"
158
164
  },
159
165
  "EvidenceLevel": {
160
- "type": "string"
166
+ "type": "string",
167
+ "enum": [
168
+ "Visible",
169
+ "UserSpecified",
170
+ "Inferred",
171
+ "Intended",
172
+ "Recommended"
173
+ ]
161
174
  }
162
175
  },
163
176
  "additionalProperties": true
164
177
  }
165
178
  },
166
179
  "additionalProperties": true
167
- }
180
+ }
@@ -80,4 +80,4 @@
80
80
  }
81
81
  },
82
82
  "additionalProperties": true
83
- }
83
+ }
@@ -169,4 +169,4 @@
169
169
  }
170
170
  },
171
171
  "additionalProperties": true
172
- }
172
+ }
@@ -161,7 +161,7 @@
161
161
  }
162
162
  }
163
163
  },
164
- "additionalProperties": true
164
+ "additionalProperties": false
165
165
  },
166
166
  "interactionSummary": {
167
167
  "type": "object",
@@ -189,9 +189,15 @@
189
189
  "items": {
190
190
  "type": "string"
191
191
  }
192
+ },
193
+ "UserSpecified": {
194
+ "type": "array",
195
+ "items": {
196
+ "type": "string"
197
+ }
192
198
  }
193
199
  },
194
- "additionalProperties": true
200
+ "additionalProperties": false
195
201
  },
196
202
  "namingDecision": {
197
203
  "type": "object",
@@ -219,11 +225,18 @@
219
225
  "type": "string"
220
226
  },
221
227
  "EvidenceLevel": {
222
- "type": "string"
228
+ "type": "string",
229
+ "enum": [
230
+ "Visible",
231
+ "UserSpecified",
232
+ "Inferred",
233
+ "Intended",
234
+ "Recommended"
235
+ ]
223
236
  }
224
237
  },
225
238
  "additionalProperties": true
226
239
  }
227
240
  },
228
241
  "additionalProperties": true
229
- }
242
+ }
@@ -35,4 +35,4 @@
35
35
  }
36
36
  },
37
37
  "additionalProperties": true
38
- }
38
+ }