graphene-map 0.2.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.
- graphene_map-0.2.0/.github/workflows/ci.yml +41 -0
- graphene_map-0.2.0/.github/workflows/release.yml +39 -0
- graphene_map-0.2.0/.gitignore +20 -0
- graphene_map-0.2.0/.python-version +1 -0
- graphene_map-0.2.0/CHANGELOG.md +10 -0
- graphene_map-0.2.0/GRAPH_DIRECTIVE.md +612 -0
- graphene_map-0.2.0/LICENSE +201 -0
- graphene_map-0.2.0/PKG-INFO +185 -0
- graphene_map-0.2.0/README.md +157 -0
- graphene_map-0.2.0/docs/HOW_IT_WORKS.md +267 -0
- graphene_map-0.2.0/docs/PRODUCT_THESIS.md +682 -0
- graphene_map-0.2.0/docs/RELEASING.md +39 -0
- graphene_map-0.2.0/docs/ROADMAP.md +38 -0
- graphene_map-0.2.0/docs/assets/card.svg +131 -0
- graphene_map-0.2.0/docs/assets/render_assets.py +110 -0
- graphene_map-0.2.0/docs/assets/replay_fixture.py +45 -0
- graphene_map-0.2.0/docs/assets/why-line.svg +82 -0
- graphene_map-0.2.0/docs/assets/why-path.svg +82 -0
- graphene_map-0.2.0/docs/reports/2026-09-17-rebuild.md +363 -0
- graphene_map-0.2.0/docs/reports/2026-09-18-release.md +622 -0
- graphene_map-0.2.0/docs/reports/2026-09-19-record-and-map.md +149 -0
- graphene_map-0.2.0/morning.md +203 -0
- graphene_map-0.2.0/pyproject.toml +63 -0
- graphene_map-0.2.0/src/graphene_debrief/__init__.py +3 -0
- graphene_map-0.2.0/src/graphene_debrief/attribute.py +847 -0
- graphene_map-0.2.0/src/graphene_debrief/cli.py +459 -0
- graphene_map-0.2.0/src/graphene_debrief/commits.py +186 -0
- graphene_map-0.2.0/src/graphene_debrief/debrief.py +842 -0
- graphene_map-0.2.0/src/graphene_debrief/graph.py +648 -0
- graphene_map-0.2.0/src/graphene_debrief/model.py +113 -0
- graphene_map-0.2.0/src/graphene_debrief/record.py +218 -0
- graphene_map-0.2.0/src/graphene_debrief/server.py +115 -0
- graphene_map-0.2.0/src/graphene_debrief/sources/__init__.py +0 -0
- graphene_map-0.2.0/src/graphene_debrief/sources/claude_code.py +967 -0
- graphene_map-0.2.0/src/graphene_debrief/store.py +583 -0
- graphene_map-0.2.0/src/graphene_debrief/ui/static/assets/app.css +2 -0
- graphene_map-0.2.0/src/graphene_debrief/ui/static/assets/app.js +9 -0
- graphene_map-0.2.0/src/graphene_debrief/ui/static/index.html +15 -0
- graphene_map-0.2.0/src/graphene_debrief/why.py +298 -0
- graphene_map-0.2.0/strategy-summary.md +28 -0
- graphene_map-0.2.0/tests/conftest.py +15 -0
- graphene_map-0.2.0/tests/fixtures/debrief_golden.md +20 -0
- graphene_map-0.2.0/tests/fixtures/make_run_fixture.py +1494 -0
- graphene_map-0.2.0/tests/fixtures/make_transcript_fixture.py +347 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/agent-6a7b8c9daebfc0d7.jsonl +11 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/agent-6a7b8c9daebfc0d7.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/agent-7a8b9cadbecfd0e8.jsonl +11 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/agent-7a8b9cadbecfd0e8.meta.json +11 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-0a1b2c3d4e5f6071.jsonl +13 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-0a1b2c3d4e5f6071.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-1a2b3c4d5e6f7082.jsonl +9 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-1a2b3c4d5e6f7082.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-2a3b4c5d6e7f8093.jsonl +7 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-2a3b4c5d6e7f8093.meta.json +10 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-3a4b5c6d7e8f90a4.jsonl +7 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-3a4b5c6d7e8f90a4.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-4a5b6c7d8e9fa0b5.jsonl +7 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-4a5b6c7d8e9fa0b5.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-5a6b7c8d9eafb0c6.jsonl +9 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/agent-5a6b7c8d9eafb0c6.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666/subagents/workflows/wf_ab12cd34-ef5/journal.jsonl +12 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-project/22222222-3333-4444-8555-666666666666.jsonl +28 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-wt-api/33333333-4444-4555-8666-777777777777/subagents/agent-8a9bacbdcedfe0f9.jsonl +5 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-wt-api/33333333-4444-4555-8666-777777777777/subagents/agent-8a9bacbdcedfe0f9.meta.json +8 -0
- graphene_map-0.2.0/tests/fixtures/run/-home-dev-wt-api/33333333-4444-4555-8666-777777777777.jsonl +6 -0
- graphene_map-0.2.0/tests/fixtures/run_graph.json +2354 -0
- graphene_map-0.2.0/tests/fixtures/transcripts/11111111-2222-4333-8444-555555555555/subagents/agent-a1b2c3d4e5f60718.jsonl +4 -0
- graphene_map-0.2.0/tests/fixtures/transcripts/11111111-2222-4333-8444-555555555555.jsonl +36 -0
- graphene_map-0.2.0/tests/test_attribute.py +568 -0
- graphene_map-0.2.0/tests/test_backfill.py +453 -0
- graphene_map-0.2.0/tests/test_cli.py +367 -0
- graphene_map-0.2.0/tests/test_commits.py +336 -0
- graphene_map-0.2.0/tests/test_debrief.py +497 -0
- graphene_map-0.2.0/tests/test_graph.py +300 -0
- graphene_map-0.2.0/tests/test_hook_budget.py +78 -0
- graphene_map-0.2.0/tests/test_hooks.py +359 -0
- graphene_map-0.2.0/tests/test_ingest_run.py +403 -0
- graphene_map-0.2.0/tests/test_round_trip.py +148 -0
- graphene_map-0.2.0/tests/test_run_fixture.py +236 -0
- graphene_map-0.2.0/tests/test_scale.py +88 -0
- graphene_map-0.2.0/tests/test_server.py +97 -0
- graphene_map-0.2.0/tests/test_store.py +360 -0
- graphene_map-0.2.0/tests/test_why.py +193 -0
- graphene_map-0.2.0/tests/test_words.py +41 -0
- graphene_map-0.2.0/ui/index.html +14 -0
- graphene_map-0.2.0/ui/package-lock.json +1743 -0
- graphene_map-0.2.0/ui/package.json +29 -0
- graphene_map-0.2.0/ui/src/App.tsx +84 -0
- graphene_map-0.2.0/ui/src/Chrome.tsx +177 -0
- graphene_map-0.2.0/ui/src/Inspector.tsx +253 -0
- graphene_map-0.2.0/ui/src/Map.tsx +363 -0
- graphene_map-0.2.0/ui/src/app.css +266 -0
- graphene_map-0.2.0/ui/src/data.test.ts +5 -0
- graphene_map-0.2.0/ui/src/data.ts +12 -0
- graphene_map-0.2.0/ui/src/main.tsx +11 -0
- graphene_map-0.2.0/ui/src/model.test.ts +134 -0
- graphene_map-0.2.0/ui/src/model.ts +257 -0
- graphene_map-0.2.0/ui/src/types.ts +160 -0
- graphene_map-0.2.0/ui/src/vite-env.d.ts +1 -0
- graphene_map-0.2.0/ui/tsconfig.json +19 -0
- graphene_map-0.2.0/ui/vite.config.ts +25 -0
- graphene_map-0.2.0/uv.lock +183 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
test:
|
|
9
|
+
runs-on: ${{ matrix.os }}
|
|
10
|
+
strategy:
|
|
11
|
+
fail-fast: false
|
|
12
|
+
matrix:
|
|
13
|
+
os: [ubuntu-latest, macos-latest]
|
|
14
|
+
python: ["3.12", "3.13"]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: astral-sh/setup-uv@v6
|
|
18
|
+
with:
|
|
19
|
+
python-version: ${{ matrix.python }}
|
|
20
|
+
- run: uv sync
|
|
21
|
+
- run: uv run ruff check
|
|
22
|
+
- run: uv run pytest -q
|
|
23
|
+
- run: uv build
|
|
24
|
+
- name: Smoke the wheel outside the source tree
|
|
25
|
+
run: |
|
|
26
|
+
cd "$RUNNER_TEMP"
|
|
27
|
+
uv venv smoke
|
|
28
|
+
uv pip install --python smoke/bin/python "$GITHUB_WORKSPACE"/dist/*.whl
|
|
29
|
+
./smoke/bin/graphene --version
|
|
30
|
+
|
|
31
|
+
ui:
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v4
|
|
35
|
+
- uses: actions/setup-node@v4
|
|
36
|
+
with:
|
|
37
|
+
node-version: lts/*
|
|
38
|
+
- run: npm ci --prefix ui
|
|
39
|
+
- run: npm --prefix ui run check
|
|
40
|
+
- name: The committed page is what the source builds
|
|
41
|
+
run: git diff --exit-code -- src/graphene_debrief/ui/static
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: astral-sh/setup-uv@v6
|
|
14
|
+
with:
|
|
15
|
+
python-version: "3.13"
|
|
16
|
+
- run: uv build
|
|
17
|
+
- name: Smoke the wheel outside the source tree
|
|
18
|
+
run: |
|
|
19
|
+
cd "$RUNNER_TEMP"
|
|
20
|
+
uv venv smoke
|
|
21
|
+
uv pip install --python smoke/bin/python "$GITHUB_WORKSPACE"/dist/*.whl
|
|
22
|
+
./smoke/bin/graphene --version
|
|
23
|
+
- uses: actions/upload-artifact@v4
|
|
24
|
+
with:
|
|
25
|
+
name: dist
|
|
26
|
+
path: dist/
|
|
27
|
+
|
|
28
|
+
publish:
|
|
29
|
+
needs: build
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
environment: pypi
|
|
32
|
+
permissions:
|
|
33
|
+
id-token: write
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/download-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: dist
|
|
38
|
+
path: dist/
|
|
39
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
.pytest_cache/
|
|
5
|
+
.ruff_cache/
|
|
6
|
+
dist/
|
|
7
|
+
node_modules/
|
|
8
|
+
.DS_Store
|
|
9
|
+
.env
|
|
10
|
+
|
|
11
|
+
# Graphene's own local store
|
|
12
|
+
.graphene/
|
|
13
|
+
|
|
14
|
+
# Editor and agent state, private working material
|
|
15
|
+
.claude/
|
|
16
|
+
.vscode/
|
|
17
|
+
local/
|
|
18
|
+
|
|
19
|
+
# Playwright MCP session output (the HTML export was checked in a browser)
|
|
20
|
+
.playwright-mcp/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 (unreleased)
|
|
4
|
+
|
|
5
|
+
First release: Graphene reads the transcripts Claude Code keeps on your machine and answers which prompt changed a file or a line.
|
|
6
|
+
- `graphene`: a short card of the latest session (files changed, commits, changes outside the scope you named, what was tried and abandoned).
|
|
7
|
+
- `graphene why PATH` and `graphene why PATH:LINE`: the prompts that changed a file, or the one that wrote a line.
|
|
8
|
+
- `graphene debrief --full`, `--json`, `--md FILE` and `--html FILE` (a self-contained page that opens offline).
|
|
9
|
+
- `graphene init` installs hooks so sessions are recorded live; without it Graphene reads the transcripts.
|
|
10
|
+
- Explanations are factual templates by default; `--explain claude` asks Claude Code once per prompt (`--model NAME`, default `haiku`).
|