htmlgraph 0.26.2__py3-none-any.whl → 0.26.4__py3-none-any.whl

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.
htmlgraph/__init__.py CHANGED
@@ -95,7 +95,7 @@ from htmlgraph.types import (
95
95
  )
96
96
  from htmlgraph.work_type_utils import infer_work_type, infer_work_type_from_id
97
97
 
98
- __version__ = "0.26.2"
98
+ __version__ = "0.26.4"
99
99
  __all__ = [
100
100
  # Exceptions
101
101
  "HtmlGraphError",
htmlgraph/cli.py CHANGED
@@ -4977,6 +4977,58 @@ def cmd_claude(args: argparse.Namespace) -> None:
4977
4977
  if orchestration_rules:
4978
4978
  combined_prompt = f"{system_prompt}\n\n---\n\n{orchestration_rules}"
4979
4979
 
4980
+ # Add dev mode specific guidance
4981
+ dev_addendum = textwrap.dedent(
4982
+ """
4983
+
4984
+ ═══════════════════════════════════════════════════════════
4985
+ 🔧 DEVELOPMENT MODE - HtmlGraph Project
4986
+ ═══════════════════════════════════════════════════════════
4987
+
4988
+ CRITICAL: Hooks load htmlgraph from PyPI, NOT local source!
4989
+
4990
+ Development Workflow:
4991
+ 1. Make changes to src/python/htmlgraph/
4992
+ 2. Run tests: uv run pytest
4993
+ 3. Deploy to PyPI: ./scripts/deploy-all.sh X.Y.Z --no-confirm
4994
+ 4. Restart Claude Code (hooks auto-load new version from PyPI)
4995
+ 5. Verify changes work correctly
4996
+
4997
+ Why PyPI in Dev Mode?
4998
+ - Hooks use: #!/usr/bin/env -S uv run --with htmlgraph
4999
+ - Always pulls latest version from PyPI
5000
+ - Tests in production-like environment
5001
+ - No surprises when distributed to users
5002
+ - Single source of truth (PyPI package)
5003
+
5004
+ Incremental Versioning:
5005
+ - Use patch versions: 0.26.2 → 0.26.3 → 0.26.4
5006
+ - No need to edit hook shebangs (always get latest)
5007
+ - Deploy frequently for rapid iteration
5008
+
5009
+ Session ID Tracking (v0.26.3+):
5010
+ - PostToolUse hooks query for most recent UserQuery session
5011
+ - All events should share same session_id
5012
+ - Verify: See "Development Mode" section in CLAUDE.md
5013
+
5014
+ Key References:
5015
+ - Development workflow: CLAUDE.md "Development Mode" section
5016
+ - Orchestrator patterns: /orchestrator-directives skill
5017
+ - Code quality: /code-quality skill
5018
+ - Deployment: /deployment-automation skill
5019
+
5020
+ Remember: You're dogfooding HtmlGraph!
5021
+ - Use SDK to track your own work
5022
+ - Delegate to spawner agents (Gemini, Codex, Copilot)
5023
+ - Follow orchestration patterns
5024
+ - Test in production-like environment
5025
+
5026
+ ═══════════════════════════════════════════════════════════
5027
+ """
5028
+ )
5029
+
5030
+ combined_prompt = f"{combined_prompt}\n{dev_addendum}"
5031
+
4980
5032
  if args.quiet or args.format == "json":
4981
5033
  cmd = [
4982
5034
  "claude",
@@ -121,9 +121,10 @@ class HookContext:
121
121
  or os.environ.get("CLAUDE_SESSION_ID")
122
122
  )
123
123
 
124
- # Fallback: Query database for most recent active session
124
+ # Fallback: Query database for session with most recent UserQuery event
125
125
  # This solves the issue where PostToolUse hooks don't receive session_id
126
- # in hook_input, but SessionStart hook already created a session in the database.
126
+ # in hook_input. UserPromptSubmit hooks DO receive it and create UserQuery
127
+ # events with the correct session_id, so we use that as the source of truth.
127
128
  if not session_id:
128
129
  db_path = graph_dir / "htmlgraph.db"
129
130
  if db_path.exists():
@@ -133,9 +134,9 @@ class HookContext:
133
134
  conn = sqlite3.connect(str(db_path), timeout=1.0)
134
135
  cursor = conn.cursor()
135
136
  cursor.execute("""
136
- SELECT session_id FROM sessions
137
- WHERE status = 'active'
138
- ORDER BY created_at DESC
137
+ SELECT session_id FROM agent_events
138
+ WHERE tool_name = 'UserQuery'
139
+ ORDER BY timestamp DESC
139
140
  LIMIT 1
140
141
  """)
141
142
  row = cursor.fetchone()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.26.2
3
+ Version: 0.26.4
4
4
  Summary: HTML is All You Need - Graph database on web standards
5
5
  Project-URL: Homepage, https://github.com/Shakes-tzd/htmlgraph
6
6
  Project-URL: Documentation, https://github.com/Shakes-tzd/htmlgraph#readme
@@ -1,11 +1,11 @@
1
- htmlgraph/__init__.py,sha256=2QaxMFduHIDK32CD8WRDlR_dOQSHvcNIF112-15GMvs,5717
1
+ htmlgraph/__init__.py,sha256=h9uelDCHKeohN_sFsqoIGi2NON0c_yL9W_WUlXNnslY,5717
2
2
  htmlgraph/agent_detection.py,sha256=wEmrDv4hssPX2OkEnJZBHPbalxcaloiJF_hOOow_5WE,3511
3
3
  htmlgraph/agent_registry.py,sha256=Usa_35by7p5gtpvHO7K3AcGimnorw-FzgPVa3cWTQ58,9448
4
4
  htmlgraph/agents.py,sha256=Yvu6x1nOfrW2WhRTAHiCuSpvqoVJXx1Mkzd59kwEczw,33466
5
5
  htmlgraph/analytics_index.py,sha256=6jMIHFslnXdzMuq2V2Z0GeBSesyJX7WTjZ3jTAt_3ns,32792
6
6
  htmlgraph/atomic_ops.py,sha256=f0ULZoJThfC-A8xORvRv5OuFuhEnnH7uJrZslnZwmuw,18781
7
7
  htmlgraph/attribute_index.py,sha256=cBZUV4YfGnhh6lF59aYPCdNrRr1hK__BzSKCueSDUhQ,6593
8
- htmlgraph/cli.py,sha256=CESojWEDTBSlhnpIeth-adSTKrBLjPGM2EV74BBCy9U,252393
8
+ htmlgraph/cli.py,sha256=kxPICoLDd9kNSgPPQt8nJWL4Rzr_C78zcTuqSKDyxT4,255059
9
9
  htmlgraph/cli_framework.py,sha256=YfAjTGIECmv_uNpkenYyc9_iKd3jXIG5OstEKpIGWJM,3551
10
10
  htmlgraph/config.py,sha256=dhOSfMfZCT-APe_uAvqABWyQ0nEhL6F0NS-15KLPZNg,6888
11
11
  htmlgraph/context_analytics.py,sha256=CaLu0o2uSr6rlBM5YeaFZe7grgsy7_Hx10qdXuNcdao,11344
@@ -169,7 +169,7 @@ htmlgraph/hooks/__init__.py,sha256=FxVdnSYMNTjaKyOJ-euvyq9qYy5LZvGH5eIRqw0SpyQ,1
169
169
  htmlgraph/hooks/bootstrap.py,sha256=IiahOTOZolhIHF-yDfolmfT2kR5_EH_E9A7BBFKy2lI,5194
170
170
  htmlgraph/hooks/cigs_pretool_enforcer.py,sha256=Lyp4DDaw_sVHEcW-kzdegldyfXjvVD25zRGamq0v-sU,12722
171
171
  htmlgraph/hooks/concurrent_sessions.py,sha256=qOiwDfynphVG0-2pVBakEzOwMORU8ebN1gMjcN4S0z0,6476
172
- htmlgraph/hooks/context.py,sha256=gVp5Z2WPF0aydxUwMhTqVW4RSnyQCkOZF7YlZo7GR4g,13007
172
+ htmlgraph/hooks/context.py,sha256=tJ4dIL8uTFHyqyuuMc-ETDuOikeD5cN3Mdjmfg6W0HE,13108
173
173
  htmlgraph/hooks/drift_handler.py,sha256=QckL5U5ooku51kI6mppGLsXzaKVt1Yx5uNu-iXZrgSk,17602
174
174
  htmlgraph/hooks/event_tracker.py,sha256=HhgIc2664ZeZM6YSB_0Ybp3fsEEFcKAUa7nTff1dQV0,40114
175
175
  htmlgraph/hooks/hooks-config.example.json,sha256=tXpk-U-FZzGOoNJK2uiDMbIHCYEHA794J-El0fBwkqg,197
@@ -215,12 +215,12 @@ htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4be
215
215
  htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
216
216
  htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
217
217
  htmlgraph/templates/orchestration-view.html,sha256=DlS7LlcjH0oO_KYILjuF1X42t8QhKLH4F85rkO54alY,10472
218
- htmlgraph-0.26.2.data/data/htmlgraph/dashboard.html,sha256=Y0w6qoXEPVmWETxi-_GwBNiWlCMP1Ur0OD5EL5uH7P4,30027
219
- htmlgraph-0.26.2.data/data/htmlgraph/styles.css,sha256=oDUSC8jG-V-hKojOBO9J88hxAeY2wJrBYTq0uCwX_Y4,7135
220
- htmlgraph-0.26.2.data/data/htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4bet1H4ZsDpI,7642
221
- htmlgraph-0.26.2.data/data/htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
222
- htmlgraph-0.26.2.data/data/htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
223
- htmlgraph-0.26.2.dist-info/METADATA,sha256=i5DpxNOgWHQh8zljGDj45LkcwjxrD_wU2hhEzbHOZNQ,10236
224
- htmlgraph-0.26.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
225
- htmlgraph-0.26.2.dist-info/entry_points.txt,sha256=EaUbjA_bbDwEO_XDLEGMeK8aQP-ZnHiUTkLshyKDyB8,98
226
- htmlgraph-0.26.2.dist-info/RECORD,,
218
+ htmlgraph-0.26.4.data/data/htmlgraph/dashboard.html,sha256=Y0w6qoXEPVmWETxi-_GwBNiWlCMP1Ur0OD5EL5uH7P4,30027
219
+ htmlgraph-0.26.4.data/data/htmlgraph/styles.css,sha256=oDUSC8jG-V-hKojOBO9J88hxAeY2wJrBYTq0uCwX_Y4,7135
220
+ htmlgraph-0.26.4.data/data/htmlgraph/templates/AGENTS.md.template,sha256=f96h7V6ygwj-v-fanVI48eYMxR6t_se4bet1H4ZsDpI,7642
221
+ htmlgraph-0.26.4.data/data/htmlgraph/templates/CLAUDE.md.template,sha256=h1kG2hTX2XYig2KszsHBfzrwa_4Cfcq2Pj4SwqzeDlM,1984
222
+ htmlgraph-0.26.4.data/data/htmlgraph/templates/GEMINI.md.template,sha256=gAGzE53Avki87BM_otqy5HdcYCoLsHgqaKjVzNzPMX8,1622
223
+ htmlgraph-0.26.4.dist-info/METADATA,sha256=6k8OvC_AwpcVuqQpTUSxY3FC_s5_KBTWJ5PsNgmhYqU,10236
224
+ htmlgraph-0.26.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
225
+ htmlgraph-0.26.4.dist-info/entry_points.txt,sha256=EaUbjA_bbDwEO_XDLEGMeK8aQP-ZnHiUTkLshyKDyB8,98
226
+ htmlgraph-0.26.4.dist-info/RECORD,,