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.
- package/CHANGELOG.md +22 -0
- package/COX_FILE_FORMAT_SPECIFICATION_v1.0.md +40 -200
- package/FINALIZATION.md +50 -0
- package/LocalAppManager/Dashboard/analytics_sidebar_panels/analytics_sidebar_panels.cox +56 -0
- package/LocalAppManager/Dashboard/analytics_sidebar_panels/analytics_sidebar_panels_screenshot.placeholder.txt +1 -0
- package/LocalAppManager/Dashboard/dashboard.cox +62 -0
- package/LocalAppManager/Dashboard/dashboard_screenshot.placeholder.txt +1 -0
- package/LocalAppManager/Dashboard/left_navigation_sidebar/left_navigation_sidebar.cox +56 -0
- package/LocalAppManager/Dashboard/left_navigation_sidebar/left_navigation_sidebar_screenshot.placeholder.txt +1 -0
- package/LocalAppManager/Dashboard/projects_grid_cards/projects_grid_cards.cox +56 -0
- package/LocalAppManager/Dashboard/projects_grid_cards/projects_grid_cards_screenshot.placeholder.txt +1 -0
- package/LocalAppManager/Dashboard/top_header_stats_bar/top_header_stats_bar.cox +56 -0
- package/LocalAppManager/Dashboard/top_header_stats_bar/top_header_stats_bar_screenshot.placeholder.txt +1 -0
- package/MANIFEST.in +20 -0
- package/README.md +67 -154
- package/bin/cox-protocol.js +23 -97
- package/cox_protocol/__init__.py +2 -0
- package/cox_protocol/__main__.py +3 -0
- package/cox_protocol/compiler.py +273 -0
- package/cox_protocol/cox_cli.py +146 -0
- package/cox_protocol/cox_lib.py +599 -0
- package/cox_protocol/package_target.py +262 -0
- package/cox_protocol/react_target.py +306 -0
- package/cox_protocol/scaffold.py +56 -0
- package/cox_protocol/schemas/cox.component.v1.schema.json +180 -0
- package/cox_protocol/schemas/cox.crop_metadata.v1.schema.json +83 -0
- package/cox_protocol/schemas/cox.manifest.v1.schema.json +172 -0
- package/cox_protocol/schemas/cox.page.v1.schema.json +242 -0
- package/cox_protocol/schemas/cox.protocol.v1.schema.json +38 -0
- package/cox_protocol/starter/README.md +7 -0
- package/cox_protocol/starter/manifest.cox +26 -0
- package/cox_protocol/starter/page/action_button/action_button.cox +34 -0
- package/cox_protocol/starter/page/action_button/reference.svg +1 -0
- package/cox_protocol/starter/page/page.cox +39 -0
- package/cox_protocol/starter/page/reference.svg +1 -0
- package/editor-support/vscode/CHANGELOG.md +6 -0
- package/editor-support/vscode/README.md +2 -1
- package/editor-support/vscode/package.json +3 -3
- package/editor-support/vscode/snippets/cox-common.json +1 -1
- package/editor-support/vscode/snippets/cox-component.json +2 -1
- package/editor-support/vscode/snippets/cox-crop-metadata.json +1 -1
- package/editor-support/vscode/snippets/cox-manifest.json +1 -1
- package/editor-support/vscode/snippets/cox-page.json +2 -1
- package/editor-support/vscode/snippets/cox-protocol.json +1 -1
- package/examples/quickstart/README.md +7 -0
- package/examples/quickstart/manifest.cox +26 -0
- package/examples/quickstart/page/action_button/action_button.cox +34 -0
- package/examples/quickstart/page/action_button/reference.svg +1 -0
- package/examples/quickstart/page/page.cox +39 -0
- package/examples/quickstart/page/reference.svg +1 -0
- package/guides/contract-demo.md +24 -0
- package/guides/npm-installation.md +16 -287
- package/manifest.cox +7 -4
- package/package.json +30 -14
- package/protocols/recursive_decomposition_protocol.cox +8 -8
- package/pyproject.toml +17 -6
- package/schemas/cox.component.v1.schema.json +17 -4
- package/schemas/cox.crop_metadata.v1.schema.json +1 -1
- package/schemas/cox.manifest.v1.schema.json +1 -1
- package/schemas/cox.page.v1.schema.json +17 -4
- package/schemas/cox.protocol.v1.schema.json +1 -1
- package/scripts/check_distribution.py +87 -0
- package/scripts/demo.py +62 -0
- package/scripts/package-vscode.mjs +12 -0
- package/scripts/release_check.py +86 -0
- package/tests/conftest.py +21 -0
- package/tests/test_cli_and_typescript.py +123 -0
- package/tests/test_compiler.py +279 -0
- package/tests/test_validation.py +215 -0
- package/tools/__init__.py +2 -2
- package/tools/cox_cli.py +2 -123
- package/tools/cox_lib.py +2 -558
- package/tools/package_target.py +2 -214
- package/tools/react_target.py +2 -278
|
@@ -1,296 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Installing the npm wrapper
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
127
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
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
|
-
"
|
|
26
|
+
"LocalAppManager",
|
|
19
27
|
"pyproject.toml",
|
|
20
28
|
"requirements.txt",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
29
|
+
"FINALIZATION.md",
|
|
30
|
+
"scripts",
|
|
31
|
+
"tests",
|
|
32
|
+
"MANIFEST.in",
|
|
25
33
|
"!**/__pycache__/**",
|
|
26
34
|
"!**/*.pyc",
|
|
27
|
-
"
|
|
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": "
|
|
48
|
-
"smoke:python": "
|
|
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>=
|
|
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
|
|
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 =
|
|
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 = "
|
|
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 = ["
|
|
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":
|
|
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":
|
|
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
|
+
}
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
},
|
|
164
|
-
"additionalProperties":
|
|
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":
|
|
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
|
+
}
|