netrise-turbine-cli 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.
- netrise_turbine_cli-0.1.0/PKG-INFO +123 -0
- netrise_turbine_cli-0.1.0/README.md +102 -0
- netrise_turbine_cli-0.1.0/pyproject.toml +29 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/__init__.py +3 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_generated/__init__.py +2 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_generated/catalog.json +1761 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_generated/commands.py +4655 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_generated/coverage.json +137 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_skill/turbine-cli/SKILL.md +105 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_skill/turbine-cli/agents/openai.yaml +4 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_skill/turbine-cli/references/agent.md +81 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/_skill/turbine-cli/references/reference.md +1171 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/cli.py +106 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/__init__.py +58 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/_common.py +180 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/_registry.py +32 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/asset.py +244 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/auth.py +71 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/cert.py +40 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/component.py +96 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/credential.py +40 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/group.py +186 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/key.py +43 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/license.py +40 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/misconfig.py +43 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/notification.py +26 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/org.py +41 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/protection.py +40 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/report.py +26 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/search.py +49 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/secret.py +42 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/skill.py +198 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/user.py +97 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands/vuln.py +140 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/commands_api.py +117 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/completion.py +68 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/config.py +117 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/errors.py +41 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/fields.py +58 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/render.py +70 -0
- netrise_turbine_cli-0.1.0/src/netrise_turbine_cli/runtime.py +277 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: netrise-turbine-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Turbine GraphQL CLI for human operators and AI agents
|
|
5
|
+
Author: NetRise
|
|
6
|
+
Author-email: anthony.feddersen@netrise.io
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
|
+
Requires-Dist: click (>=8.1.0,<9.0.0)
|
|
13
|
+
Requires-Dist: netrise-turbine-sdk (>=0.1.17,<0.2.0)
|
|
14
|
+
Requires-Dist: pydantic (>=2.0.0,<3.0.0)
|
|
15
|
+
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
16
|
+
Requires-Dist: rich (>=13.0.0,<15.0.0)
|
|
17
|
+
Requires-Dist: rich-click (>=1.8.0,<2.0.0)
|
|
18
|
+
Requires-Dist: typer (>=0.12.0,<1.0.0)
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# NetRise Turbine CLI
|
|
22
|
+
|
|
23
|
+
SDK-backed CLI for the Turbine platform — resource-oriented commands for everyday work, full GraphQL API as an escape hatch.
|
|
24
|
+
|
|
25
|
+
## Approach
|
|
26
|
+
|
|
27
|
+
Two tiers, one runtime:
|
|
28
|
+
|
|
29
|
+
| Tier | When to use | Example |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| **Curated** (default) | Everyday tasks — list assets, remediate vulns, manage groups | `turbine asset list` |
|
|
32
|
+
| **`api`** | Full GraphQL coverage, custom inputs, new SDK ops | `turbine api assets-relay --schema` |
|
|
33
|
+
|
|
34
|
+
Same auth and output modes for both tiers; only rendering changes:
|
|
35
|
+
|
|
36
|
+
- **TTY** — Rich tables, panels, confirmation prompts
|
|
37
|
+
- **`--output json` or pipe** — compact JSON on stdout (NDJSON for lists), exit codes, no prompts
|
|
38
|
+
|
|
39
|
+
| Audience | Guide |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| Human operators | [docs/human.md](docs/human.md) — runnable examples |
|
|
42
|
+
| AI / automation | [docs/agent.md](docs/agent.md) — loop, I/O contract, token discipline |
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
Three tiers — pick how much you want:
|
|
47
|
+
|
|
48
|
+
| Tier | Command | You get |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| SDK only | `pip install netrise-turbine-sdk` | Python SDK |
|
|
51
|
+
| SDK + CLI | `uv tool install netrise-turbine-cli` (or `pipx` / `pip`) | `turbine` command, SDK included |
|
|
52
|
+
| Everything | `turbine skill install` | Agent skill in Cursor, Claude Code, and Codex |
|
|
53
|
+
|
|
54
|
+
`turbine skill install` detects which agent tools you have (`~/.cursor`, `~/.claude`, `~/.agents`/`~/.codex`) and installs the bundled skill to each; use `--agent` / `--scope project` for explicit control and `turbine skill status` to inspect. Developing in this repo? `make turbine-cli-test` sets up the poetry env with the local SDK.
|
|
55
|
+
|
|
56
|
+
## Auth
|
|
57
|
+
|
|
58
|
+
Set credentials via `TURBINE_*` env vars (legacy unprefixed names still work) or `.env`:
|
|
59
|
+
|
|
60
|
+
`TURBINE_ENDPOINT` · `TURBINE_AUDIENCE` · `TURBINE_DOMAIN` · `TURBINE_CLIENT_ID` · `TURBINE_CLIENT_SECRET` · `TURBINE_ORGANIZATION_ID`
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
turbine auth status
|
|
64
|
+
turbine auth login --save # verify + persist non-secrets to ~/.config/turbine/config.toml
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Command map
|
|
68
|
+
|
|
69
|
+
| Resource | Commands |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `asset` | `list`, `get`, `upload`, `files`, `status`, `activity`, `hashes` |
|
|
72
|
+
| `vuln` | `list`, `get`, `overview`, `remediate` |
|
|
73
|
+
| `group` | `list`, `members`, `create`, `update`, `delete`, `add-assets`, `remove-assets` |
|
|
74
|
+
| `component` | `list`, `grouped`, `crypto` |
|
|
75
|
+
| `secret`, `credential`, `cert`, `key`, `misconfig`, `license`, `protection` | `list` |
|
|
76
|
+
| `user` | `list`, `invite`, `delete`, `remove` |
|
|
77
|
+
| `org` | `info`, `settings` |
|
|
78
|
+
| `search` | full-text search |
|
|
79
|
+
| `api` | all 114 GraphQL ops + `catalog`, `graphql`, `schema` |
|
|
80
|
+
|
|
81
|
+
## Quick start
|
|
82
|
+
|
|
83
|
+
Human — list assets (lite detail, default):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
turbine asset list --limit 10
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Agent — catalog then execute:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
turbine api catalog --json
|
|
93
|
+
turbine asset list --dry-run -o json
|
|
94
|
+
turbine api assets-relay --schema -o json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
`--output` / `-o` may appear before or after the subcommand.
|
|
98
|
+
|
|
99
|
+
## Documentation
|
|
100
|
+
|
|
101
|
+
| File | What |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| [docs/human.md](docs/human.md) | Human guide + per-command examples |
|
|
104
|
+
| [docs/agent.md](docs/agent.md) | Agent playbook |
|
|
105
|
+
| [reference.md](reference.md) | Generated API index + curated mapping |
|
|
106
|
+
| [SKILL.md](SKILL.md) | Cursor agent skill |
|
|
107
|
+
|
|
108
|
+
## Regenerate
|
|
109
|
+
|
|
110
|
+
From repo root:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
make turbine-python-cli
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Rebuilds API commands, catalog, coverage manifest, reference, SKILL auto-section, and human examples.
|
|
117
|
+
|
|
118
|
+
## Test
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
make turbine-cli-test
|
|
122
|
+
```
|
|
123
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# NetRise Turbine CLI
|
|
2
|
+
|
|
3
|
+
SDK-backed CLI for the Turbine platform — resource-oriented commands for everyday work, full GraphQL API as an escape hatch.
|
|
4
|
+
|
|
5
|
+
## Approach
|
|
6
|
+
|
|
7
|
+
Two tiers, one runtime:
|
|
8
|
+
|
|
9
|
+
| Tier | When to use | Example |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| **Curated** (default) | Everyday tasks — list assets, remediate vulns, manage groups | `turbine asset list` |
|
|
12
|
+
| **`api`** | Full GraphQL coverage, custom inputs, new SDK ops | `turbine api assets-relay --schema` |
|
|
13
|
+
|
|
14
|
+
Same auth and output modes for both tiers; only rendering changes:
|
|
15
|
+
|
|
16
|
+
- **TTY** — Rich tables, panels, confirmation prompts
|
|
17
|
+
- **`--output json` or pipe** — compact JSON on stdout (NDJSON for lists), exit codes, no prompts
|
|
18
|
+
|
|
19
|
+
| Audience | Guide |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| Human operators | [docs/human.md](docs/human.md) — runnable examples |
|
|
22
|
+
| AI / automation | [docs/agent.md](docs/agent.md) — loop, I/O contract, token discipline |
|
|
23
|
+
|
|
24
|
+
## Install
|
|
25
|
+
|
|
26
|
+
Three tiers — pick how much you want:
|
|
27
|
+
|
|
28
|
+
| Tier | Command | You get |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| SDK only | `pip install netrise-turbine-sdk` | Python SDK |
|
|
31
|
+
| SDK + CLI | `uv tool install netrise-turbine-cli` (or `pipx` / `pip`) | `turbine` command, SDK included |
|
|
32
|
+
| Everything | `turbine skill install` | Agent skill in Cursor, Claude Code, and Codex |
|
|
33
|
+
|
|
34
|
+
`turbine skill install` detects which agent tools you have (`~/.cursor`, `~/.claude`, `~/.agents`/`~/.codex`) and installs the bundled skill to each; use `--agent` / `--scope project` for explicit control and `turbine skill status` to inspect. Developing in this repo? `make turbine-cli-test` sets up the poetry env with the local SDK.
|
|
35
|
+
|
|
36
|
+
## Auth
|
|
37
|
+
|
|
38
|
+
Set credentials via `TURBINE_*` env vars (legacy unprefixed names still work) or `.env`:
|
|
39
|
+
|
|
40
|
+
`TURBINE_ENDPOINT` · `TURBINE_AUDIENCE` · `TURBINE_DOMAIN` · `TURBINE_CLIENT_ID` · `TURBINE_CLIENT_SECRET` · `TURBINE_ORGANIZATION_ID`
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
turbine auth status
|
|
44
|
+
turbine auth login --save # verify + persist non-secrets to ~/.config/turbine/config.toml
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Command map
|
|
48
|
+
|
|
49
|
+
| Resource | Commands |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| `asset` | `list`, `get`, `upload`, `files`, `status`, `activity`, `hashes` |
|
|
52
|
+
| `vuln` | `list`, `get`, `overview`, `remediate` |
|
|
53
|
+
| `group` | `list`, `members`, `create`, `update`, `delete`, `add-assets`, `remove-assets` |
|
|
54
|
+
| `component` | `list`, `grouped`, `crypto` |
|
|
55
|
+
| `secret`, `credential`, `cert`, `key`, `misconfig`, `license`, `protection` | `list` |
|
|
56
|
+
| `user` | `list`, `invite`, `delete`, `remove` |
|
|
57
|
+
| `org` | `info`, `settings` |
|
|
58
|
+
| `search` | full-text search |
|
|
59
|
+
| `api` | all 114 GraphQL ops + `catalog`, `graphql`, `schema` |
|
|
60
|
+
|
|
61
|
+
## Quick start
|
|
62
|
+
|
|
63
|
+
Human — list assets (lite detail, default):
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
turbine asset list --limit 10
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Agent — catalog then execute:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
turbine api catalog --json
|
|
73
|
+
turbine asset list --dry-run -o json
|
|
74
|
+
turbine api assets-relay --schema -o json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`--output` / `-o` may appear before or after the subcommand.
|
|
78
|
+
|
|
79
|
+
## Documentation
|
|
80
|
+
|
|
81
|
+
| File | What |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| [docs/human.md](docs/human.md) | Human guide + per-command examples |
|
|
84
|
+
| [docs/agent.md](docs/agent.md) | Agent playbook |
|
|
85
|
+
| [reference.md](reference.md) | Generated API index + curated mapping |
|
|
86
|
+
| [SKILL.md](SKILL.md) | Cursor agent skill |
|
|
87
|
+
|
|
88
|
+
## Regenerate
|
|
89
|
+
|
|
90
|
+
From repo root:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
make turbine-python-cli
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Rebuilds API commands, catalog, coverage manifest, reference, SKILL auto-section, and human examples.
|
|
97
|
+
|
|
98
|
+
## Test
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
make turbine-cli-test
|
|
102
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "netrise-turbine-cli"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Turbine GraphQL CLI for human operators and AI agents"
|
|
5
|
+
authors = ["NetRise <anthony.feddersen@netrise.io>"]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
packages = [{ include = "netrise_turbine_cli", from = "src" }]
|
|
8
|
+
# Bundled agent skill (installed via `turbine skill install`)
|
|
9
|
+
include = [{ path = "src/netrise_turbine_cli/_skill/**/*", format = ["sdist", "wheel"] }]
|
|
10
|
+
|
|
11
|
+
[tool.poetry.dependencies]
|
|
12
|
+
python = ">=3.12"
|
|
13
|
+
netrise-turbine-sdk = ">=0.1.17,<0.2.0"
|
|
14
|
+
typer = ">=0.12.0,<1.0.0"
|
|
15
|
+
rich = ">=13.0.0,<15.0.0"
|
|
16
|
+
rich-click = ">=1.8.0,<2.0.0"
|
|
17
|
+
click = ">=8.1.0,<9.0.0"
|
|
18
|
+
pydantic = ">=2.0.0,<3.0.0"
|
|
19
|
+
python-dotenv = ">=1.0.0,<2.0.0"
|
|
20
|
+
|
|
21
|
+
[tool.poetry.group.dev.dependencies]
|
|
22
|
+
pytest = ">=8.0.0,<9.0.0"
|
|
23
|
+
|
|
24
|
+
[tool.poetry.scripts]
|
|
25
|
+
turbine = "netrise_turbine_cli.cli:main"
|
|
26
|
+
|
|
27
|
+
[build-system]
|
|
28
|
+
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
|
29
|
+
build-backend = "poetry.core.masonry.api"
|