aspice-check 0.1.0__tar.gz

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.
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: aspice-check
3
+ Version: 0.1.0
4
+ Summary: Orchestrator composing confluence-ai and aspice-eval into a pipeline CLI and MCP server
5
+ Author: ASPICE Check Contributors
6
+ License: MIT
7
+ Keywords: aspice,confluence,mcp,pipeline,orchestrator
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: Typing :: Typed
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ Requires-Dist: confluence-ai>=0.1.0
20
+ Requires-Dist: aspice-eval>=0.1.0
21
+ Requires-Dist: click>=8.1.0
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
24
+ Requires-Dist: hypothesis>=6.90.0; extra == "dev"
25
+ Requires-Dist: pytest-mock; extra == "dev"
26
+
27
+ # aspice-check
28
+
29
+ Orchestrator composing `confluence-ai` and `aspice-eval` into a pipeline CLI and MCP server.
30
+
31
+ ## Pipeline CLI — aspice-analyze
32
+
33
+ Run a full ASPICE gap analysis pipeline on a Confluence SDP page: export → evaluate → publish.
34
+
35
+ ### Usage
36
+
37
+ ```bash
38
+ aspice-analyze <PAGE_URL> --target-level <1-5> --groups <GROUPS> [OPTIONS]
39
+ ```
40
+
41
+ ### Examples
42
+
43
+ ```bash
44
+ # Full pipeline: export, evaluate at level 2, publish report back to Confluence
45
+ aspice-analyze \
46
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
47
+ --target-level 2 \
48
+ --groups SWE,MAN \
49
+ --email user@acme.com \
50
+ --api-token YOUR_TOKEN \
51
+ --region us-east-1
52
+
53
+ # Evaluate without publishing
54
+ aspice-analyze \
55
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
56
+ --target-level 1 \
57
+ --groups SWE \
58
+ --no-publish
59
+
60
+ # Use OpenAI instead of Bedrock
61
+ aspice-analyze \
62
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
63
+ --target-level 3 \
64
+ --groups SWE,SYS,MAN,SUP \
65
+ --provider openai \
66
+ --model gpt-4o
67
+ ```
68
+
69
+ ### Options
70
+
71
+ | Option | Env Variable | Description |
72
+ |---|---|---|
73
+ | `PAGE_URL` | — | Confluence Cloud page URL (required) |
74
+ | `--target-level` | — | ASPICE capability level 1–5 (required) |
75
+ | `--groups` | — | Comma-separated process groups, e.g. `SWE,MAN` (required) |
76
+ | `--email` | `CONFLUENCE_EMAIL` | Confluence account email |
77
+ | `--api-token` | `CONFLUENCE_API_TOKEN` | Confluence API token |
78
+ | `--provider` | `ASPICE_EVAL_PROVIDER` | AI provider: `bedrock`, `openai`, `anthropic` (default: `bedrock`) |
79
+ | `--model` | — | AI model name (default depends on provider) |
80
+ | `--region` | `AWS_DEFAULT_REGION` | AWS region (required for Bedrock) |
81
+ | `--report-title` | — | Custom title for the published report page |
82
+ | `--output-dir` | — | Local directory for intermediate artifacts |
83
+ | `--no-publish` | — | Skip publishing report to Confluence |
84
+ | `--verbose` | — | Enable DEBUG-level logging |
85
+ | `--quiet` | — | Suppress progress messages |
86
+
87
+ ### Exit Codes
88
+
89
+ | Code | Meaning |
90
+ |------|---------|
91
+ | 0 | Success |
92
+ | 1 | Parameter validation error |
93
+ | 2 | Export stage failure |
94
+ | 3 | Evaluation stage failure |
95
+ | 4 | Publish stage failure |
96
+
97
+ ## MCP Server — aspice-mcp
98
+
99
+ An MCP (Model Context Protocol) server exposing evaluation and Confluence tools to AI assistants. It uses **stdio transport** (JSON-RPC 2.0) and works with any MCP-compatible client.
100
+
101
+ ### Configuration
102
+
103
+ The server is configured in your MCP client's config file. The exact location depends on the client:
104
+
105
+ | Client | Config file |
106
+ |--------|-------------|
107
+ | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
108
+ | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
109
+ | Kiro | `.kiro/settings/mcp.json` (workspace) or `~/.kiro/settings/mcp.json` (global) |
110
+ | VS Code (Copilot) | `.vscode/mcp.json` |
111
+
112
+ Add the following to your config:
113
+
114
+ ```json
115
+ {
116
+ "mcpServers": {
117
+ "aspice": {
118
+ "command": "aspice-mcp",
119
+ "args": [],
120
+ "env": {
121
+ "CONFLUENCE_EMAIL": "user@acme.com",
122
+ "CONFLUENCE_API_TOKEN": "your-token",
123
+ "AWS_DEFAULT_REGION": "us-east-1"
124
+ }
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ The `env` block passes credentials to the server process. Tools that need Confluence access (`export_page`) or AI providers (`evaluate_sdp`, `describe_image`) will use these values. You can omit credentials here and pass them per-tool-call instead.
131
+
132
+ If `aspice-mcp` is not on your `PATH` (e.g. installed in a virtualenv), use the full path:
133
+
134
+ ```json
135
+ {
136
+ "mcpServers": {
137
+ "aspice": {
138
+ "command": "/path/to/venv/bin/aspice-mcp",
139
+ "args": []
140
+ }
141
+ }
142
+ }
143
+ ```
144
+
145
+ ### Starting Manually (for testing)
146
+
147
+ ```bash
148
+ aspice-mcp
149
+ ```
150
+
151
+ The server reads JSON-RPC requests from stdin and writes responses to stdout. Logs go to stderr.
152
+
153
+ ### Tool Inventory
154
+
155
+ | Tool | Description |
156
+ |------|-------------|
157
+ | `evaluate_sdp` | Evaluate an SDP document against ASPICE knowledge base criteria |
158
+ | `validate_kb` | Validate a knowledge base directory for schema compliance and completeness |
159
+ | `list_standards` | List available knowledge base standards and their process groups |
160
+ | `export_page` | Export a Confluence Cloud page to Markdown with AI image descriptions |
161
+ | `describe_image` | Generate an AI description of an image file |
162
+
163
+ ### Tool Parameters
164
+
165
+ **evaluate_sdp** — `provider` (required), `model` (required), `sdp_path`, `sdp_content`, `target_level` (1–5, default 3), `process_groups`, `standard`
166
+
167
+ **validate_kb** — `kb_path` (required), `standard`
168
+
169
+ **list_standards** — `kb_path` (optional, uses bundled KB if omitted)
170
+
171
+ **export_page** — `page_url` (required), `output_dir` (required), `email` (required), `api_token` (required), `ai_provider`, `ai_model`, `output_format`
172
+
173
+ **describe_image** — `image_path` (required), `provider` (required), `model` (required), `is_gliffy`, `page_title`
174
+
175
+ ### Example Tool Call (JSON-RPC)
176
+
177
+ ```json
178
+ {"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "validate_kb", "arguments": {"kb_path": "/path/to/knowledge_base", "standard": "aspice"}}}
179
+ ```
180
+
181
+ Response:
182
+
183
+ ```json
184
+ {"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "{\"is_valid\": true, ...}"}]}}
185
+ ```
186
+
187
+ ### Error Handling
188
+
189
+ Invalid parameters return a structured error with code `-32602`:
190
+
191
+ ```json
192
+ {"jsonrpc": "2.0", "id": 1, "error": {"code": -32602, "message": "Invalid params", "data": {"tool": "evaluate_sdp", "parameter": "provider", "actual_value": "gpt", "valid_values": ["bedrock", "openai", "anthropic"], "suggestion": "Use one of: bedrock, openai, anthropic"}}}
193
+ ```
194
+
195
+ ## Installation
196
+
197
+ ### From the monorepo (development)
198
+
199
+ Install all three packages in editable mode from the repo root:
200
+
201
+ ```bash
202
+ pip install -e ./confluence-ai
203
+ pip install -e ./aspice-eval
204
+ pip install -e ./aspice-check
205
+ ```
206
+
207
+ This registers the `aspice-analyze` and `aspice-mcp` commands in your environment. Verify:
208
+
209
+ ```bash
210
+ which aspice-mcp
211
+ # → /path/to/venv/bin/aspice-mcp
212
+ ```
213
+
214
+ ### From PyPI (once published)
215
+
216
+ ```bash
217
+ pip install aspice-check
218
+ ```
219
+
220
+ This pulls in `confluence-ai` and `aspice-eval` automatically.
221
+
222
+ ### Making `aspice-mcp` available to MCP clients
223
+
224
+ MCP clients launch the server as a subprocess, so the `aspice-mcp` command must be resolvable from the client's environment. Two options:
225
+
226
+ 1. **Use the absolute path** in your MCP config (works regardless of PATH):
227
+ ```json
228
+ { "command": "/path/to/venv/bin/aspice-mcp" }
229
+ ```
230
+
231
+ 2. **Activate the venv** before launching the client, or install into the system Python so `aspice-mcp` is on the global PATH.
232
+
233
+ To find the path after installing:
234
+ ```bash
235
+ which aspice-mcp
236
+ ```
237
+
238
+ Requires Python 3.10+.
239
+
240
+ ## License
241
+
242
+ MIT
@@ -0,0 +1,216 @@
1
+ # aspice-check
2
+
3
+ Orchestrator composing `confluence-ai` and `aspice-eval` into a pipeline CLI and MCP server.
4
+
5
+ ## Pipeline CLI — aspice-analyze
6
+
7
+ Run a full ASPICE gap analysis pipeline on a Confluence SDP page: export → evaluate → publish.
8
+
9
+ ### Usage
10
+
11
+ ```bash
12
+ aspice-analyze <PAGE_URL> --target-level <1-5> --groups <GROUPS> [OPTIONS]
13
+ ```
14
+
15
+ ### Examples
16
+
17
+ ```bash
18
+ # Full pipeline: export, evaluate at level 2, publish report back to Confluence
19
+ aspice-analyze \
20
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
21
+ --target-level 2 \
22
+ --groups SWE,MAN \
23
+ --email user@acme.com \
24
+ --api-token YOUR_TOKEN \
25
+ --region us-east-1
26
+
27
+ # Evaluate without publishing
28
+ aspice-analyze \
29
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
30
+ --target-level 1 \
31
+ --groups SWE \
32
+ --no-publish
33
+
34
+ # Use OpenAI instead of Bedrock
35
+ aspice-analyze \
36
+ "https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
37
+ --target-level 3 \
38
+ --groups SWE,SYS,MAN,SUP \
39
+ --provider openai \
40
+ --model gpt-4o
41
+ ```
42
+
43
+ ### Options
44
+
45
+ | Option | Env Variable | Description |
46
+ |---|---|---|
47
+ | `PAGE_URL` | — | Confluence Cloud page URL (required) |
48
+ | `--target-level` | — | ASPICE capability level 1–5 (required) |
49
+ | `--groups` | — | Comma-separated process groups, e.g. `SWE,MAN` (required) |
50
+ | `--email` | `CONFLUENCE_EMAIL` | Confluence account email |
51
+ | `--api-token` | `CONFLUENCE_API_TOKEN` | Confluence API token |
52
+ | `--provider` | `ASPICE_EVAL_PROVIDER` | AI provider: `bedrock`, `openai`, `anthropic` (default: `bedrock`) |
53
+ | `--model` | — | AI model name (default depends on provider) |
54
+ | `--region` | `AWS_DEFAULT_REGION` | AWS region (required for Bedrock) |
55
+ | `--report-title` | — | Custom title for the published report page |
56
+ | `--output-dir` | — | Local directory for intermediate artifacts |
57
+ | `--no-publish` | — | Skip publishing report to Confluence |
58
+ | `--verbose` | — | Enable DEBUG-level logging |
59
+ | `--quiet` | — | Suppress progress messages |
60
+
61
+ ### Exit Codes
62
+
63
+ | Code | Meaning |
64
+ |------|---------|
65
+ | 0 | Success |
66
+ | 1 | Parameter validation error |
67
+ | 2 | Export stage failure |
68
+ | 3 | Evaluation stage failure |
69
+ | 4 | Publish stage failure |
70
+
71
+ ## MCP Server — aspice-mcp
72
+
73
+ An MCP (Model Context Protocol) server exposing evaluation and Confluence tools to AI assistants. It uses **stdio transport** (JSON-RPC 2.0) and works with any MCP-compatible client.
74
+
75
+ ### Configuration
76
+
77
+ The server is configured in your MCP client's config file. The exact location depends on the client:
78
+
79
+ | Client | Config file |
80
+ |--------|-------------|
81
+ | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
82
+ | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
83
+ | Kiro | `.kiro/settings/mcp.json` (workspace) or `~/.kiro/settings/mcp.json` (global) |
84
+ | VS Code (Copilot) | `.vscode/mcp.json` |
85
+
86
+ Add the following to your config:
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "aspice": {
92
+ "command": "aspice-mcp",
93
+ "args": [],
94
+ "env": {
95
+ "CONFLUENCE_EMAIL": "user@acme.com",
96
+ "CONFLUENCE_API_TOKEN": "your-token",
97
+ "AWS_DEFAULT_REGION": "us-east-1"
98
+ }
99
+ }
100
+ }
101
+ }
102
+ ```
103
+
104
+ The `env` block passes credentials to the server process. Tools that need Confluence access (`export_page`) or AI providers (`evaluate_sdp`, `describe_image`) will use these values. You can omit credentials here and pass them per-tool-call instead.
105
+
106
+ If `aspice-mcp` is not on your `PATH` (e.g. installed in a virtualenv), use the full path:
107
+
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "aspice": {
112
+ "command": "/path/to/venv/bin/aspice-mcp",
113
+ "args": []
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ ### Starting Manually (for testing)
120
+
121
+ ```bash
122
+ aspice-mcp
123
+ ```
124
+
125
+ The server reads JSON-RPC requests from stdin and writes responses to stdout. Logs go to stderr.
126
+
127
+ ### Tool Inventory
128
+
129
+ | Tool | Description |
130
+ |------|-------------|
131
+ | `evaluate_sdp` | Evaluate an SDP document against ASPICE knowledge base criteria |
132
+ | `validate_kb` | Validate a knowledge base directory for schema compliance and completeness |
133
+ | `list_standards` | List available knowledge base standards and their process groups |
134
+ | `export_page` | Export a Confluence Cloud page to Markdown with AI image descriptions |
135
+ | `describe_image` | Generate an AI description of an image file |
136
+
137
+ ### Tool Parameters
138
+
139
+ **evaluate_sdp** — `provider` (required), `model` (required), `sdp_path`, `sdp_content`, `target_level` (1–5, default 3), `process_groups`, `standard`
140
+
141
+ **validate_kb** — `kb_path` (required), `standard`
142
+
143
+ **list_standards** — `kb_path` (optional, uses bundled KB if omitted)
144
+
145
+ **export_page** — `page_url` (required), `output_dir` (required), `email` (required), `api_token` (required), `ai_provider`, `ai_model`, `output_format`
146
+
147
+ **describe_image** — `image_path` (required), `provider` (required), `model` (required), `is_gliffy`, `page_title`
148
+
149
+ ### Example Tool Call (JSON-RPC)
150
+
151
+ ```json
152
+ {"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "validate_kb", "arguments": {"kb_path": "/path/to/knowledge_base", "standard": "aspice"}}}
153
+ ```
154
+
155
+ Response:
156
+
157
+ ```json
158
+ {"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "{\"is_valid\": true, ...}"}]}}
159
+ ```
160
+
161
+ ### Error Handling
162
+
163
+ Invalid parameters return a structured error with code `-32602`:
164
+
165
+ ```json
166
+ {"jsonrpc": "2.0", "id": 1, "error": {"code": -32602, "message": "Invalid params", "data": {"tool": "evaluate_sdp", "parameter": "provider", "actual_value": "gpt", "valid_values": ["bedrock", "openai", "anthropic"], "suggestion": "Use one of: bedrock, openai, anthropic"}}}
167
+ ```
168
+
169
+ ## Installation
170
+
171
+ ### From the monorepo (development)
172
+
173
+ Install all three packages in editable mode from the repo root:
174
+
175
+ ```bash
176
+ pip install -e ./confluence-ai
177
+ pip install -e ./aspice-eval
178
+ pip install -e ./aspice-check
179
+ ```
180
+
181
+ This registers the `aspice-analyze` and `aspice-mcp` commands in your environment. Verify:
182
+
183
+ ```bash
184
+ which aspice-mcp
185
+ # → /path/to/venv/bin/aspice-mcp
186
+ ```
187
+
188
+ ### From PyPI (once published)
189
+
190
+ ```bash
191
+ pip install aspice-check
192
+ ```
193
+
194
+ This pulls in `confluence-ai` and `aspice-eval` automatically.
195
+
196
+ ### Making `aspice-mcp` available to MCP clients
197
+
198
+ MCP clients launch the server as a subprocess, so the `aspice-mcp` command must be resolvable from the client's environment. Two options:
199
+
200
+ 1. **Use the absolute path** in your MCP config (works regardless of PATH):
201
+ ```json
202
+ { "command": "/path/to/venv/bin/aspice-mcp" }
203
+ ```
204
+
205
+ 2. **Activate the venv** before launching the client, or install into the system Python so `aspice-mcp` is on the global PATH.
206
+
207
+ To find the path after installing:
208
+ ```bash
209
+ which aspice-mcp
210
+ ```
211
+
212
+ Requires Python 3.10+.
213
+
214
+ ## License
215
+
216
+ MIT
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "aspice-check"
7
+ version = "0.1.0"
8
+ description = "Orchestrator composing confluence-ai and aspice-eval into a pipeline CLI and MCP server"
9
+ readme = "README.md"
10
+ license = {text = "MIT"}
11
+ requires-python = ">=3.10"
12
+ authors = [
13
+ {name = "ASPICE Check Contributors"},
14
+ ]
15
+ keywords = ["aspice", "confluence", "mcp", "pipeline", "orchestrator"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Topic :: Software Development :: Quality Assurance",
25
+ "Typing :: Typed",
26
+ ]
27
+ dependencies = [
28
+ "confluence-ai>=0.1.0",
29
+ "aspice-eval>=0.1.0",
30
+ "click>=8.1.0",
31
+ ]
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "pytest>=7.4.0",
36
+ "hypothesis>=6.90.0",
37
+ "pytest-mock",
38
+ ]
39
+
40
+ [project.scripts]
41
+ aspice-analyze = "aspice_check.pipeline:analyze"
42
+ aspice-mcp = "aspice_check.mcp_server:main"
43
+
44
+ [tool.setuptools.packages.find]
45
+ where = ["src"]
46
+
47
+ [tool.setuptools.package-data]
48
+ aspice_check = ["py.typed"]
49
+
50
+ [tool.pytest.ini_options]
51
+ testpaths = ["tests"]
52
+ pythonpath = ["src"]
53
+
54
+ [tool.hypothesis]
55
+ database_backend = "directory"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ """aspice-check — orchestrator for Confluence AI + ASPICE evaluation."""
2
+
3
+ from __future__ import annotations
4
+
5
+ __version__ = "0.1.0"