graphban-cli 0.8.0__tar.gz → 0.8.1__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.
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/PKG-INFO +5 -3
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/README.md +4 -2
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/pyproject.toml +1 -1
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/cli.py +3 -1
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/data/stack_sdks.toml +31 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/stackmap.py +475 -74
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_stackmap.py +236 -14
- graphban_cli-0.8.1/uv.lock +207 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/.gitignore +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/LICENSE +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/__init__.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/client.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/config.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/doctor.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/gitignore.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/setup.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-delegation/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-orient/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-prd/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-review/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-scan/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/graphban-work/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/skills/watch-wave/SKILL.md +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/src/gban/swamp.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_acts.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_doctor.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_login_projects.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_packaging.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_session.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_setup.py +0 -0
- {graphban_cli-0.8.0 → graphban_cli-0.8.1}/tests/test_swamp.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: graphban-cli
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.1
|
|
4
4
|
Summary: gban — a Graphban client for the human at a terminal
|
|
5
5
|
Project-URL: Homepage, https://github.com/asc-me/graphban
|
|
6
6
|
Project-URL: Repository, https://github.com/asc-me/graphban
|
|
@@ -202,8 +202,10 @@ What it reads:
|
|
|
202
202
|
|
|
203
203
|
- Compose files (`compose.yml`, `docker-compose.yml`, and the `compose.*` / `docker-compose.*` variants): a service with `build` is a deployable, a service with only `image` is infrastructure, and `depends_on` is an edge. `environment` contributes variable **names** and, when a value is a literal URL, the bare host.
|
|
204
204
|
- Dockerfiles (`Dockerfile`, `Dockerfile.*`, `*.Dockerfile`), for the deployable they sit in and for a `FROM` image the table knows.
|
|
205
|
-
- Dependency manifests (`package.json`, `pyproject.toml`, `requirements*.txt`, `go.mod`, `Cargo.toml`, `Gemfile`)
|
|
206
|
-
-
|
|
205
|
+
- Dependency manifests (`package.json`, `pyproject.toml`, `requirements*.txt`, `go.mod`, `Cargo.toml`, `Gemfile`). Every `package.json` and `Cargo.toml` is a component named from the manifest's `name`. The known-SDK table adds edges; it is not what decides whether the component exists. `file:` and `workspace:` dependencies (and a Cargo `path` or `workspace = true`) are internal edges. Other manifests still become a component only when a dependency hits the table, and that edge is attributed to the component whose directory contains the file.
|
|
206
|
+
- Deploy manifests (`vercel.json`, `railway.json`, `railway.toml`, `fly.toml`, `netlify.toml`, `render.yaml`) are a platform node. The file body is not stored.
|
|
207
|
+
- `.env.example` only. A real `.env` is not a template and is not opened. A commented `KEY=` is read and the edge is `state: documented` rather than `set`. `*_TOKEN`, `*_CLIENT_ID`, and `*_CLIENT_SECRET` count, and so do `*_BASE` and `*_ISSUER` when the value is a URL. A passphrase (`AUTH_SECRET`, `ENCRYPTION_KEY`) is not an edge unless a table row names it. Values stay out of the record.
|
|
208
|
+
- Source files are not scanned. There is no source-HTTP pass in this command. stderr always prints a coverage line: files read, files that produced nothing, commented template keys skipped, and that source was not scanned. Exit 0 means the record was built.
|
|
207
209
|
|
|
208
210
|
The known-SDK table ships at `cli/src/gban/data/stack_sdks.toml` and is versioned with `gban`. A checkout may add rows in `.graphban/stack-sdks.toml` (same shape); those rows are consulted first.
|
|
209
211
|
|
|
@@ -187,8 +187,10 @@ What it reads:
|
|
|
187
187
|
|
|
188
188
|
- Compose files (`compose.yml`, `docker-compose.yml`, and the `compose.*` / `docker-compose.*` variants): a service with `build` is a deployable, a service with only `image` is infrastructure, and `depends_on` is an edge. `environment` contributes variable **names** and, when a value is a literal URL, the bare host.
|
|
189
189
|
- Dockerfiles (`Dockerfile`, `Dockerfile.*`, `*.Dockerfile`), for the deployable they sit in and for a `FROM` image the table knows.
|
|
190
|
-
- Dependency manifests (`package.json`, `pyproject.toml`, `requirements*.txt`, `go.mod`, `Cargo.toml`, `Gemfile`)
|
|
191
|
-
-
|
|
190
|
+
- Dependency manifests (`package.json`, `pyproject.toml`, `requirements*.txt`, `go.mod`, `Cargo.toml`, `Gemfile`). Every `package.json` and `Cargo.toml` is a component named from the manifest's `name`. The known-SDK table adds edges; it is not what decides whether the component exists. `file:` and `workspace:` dependencies (and a Cargo `path` or `workspace = true`) are internal edges. Other manifests still become a component only when a dependency hits the table, and that edge is attributed to the component whose directory contains the file.
|
|
191
|
+
- Deploy manifests (`vercel.json`, `railway.json`, `railway.toml`, `fly.toml`, `netlify.toml`, `render.yaml`) are a platform node. The file body is not stored.
|
|
192
|
+
- `.env.example` only. A real `.env` is not a template and is not opened. A commented `KEY=` is read and the edge is `state: documented` rather than `set`. `*_TOKEN`, `*_CLIENT_ID`, and `*_CLIENT_SECRET` count, and so do `*_BASE` and `*_ISSUER` when the value is a URL. A passphrase (`AUTH_SECRET`, `ENCRYPTION_KEY`) is not an edge unless a table row names it. Values stay out of the record.
|
|
193
|
+
- Source files are not scanned. There is no source-HTTP pass in this command. stderr always prints a coverage line: files read, files that produced nothing, commented template keys skipped, and that source was not scanned. Exit 0 means the record was built.
|
|
192
194
|
|
|
193
195
|
The known-SDK table ships at `cli/src/gban/data/stack_sdks.toml` and is versioned with `gban`. A checkout may add rows in `.graphban/stack-sdks.toml` (same shape); those rows are consulted first.
|
|
194
196
|
|
|
@@ -433,12 +433,14 @@ def cmd_stack(args) -> int:
|
|
|
433
433
|
start = Path(args.repo).expanduser() if args.repo else Path.cwd()
|
|
434
434
|
project = (config.resolve(args.project, config.PROJECT_ENV, "project") or "").strip()
|
|
435
435
|
try:
|
|
436
|
-
record, warnings = stackmap.build_record(start, project_id=project)
|
|
436
|
+
record, warnings, coverage = stackmap.build_record(start, project_id=project)
|
|
437
437
|
except stackmap.MapError as exc:
|
|
438
438
|
print(f"{PROG}: {exc}", file=sys.stderr)
|
|
439
439
|
return EXIT_REFUSED
|
|
440
440
|
for warning in warnings:
|
|
441
441
|
print(f"{PROG}: {warning}", file=sys.stderr)
|
|
442
|
+
# Always. A three-node map that exits 0 is not a finished topology.
|
|
443
|
+
print(f"{PROG}: {coverage}", file=sys.stderr)
|
|
442
444
|
text = stackmap.canonical(record)
|
|
443
445
|
if args.dry_run:
|
|
444
446
|
sys.stdout.write(text)
|
|
@@ -148,6 +148,27 @@ label = "SendGrid"
|
|
|
148
148
|
protocol = "https"
|
|
149
149
|
domains = ["sendgrid.com", "sendgrid.net"]
|
|
150
150
|
|
|
151
|
+
[[sdk]]
|
|
152
|
+
id = "resend"
|
|
153
|
+
packages = ["resend"]
|
|
154
|
+
node = "resend"
|
|
155
|
+
group = "external"
|
|
156
|
+
kind = ""
|
|
157
|
+
label = "Resend"
|
|
158
|
+
protocol = "https"
|
|
159
|
+
domains = ["resend.com"]
|
|
160
|
+
|
|
161
|
+
[[sdk]]
|
|
162
|
+
id = "vercel"
|
|
163
|
+
packages = ["@vercel/functions"]
|
|
164
|
+
prefix = "@vercel/"
|
|
165
|
+
node = "vercel"
|
|
166
|
+
group = "external"
|
|
167
|
+
kind = ""
|
|
168
|
+
label = "Vercel"
|
|
169
|
+
protocol = "https"
|
|
170
|
+
domains = ["vercel.com", "vercel.app"]
|
|
171
|
+
|
|
151
172
|
[[sdk]]
|
|
152
173
|
id = "supabase"
|
|
153
174
|
packages = ["supabase", "@supabase/supabase-js"]
|
|
@@ -175,3 +196,13 @@ group = "infrastructure"
|
|
|
175
196
|
kind = "redis"
|
|
176
197
|
label = "Redis"
|
|
177
198
|
protocol = "redis"
|
|
199
|
+
|
|
200
|
+
[[env]]
|
|
201
|
+
id = "creem"
|
|
202
|
+
names = ["CREEM_API_KEY"]
|
|
203
|
+
node = "creem"
|
|
204
|
+
group = "external"
|
|
205
|
+
kind = ""
|
|
206
|
+
label = "Creem"
|
|
207
|
+
protocol = "https"
|
|
208
|
+
domains = ["creem.io"]
|