dmint-cli 1.0.2__tar.gz → 1.0.3__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.
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/CHANGELOG.md +4 -1
- {dmint_cli-1.0.2/src/dmint_cli.egg-info → dmint_cli-1.0.3}/PKG-INFO +5 -4
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/README.md +3 -3
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/pyproject.toml +2 -1
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/create_policy.py +17 -27
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/version.py +1 -1
- {dmint_cli-1.0.2 → dmint_cli-1.0.3/src/dmint_cli.egg-info}/PKG-INFO +5 -4
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli.egg-info/requires.txt +1 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/LICENSE +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/MANIFEST.in +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/setup.cfg +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/setup.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/__init__.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/__main__.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/api.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/compile_policy.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/create_mcp_policy.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/dashboard.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/errors.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/install_skill.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/io_utils.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/limits.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/mcp_auth.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/mcp_connections.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/mcp_credentials.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/mcp_oauth.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/prompts/__init__.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/prompts/policy_skill.md +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/skills/__init__.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/skills/dmint-policy-manager/SKILL.md +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli/verify_policy.py +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli.egg-info/SOURCES.txt +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli.egg-info/dependency_links.txt +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli.egg-info/entry_points.txt +0 -0
- {dmint_cli-1.0.2 → dmint_cli-1.0.3}/src/dmint_cli.egg-info/top_level.txt +0 -0
|
@@ -5,7 +5,10 @@ All notable changes to `dmint-cli` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.0.
|
|
8
|
+
## [1.0.3] - 2026-09-17
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Bump patch version for PyPI release.
|
|
9
12
|
|
|
10
13
|
### Added
|
|
11
14
|
- **Dashboard Command (`dmint dashboard`)**:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dmint-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: CLI tooling for Dmint policy creation, compilation, and management
|
|
5
5
|
Author: Dmint Authors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,11 +20,12 @@ License-File: LICENSE
|
|
|
20
20
|
Requires-Dist: dmint<2.0.0,>=1.0.0
|
|
21
21
|
Requires-Dist: mcp<3.0.0,>=2.2.0
|
|
22
22
|
Requires-Dist: dmint-dashboard<2.0.0,>=1.0.0
|
|
23
|
+
Requires-Dist: questionary>=2.0.0
|
|
23
24
|
Provides-Extra: test
|
|
24
25
|
Requires-Dist: pytest>=8.0.0; extra == "test"
|
|
25
26
|
Dynamic: license-file
|
|
26
27
|
|
|
27
|
-
# dmint-cli (v1.0.
|
|
28
|
+
# dmint-cli (v1.0.3)
|
|
28
29
|
|
|
29
30
|
> **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
|
|
30
31
|
|
|
@@ -139,7 +140,7 @@ Verify your installation and version:
|
|
|
139
140
|
|
|
140
141
|
```bash
|
|
141
142
|
dmint --version
|
|
142
|
-
# dmint 1.0.
|
|
143
|
+
# dmint 1.0.3
|
|
143
144
|
```
|
|
144
145
|
|
|
145
146
|
### 3-Step Walkthrough
|
|
@@ -348,7 +349,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
|
|
|
348
349
|
1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
|
|
349
350
|
2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
|
|
350
351
|
3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
|
|
351
|
-
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.
|
|
352
|
+
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.3"`.
|
|
352
353
|
|
|
353
354
|
---
|
|
354
355
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# dmint-cli (v1.0.
|
|
1
|
+
# dmint-cli (v1.0.3)
|
|
2
2
|
|
|
3
3
|
> **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
|
|
4
4
|
|
|
@@ -113,7 +113,7 @@ Verify your installation and version:
|
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
115
|
dmint --version
|
|
116
|
-
# dmint 1.0.
|
|
116
|
+
# dmint 1.0.3
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
### 3-Step Walkthrough
|
|
@@ -322,7 +322,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
|
|
|
322
322
|
1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
|
|
323
323
|
2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
|
|
324
324
|
3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
|
|
325
|
-
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.
|
|
325
|
+
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.3"`.
|
|
326
326
|
|
|
327
327
|
---
|
|
328
328
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dmint-cli"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.3"
|
|
8
8
|
description = "CLI tooling for Dmint policy creation, compilation, and management"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -28,6 +28,7 @@ dependencies = [
|
|
|
28
28
|
"dmint>=1.0.0,<2.0.0",
|
|
29
29
|
"mcp>=2.2.0,<3.0.0",
|
|
30
30
|
"dmint-dashboard>=1.0.0,<2.0.0",
|
|
31
|
+
"questionary>=2.0.0",
|
|
31
32
|
]
|
|
32
33
|
|
|
33
34
|
[project.optional-dependencies]
|
|
@@ -7,6 +7,7 @@ import ast
|
|
|
7
7
|
import getpass
|
|
8
8
|
import json
|
|
9
9
|
import sys
|
|
10
|
+
import questionary
|
|
10
11
|
from pathlib import Path
|
|
11
12
|
from typing import Any
|
|
12
13
|
|
|
@@ -186,19 +187,22 @@ def run_create_policy_wizard(
|
|
|
186
187
|
policy_text = f"[DISCOVERED TOOL DECLARATIONS VIA AST IN {Path(tools_file).name}]\n{tools_summary}\n\n[HUMAN SECURITY REQUIREMENTS]\n{policy_text}"
|
|
187
188
|
|
|
188
189
|
# 1. Provider & Key setup
|
|
189
|
-
selected_provider = (provider or "").lower().strip()
|
|
190
190
|
if is_tty and not selected_provider:
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
selected_provider = questionary.select(
|
|
192
|
+
"Select provider",
|
|
193
|
+
choices=["openai", "gemini", "groq", "openrouter", "ollama", "custom"],
|
|
194
|
+
default="openai"
|
|
195
|
+
).ask()
|
|
193
196
|
elif not selected_provider:
|
|
194
197
|
selected_provider = "openai"
|
|
195
198
|
|
|
196
199
|
resolved_key = resolve_api_key(api_key, selected_provider)
|
|
197
200
|
if is_tty and not resolved_key and selected_provider != "ollama":
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
resolved_key = questionary.password(
|
|
202
|
+
f"Enter API Key for {selected_provider} (leave blank if using env var):"
|
|
203
|
+
).ask()
|
|
204
|
+
if resolved_key:
|
|
205
|
+
api_key = resolved_key
|
|
202
206
|
|
|
203
207
|
# 2. Model Discovery & Selection
|
|
204
208
|
client = OpenAICompatClient(
|
|
@@ -213,28 +217,14 @@ def run_create_policy_wizard(
|
|
|
213
217
|
if is_tty and not selected_model:
|
|
214
218
|
try:
|
|
215
219
|
available_models = client.list_models()
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
default_m = available_models[0]
|
|
223
|
-
choice = input(f"\nSelect model number (1-{min(len(available_models), 15)}) or type model ID [default: {default_m}]: ").strip()
|
|
224
|
-
if choice.isdigit():
|
|
225
|
-
c_idx = int(choice) - 1
|
|
226
|
-
if 0 <= c_idx < len(available_models):
|
|
227
|
-
selected_model = available_models[c_idx]
|
|
228
|
-
else:
|
|
229
|
-
selected_model = default_m
|
|
230
|
-
elif choice:
|
|
231
|
-
selected_model = choice
|
|
232
|
-
else:
|
|
233
|
-
selected_model = default_m
|
|
220
|
+
selected_model = questionary.select(
|
|
221
|
+
"Select model",
|
|
222
|
+
choices=available_models,
|
|
223
|
+
default=available_models[0] if available_models else "gpt-4o-mini"
|
|
224
|
+
).ask()
|
|
234
225
|
except Exception as exc:
|
|
235
226
|
print(f"\n[!] Could not list models: {exc}. Please enter model ID manually.")
|
|
236
|
-
|
|
237
|
-
selected_model = manual_m or "gpt-4o-mini"
|
|
227
|
+
selected_model = questionary.text("Enter model ID [default: gpt-4o-mini]:", default="gpt-4o-mini").ask()
|
|
238
228
|
elif not selected_model:
|
|
239
229
|
selected_model = "gpt-4o-mini"
|
|
240
230
|
|
|
@@ -6,7 +6,7 @@ Single source of truth for package version, User-Agent strings, and client metad
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
8
|
# Canonical package version (single source of truth for runtime code)
|
|
9
|
-
__version__ = "1.0.
|
|
9
|
+
__version__ = "1.0.3"
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def get_user_agent(component: str | None = None) -> str:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dmint-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: CLI tooling for Dmint policy creation, compilation, and management
|
|
5
5
|
Author: Dmint Authors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,11 +20,12 @@ License-File: LICENSE
|
|
|
20
20
|
Requires-Dist: dmint<2.0.0,>=1.0.0
|
|
21
21
|
Requires-Dist: mcp<3.0.0,>=2.2.0
|
|
22
22
|
Requires-Dist: dmint-dashboard<2.0.0,>=1.0.0
|
|
23
|
+
Requires-Dist: questionary>=2.0.0
|
|
23
24
|
Provides-Extra: test
|
|
24
25
|
Requires-Dist: pytest>=8.0.0; extra == "test"
|
|
25
26
|
Dynamic: license-file
|
|
26
27
|
|
|
27
|
-
# dmint-cli (v1.0.
|
|
28
|
+
# dmint-cli (v1.0.3)
|
|
28
29
|
|
|
29
30
|
> **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
|
|
30
31
|
|
|
@@ -139,7 +140,7 @@ Verify your installation and version:
|
|
|
139
140
|
|
|
140
141
|
```bash
|
|
141
142
|
dmint --version
|
|
142
|
-
# dmint 1.0.
|
|
143
|
+
# dmint 1.0.3
|
|
143
144
|
```
|
|
144
145
|
|
|
145
146
|
### 3-Step Walkthrough
|
|
@@ -348,7 +349,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
|
|
|
348
349
|
1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
|
|
349
350
|
2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
|
|
350
351
|
3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
|
|
351
|
-
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.
|
|
352
|
+
4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.3"`.
|
|
352
353
|
|
|
353
354
|
---
|
|
354
355
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|